@prosopo/database 3.15.19 → 3.15.21

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.
Files changed (38) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +20 -17
  2. package/.turbo/turbo-build$colon$tsc.log +16 -16
  3. package/.turbo/turbo-build.log +21 -18
  4. package/CHANGELOG.md +24 -0
  5. package/dist/_virtual/_rolldown/runtime.js +3 -0
  6. package/dist/base/index.js +1 -4
  7. package/dist/base/mongo.js +133 -137
  8. package/dist/base/mongoMemory.js +21 -21
  9. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  10. package/dist/cjs/base/index.cjs +4 -6
  11. package/dist/cjs/base/mongo.cjs +140 -143
  12. package/dist/cjs/base/mongoMemory.cjs +22 -22
  13. package/dist/cjs/databases/captcha.cjs +220 -256
  14. package/dist/cjs/databases/centralDbStreamer.cjs +148 -170
  15. package/dist/cjs/databases/client.cjs +46 -62
  16. package/dist/cjs/databases/index.cjs +19 -19
  17. package/dist/cjs/databases/provider.cjs +1827 -2251
  18. package/dist/cjs/index.cjs +25 -23
  19. package/dist/cjs/mongooseOptions.cjs +59 -58
  20. package/dist/cjs/redisCache.cjs +432 -474
  21. package/dist/databases/captcha.d.ts.map +1 -1
  22. package/dist/databases/captcha.js +217 -253
  23. package/dist/databases/captcha.js.map +1 -1
  24. package/dist/databases/centralDbStreamer.js +147 -169
  25. package/dist/databases/client.js +44 -60
  26. package/dist/databases/index.js +10 -14
  27. package/dist/databases/provider.d.ts +4 -4
  28. package/dist/databases/provider.d.ts.map +1 -1
  29. package/dist/databases/provider.js +1823 -2247
  30. package/dist/databases/provider.js.map +1 -1
  31. package/dist/index.js +9 -18
  32. package/dist/mongooseOptions.js +59 -59
  33. package/dist/redisCache.js +432 -474
  34. package/dist/tests/integration/saveCaptchasSessionUpsert.integration.test.d.ts +2 -0
  35. package/dist/tests/integration/saveCaptchasSessionUpsert.integration.test.d.ts.map +1 -0
  36. package/dist/tests/integration/saveCaptchasSessionUpsert.integration.test.js +64 -0
  37. package/dist/tests/integration/saveCaptchasSessionUpsert.integration.test.js.map +1 -0
  38. package/package.json +14 -14
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=saveCaptchasSessionUpsert.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveCaptchasSessionUpsert.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/saveCaptchasSessionUpsert.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ import { LogLevel, getLogger } from "@prosopo/logger";
2
+ import { CaptchaType, IpAddressType, } from "@prosopo/types";
3
+ import { MongoMemoryServer } from "mongodb-memory-server";
4
+ import { afterAll, beforeAll, describe, expect, it } from "vitest";
5
+ import { CaptchaDatabase } from "../../databases/captcha.js";
6
+ const logger = getLogger(LogLevel.enum.error, "saveCaptchasSessionUpsert.test");
7
+ const ipv4Composite = (lower) => ({
8
+ lower,
9
+ type: IpAddressType.v4,
10
+ });
11
+ const makeSession = (sessionId, score) => ({
12
+ sessionId,
13
+ createdAt: new Date(),
14
+ token: "tok",
15
+ score,
16
+ threshold: 0.5,
17
+ scoreComponents: { baseScore: score },
18
+ ipAddress: ipv4Composite(16843009n),
19
+ captchaType: CaptchaType.pow,
20
+ userSitekeyIpHash: "hash-abc",
21
+ webView: false,
22
+ iFrame: false,
23
+ decryptedHeadHash: "head-hash",
24
+ siteKey: "site-key-1",
25
+ headers: { "user-agent": "test" },
26
+ });
27
+ describe("CaptchaDatabase.saveCaptchas — session upsert by sessionId", () => {
28
+ let mongod;
29
+ let central;
30
+ beforeAll(async () => {
31
+ mongod = await MongoMemoryServer.create();
32
+ central = new CaptchaDatabase(mongod.getUri(), "captchastorage", undefined, logger);
33
+ await central.connect();
34
+ });
35
+ afterAll(async () => {
36
+ await central.close();
37
+ await mongod.stop();
38
+ });
39
+ it("does not duplicate when the same sessionId is written twice by successive sweep passes", async () => {
40
+ const sessionId = "session-upsert-repeat";
41
+ await central.saveCaptchas([makeSession(sessionId, 0.1)], [], []);
42
+ await central.saveCaptchas([makeSession(sessionId, 0.2)], [], []);
43
+ await central.saveCaptchas([makeSession(sessionId, 0.3)], [], []);
44
+ await central.connect();
45
+ const docs = await central.tables.session
46
+ .find({ sessionId })
47
+ .lean();
48
+ expect(docs.length).toBe(1);
49
+ const persisted = docs[0];
50
+ expect(persisted.score).toBe(0.3);
51
+ });
52
+ it("distinct sessionIds each get their own doc (guardrail against overly-broad filter)", async () => {
53
+ const ids = ["session-a", "session-b", "session-c"];
54
+ await central.saveCaptchas(ids.map((id, i) => makeSession(id, 0.1 * (i + 1))), [], []);
55
+ await central.connect();
56
+ for (const id of ids) {
57
+ const docs = await central.tables.session
58
+ .find({ sessionId: id })
59
+ .lean();
60
+ expect(docs.length, `expected exactly one doc for ${id}`).toBe(1);
61
+ }
62
+ });
63
+ });
64
+ //# sourceMappingURL=saveCaptchasSessionUpsert.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveCaptchasSessionUpsert.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/saveCaptchasSessionUpsert.integration.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACN,WAAW,EAEX,aAAa,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AA+B7D,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;AAEhF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAsB,EAAE,CAAC,CAAC;IAC7D,KAAK;IACL,IAAI,EAAE,aAAa,CAAC,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAiB,EAAE,CACvE,CAAC;IACA,SAAS;IACT,SAAS,EAAE,IAAI,IAAI,EAAE;IACrB,KAAK,EAAE,KAAK;IACZ,KAAK;IACL,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IACrC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC,GAAG;IAC5B,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,iBAAiB,EAAE,WAAW;IAC9B,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;CACjC,CAA6B,CAAC;AAEhC,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC3E,IAAI,MAAyB,CAAC;IAC9B,IAAI,OAAwB,CAAC;IAE7B,SAAS,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,GAAG,IAAI,eAAe,CAC5B,MAAM,CAAC,MAAM,EAAE,EACf,gBAAgB,EAChB,SAAS,EACT,MAAM,CACN,CAAC;QACF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,SAAS,GAAG,uBAAuB,CAAC;QAE1C,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAMlE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO;aACvC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;aACnB,IAAI,EAAmB,CAAC;QAE1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAK5B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAiC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACpD,MAAM,OAAO,CAAC,YAAY,CACzB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAClD,EAAE,EACF,EAAE,CACF,CAAC;QAEF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO;iBACvC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;iBACvB,IAAI,EAAmB,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/database",
3
- "version": "3.15.19",
3
+ "version": "3.15.21",
4
4
  "description": "Prosopo database plugins for provider",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,31 +38,31 @@
