@prosopo/provider-mock 2.8.135 → 2.8.137

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/provider-mock@2.8.135 build:cjs
2
+ > @prosopo/provider-mock@2.8.137 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -53,13 +53,16 @@ ViteCommonJSConfig: .
53
53
  '@prosopo/dotenv'
54
54
  ]
55
55
  }
56
- vite v6.4.1 building SSR bundle for production...
56
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
57
+ vite v8.1.5 building ssr environment for production...
57
58
  Bundle build started
58
- transforming...
59
- Build end
60
- ✓ 3 modules transformed.
59
+ 
60
+ ✓ 4 modules transformed.
61
61
  rendering chunks...
62
- dist/cjs/start.cjs 0.89 kB
63
- dist/cjs/db.cjs 2.72 kB
64
- dist/cjs/api.cjs 2.82 kB
65
- ✓ built in 143ms
62
+ computing gzip size...
63
+ dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
64
+ dist/cjs/start.cjs 1.15 kB │ gzip: 0.51 kB
65
+ dist/cjs/db.cjs 2.27 kB │ gzip: 0.87 kB
66
+ dist/cjs/api.cjs 3.06 kB │ gzip: 1.32 kB
67
+
68
+ ✓ built in 44ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/provider-mock@2.8.135 build:tsc
2
+ > @prosopo/provider-mock@2.8.137 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 11:45:07 PM - Projects in this build:
5
+ 9:00:10 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../../packages/util/tsconfig.json
8
8
  * ../../packages/logger/tsconfig.json
@@ -27,51 +27,51 @@
27
27
  * ../../packages/dotenv/tsconfig.json
28
28
  * tsconfig.json
29
29
 
30
- 11:45:07 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'
30
+ 9:00:10 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'
31
31
 
32
- 11:45:07 PM - Project '../../packages/util/tsconfig.json' is up to date because newest input '../../packages/util/src/url.ts' is older than output '../../packages/util/tsconfig.tsbuildinfo'
32
+ 9:00:10 PM - Project '../../packages/util/tsconfig.json' is up to date because newest input '../../packages/util/src/url.ts' is older than output '../../packages/util/tsconfig.tsbuildinfo'
33
33
 
34
- 11:45:07 PM - Project '../../packages/logger/tsconfig.json' is up to date because newest input '../../packages/logger/src/index.ts' is older than output '../../packages/logger/tsconfig.tsbuildinfo'
34
+ 9:00:10 PM - Project '../../packages/logger/tsconfig.json' is up to date because newest input '../../packages/logger/src/index.ts' is older than output '../../packages/logger/tsconfig.tsbuildinfo'
35
35
 
36
- 11:45:07 PM - Project '../../packages/api-route/tsconfig.json' is up to date because newest input '../../packages/api-route/src/apiRoutes.ts' is older than output '../../packages/api-route/tsconfig.tsbuildinfo'
36
+ 9:00:10 PM - Project '../../packages/api-route/tsconfig.json' is up to date because newest input '../../packages/api-route/src/apiRoutes.ts' is older than output '../../packages/api-route/tsconfig.tsbuildinfo'
37
37
 
38
- 11:45:07 PM - Project '../../packages/locale/tsconfig.json' is up to date because newest input '../../packages/locale/src/useTranslation.ts' is older than output '../../packages/locale/tsconfig.tsbuildinfo'
38
+ 9:00:10 PM - Project '../../packages/locale/tsconfig.json' is up to date because newest input '../../packages/locale/src/translationKey.ts' is older than output '../../packages/locale/tsconfig.tsbuildinfo'
39
39
 
40
- 11:45:07 PM - Project '../../packages/util-crypto/tsconfig.json' is up to date because newest input '../../packages/util-crypto/src/types.ts' is older than output '../../packages/util-crypto/tsconfig.tsbuildinfo'
40
+ 9:00:10 PM - Project '../../packages/util-crypto/tsconfig.json' is up to date because newest input '../../packages/util-crypto/src/types.ts' is older than output '../../packages/util-crypto/tsconfig.tsbuildinfo'
41
41
 
