@prosopo/database 3.5.6 → 3.13.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.
Files changed (64) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +17 -13
  2. package/.turbo/turbo-build$colon$tsc.log +47 -0
  3. package/.turbo/turbo-build.log +22 -14
  4. package/CHANGELOG.md +690 -0
  5. package/dist/base/index.d.ts +3 -0
  6. package/dist/base/index.d.ts.map +1 -0
  7. package/dist/base/index.js.map +1 -0
  8. package/dist/base/mongo.d.ts +18 -0
  9. package/dist/base/mongo.d.ts.map +1 -0
  10. package/dist/base/mongo.js +5 -2
  11. package/dist/base/mongo.js.map +1 -0
  12. package/dist/base/mongoMemory.d.ts +10 -0
  13. package/dist/base/mongoMemory.d.ts.map +1 -0
  14. package/dist/base/mongoMemory.js.map +1 -0
  15. package/dist/cjs/base/mongo.cjs +6 -3
  16. package/dist/cjs/databases/captcha.cjs +2 -1
  17. package/dist/cjs/databases/centralDbStreamer.cjs +136 -0
  18. package/dist/cjs/databases/index.cjs +2 -0
  19. package/dist/cjs/databases/provider.cjs +691 -165
  20. package/dist/cjs/index.cjs +4 -0
  21. package/dist/cjs/redisCache.cjs +388 -0
  22. package/dist/databases/captcha.d.ts +25 -0
  23. package/dist/databases/captcha.d.ts.map +1 -0
  24. package/dist/databases/captcha.js +2 -1
  25. package/dist/databases/captcha.js.map +1 -0
  26. package/dist/databases/centralDbStreamer.d.ts +19 -0
  27. package/dist/databases/centralDbStreamer.d.ts.map +1 -0
  28. package/dist/databases/centralDbStreamer.js +136 -0
  29. package/dist/databases/centralDbStreamer.js.map +1 -0
  30. package/dist/databases/client.d.ts +12 -0
  31. package/dist/databases/client.d.ts.map +1 -0
  32. package/dist/databases/client.js.map +1 -0
  33. package/dist/databases/index.d.ts +17 -0
  34. package/dist/databases/index.d.ts.map +1 -0
  35. package/dist/databases/index.js +2 -0
  36. package/dist/databases/index.js.map +1 -0
  37. package/dist/databases/provider.d.ts +143 -0
  38. package/dist/databases/provider.d.ts.map +1 -0
  39. package/dist/databases/provider.js +692 -166
  40. package/dist/databases/provider.js.map +1 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +5 -1
  44. package/dist/index.js.map +1 -0
  45. package/dist/redisCache.d.ts +31 -0
  46. package/dist/redisCache.d.ts.map +1 -0
  47. package/dist/redisCache.js +388 -0
  48. package/dist/redisCache.js.map +1 -0
  49. package/dist/tests/integration/ipInfoPersistence.integration.test.d.ts +2 -0
  50. package/dist/tests/integration/ipInfoPersistence.integration.test.d.ts.map +1 -0
  51. package/dist/tests/integration/ipInfoPersistence.integration.test.js +243 -0
  52. package/dist/tests/integration/ipInfoPersistence.integration.test.js.map +1 -0
  53. package/dist/tests/unit/captchaLabel.unit.test.d.ts +2 -0
  54. package/dist/tests/unit/captchaLabel.unit.test.d.ts.map +1 -0
  55. package/dist/tests/unit/captchaLabel.unit.test.js +41 -0
  56. package/dist/tests/unit/captchaLabel.unit.test.js.map +1 -0
  57. package/dist/tests/unit/databases/centralDbStreamer.unit.test.d.ts +2 -0
  58. package/dist/tests/unit/databases/centralDbStreamer.unit.test.d.ts.map +1 -0
  59. package/dist/tests/unit/databases/centralDbStreamer.unit.test.js +221 -0
  60. package/dist/tests/unit/databases/centralDbStreamer.unit.test.js.map +1 -0
  61. package/package.json +14 -10
  62. package/vite.cjs.config.ts +1 -1
  63. package/vite.esm.config.ts +1 -1
  64. package/vite.test.config.ts +18 -0