38
38
  "homepage": "https://github.com/prosopo/captcha#readme",
39
39
  "dependencies": {
40
40
  "@polkadot/util": "13.5.7",
41
- "@prosopo/common": "3.1.47",
42
- "@prosopo/logger": "2.0.3",
43
- "@prosopo/redis-client": "1.0.29",
44
- "@prosopo/types": "4.9.12",
45
- "@prosopo/types-database": "4.11.16",
46
- "@prosopo/user-access-policy": "3.12.8",
47
- "@prosopo/util": "3.3.4",
41
+ "@prosopo/common": "3.1.48",
42
+ "@prosopo/logger": "2.0.4",
43
+ "@prosopo/redis-client": "1.0.30",
44
+ "@prosopo/types": "4.10.0",
45
+ "@prosopo/types-database": "4.11.18",
46
+ "@prosopo/user-access-policy": "3.12.10",
47
+ "@prosopo/util": "3.3.5",
48
48
  "bson": "6.10.4",
49
49
  "make-dir": "3.1.0",
50
- "mongodb": "6.15.0",
50
+ "mongodb": "6.20.0",
51
51
  "mongodb-memory-server": "10.3.0",
52
- "mongoose": "8.13.0"
52
+ "mongoose": "8.24.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@prosopo/config": "3.3.4",
55
+ "@prosopo/config": "3.3.5",
56
56
  "@types/node": "22.10.2",
57
- "@vitest/coverage-v8": "3.2.4",
57
+ "@vitest/coverage-v8": "4.1.10",
58
58
  "concurrently": "9.0.1",
59
59
  "del-cli": "6.0.0",
60
60
  "npm-run-all": "4.1.5",
61
61
  "tslib": "2.7.0",
62
62
  "tsx": "4.20.3",
63
63
  "typescript": "5.6.2",
64
- "vite": "6.4.1",
65
- "vitest": "3.2.4"
64
+ "vite": "8.1.5",
65
+ "vitest": "4.1.10"
66
66
  },
67
67
  "sideEffects": false
68
68
  }