42
- 11:45:07 PM - Project '../../packages/types/tsconfig.json' is up to date because newest input '../../packages/types/src/provider/api.ts' is older than output '../../packages/types/tsconfig.tsbuildinfo'
42
+ 9:00:10 PM - Project '../../packages/types/tsconfig.json' is up to date because newest input '../../packages/types/src/provider/api.ts' is older than output '../../packages/types/tsconfig.tsbuildinfo'
43
43
 
44
- 11:45:08 PM - Project '../../packages/common/tsconfig.json' is up to date because newest input '../../packages/common/src/error.ts' is older than output '../../packages/common/tsconfig.tsbuildinfo'
44
+ 9:00:10 PM - Project '../../packages/common/tsconfig.json' is up to date because newest input '../../packages/common/src/tests/utils/batches.unit.test.ts' is older than output '../../packages/common/tsconfig.tsbuildinfo'
45
45
 
46
- 11:45:08 PM - Project '../../packages/ipinfo/tsconfig.json' is up to date because newest input '../../packages/ipinfo/src/index.ts' is older than output '../../packages/ipinfo/tsconfig.tsbuildinfo'
46
+ 9:00:10 PM - Project '../../packages/ipinfo/tsconfig.json' is up to date because newest input '../../packages/ipinfo/src/IpInfoService.ts' is older than output '../../packages/ipinfo/tsconfig.tsbuildinfo'
47
47
 
48
- 11:45:08 PM - Project '../../packages/redis-client/tsconfig.json' is up to date because newest input '../../packages/redis-client/src/index.ts' is older than output '../../packages/redis-client/tsconfig.tsbuildinfo'
48
+ 9:00:10 PM - Project '../../packages/redis-client/tsconfig.json' is up to date because newest input '../../packages/redis-client/src/index.ts' is older than output '../../packages/redis-client/tsconfig.tsbuildinfo'
49
49
 
50
- 11:45:08 PM - Project '../../packages/api/tsconfig.json' is up to date because newest input '../../packages/api/src/index.ts' is older than output '../../packages/api/tsconfig.tsbuildinfo'
50
+ 9:00:10 PM - Project '../../packages/api/tsconfig.json' is up to date because newest input '../../packages/api/src/index.ts' is older than output '../../packages/api/tsconfig.tsbuildinfo'
51
51
 
52
- 11:45:08 PM - Project '../../packages/user-access-policy/tsconfig.json' is up to date because newest input '../../packages/user-access-policy/src/transformRule.ts' is older than output '../../packages/user-access-policy/tsconfig.tsbuildinfo'
52
+ 9:00:10 PM - Project '../../packages/user-access-policy/tsconfig.json' is up to date because newest input '../../packages/user-access-policy/src/ruleRecord.ts' is older than output '../../packages/user-access-policy/tsconfig.tsbuildinfo'
53
53
 
54
- 11:45:08 PM - Project '../../packages/types-database/tsconfig.json' is up to date because newest input '../../packages/types-database/src/types/captcha.ts' is older than output '../../packages/types-database/tsconfig.tsbuildinfo'
54
+ 9:00:10 PM - Project '../../packages/types-database/tsconfig.json' is up to date because newest input '../../packages/types-database/src/types/bannedDomain.ts' is older than output '../../packages/types-database/tsconfig.tsbuildinfo'
55
55
 
56
- 11:45:08 PM - Project '../../packages/database/tsconfig.json' is up to date because newest input '../../packages/database/src/tests/unit/redisCacheEscalation.unit.test.ts' is older than output '../../packages/database/tsconfig.tsbuildinfo'
56
+ 9:00:10 PM - Project '../../packages/database/tsconfig.json' is up to date because newest input '../../packages/database/src/tests/mongoGlobalSetup.ts' is older than output '../../packages/database/tsconfig.tsbuildinfo'
57
57
 
