# @ewsjs/xhr

> alternate XHR methods for ewsjs

Latest version **3.1.3** (published 2024-05-13) · MIT license · 0 weekly downloads

## Install

```sh
npm install @ewsjs/xhr
pnpm add @ewsjs/xhr
yarn add @ewsjs/xhr
bun add @ewsjs/xhr
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.3 |
| Published | 2024-05-13 |
| First published | 2018-05-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 45.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 7 |
| Author | Gautam Singh |
| Maintainers | gautamsi |

## Links

- npm: https://www.npmjs.com/package/@ewsjs/xhr
- Repository: https://github.com/ewsjs/xhr
- Issues: https://github.com/ewsjs/xhr/issues
- npm.io page: https://npm.io/package/@ewsjs/xhr

## Dependencies (4)

- [axios](https://npm.io/package/axios.md) ^1.6.8
- [tough-cookie](https://npm.io/package/tough-cookie.md) ^4.1.3
- [http-cookie-agent](https://npm.io/package/http-cookie-agent.md) ^5.0.4
- [@ewsjs/ntlm-client](https://npm.io/package/@ewsjs/ntlm-client.md) ^3.0.1

## Recent versions

- 3.1.3 (latest) — 2024-05-13
- 3.1.2 — 2024-04-22
- 3.1.1 — 2024-03-25
- 3.1.0 — 2024-03-24
- 3.0.0 — 2024-02-25
- 2.0.2 — 2023-12-05
- 2.0.1 — 2023-09-11
- 2.0.0 — 2023-09-10
- 1.5.0 — 2023-03-07
- 1.4.4 — 2021-09-27
- 1.4.3 — 2021-09-23
- 1.4.2 — 2019-09-18
- 1.4.1 — 2019-09-05
- 1.4.0 — 2019-07-18
- 1.3.2 — 2019-04-04
- … 2 more at https://npm.io/package/@ewsjs/xhr/versions

## README

# @ewsjs/xhr
renaming ews-javascript-api-auth to @ewsjs/xhr

other related libs will also move to @ewsjs scope/org

> 1.3.0 brings several changes, new api and proxy support. this is also re-written using popular `request` package

## 3.1.2
* Fixed proxy issue with axios

## 3.1.1
* Fixed responseType for axios

## 3.1.0
* update dependencies

## 3.0.0
* Updated `@ewsjs/ntlm-client` to `3.0.0` to fix node 18+ issues with ntlm

## 2.0.0
* Removed deprecated xhr apis (`cookieAuthXhrApi`, `ntlmAuthXhrApi`, `proxySupportedXhrApi`).
* removed dependency on `request`, `bluebird` and `fetch`.

## 1.5.0 
#15 use pre-call options in stream

# Install

`npm install @ewsjs/xhr --save`

# How To
> public methods `useProxy`, `useNtlmAuthentication` and `useCookieAuthentication` returns the instance for chaining.


```ts
// import 
import { ......,  ConfigurationApi } from "ews-javascript-api";
import { XhrApi } from "@ewsjs/xhr";

// create instance
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false})
    .useCookieAuthentication(credentials.userName, credentials.password)
    .useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");

// alternatively 
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false});
xhr.useCookieAuthentication(credentials.userName, credentials.password);
xhr.useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");

// use in ews-javascript-api
ConfigurationApi.ConfigureXHR(xhr);
```


## constructor
```ts
/**
 * Creates an instance of XhrApi optionally passing options for request
 * @memberof XhrApi
 */
new XhrApi();
/**
 * Creates an instance of XhrApi optionally passing options for request
 * @param {CoreOptions} requestOptions Options for request
 * @memberof XhrApi
 */
new XhrApi(requestOptions: CoreOptions); // CoreOptions is from @types/request, part of request pkg
/**
 * Creates an instance of XhrApi. optionally pass true to bypass remote ssl/tls certificate check
 * @param {boolean} allowUntrustedCertificate whether to allow non trusted certificate or not
 * @memberof XhrApi
 */
new XhrApi(allowUntrustedCertificate: boolean);
```

## Proxy server support
```ts
import { XhrApi } from "@ewsjs/xhr";

// without proxy credential
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false})
    .useProxy("http://squidorOtherProxyServer:3128");

// with proxy credential
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false})
    .useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");
```

## adding Ntlm authentication (or Windows Integrated Authentication with EWS)
```ts
import { XhrApi } from "@ewsjs/xhr";
let xhr = new XhrApi()
    .useNtlmAuthentication(credentials.userName, credentials.password);
```

## adding cookies authentication (usage with TMG/ISA)
```ts
import { XhrApi } from "@ewsjs/xhr";
let xhr = new XhrApi({ rejectUnauthorized: false})
    .useCookieAuthentication(credentials.userName, credentials.password);
```

### using proxy with cookies authentication
```ts
import { XhrApi } from "@ewsjs/xhr";
let xhr = new XhrApi(true)
    .useCookieAuthentication(credentials.userName, credentials.password)
    .useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");
```

## Info: No Proxy support with Ntlm (yet!)    
There are issues which needs to be sorted out before Ntlm can be used with proxy, this situation is rarly needed in corporate environment anyways.   

## License
MIT

### 1.1.1 changes
* fixed header check to be case insensitive
* moved header helper method creation to util.js

---
_Source: https://npm.io/package/@ewsjs/xhr · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
