@prosopo/api 4.3.5 → 4.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +4 -4
- package/.turbo/turbo-build$colon$tsc.log +9 -9
- package/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +16 -0
- package/dist/api/HttpClientBase.d.ts +3 -1
- package/dist/api/HttpClientBase.d.ts.map +1 -1
- package/dist/api/HttpClientBase.js +16 -6
- package/dist/api/HttpClientBase.js.map +1 -1
- package/dist/api/apiClient.d.ts +1 -1
- package/dist/api/apiClient.d.ts.map +1 -1
- package/dist/api/apiClient.js +2 -2
- package/dist/api/apiClient.js.map +1 -1
- package/dist/cjs/api/HttpClientBase.cjs +16 -6
- package/dist/cjs/api/apiClient.cjs +2 -2
- package/dist/tests/api.test-d.js +1 -1
- package/dist/tests/api.test-d.js.map +1 -1
- package/dist/tests/httpClientTimeout.unit.test.d.ts +2 -0
- package/dist/tests/httpClientTimeout.unit.test.d.ts.map +1 -0
- package/dist/tests/httpClientTimeout.unit.test.js +104 -0
- package/dist/tests/httpClientTimeout.unit.test.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/api@4.3.
|
|
2
|
+
> @prosopo/api@4.3.7 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -27,10 +27,10 @@ Bundle build started
|
|
|
27
27
|
rendering chunks...
|
|
28
28
|
computing gzip size...
|
|
29
29
|
dist/cjs/api/HttpError.cjs 0.33 kB │ gzip: 0.21 kB
|
|
30
|
-
dist/cjs/api/apiClient.cjs 0.
|
|
30
|
+
dist/cjs/api/apiClient.cjs 0.42 kB │ gzip: 0.25 kB
|
|
31
31
|
dist/cjs/api/index.cjs 0.52 kB │ gzip: 0.18 kB
|
|
32
32
|
dist/cjs/index.cjs 0.61 kB │ gzip: 0.24 kB
|
|
33
|
-
dist/cjs/api/HttpClientBase.cjs 2.
|
|
33
|
+
dist/cjs/api/HttpClientBase.cjs 2.64 kB │ gzip: 0.72 kB
|
|
34
34
|
dist/cjs/api/ProviderApi.cjs 15.31 kB │ gzip: 2.68 kB
|
|
35
35
|
|
|
36
|
-
[32m✓ built in
|
|
36
|
+
[32m✓ built in 58ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/api@4.3.
|
|
2
|
+
> @prosopo/api@4.3.7 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
7:48:54 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../util/tsconfig.json
|
|
8
8
|
* ../locale/tsconfig.json
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
* ../types/tsconfig.json
|
|
11
11
|
* tsconfig.json
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
7:48:55 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
7:48:55 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
7:48:55 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
7:48:55 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
7:48:55 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
7:48:55 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
7:48:55 PM - Building project '/home/runner/work/captcha/captcha/packages/api/tsconfig.json'...
|
|
26
26
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/api@4.3.
|
|
2
|
+
> @prosopo/api@4.3.7 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/api@4.3.
|
|
6
|
+
> @prosopo/api@4.3.7 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -33,9 +33,9 @@ computing gzip size...
|
|
|
33
33
|
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
34
34
|
dist/api/index.js 0.30 kB │ gzip: 0.15 kB
|
|
35
35
|
dist/api/HttpError.js 0.32 kB │ gzip: 0.21 kB
|
|
36
|
-
dist/api/apiClient.js 0.35 kB │ gzip: 0.23 kB
|
|
37
36
|
dist/index.js 0.36 kB │ gzip: 0.18 kB
|
|
38
|
-
dist/api/
|
|
37
|
+
dist/api/apiClient.js 0.38 kB │ gzip: 0.24 kB
|
|
38
|
+
dist/api/HttpClientBase.js 2.53 kB │ gzip: 0.71 kB
|
|
39
39
|
dist/api/ProviderApi.js 13.49 kB │ gzip: 2.68 kB
|
|
40
40
|
|
|
41
|
-
[32m✓ built in
|
|
41
|
+
[32m✓ built in 65ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @prosopo/api
|
|
2
2
|
|
|
3
|
+
## 4.3.7
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- Updated dependencies [254bc05]
|
|
7
|
+
- @prosopo/types@5.11.1
|
|
8
|
+
|
|
9
|
+
## 4.3.6
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- dab0338: A site owner's `isVerified` call no longer hangs when the provider stops answering. Requests from `@prosopo/api` clients can now carry a timeout, and `@prosopo/server` sets one of 10 seconds for its verify calls. You can change it with the new `providerRequestTimeoutMs` config option. When the timeout fires, `isVerified` throws `API.BAD_REQUEST` with code 504 and the user is not verified. Before, the call waited for the platform default of about 300 seconds. Browser clients keep their current behaviour.
|
|
13
|
+
- Updated dependencies [59b7e87]
|
|
14
|
+
- Updated dependencies [0c8678e]
|
|
15
|
+
- Updated dependencies [b77c5f4]
|
|
16
|
+
- Updated dependencies [dab0338]
|
|
17
|
+
- @prosopo/types@5.11.0
|
|
18
|
+
|
|
3
19
|
## 4.3.5
|
|
4
20
|
### Patch Changes
|
|
5
21
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare class HttpClientBase {
|
|
2
2
|
protected readonly baseURL: string;
|
|
3
|
-
|
|
3
|
+
protected readonly timeoutMs: number | undefined;
|
|
4
|
+
constructor(baseURL: string, prefix?: string, timeoutMs?: number);
|
|
5
|
+
protected withTimeout(init?: RequestInit): RequestInit | undefined;
|
|
4
6
|
protected fetch<T>(input: RequestInfo, init?: RequestInit): Promise<T>;
|
|
5
7
|
protected post<T, U>(input: RequestInfo, body: U, init?: RequestInit): Promise<T>;
|
|
6
8
|
protected postWithHeaders<T, U>(input: RequestInfo, body: U, init?: RequestInit): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientBase.d.ts","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAeA,qBAAa,cAAc;IAC1B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpClientBase.d.ts","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAeA,qBAAa,cAAc;IAC1B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAErC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM;IAO5D,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;cAWlD,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;cAoB5D,IAAI,CAAC,CAAC,EAAE,CAAC,EACxB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,CAAC,CAAC;cAgCG,eAAe,CAAC,CAAC,EAAE,CAAC,EACnC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;cA6BzB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IASlE,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CAQpD;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { HttpError } from "./HttpError.js";
|
|
2
2
|
//#region src/api/HttpClientBase.ts
|
|
3
3
|
var HttpClientBase = class {
|
|
4
|
-
constructor(baseURL, prefix = "") {
|
|
4
|
+
constructor(baseURL, prefix = "", timeoutMs) {
|
|
5
5
|
this.baseURL = baseURL + prefix;
|
|
6
|
+
this.timeoutMs = timeoutMs;
|
|
7
|
+
}
|
|
8
|
+
withTimeout(init) {
|
|
9
|
+
if (this.timeoutMs === void 0) return init;
|
|
10
|
+
const timeout = AbortSignal.timeout(this.timeoutMs);
|
|
11
|
+
const signal = init?.signal ? AbortSignal.any([init.signal, timeout]) : timeout;
|
|
12
|
+
return {
|
|
13
|
+
...init,
|
|
14
|
+
signal
|
|
15
|
+
};
|
|
6
16
|
}
|
|
7
17
|
async fetch(input, init) {
|
|
8
18
|
try {
|
|
9
|
-
const response = await fetch(this.baseURL + input, init);
|
|
19
|
+
const response = await fetch(this.baseURL + input, this.withTimeout(init));
|
|
10
20
|
if (!response.ok && response.status !== 400 && !response.headers.get("content-type")?.includes("application/json")) throw new HttpError(response.status, response.statusText, response.url);
|
|
11
21
|
return this.responseHandler(response);
|
|
12
22
|
} catch (error) {
|
|
@@ -19,12 +29,12 @@ var HttpClientBase = class {
|
|
|
19
29
|
...init?.headers || {}
|
|
20
30
|
};
|
|
21
31
|
try {
|
|
22
|
-
const response = await fetch(this.baseURL + input, {
|
|
32
|
+
const response = await fetch(this.baseURL + input, this.withTimeout({
|
|
23
33
|
method: "POST",
|
|
24
34
|
body: JSON.stringify(body),
|
|
25
35
|
...init,
|
|
26
36
|
headers
|
|
27
|
-
});
|
|
37
|
+
}));
|
|
28
38
|
if (!response.ok && response.status !== 400 && !response.headers.get("content-type")?.includes("application/json")) throw new HttpError(response.status, response.statusText, response.url);
|
|
29
39
|
return this.responseHandler(response);
|
|
30
40
|
} catch (error) {
|
|
@@ -37,12 +47,12 @@ var HttpClientBase = class {
|
|
|
37
47
|
...init?.headers || {}
|
|
38
48
|
};
|
|
39
49
|
try {
|
|
40
|
-
const response = await fetch(this.baseURL + input, {
|
|
50
|
+
const response = await fetch(this.baseURL + input, this.withTimeout({
|
|
41
51
|
method: "POST",
|
|
42
52
|
body: JSON.stringify(body),
|
|
43
53
|
...init,
|
|
44
54
|
headers
|
|
45
|
-
});
|
|
55
|
+
}));
|
|
46
56
|
if (!response.ok && response.status !== 400 && !response.headers.get("content-type")?.includes("application/json")) throw new HttpError(response.status, response.statusText, response.url);
|
|
47
57
|
return {
|
|
48
58
|
data: await this.responseHandler(response),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientBase.js","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"HttpClientBase.js","sourceRoot":"","sources":["../../src/api/HttpClientBase.ts"],"names":[],"mappings":"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"}
|
package/dist/api/apiClient.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import HttpClientBase from "./HttpClientBase.js";
|
|
2
2
|
export declare class ApiClient extends HttpClientBase {
|
|
3
3
|
protected account: string;
|
|
4
|
-
constructor(baseUrl: string, account: string);
|
|
4
|
+
constructor(baseUrl: string, account: string, timeoutMs?: number);
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=apiClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/api/apiClient.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,SAAU,SAAQ,cAAc;IAC5C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/api/apiClient.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,SAAU,SAAQ,cAAc;IAC5C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAShE"}
|
package/dist/api/apiClient.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { HttpClientBase } from "./HttpClientBase.js";
|
|
2
2
|
//#region src/api/apiClient.ts
|
|
3
3
|
var ApiClient = class extends HttpClientBase {
|
|
4
|
-
constructor(baseUrl, account) {
|
|
4
|
+
constructor(baseUrl, account, timeoutMs) {
|
|
5
5
|
const baseUrlWithProtocol = !baseUrl.startsWith("http") ? `https://${baseUrl}` : baseUrl;
|
|
6
|
-
super(baseUrlWithProtocol);
|
|
6
|
+
super(baseUrlWithProtocol, "", timeoutMs);
|
|
7
7
|
this.account = account;
|
|
8
8
|
}
|
|
9
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/api/apiClient.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,OAAO,SAAU,SAAQ,cAAc;IAG5C,YAAY,OAAe,EAAE,OAAe;
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/api/apiClient.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,OAAO,SAAU,SAAQ,cAAc;IAG5C,YAAY,OAAe,EAAE,OAAe,EAAE,SAAkB;QAC/D,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YACtD,CAAC,CAAC,WAAW,OAAO,EAAE;YACtB,CAAC,CAAC,OAAO,CAAC;QAEX,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
const require_HttpError = require("./HttpError.cjs");
|
|
2
2
|
//#region src/api/HttpClientBase.ts
|
|
3
3
|
var HttpClientBase = class {
|
|
4
|
-
constructor(baseURL, prefix = "") {
|
|
4
|
+
constructor(baseURL, prefix = "", timeoutMs) {
|
|
5
5
|
this.baseURL = baseURL + prefix;
|
|
6
|
+
this.timeoutMs = timeoutMs;
|
|
7
|
+
}
|
|
8
|
+
withTimeout(init) {
|
|
9
|
+
if (this.timeoutMs === void 0) return init;
|
|
10
|
+
const timeout = AbortSignal.timeout(this.timeoutMs);
|
|
11
|
+
const signal = init?.signal ? AbortSignal.any([init.signal, timeout]) : timeout;
|
|
12
|
+
return {
|
|
13
|
+
...init,
|
|
14
|
+
signal
|
|
15
|
+
};
|
|
6
16
|
}
|
|
7
17
|
async fetch(input, init) {
|
|
8
18
|
try {
|
|
9
|
-
const response = await fetch(this.baseURL + input, init);
|
|
19
|
+
const response = await fetch(this.baseURL + input, this.withTimeout(init));
|
|
10
20
|
if (!response.ok && response.status !== 400 && !response.headers.get("content-type")?.includes("application/json")) throw new require_HttpError.HttpError(response.status, response.statusText, response.url);
|
|
11
21
|
return this.responseHandler(response);
|
|
12
22
|
} catch (error) {
|
|
@@ -19,12 +29,12 @@ var HttpClientBase = class {
|
|
|
19
29
|
...init?.headers || {}
|
|
20
30
|
};
|
|
21
31
|
try {
|
|
22
|
-
const response = await fetch(this.baseURL + input, {
|
|
32
|
+
const response = await fetch(this.baseURL + input, this.withTimeout({
|
|
23
33
|
method: "POST",
|
|
24
34
|
body: JSON.stringify(body),
|
|
25
35
|
...init,
|
|
26
36
|
headers
|
|
27
|
-
});
|
|
37
|
+
}));
|
|
28
38
|
if (!response.ok && response.status !== 400 && !response.headers.get("content-type")?.includes("application/json")) throw new require_HttpError.HttpError(response.status, response.statusText, response.url);
|
|
29
39
|
return this.responseHandler(response);
|
|
30
40
|
} catch (error) {
|
|
@@ -37,12 +47,12 @@ var HttpClientBase = class {
|
|
|
37
47
|
...init?.headers || {}
|
|
38
48
|
};
|
|
39
49
|
try {
|
|
40
|
-
const response = await fetch(this.baseURL + input, {
|
|
50
|
+
const response = await fetch(this.baseURL + input, this.withTimeout({
|
|
41
51
|
method: "POST",
|
|
42
52
|
body: JSON.stringify(body),
|
|
43
53
|
...init,
|
|
44
54
|
headers
|
|
45
|
-
});
|
|
55
|
+
}));
|
|
46
56
|
if (!response.ok && response.status !== 400 && !response.headers.get("content-type")?.includes("application/json")) throw new require_HttpError.HttpError(response.status, response.statusText, response.url);
|
|
47
57
|
return {
|
|
48
58
|
data: await this.responseHandler(response),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const require_HttpClientBase = require("./HttpClientBase.cjs");
|
|
2
2
|
//#region src/api/apiClient.ts
|
|
3
3
|
var ApiClient = class extends require_HttpClientBase.HttpClientBase {
|
|
4
|
-
constructor(baseUrl, account) {
|
|
4
|
+
constructor(baseUrl, account, timeoutMs) {
|
|
5
5
|
const baseUrlWithProtocol = !baseUrl.startsWith("http") ? `https://${baseUrl}` : baseUrl;
|
|
6
|
-
super(baseUrlWithProtocol);
|
|
6
|
+
super(baseUrlWithProtocol, "", timeoutMs);
|
|
7
7
|
this.account = account;
|
|
8
8
|
}
|
|
9
9
|
};
|
package/dist/tests/api.test-d.js
CHANGED
|
@@ -15,7 +15,7 @@ describe("the package entrypoint", () => {
|
|
|
15
15
|
});
|
|
16
16
|
});
|
|
17
17
|
describe("HttpClientBase's types", () => {
|
|
18
|
-
test("takes a base URL and an optional
|
|
18
|
+
test("takes a base URL, an optional prefix and an optional timeout", () => {
|
|
19
19
|
expectTypeOf().toEqualTypeOf();
|
|
20
20
|
});
|
|
21
21
|
test("the transport methods are not part of the public surface", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.test-d.js","sourceRoot":"","sources":["../../src/tests/api.test-d.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,cAAc,MAAM,0BAA0B,CAAC;AAEtD,OAAO,WAAW,EAAE,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC/C,YAAY,EAAiC,CAAC,aAAa,EAExD,CAAC;QACJ,YAAY,EAA+B,CAAC,aAAa,EAEtD,CAAC;QACJ,YAAY,EAA+B,CAAC,aAAa,EAEtD,CAAC;QACJ,YAAY,EAAoC,CAAC,aAAa,EAE3D,CAAC;QACJ,YAAY,EAET,CAAC,QAAQ,EAAU,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAClF,YAAY,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAU,CAAC;IAC1D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"api.test-d.js","sourceRoot":"","sources":["../../src/tests/api.test-d.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClientTimeout.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/httpClientTimeout.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { createServer, } from "node:http";
|
|
2
|
+
import { afterAll, beforeAll, describe, expect, test, vi } from "vitest";
|
|
3
|
+
import HttpClientBase from "../api/HttpClientBase.js";
|
|
4
|
+
import { ApiClient } from "../api/apiClient.js";
|
|
5
|
+
class TestClient extends HttpClientBase {
|
|
6
|
+
get(input, init) {
|
|
7
|
+
return this.fetch(input, init);
|
|
8
|
+
}
|
|
9
|
+
send(input, body) {
|
|
10
|
+
return this.post(input, body);
|
|
11
|
+
}
|
|
12
|
+
sendWithHeaders(input, body) {
|
|
13
|
+
return this.postWithHeaders(input, body);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class TestApiClient extends ApiClient {
|
|
17
|
+
get(input) {
|
|
18
|
+
return this.fetch(input);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
let server;
|
|
22
|
+
let baseUrl;
|
|
23
|
+
const open = [];
|
|
24
|
+
const handler = (req, res) => {
|
|
25
|
+
open.push(res);
|
|
26
|
+
if (req.url === "/fast") {
|
|
27
|
+
res.writeHead(200, { "content-type": "application/json" });
|
|
28
|
+
res.end(JSON.stringify({ ok: true }));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (req.url === "/stall-body") {
|
|
32
|
+
res.writeHead(200, { "content-type": "application/json" });
|
|
33
|
+
res.write('{"ok":');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
req.resume();
|
|
37
|
+
};
|
|
38
|
+
beforeAll(async () => {
|
|
39
|
+
vi.spyOn(console, "error").mockImplementation(() => undefined);
|
|
40
|
+
server = createServer(handler);
|
|
41
|
+
await new Promise((resolve) => server.listen(0, "127.0.0.1", () => resolve()));
|
|
42
|
+
const { port } = server.address();
|
|
43
|
+
baseUrl = `http://127.0.0.1:${port}`;
|
|
44
|
+
});
|
|
45
|
+
afterAll(async () => {
|
|
46
|
+
for (const res of open) {
|
|
47
|
+
res.destroy();
|
|
48
|
+
}
|
|
49
|
+
server.closeAllConnections();
|
|
50
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
51
|
+
vi.restoreAllMocks();
|
|
52
|
+
});
|
|
53
|
+
const TIMEOUT_MS = 200;
|
|
54
|
+
const expectTimeout = async (call) => {
|
|
55
|
+
const started = Date.now();
|
|
56
|
+
await expect(call).rejects.toMatchObject({ name: "TimeoutError" });
|
|
57
|
+
const elapsed = Date.now() - started;
|
|
58
|
+
expect(elapsed).toBeGreaterThanOrEqual(TIMEOUT_MS / 2);
|
|
59
|
+
expect(elapsed).toBeLessThan(2_000);
|
|
60
|
+
};
|
|
61
|
+
describe("request timeout", () => {
|
|
62
|
+
test("GET against a stalled server fails at the timeout", async () => {
|
|
63
|
+
await expectTimeout(new TestClient(baseUrl, "", TIMEOUT_MS).get("/stall"));
|
|
64
|
+
}, 4_000);
|
|
65
|
+
test("POST against a stalled server fails at the timeout", async () => {
|
|
66
|
+
await expectTimeout(new TestClient(baseUrl, "", TIMEOUT_MS).send("/stall", { a: 1 }));
|
|
67
|
+
}, 4_000);
|
|
68
|
+
test("postWithHeaders against a stalled server fails at the timeout", async () => {
|
|
69
|
+
await expectTimeout(new TestClient(baseUrl, "", TIMEOUT_MS).sendWithHeaders("/stall", {
|
|
70
|
+
a: 1,
|
|
71
|
+
}));
|
|
72
|
+
}, 4_000);
|
|
73
|
+
test("a body that stalls after the headers is also cut off", async () => {
|
|
74
|
+
await expectTimeout(new TestClient(baseUrl, "", TIMEOUT_MS).get("/stall-body"));
|
|
75
|
+
}, 4_000);
|
|
76
|
+
test("ApiClient forwards the timeout to the transport", async () => {
|
|
77
|
+
await expectTimeout(new TestApiClient(baseUrl, "account", TIMEOUT_MS).get("/stall"));
|
|
78
|
+
}, 4_000);
|
|
79
|
+
test("a fast response is unaffected", async () => {
|
|
80
|
+
await expect(new TestClient(baseUrl, "", 5_000).get("/fast")).resolves.toEqual({ ok: true });
|
|
81
|
+
});
|
|
82
|
+
test("a caller's own abort signal still works alongside the timeout", async () => {
|
|
83
|
+
const controller = new AbortController();
|
|
84
|
+
const call = new TestClient(baseUrl, "", 60_000).get("/stall", {
|
|
85
|
+
signal: controller.signal,
|
|
86
|
+
});
|
|
87
|
+
controller.abort();
|
|
88
|
+
await expect(call).rejects.toMatchObject({ name: "AbortError" });
|
|
89
|
+
});
|
|
90
|
+
test("without a timeout the request is left to the platform default", async () => {
|
|
91
|
+
const controller = new AbortController();
|
|
92
|
+
const call = new TestClient(baseUrl).get("/stall", {
|
|
93
|
+
signal: controller.signal,
|
|
94
|
+
});
|
|
95
|
+
const outcome = await Promise.race([
|
|
96
|
+
call.then(() => "settled", () => "settled"),
|
|
97
|
+
new Promise((resolve) => setTimeout(() => resolve("pending"), TIMEOUT_MS * 2)),
|
|
98
|
+
]);
|
|
99
|
+
controller.abort();
|
|
100
|
+
await call.catch(() => undefined);
|
|
101
|
+
expect(outcome).toBe("pending");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=httpClientTimeout.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClientTimeout.unit.test.js","sourceRoot":"","sources":["../../src/tests/httpClientTimeout.unit.test.ts"],"names":[],"mappings":"AAiBA,OAAO,EAIN,YAAY,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,cAAc,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,UAAW,SAAQ,cAAc;IAC/B,GAAG,CAAI,KAAkB,EAAE,IAAkB;QACnD,OAAO,IAAI,CAAC,KAAK,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACM,IAAI,CAAO,KAAkB,EAAE,IAAO;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAO,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACM,eAAe,CACrB,KAAkB,EAClB,IAAO;QAEP,OAAO,IAAI,CAAC,eAAe,CAAO,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACD;AAED,MAAM,aAAc,SAAQ,SAAS;IAC7B,GAAG,CAAI,KAAkB;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAI,KAAK,CAAC,CAAC;IAC7B,CAAC;CACD;AAED,IAAI,MAAc,CAAC;AACnB,IAAI,OAAe,CAAC;AACpB,MAAM,IAAI,GAAqB,EAAE,CAAC;AAElC,MAAM,OAAO,GAAG,CAAC,GAAoB,EAAE,GAAmB,EAAQ,EAAE;IACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO;IACR,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;QAE/B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO;IACR,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,CAAC;AACd,CAAC,CAAC;AAEF,SAAS,CAAC,KAAK,IAAI,EAAE;IACpB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAC9C,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;IACjD,OAAO,GAAG,oBAAoB,IAAI,EAAE,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,GAAG,CAAC,OAAO,EAAE,CAAC;IACf,CAAC;IACD,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,EAAE,CAAC,eAAe,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,aAAa,GAAG,KAAK,EAAE,IAAsB,EAAiB,EAAE;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IAGrC,MAAM,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,aAAa,CAClB,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAChE,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,aAAa,CAClB,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE;YACjE,CAAC,EAAE,CAAC;SACJ,CAAC,CACF,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,aAAa,CAClB,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAC1D,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,aAAa,CAClB,IAAI,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAC/D,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,MAAM,CACX,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAC/C,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC9D,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;YAClD,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,IAAI,CACR,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CACf;YACD,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CACpD;SACD,CAAC,CAAC;QACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/api",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.7",
|
|
4
4
|
"description": "Wrapper for the provider API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://github.com/prosopo/captcha#readme",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@prosopo/types": "5.
|
|
42
|
+
"@prosopo/types": "5.11.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@prosopo/config": "3.4.
|
|
45
|
+
"@prosopo/config": "3.4.2",
|
|
46
46
|
"@types/node": "22.10.2",
|
|
47
47
|
"@vitest/coverage-v8": "4.1.11",
|
|
48
48
|
"concurrently": "9.0.1",
|