58
- 11:45:08 PM - Project '../../packages/keyring/tsconfig.json' is up to date because newest input '../../packages/keyring/src/keyring/keyring.ts' is older than output '../../packages/keyring/tsconfig.tsbuildinfo'
58
+ 9:00:10 PM - Project '../../packages/keyring/tsconfig.json' is up to date because newest input '../../packages/keyring/src/keyring/keyring.ts' is older than output '../../packages/keyring/tsconfig.tsbuildinfo'
59
59
 
60
- 11:45:08 PM - Project '../../packages/types-env/tsconfig.json' is up to date because newest input '../../packages/types-env/src/index.ts' is older than output '../../packages/types-env/tsconfig.tsbuildinfo'
60
+ 9:00:10 PM - Project '../../packages/types-env/tsconfig.json' is up to date because newest input '../../packages/types-env/src/index.ts' is older than output '../../packages/types-env/tsconfig.tsbuildinfo'
61
61
 
62
- 11:45:08 PM - Project '../../packages/env/tsconfig.json' is up to date because newest input '../../packages/env/src/env.ts' is older than output '../../packages/env/tsconfig.tsbuildinfo'
62
+ 9:00:11 PM - Project '../../packages/env/tsconfig.json' is up to date because newest input '../../packages/env/src/index.ts' is older than output '../../packages/env/tsconfig.tsbuildinfo'
63
63
 
64
- 11:45:08 PM - Project '../../packages/api-express-router/tsconfig.json' is up to date because newest input '../../packages/api-express-router/src/errorHandler.ts' is older than output '../../packages/api-express-router/tsconfig.tsbuildinfo'
64
+ 9:00:11 PM - Project '../../packages/api-express-router/tsconfig.json' is up to date because newest input '../../packages/api-express-router/src/errorHandler.ts' is older than output '../../packages/api-express-router/tsconfig.tsbuildinfo'
65
65
 
66
- 11:45:08 PM - Project '../../packages/datasets/tsconfig.json' is up to date because newest input '../../packages/datasets/src/index.ts' is older than output '../../packages/datasets/tsconfig.tsbuildinfo'
66
+ 9:00:11 PM - Project '../../packages/datasets/tsconfig.json' is up to date because newest input '../../packages/datasets/src/tests/mocks/data/captchas.ts' is older than output '../../packages/datasets/tsconfig.tsbuildinfo'
67
67
 
68
- 11:45:08 PM - Project '../../packages/load-balancer/tsconfig.json' is up to date because newest input '../../packages/load-balancer/src/index.ts' is older than output '../../packages/load-balancer/tsconfig.tsbuildinfo'
68
+ 9:00:11 PM - Project '../../packages/load-balancer/tsconfig.json' is up to date because newest input '../../packages/load-balancer/src/tests/providers.unit.test.ts' is older than output '../../packages/load-balancer/tsconfig.tsbuildinfo'
69
69
 
70
- 11:45:08 PM - Project '../../packages/provider/tsconfig.json' is up to date because newest input '../../packages/provider/src/utils/dns.ts' is older than output '../../packages/provider/tsconfig.tsbuildinfo'
70
+ 9:00:11 PM - Project '../../packages/provider/tsconfig.json' is up to date because newest input '../../packages/provider/src/util.ts' is older than output '../../packages/provider/tsconfig.tsbuildinfo'
71
71
 
72
- 11:45:08 PM - Project '../../packages/dotenv/tsconfig.json' is up to date because newest input '../../packages/dotenv/src/env.ts' is older than output '../../packages/dotenv/tsconfig.tsbuildinfo'
72
+ 9:00:11 PM - Project '../../packages/dotenv/tsconfig.json' is up to date because newest input '../../packages/dotenv/src/env.ts' is older than output '../../packages/dotenv/tsconfig.tsbuildinfo'
73
73
 
74
- 11:45:08 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
74
+ 9:00:11 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
75
75
 