@@ -4,6 +4,7 @@ import { MongoMemoryDatabase } from "../base/mongoMemory.js";
4
4
  import { CaptchaDatabase } from "./captcha.js";
5
5
  import { ClientDatabase } from "./client.js";
6
6
  import { ProviderDatabase } from "./provider.js";
7
+ import { CentralDbStreamer } from "./centralDbStreamer.js";
7
8
  const Databases = {
8
9
  [DatabaseTypes.Values.mongo]: MongoDatabase,
9
10
  [DatabaseTypes.Values.provider]: ProviderDatabase,
@@ -13,6 +14,7 @@ const Databases = {
13
14
  };
14
15
  export {
15
16
  CaptchaDatabase,
17
+ CentralDbStreamer,
16
18
  ClientDatabase,
17
19
  Databases,
18
20
  ProviderDatabase
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/databases/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa;IAC3C,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB;IACjD,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc;IAC7C,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,eAAe;IAC/C,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,mBAAmB;CACvD,CAAC"}
@@ -0,0 +1,143 @@
1
+ import type { Logger } from "@prosopo/logger";
2
+ import { type RedisConnection } from "@prosopo/redis-client";
3
+ import { type Captcha, type CaptchaResult, type CaptchaSolution, CaptchaStates, type CompositeIpAddress, ContextType, type Dataset, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type DecisionMachineArtifact, type DecisionMachineScope, type Hash, type IPInfoResponse, type PendingImageCaptchaRequest, type PoWChallengeComponents, type PoWChallengeId, type RequestHeaders, type ResultReason, type ScheduledTaskNames, type ScheduledTaskResult, type ScheduledTaskStatus, type Session, type SimdReadingsStage, type SolutionRecord, type UserCommitment } from "@prosopo/types";
4
+ import type { SessionRecord } from "@prosopo/types-database";
5
+ import { type ClientRecord, type IProviderDatabase, type PoWCaptchaRecord, type PuzzleCaptchaRecord, type ScheduledTaskRecord, type SpamEmailDomainRecord, type Tables, type UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
6
+ import type { AccessRulesStorage } from "@prosopo/user-access-policy";
7
+ import type { ObjectId } from "mongoose";
8
+ import { MongoDatabase } from "../base/mongo.js";
9
+ import type { CentralDbStreamer } from "./centralDbStreamer.js";
10
+ declare enum TableNames {
11
+ captcha = "captcha",
12
+ dataset = "dataset",
13
+ solution = "solution",
14
+ commitment = "commitment",
15
+ usersolution = "usersolution",
16
+ scheduler = "scheduler",
17
+ powcaptcha = "powcaptcha",
18
+ puzzlecaptcha = "puzzlecaptcha",
19
+ client = "client",
20
+ session = "session",
21
+ detector = "detector",
22
+ decisionMachine = "decisionMachine",
23
+ clientContextEntropy = "clientContextEntropy",
24
+ spamEmailDomain = "spamEmailDomain"
25
+ }
26
+ type ProviderDatabaseOptions = {
27
+ mongo: {
28
+ url: string;
29
+ dbname?: string;
30
+ authSource?: string;
31
+ };
32
+ redis?: {
33
+ url: string;
34
+ password: string;
35
+ indexName?: string;
36
+ };
37
+ logger?: Logger;
38
+ };
39
+ export declare class ProviderDatabase extends MongoDatabase implements IProviderDatabase {
40
+ private readonly options;
41
+ tables: Tables<TableNames>;
42
+ private centralStreamer;
43
+ private redisConnection;
44
+ private redisAccessRulesConnection;
45
+ private userAccessRulesStorage;
46
+ private indexesEnsured;
47
+ constructor(options: ProviderDatabaseOptions);
48
+ setCentralDbStreamer(streamer: CentralDbStreamer): void;
49
+ hasCentralDbStreamer(): boolean;
50
+ connect(): Promise<void>;
51
+ protected setupRedis(): Promise<void>;
52
+ loadTables(): void;
53
+ getTables(): Tables<TableNames>;
54
+ getRedisAccessRulesConnection(): RedisConnection;
55
+ getRedisConnection(): RedisConnection;
56
+ ensureIndexes(): Promise<void>;
57
+ getUserAccessRulesStorage(): AccessRulesStorage;
58
+ storeDataset(dataset: Dataset | DatasetWithIdsAndTree): Promise<void>;
59
+ getSolutions(datasetId: string): Promise<SolutionRecord[]>;
60
+ getSolutionByCaptchaId(captchaId: string): Promise<SolutionRecord | null>;
61
+ getDataset(datasetId: string): Promise<DatasetWithIds>;
62
+ getRandomCaptcha(solved: boolean, datasetId: Hash, size?: number): Promise<Captcha[] | undefined>;
63
+ getCaptchaById(captchaId: string[]): Promise<Captcha[] | undefined>;
64
+ updateCaptcha(captcha: Captcha, datasetId: Hash): Promise<void>;
65
+ removeCaptchas(captchaIds: string[]): Promise<void>;
66
+ getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
67
+ storeUserImageCaptchaSolution(captchas: CaptchaSolution[], commit: UserCommitment): Promise<void>;
68
+ storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, difficulty: number, providerSignature: string, ipAddress: CompositeIpAddress, headers: RequestHeaders, ja4: string, sessionId?: string, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string, ipInfo?: IPInfoResponse): Promise<void>;
69
+ getPowCaptchaRecordByChallenge(challenge: string): Promise<PoWCaptchaRecord | null>;
70
+ updatePowCaptchaRecordResult(challenge: PoWChallengeId, result: CaptchaResult, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string, coords?: [number, number][][]): Promise<void>;
71
+ updatePowCaptchaRecord(challenge: PoWChallengeId, updates: Partial<PoWCaptchaRecord>): Promise<void>;
72
+ storePuzzleCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, targetX: number, targetY: number, originX: number, originY: number, tolerance: number, providerSignature: string, ipAddress: CompositeIpAddress, headers: RequestHeaders, ja4: string, sessionId?: string, ipInfo?: IPInfoResponse): Promise<void>;
73
+ getPuzzleCaptchaRecordByChallenge(challenge: string): Promise<PuzzleCaptchaRecord | null>;
74
+ updatePuzzleCaptchaRecordResult(challenge: PoWChallengeId, result: CaptchaResult, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string, coords?: [number, number][][], lastUpdatedTimestamp?: Date): Promise<void>;
75
+ updatePuzzleCaptchaRecord(challenge: PoWChallengeId, updates: Partial<PuzzleCaptchaRecord>): Promise<void>;
76
+ getCheckedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
77
+ getUnstoredDappUserCommitments(limit?: number, skip?: number): Promise<UserCommitmentRecord[]>;
78
+ markDappUserCommitmentsStored(commitmentIds: Hash[], asOfTimestamp?: Date): Promise<void>;
79
+ markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise<void>;
80
+ updateDappUserCommitment(commitmentId: Hash, updates: Partial<UserCommitment>): Promise<void>;
81
+ getUnstoredDappUserPoWCommitments(limit?: number, skip?: number): Promise<PoWCaptchaRecord[]>;
82
+ markDappUserPoWCommitmentsStored(challenges: string[], asOfTimestamp?: Date): Promise<void>;
83
+ markDappUserPoWCommitmentsChecked(challenges: string[]): Promise<void>;
84
+ storeSessionRecord(sessionRecord: Session): Promise<void>;
85
+ getSessionRecordBySessionId(sessionId: string): Promise<Session | undefined>;
86
+ getSessionRecordByToken(token: string): Promise<Session | undefined>;
87
+ checkAndRemoveSession(sessionId: string): Promise<SessionRecord | undefined>;
88
+ updateSessionRecord(sessionId: string, updates: Partial<Session>, streamToCentral?: boolean): Promise<void>;
89
+ recordSessionSimdReadingsIfAbsent(sessionId: string, readings: NonNullable<Session["simdReadings"]>, stage: SimdReadingsStage): Promise<void>;
90
+ getSessionByuserSitekeyIpHash(userSitekeyIpHash: string): Promise<SessionRecord | undefined>;
91
+ getUnstoredSessionRecords(limit?: number, skip?: number): Promise<SessionRecord[]>;
92
+ markSessionRecordsStored(sessionIds: string[], asOfTimestamp?: Date): Promise<void>;
93
+ storePendingImageCommitment(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: Date, requestedAtTimestamp: Date, ipAddress: CompositeIpAddress, threshold: number, sessionId?: string, ipInfo?: IPInfoResponse): Promise<void>;
94
+ getPendingImageCommitment(requestHash: string): Promise<PendingImageCaptchaRequest>;
95
+ updatePendingImageCommitmentStatus(requestHash: string): Promise<void>;
96
+ getAllCaptchasByDatasetId(datasetId: string, state?: CaptchaStates): Promise<Captcha[] | undefined>;
97
+ getAllDappUserSolutions(captchaId: string[]): Promise<UserSolutionRecord[] | undefined>;
98
+ getDatasetIdWithSolvedCaptchasOfSizeN(solvedCaptchaCount: number): Promise<string>;
99
+ getRandomSolvedCaptchasFromSingleDataset(datasetId: string, size: number): Promise<CaptchaSolution[]>;
100
+ getDappUserSolutionById(commitmentId: string): Promise<UserSolutionRecord | undefined>;
101
+ getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord | undefined>;
102
+ getDappUserCommitmentByAccount(userAccount: string, dappAccount: string): Promise<UserCommitmentRecord[]>;
103
+ approveDappUserCommitment(commitmentId: string, coords?: [number, number][][]): Promise<void>;
104
+ disapproveDappUserCommitment(commitmentId: string, reason?: ResultReason, coords?: [number, number][][]): Promise<void>;
105
+ flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise<void>;
106
+ flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
107
+ getScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
108
+ getLastScheduledTaskStatus(task: ScheduledTaskNames, status?: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
109
+ createScheduledTaskStatus(taskName: ScheduledTaskNames, status: ScheduledTaskStatus): Promise<ObjectId>;
110
+ updateScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
111
+ cleanupScheduledTaskStatus(status: ScheduledTaskStatus): Promise<void>;
112
+ updateClientRecords(clientRecords: ClientRecord[]): Promise<void>;
113
+ removeClientRecords(accounts: string[]): Promise<void>;
114
+ getAllClientRecords(): Promise<ClientRecord[]>;
115
+ getClientRecord(account: string): Promise<ClientRecord | undefined>;
116
+ storeDetectorKey(detectorKey: string): Promise<void>;
117
+ removeDetectorKey(detectorKey: string, expirationInSeconds?: number): Promise<void>;
118
+ getDetectorKeys(): Promise<string[]>;
119
+ upsertDecisionMachineArtifact(artifact: DecisionMachineArtifact): Promise<void>;
120
+ getDecisionMachineArtifact(scope: DecisionMachineScope, dappAccount?: string): Promise<DecisionMachineArtifact | undefined>;
121
+ getAllDecisionMachineArtifacts(): Promise<(DecisionMachineArtifact & {
122
+ _id: string;
123
+ })[]>;
124
+ getDecisionMachineArtifactById(id: string): Promise<(DecisionMachineArtifact & {
125
+ _id: string;
126
+ }) | undefined>;
127
+ removeDecisionMachineArtifact(id: string): Promise<boolean>;
128
+ removeAllDecisionMachineArtifacts(): Promise<number>;
129
+ setClientContextEntropy(account: string, contextType: ContextType, entropy: string): Promise<void>;
130
+ getClientContextEntropy(account: string, contextType: ContextType): Promise<string | undefined>;
131
+ sampleContextEntropy(sampleSize: number, siteKey: string, contextType: ContextType): Promise<string[]>;
132
+ getSpamEmailDomain(domain: string): Promise<SpamEmailDomainRecord | null>;
133
+ bulkUpdateSpamEmailDomains(domains: Array<{
134
+ filter: {
135
+ domain: string;
136
+ };
137
+ update: {
138
+ domain: string;
139
+ };
140
+ }>, upsert: boolean): Promise<void>;
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/databases/provider.ts"],"names":[],"mappings":"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"}