@prosopo/server 2.11.1 → 2.11.3
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 +3 -3
- package/.turbo/turbo-build$colon$tsc.log +14 -14
- package/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +16 -0
- package/dist/cjs/server.cjs +14 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +14 -2
- package/dist/server.js.map +1 -1
- package/dist/tests/detectIpMode.unit.test.d.ts +2 -0
- package/dist/tests/detectIpMode.unit.test.d.ts.map +1 -0
- package/dist/tests/detectIpMode.unit.test.js +35 -0
- package/dist/tests/detectIpMode.unit.test.js.map +1 -0
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/server@2.11.
|
|
2
|
+
> @prosopo/server@2.11.3 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -39,6 +39,6 @@ computing gzip size...
|
|
|
39
39
|
dist/cjs/index.cjs 0.65 kB │ gzip: 0.31 kB
|
|
40
40
|
dist/cjs/config.cjs 0.82 kB │ gzip: 0.41 kB
|
|
41
41
|
dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
|
|
42
|
-
dist/cjs/server.cjs 6.
|
|
42
|
+
dist/cjs/server.cjs 6.49 kB │ gzip: 2.03 kB
|
|
43
43
|
|
|
44
|
-
[32m✓ built in
|
|
44
|
+
[32m✓ built in 34ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/server@2.11.
|
|
2
|
+
> @prosopo/server@2.11.3 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
6:
|
|
5
|
+
6:47:15 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../locale/tsconfig.json
|
|
8
8
|
* ../util/tsconfig.json
|
|
@@ -15,27 +15,27 @@
|
|
|
15
15
|
* ../load-balancer/tsconfig.json
|
|
16
16
|
* tsconfig.json
|
|
17
17
|
|
|
18
|
-
6:
|
|
18
|
+
6:47:15 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'
|
|
19
19
|
|
|
20
|
-
6:
|
|
20
|
+
6:47:15 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
21
21
|
|
|
22
|
-
6:
|
|
22
|
+
6:47:15 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
23
23
|
|
|
24
|
-
6:
|
|
24
|
+
6:47:15 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'
|
|
25
25
|
|
|
26
|
-
6:
|
|
26
|
+
6:47:15 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'
|
|
27
27
|
|
|
28
|
-
6:
|
|
28
|
+
6:47:15 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
6:
|
|
30
|
+
6:47:15 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/tests/loggerBrowser.unit.test.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
6:
|
|
32
|
+
6:47:15 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
6:
|
|
34
|
+
6:47:15 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.test.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
6:
|
|
36
|
+
6:47:15 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/index.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
6:
|
|
38
|
+
6:47:15 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
39
39
|
|
|
40
|
-
6:
|
|
40
|
+
6:47:15 PM - Building project '/home/runner/work/captcha/captcha/packages/server/tsconfig.json'...
|
|
41
41
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/server@2.11.
|
|
2
|
+
> @prosopo/server@2.11.3 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/server@2.11.
|
|
6
|
+
> @prosopo/server@2.11.3 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -23,7 +23,6 @@ ViteEsmConfig: .
|
|
|
23
23
|
{
|
|
24
24
|
externals: [
|
|
25
25
|
'@prosopo/api',
|
|
26
|
-
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
27
26
|
'@prosopo/types',
|
|
28
27
|
'@prosopo/locale',
|
|
29
28
|
'@prosopo/util',
|
|
@@ -34,6 +33,7 @@ ViteEsmConfig: .
|
|
|
34
33
|
'@prosopo/load-balancer'
|
|
35
34
|
]
|
|
36
35
|
}
|
|
36
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
37
37
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
38
38
|
Bundle build started
|
|
39
39
|
[2K
|
|
@@ -43,6 +43,6 @@ computing gzip size...
|
|
|
43
43
|
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
44
44
|
dist/index.js 0.43 kB │ gzip: 0.23 kB
|
|
45
45
|
dist/config.js 0.78 kB │ gzip: 0.40 kB
|
|
46
|
-
dist/server.js
|
|
46
|
+
dist/server.js 6.13 kB │ gzip: 1.93 kB
|
|
47
47
|
|
|
48
|
-
[32m✓ built in
|
|
48
|
+
[32m✓ built in 143ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @prosopo/server
|
|
2
2
|
|
|
3
|
+
## 2.11.3
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- Updated dependencies [0a88895]
|
|
7
|
+
- @prosopo/types@5.5.1
|
|
8
|
+
- @prosopo/api@4.1.2
|
|
9
|
+
- @prosopo/keyring@2.9.81
|
|
10
|
+
- @prosopo/load-balancer@2.10.36
|
|
11
|
+
|
|
12
|
+
## 2.11.2
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- d7a0a64: Fix provider URL matcher
|
|
16
|
+
- Updated dependencies [d7a0a64]
|
|
17
|
+
- @prosopo/load-balancer@2.10.35
|
|
18
|
+
|
|
3
19
|
## 2.11.1
|
|
4
20
|
### Patch Changes
|
|
5
21
|
|
package/dist/cjs/server.cjs
CHANGED
|
@@ -9,6 +9,17 @@ let _prosopo_util = require("@prosopo/util");
|
|
|
9
9
|
let i18next = require("i18next");
|
|
10
10
|
i18next = require_runtime.__toESM(i18next, 1);
|
|
11
11
|
//#region src/server.ts
|
|
12
|
+
var detectIpMode = (providerUrl) => {
|
|
13
|
+
if (!providerUrl) return void 0;
|
|
14
|
+
let hostname;
|
|
15
|
+
try {
|
|
16
|
+
hostname = new URL(providerUrl).hostname;
|
|
17
|
+
} catch {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (hostname.startsWith("ipv4.")) return "ipv4";
|
|
21
|
+
if (hostname.startsWith("ipv6.")) return "ipv6";
|
|
22
|
+
};
|
|
12
23
|
var ProsopoServer = class {
|
|
13
24
|
constructor(config, pair) {
|
|
14
25
|
this.config = config;
|
|
@@ -112,7 +123,8 @@ var ProsopoServer = class {
|
|
|
112
123
|
try {
|
|
113
124
|
const payload = (0, _prosopo_types.decodeProcaptchaOutput)(token);
|
|
114
125
|
const { providerUrl, challenge, timestamp, user, captchaType } = _prosopo_types.ProcaptchaOutputSchema.parse(payload);
|
|
115
|
-
const
|
|
126
|
+
const ipMode = detectIpMode(providerUrl);
|
|
127
|
+
const provider = (await (0, _prosopo_load_balancer.loadBalancer)(this.config.defaultEnvironment, ipMode)).find((p) => p.url === providerUrl);
|
|
116
128
|
if (!provider) {
|
|
117
129
|
this.logger.error(() => ({
|
|
118
130
|
data: { providerUrl },
|
|
@@ -148,3 +160,4 @@ var ProsopoServer = class {
|
|
|
148
160
|
};
|
|
149
161
|
//#endregion
|
|
150
162
|
exports.ProsopoServer = ProsopoServer;
|
|
163
|
+
exports.detectIpMode = detectIpMode;
|
package/dist/server.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Keyring } from "@prosopo/keyring";
|
|
|
3
3
|
import { type Logger } from "@prosopo/logger";
|
|
4
4
|
import type { KeyringPair } from "@prosopo/types";
|
|
5
5
|
import { type CaptchaTimeoutOutput, CaptchaType, type ProcaptchaToken, type ProsopoServerConfigOutput, type VerificationResponse } from "@prosopo/types";
|
|
6
|
+
export declare const detectIpMode: (providerUrl: string | undefined) => "ipv4" | "ipv6" | undefined;
|
|
6
7
|
export declare class ProsopoServer {
|
|
7
8
|
config: ProsopoServerConfigOutput;
|
|
8
9
|
dappAccount: string | undefined;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAcA,OAAO,EAAa,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAiB,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACN,KAAK,oBAAoB,EACzB,WAAW,EAEX,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAEzB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAcA,OAAO,EAAa,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAiB,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACN,KAAK,oBAAoB,EACzB,WAAW,EAEX,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAEzB,MAAM,gBAAgB,CAAC;AAqBxB,eAAO,MAAM,YAAY,gBACX,MAAM,GAAG,SAAS,KAC7B,MAAM,GAAG,MAAM,GAAG,SAWpB,CAAC;AAEF,qBAAa,aAAa;IACzB,MAAM,EAAE,yBAAyB,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;gBAElB,MAAM,EAAE,yBAAyB,EAAE,IAAI,CAAC,EAAE,WAAW;IAcjE,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW;IA2BnC,cAAc,CAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,EACzB,eAAe,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;IAoGhC,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,iBAAiB;IAaZ,UAAU,CACtB,KAAK,EAAE,eAAe,EACtB,EAAE,CAAC,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;CAkEhC"}
|
package/dist/server.js
CHANGED
|
@@ -7,6 +7,17 @@ import { CaptchaType, ProcaptchaOutputSchema, decodeProcaptchaOutput } from "@pr
|
|
|
7
7
|
import { u8aToHex } from "@prosopo/util";
|
|
8
8
|
import i18n from "i18next";
|
|
9
9
|
//#region src/server.ts
|
|
10
|
+
var detectIpMode = (providerUrl) => {
|
|
11
|
+
if (!providerUrl) return void 0;
|
|
12
|
+
let hostname;
|
|
13
|
+
try {
|
|
14
|
+
hostname = new URL(providerUrl).hostname;
|
|
15
|
+
} catch {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (hostname.startsWith("ipv4.")) return "ipv4";
|
|
19
|
+
if (hostname.startsWith("ipv6.")) return "ipv6";
|
|
20
|
+
};
|
|
10
21
|
var ProsopoServer = class {
|
|
11
22
|
constructor(config, pair) {
|
|
12
23
|
this.config = config;
|
|
@@ -110,7 +121,8 @@ var ProsopoServer = class {
|
|
|
110
121
|
try {
|
|
111
122
|
const payload = decodeProcaptchaOutput(token);
|
|
112
123
|
const { providerUrl, challenge, timestamp, user, captchaType } = ProcaptchaOutputSchema.parse(payload);
|
|
113
|
-
const
|
|
124
|
+
const ipMode = detectIpMode(providerUrl);
|
|
125
|
+
const provider = (await loadBalancer(this.config.defaultEnvironment, ipMode)).find((p) => p.url === providerUrl);
|
|
114
126
|
if (!provider) {
|
|
115
127
|
this.logger.error(() => ({
|
|
116
128
|
data: { providerUrl },
|
|
@@ -144,4 +156,4 @@ var ProsopoServer = class {
|
|
|
144
156
|
}
|
|
145
157
|
};
|
|
146
158
|
//#endregion
|
|
147
|
-
export { ProsopoServer };
|
|
159
|
+
export { ProsopoServer, detectIpMode };
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAA8B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAEN,WAAW,EACX,sBAAsB,EAItB,sBAAsB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,IAAI,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectIpMode.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/detectIpMode.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { detectIpMode } from "../server.js";
|
|
3
|
+
describe("detectIpMode", () => {
|
|
4
|
+
it("detects ipv4 on a single-stack sub-zone URL", () => {
|
|
5
|
+
expect(detectIpMode("https://ipv4.pronode15.prosopo.io")).toBe("ipv4");
|
|
6
|
+
});
|
|
7
|
+
it("detects ipv6 on a single-stack sub-zone URL", () => {
|
|
8
|
+
expect(detectIpMode("https://ipv6.pronode15.prosopo.io")).toBe("ipv6");
|
|
9
|
+
});
|
|
10
|
+
it("returns undefined for a dual-stack URL", () => {
|
|
11
|
+
expect(detectIpMode("https://pronode15.prosopo.io")).toBeUndefined();
|
|
12
|
+
});
|
|
13
|
+
it("detects ipv4 with a trailing slash", () => {
|
|
14
|
+
expect(detectIpMode("https://ipv4.pronode15.prosopo.io/")).toBe("ipv4");
|
|
15
|
+
});
|
|
16
|
+
it("detects ipv4 with a path", () => {
|
|
17
|
+
expect(detectIpMode("https://ipv4.pronode15.prosopo.io/some/path?q=1")).toBe("ipv4");
|
|
18
|
+
});
|
|
19
|
+
it("does NOT treat an `ipv4-` prefix as ipv4", () => {
|
|
20
|
+
expect(detectIpMode("https://ipv4-shim.pronode15.prosopo.io")).toBeUndefined();
|
|
21
|
+
});
|
|
22
|
+
it("does NOT treat `ipv4` as a substring elsewhere in the hostname", () => {
|
|
23
|
+
expect(detectIpMode("https://pronode15.ipv4-thing.prosopo.io")).toBeUndefined();
|
|
24
|
+
});
|
|
25
|
+
it("detects ipv4 regardless of scheme", () => {
|
|
26
|
+
expect(detectIpMode("http://ipv4.pronode15.prosopo.io")).toBe("ipv4");
|
|
27
|
+
});
|
|
28
|
+
it("returns undefined for an unparseable URL", () => {
|
|
29
|
+
expect(detectIpMode("not-a-url")).toBeUndefined();
|
|
30
|
+
});
|
|
31
|
+
it("returns undefined for an empty string", () => {
|
|
32
|
+
expect(detectIpMode("")).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=detectIpMode.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectIpMode.unit.test.js","sourceRoot":"","sources":["../../src/tests/detectIpMode.unit.test.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAG7B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IAIH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,YAAY,CAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACnC,MAAM,CACL,YAAY,CAAC,iDAAiD,CAAC,CAC/D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAQH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,CACL,YAAY,CAAC,wCAAwC,CAAC,CACtD,CAAC,aAAa,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACzE,MAAM,CACL,YAAY,CAAC,yCAAyC,CAAC,CACvD,CAAC,aAAa,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAQH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,YAAY,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAQH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/server",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.3",
|
|
4
4
|
"description": "NodeJS package for server side communication with the prosopo captcha client",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"homepage": "https://github.com/prosopo/captcha#readme",
|
|
39
39
|
"sideEffects": false,
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@prosopo/api": "4.1.
|
|
41
|
+
"@prosopo/api": "4.1.2",
|
|
42
42
|
"@prosopo/common": "3.1.52",
|
|
43
43
|
"@prosopo/logger": "2.0.7",
|
|
44
|
-
"@prosopo/keyring": "2.9.
|
|
45
|
-
"@prosopo/load-balancer": "2.10.
|
|
46
|
-
"@prosopo/types": "5.5.
|
|
44
|
+
"@prosopo/keyring": "2.9.81",
|
|
45
|
+
"@prosopo/load-balancer": "2.10.36",
|
|
46
|
+
"@prosopo/types": "5.5.1",
|
|
47
47
|
"@prosopo/util": "3.3.7",
|
|
48
48
|
"i18next": "24.1.0"
|
|
49
49
|
},
|