76
- 11:45:08 PM - Building project '/home/runner/work/captcha/captcha/demos/provider-mock/tsconfig.json'...
76
+ 9:00:11 PM - Building project '/home/runner/work/captcha/captcha/demos/provider-mock/tsconfig.json'...
77
77
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/provider-mock@2.8.135 build
2
+ > @prosopo/provider-mock@2.8.137 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/provider-mock@2.8.135 build:cross-env
6
+ > @prosopo/provider-mock@2.8.137 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -57,13 +57,16 @@ ViteEsmConfig: .
57
57
  '@prosopo/dotenv'
58
58
  ]
59
59
  }
60
- vite v6.4.1 building SSR bundle for production...
60
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
61
+ vite v8.1.5 building ssr environment for production...
61
62
  Bundle build started
62
- transforming...
63
- Build end
64
- ✓ 3 modules transformed.
63
+ 
64
+ ✓ 4 modules transformed.
65
65
  rendering chunks...
66
- dist/start.js 0.84 kB
67
- dist/db.js 2.61 kB
68
- dist/api.js 2.72 kB
69
- ✓ built in 171ms
66
+ computing gzip size...
67
+ dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
68
+ dist/start.js 0.90 kB │ gzip: 0.46 kB
69
+ dist/db.js 2.24 kB │ gzip: 0.86 kB
70
+ dist/api.js 2.81 kB │ gzip: 1.24 kB
71
+
72
+ ✓ built in 49ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @prosopo/provider-mock
2
2
 
3
+ ## 2.8.137
4
+ ### Patch Changes
5
+
6
+ - e14fce6: chore(deps): bump vite to 6.4.3 and mongoose to 8.24.1, and adjust types for the mongoose 8.24 Document/ObjectId changes
7
+ - Updated dependencies [0e1171c]
8
+ - Updated dependencies [103318c]
9
+ - Updated dependencies [4cd9035]
10
+ - Updated dependencies [8fba211]
11
+ - Updated dependencies [8a400eb]
12
+ - Updated dependencies [270a8d8]
13
+ - Updated dependencies [e14fce6]
14
+ - @prosopo/locale@3.2.8
15
+ - @prosopo/provider@4.15.15
16
+ - @prosopo/types@4.10.0
17
+ - @prosopo/types-database@4.11.17
18
+ - @prosopo/dotenv@3.0.50
19
+ - @prosopo/common@3.1.48
20
+ - @prosopo/database@3.15.20
21
+ - @prosopo/api-express-router@3.1.51
22
+ - @prosopo/logger@2.0.4
23
+
24
+ ## 2.8.136
25
+ ### Patch Changes
26
+
27
+ - Updated dependencies [c61dfb5]
28
+ - @prosopo/provider@4.15.14
29
+ - @prosopo/database@3.15.19
30
+ - @prosopo/types-database@4.11.16
31
+ - @prosopo/api-express-router@3.1.50
32
+
3
33
  ## 2.8.135
4
34
  ### Patch Changes
5
35
 
@@ -0,0 +1,3 @@
1
+ import "node:module";
2
+ //#endregion
3
+ export {};
package/dist/api.js CHANGED
@@ -1,81 +1,85 @@
1
- import { ProsopoApiError } from "@prosopo/common";
1
+ import { JA4Database } from "./db.js";
2
2
  import { getLogger } from "@prosopo/logger";
3
+ import express from "express";
4
+ import { ProsopoApiError } from "@prosopo/common";
3
5
  import { getJA4 } from "@prosopo/provider";
4
6
  import { ClientApiPaths, VerifySolutionBody, decodeProcaptchaOutput } from "@prosopo/types";
