@prosopo/server 2.11.0 → 2.11.2
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 +4 -4
- 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.2 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 58ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/server@2.11.
|
|
2
|
+
> @prosopo/server@2.11.2 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
10:09:46 AM - 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
|
-
|
|
18
|
+
10:09:46 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/index.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
10:09:46 AM - 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
|
-
|
|
22
|
+
10:09:46 AM - 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
|
-
|
|
24
|
+
10:09:46 AM - 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
|
-
|
|
26
|
+
10:09:46 AM - 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
|
-
|
|
28
|
+
10:09:46 AM - 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
|
-
|
|
30
|
+
10:09:46 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
10:09:46 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
10:09:46 AM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
10:09:46 AM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/tests/providers.unit.test.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
10:09:46 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
10:09:46 AM - 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.2 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.2 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -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 61ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @prosopo/server
|
|
2
2
|
|
|
3
|
+
## 2.11.2
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- d7a0a64: Fix provider URL matcher
|
|
7
|
+
- Updated dependencies [d7a0a64]
|
|
8
|
+
- @prosopo/load-balancer@2.10.35
|
|
9
|
+
|
|
10
|
+
## 2.11.1
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [eb34de6]
|
|
14
|
+
- @prosopo/types@5.5.0
|
|
15
|
+
- @prosopo/api@4.1.1
|
|
16
|
+
- @prosopo/keyring@2.9.80
|
|
17
|
+
- @prosopo/load-balancer@2.10.34
|
|
18
|
+
|
|
3
19
|
## 2.11.0
|
|
4
20
|
### Minor 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":"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;AAmB3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,WAA+B,EACD,EAAE;IAChC,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACJ,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAChD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAChD,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,OAAO,aAAa;IAQzB,YAAY,MAAiC,EAAE,IAAkB;QAChE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,SAAS,CACtB,IAAI,CAAC,MAAM,CAAC,QAA+B,EAC3C,iBAAiB,CACjB,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,IAAI,EAAE,SAAS;SACf,CAAC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,WAAmB;QACjC,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAyBM,KAAK,CAAC,cAAc,CAC1B,KAAa,EACb,QAA8B,EAC9B,WAAmB,EACnB,SAAiB,EACjB,IAAY,EACZ,SAAkB,EAClB,EAAW,EACX,KAAc,EACd,WAAyB,EACzB,eAAwB;QAExB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,IAAI,QAAQ,EAAE;YAC3D,GAAG,EAAE,yBAAyB;SAC9B,CAAC,CAAC,CAAC;QACJ,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxB,MAAM,IAAI,oBAAoB,CAAC,2BAA2B,EAAE;gBAC3D,OAAO,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;aACzC,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxD,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,yBAAyB,CACjD,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,KAAK,EACL,eAAe,CACf,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,sBAAsB,CAC9C,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,KAAK,EACL,eAAe,CACf,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,cAAc,CACtC,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,CAAC,KAAK,CAAC,aAAa,EAC5B,EAAE,EACF,KAAK,EACL,eAAe,CACf,CAAC;QACH,CAAC;QASD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;YACvC,GAAG,EAAE,6EAA6E;SAClF,CAAC,CAAC,CAAC;QACJ,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,WAAW,CAAC,sBAAsB,CAC9C,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,KAAK,EACL,eAAe,CACf,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,WAAW,CAAC,cAAc,CACtC,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,CAAC,KAAK,CAAC,aAAa,EAC5B,EAAE,EACF,KAAK,EACL,eAAe,CACf,CAAC;IACH,CAAC;IAEO,QAAQ,CACf,SAAiB,EACjB,SAAiB,EACjB,KAAa;QAEb,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;gBAC9B,GAAG,EAAE,GAAG,KAAK,wBAAwB;aACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,iBAAiB;QACxB,OAAO;YACN,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC;SACpD,CAAC;IACH,CAAC;IAQM,KAAK,CAAC,UAAU,CACtB,KAAsB,EACtB,EAAW,EACX,KAAc,EACd,eAAwB;QAExB,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAE9C,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAC7D,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAQvC,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,MAAM,YAAY,CACnC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAC9B,MAAM,CACN,CAAC;YAGF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;YAG9D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;oBACxB,IAAI,EAAE,EAAE,WAAW,EAAE;oBACrB,GAAG,EAAE,oBAAoB;iBACzB,CAAC,CAAC,CAAC;gBACJ,OAAO;oBACN,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;iBACvC,CAAC;YACH,CAAC;YACD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,cAAc,CACrD,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,QAAQ,CAAC,GAAG,EACZ,MAAM,CAAC,SAAS,CAAC,EACjB,IAAI,EACJ,SAAS,EACT,EAAE,EACF,KAAK,EACL,WAAW,EACX,eAAe,CACf,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,IAAI,EAAE;oBACL,oBAAoB;oBACpB,WAAW;oBACX,IAAI;oBACJ,SAAS;oBACT,WAAW,EAAE,WAAW,IAAI,QAAQ;oBACpC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO;iBAC3B;aACD,CAAC,CAAC,CAAC;YAEJ,OAAO,oBAAoB,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,GAAG,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YACzD,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE;gBAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aACxB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD"}
|
|
@@ -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.2",
|
|
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.1",
|
|
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.
|
|
44
|
+
"@prosopo/keyring": "2.9.80",
|
|
45
|
+
"@prosopo/load-balancer": "2.10.35",
|
|
46
|
+
"@prosopo/types": "5.5.0",
|
|
47
47
|
"@prosopo/util": "3.3.7",
|
|
48
48
|
"i18next": "24.1.0"
|
|
49
49
|
},
|