5
- import express from "express";
6
- import { JA4Database } from "./db.js";
7
+ //#region src/api.ts
8
+ /**
9
+ * Returns a router connected to the database which can interact with the Proposo protocol
10
+ *
11
+ * @return {Router} - A middleware router that can interact with the Prosopo protocol
12
+ */
7
13
  function prosopoRouter() {
8
- const router = express.Router();
9
- const db = new JA4Database(
10
- process.env.MONGO_URL || "mongodb://localhost:27017",
11
- process.env.MONGO_DBNAME || "client",
12
- process.env.MONGO_AUTH_SOURCE || "admin"
13
- );
14
- router.post(
15
- ClientApiPaths.VerifyImageCaptchaSolutionDapp,
16
- async (req, res, next) => {
17
- let body;
18
- try {
19
- body = VerifySolutionBody.parse(req.body);
20
- } catch (err) {
21
- return next(
22
- new ProsopoApiError("CAPTCHA.PARSE_ERROR", {
23
- context: { error: err, code: 400 },
24
- logLevel: "info"
25
- })
26
- );
27
- }
28
- try {
29
- const { token } = body;
30
- const { user, dapp, commitmentId } = decodeProcaptchaOutput(token);
31
- const testCommitmentId = "0x123456789test";
32
- const testAccount = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
33
- const testDapp = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM";
34
- let statusMessage = "API.USER_NOT_VERIFIED";
35
- let approved = false;
36
- if (user && user === testAccount || commitmentId && commitmentId === testCommitmentId || dapp && dapp === testDapp) {
37
- approved = true;
38
- statusMessage = "API.USER_VERIFIED";
39
- return res.json({
40
- status: req.t(statusMessage),
41
- verified: approved,
42
- commitmentId: testCommitmentId
43
- });
44
- }
45
- return res.json({
46
- status: req.t(statusMessage),
47
- verified: false
48
- });
49
- } catch (err) {
50
- return next(
51
- new ProsopoApiError("API.UNKNOWN", {
52
- context: { error: err, code: 500 }
53
- })
54
- );
55
- }
56
- }
57
- );
58
- router.get("/test", async (req, res) => {
59
- try {
60
- const logger = getLogger("info", "provider-mock:api:test");
61
- const ja4PlusFingerprint = await getJA4(req.headers, logger);
62
- await db.connect();
63
- await db.addOrUpdateJA4Record({
64
- ja4_fingerprint: ja4PlusFingerprint.ja4PlusFingerprint,
65
- user_agent_string: req.headers["user-agent"] || ""
66
- });
67
- await db.close();
68
- return res.json({
69
- ja4: ja4PlusFingerprint.ja4PlusFingerprint,
70
- ua: req.headers["user-agent"]
71
- });
72
- } catch (e) {
73
- console.error("Error parsing ClientHello:", e);
74
- return res.status(500).send("Error parsing ClientHello.");
75
- }
76
- });
77
- return router;
14
+ const router = express.Router();
15
+ const db = new JA4Database(process.env.MONGO_URL || "mongodb://localhost:27017", process.env.MONGO_DBNAME || "client", process.env.MONGO_AUTH_SOURCE || "admin");
16
+ /**
17
+ * Verifies a user's solution as being approved or not
18
+ *
19
+ * @param {string} userAccount - Dapp User id
20
+ * @param {string} commitmentId - The captcha solution to look up
21
+ */
22
+ router.post(ClientApiPaths.VerifyImageCaptchaSolutionDapp, async (req, res, next) => {
23
+ let body;
24
+ try {
25
+ body = VerifySolutionBody.parse(req.body);
26
+ } catch (err) {
27
+ return next(new ProsopoApiError("CAPTCHA.PARSE_ERROR", {
28
+ context: {
29
+ error: err,
30
+ code: 400
31
+ },
32
+ logLevel: "info"
33
+ }));
34
+ }
35
+ try {
36
+ const { token } = body;
37
+ const { user, dapp, commitmentId } = decodeProcaptchaOutput(token);
38
+ const testCommitmentId = "0x123456789test";
39
+ const testAccount = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
40
+ const testDapp = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM";
41
+ let statusMessage = "API.USER_NOT_VERIFIED";
42
+ let approved = false;
43
+ if (user && user === testAccount || commitmentId && commitmentId === testCommitmentId || dapp && dapp === testDapp) {
44
+ approved = true;
45
+ statusMessage = "API.USER_VERIFIED";
46
+ return res.json({
47
+ status: req.t(statusMessage),
48
+ verified: approved,
49
+ commitmentId: testCommitmentId
50
+ });
51
+ }
52
+ return res.json({
53
+ status: req.t(statusMessage),
54
+ verified: false
55
+ });
56
+ } catch (err) {
57
+ return next(new ProsopoApiError("API.UNKNOWN", { context: {
58
+ error: err,
59
+ code: 500
60
+ } }));
61
+ }
62
+ });
63
+ router.get("/test", async (req, res) => {
64
+ try {
65
+ const logger = getLogger("info", "provider-mock:api:test");
66
+ const ja4PlusFingerprint = await getJA4(req.headers, logger);
67
+ await db.connect();
68
+ await db.addOrUpdateJA4Record({
69
+ ja4_fingerprint: ja4PlusFingerprint.ja4PlusFingerprint,
70
+ user_agent_string: req.headers["user-agent"] || ""
71
+ });
72
+ await db.close();
73
+ return res.json({
74
+ ja4: ja4PlusFingerprint.ja4PlusFingerprint,
75
+ ua: req.headers["user-agent"]
76
+ });
77
+ } catch (e) {
78
+ console.error("Error parsing ClientHello:", e);
79
+ return res.status(500).send("Error parsing ClientHello.");
80
+ }
81
+ });
82
+ return router;
78
83
  }
79
- export {
80
- prosopoRouter
81
- };
84
+ //#endregion
85
+ export { prosopoRouter };
@@ -0,0 +1,23 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
package/dist/cjs/api.cjs CHANGED
@@ -1,81 +1,87 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
4
- const logger = require("@prosopo/logger");
5
- const provider = require("@prosopo/provider");
6
- const types = require("@prosopo/types");
7
- const express = require("express");
8
- const db = require("./db.cjs");
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
+ const require_db = require("./db.cjs");
3
+ let _prosopo_logger = require("@prosopo/logger");
4
+ let express = require("express");
5
+ express = require_runtime.__toESM(express, 1);
6
+ let _prosopo_common = require("@prosopo/common");
7
+ let _prosopo_provider = require("@prosopo/provider");
8
+ let _prosopo_types = require("@prosopo/types");
9
+ //#region src/api.ts
10
+ /**
11
+ * Returns a router connected to the database which can interact with the Proposo protocol
12
+ *
13
+ * @return {Router} - A middleware router that can interact with the Prosopo protocol
14
+ */
9
15
  function prosopoRouter() {
10
- const router = express.Router();
11
- const db$1 = new db.JA4Database(
12
- process.env.MONGO_URL || "mongodb://localhost:27017",
13
- process.env.MONGO_DBNAME || "client",
14
- process.env.MONGO_AUTH_SOURCE || "admin"
15
- );
16
- router.post(
17
- types.ClientApiPaths.VerifyImageCaptchaSolutionDapp,
18
- async (req, res, next) => {
19
- let body;
20
- try {
21
- body = types.VerifySolutionBody.parse(req.body);
22
- } catch (err) {
23
- return next(
24
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
25
- context: { error: err, code: 400 },
26
- logLevel: "info"
27
- })
28
- );
29
- }
30
- try {
31
- const { token } = body;
32
- const { user, dapp, commitmentId } = types.decodeProcaptchaOutput(token);
33
- const testCommitmentId = "0x123456789test";
34
- const testAccount = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
35
- const testDapp = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM";
36
- let statusMessage = "API.USER_NOT_VERIFIED";
37
- let approved = false;
38
- if (user && user === testAccount || commitmentId && commitmentId === testCommitmentId || dapp && dapp === testDapp) {
39
- approved = true;
40
- statusMessage = "API.USER_VERIFIED";
41
- return res.json({
42
- status: req.t(statusMessage),
43
- verified: approved,
44
- commitmentId: testCommitmentId
45
- });
46
- }
47
- return res.json({
48
- status: req.t(statusMessage),
49
- verified: false
50
- });
51
- } catch (err) {
52
- return next(
53
- new common.ProsopoApiError("API.UNKNOWN", {
54
- context: { error: err, code: 500 }
55
- })
56
- );
57
- }
58
- }
59
- );
60
- router.get("/test", async (req, res) => {
61
- try {
62
- const logger$1 = logger.getLogger("info", "provider-mock:api:test");
63
- const ja4PlusFingerprint = await provider.getJA4(req.headers, logger$1);
64
- await db$1.connect();
65
- await db$1.addOrUpdateJA4Record({
66
- ja4_fingerprint: ja4PlusFingerprint.ja4PlusFingerprint,
67
- user_agent_string: req.headers["user-agent"] || ""
68
- });
69
- await db$1.close();
70
- return res.json({
71
- ja4: ja4PlusFingerprint.ja4PlusFingerprint,
72
- ua: req.headers["user-agent"]
73
- });
74
- } catch (e) {
75
- console.error("Error parsing ClientHello:", e);
76
- return res.status(500).send("Error parsing ClientHello.");
77
- }
78
- });
79
- return router;
16
+ const router = express.default.Router();
17
+ const db = new require_db.JA4Database(process.env.MONGO_URL || "mongodb://localhost:27017", process.env.MONGO_DBNAME || "client", process.env.MONGO_AUTH_SOURCE || "admin");
18
+ /**
19
+ * Verifies a user's solution as being approved or not
20
+ *
21
+ * @param {string} userAccount - Dapp User id
22
+ * @param {string} commitmentId - The captcha solution to look up
23
+ */
24
+ router.post(_prosopo_types.ClientApiPaths.VerifyImageCaptchaSolutionDapp, async (req, res, next) => {
25
+ let body;
26
+ try {
27
+ body = _prosopo_types.VerifySolutionBody.parse(req.body);
28
+ } catch (err) {
29
+ return next(new _prosopo_common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
30
+ context: {
31
+ error: err,
32
+ code: 400
33
+ },
34
+ logLevel: "info"
35
+ }));
36
+ }
37
+ try {
38
+ const { token } = body;
39
+ const { user, dapp, commitmentId } = (0, _prosopo_types.decodeProcaptchaOutput)(token);
40
+ const testCommitmentId = "0x123456789test";
41
+ const testAccount = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
42
+ const testDapp = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM";
43
+ let statusMessage = "API.USER_NOT_VERIFIED";
44
+ let approved = false;
45
+ if (user && user === testAccount || commitmentId && commitmentId === testCommitmentId || dapp && dapp === testDapp) {
46
+ approved = true;
47
+ statusMessage = "API.USER_VERIFIED";
48
+ return res.json({
49
+ status: req.t(statusMessage),
50
+ verified: approved,
51
+ commitmentId: testCommitmentId
52
+ });
53
+ }
54
+ return res.json({
55
+ status: req.t(statusMessage),
56
+ verified: false
57
+ });
58
+ } catch (err) {
59
+ return next(new _prosopo_common.ProsopoApiError("API.UNKNOWN", { context: {
60
+ error: err,
61
+ code: 500
62
+ } }));
63
+ }
64
+ });
65
+ router.get("/test", async (req, res) => {
66
+ try {
67
+ const logger = (0, _prosopo_logger.getLogger)("info", "provider-mock:api:test");
68
+ const ja4PlusFingerprint = await (0, _prosopo_provider.getJA4)(req.headers, logger);
69
+ await db.connect();
70
+ await db.addOrUpdateJA4Record({
71
+ ja4_fingerprint: ja4PlusFingerprint.ja4PlusFingerprint,
72
+ user_agent_string: req.headers["user-agent"] || ""
73
+ });
74
+ await db.close();
75
+ return res.json({
76
+ ja4: ja4PlusFingerprint.ja4PlusFingerprint,
77
+ ua: req.headers["user-agent"]
78
+ });
79
+ } catch (e) {
80
+ console.error("Error parsing ClientHello:", e);
81
+ return res.status(500).send("Error parsing ClientHello.");
82
+ }
83
+ });
84
+ return router;
80
85
  }
86
+ //#endregion
81
87
  exports.prosopoRouter = prosopoRouter;