@prosopo/database 3.6.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.
- package/.turbo/turbo-build$colon$cjs.log +17 -13
- package/.turbo/turbo-build$colon$tsc.log +18 -15
- package/.turbo/turbo-build.log +18 -14
- package/CHANGELOG.md +604 -0
- package/dist/base/mongo.d.ts +1 -1
- package/dist/base/mongo.d.ts.map +1 -1
- package/dist/base/mongo.js +5 -2
- package/dist/base/mongo.js.map +1 -1
- package/dist/base/mongoMemory.d.ts +1 -1
- package/dist/cjs/base/mongo.cjs +6 -3
- package/dist/cjs/databases/captcha.cjs +2 -1
- package/dist/cjs/databases/centralDbStreamer.cjs +136 -0
- package/dist/cjs/databases/index.cjs +2 -0
- package/dist/cjs/databases/provider.cjs +687 -162
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/redisCache.cjs +388 -0
- package/dist/databases/captcha.d.ts +1 -1
- package/dist/databases/captcha.d.ts.map +1 -1
- package/dist/databases/captcha.js +2 -1
- package/dist/databases/captcha.js.map +1 -1
- package/dist/databases/centralDbStreamer.d.ts +19 -0
- package/dist/databases/centralDbStreamer.d.ts.map +1 -0
- package/dist/databases/centralDbStreamer.js +136 -0
- package/dist/databases/centralDbStreamer.js.map +1 -0
- package/dist/databases/client.d.ts +1 -1
- package/dist/databases/client.d.ts.map +1 -1
- package/dist/databases/client.js.map +1 -1
- package/dist/databases/index.d.ts +1 -0
- package/dist/databases/index.d.ts.map +1 -1
- package/dist/databases/index.js +2 -0
- package/dist/databases/index.js.map +1 -1
- package/dist/databases/provider.d.ts +45 -14
- package/dist/databases/provider.d.ts.map +1 -1
- package/dist/databases/provider.js +688 -163
- package/dist/databases/provider.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/redisCache.d.ts +31 -0
- package/dist/redisCache.d.ts.map +1 -0
- package/dist/redisCache.js +388 -0
- package/dist/redisCache.js.map +1 -0
- package/dist/tests/integration/ipInfoPersistence.integration.test.d.ts +2 -0
- package/dist/tests/integration/ipInfoPersistence.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/ipInfoPersistence.integration.test.js +243 -0
- package/dist/tests/integration/ipInfoPersistence.integration.test.js.map +1 -0
- package/dist/tests/unit/captchaLabel.unit.test.d.ts +2 -0
- package/dist/tests/unit/captchaLabel.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/captchaLabel.unit.test.js +41 -0
- package/dist/tests/unit/captchaLabel.unit.test.js.map +1 -0
- package/dist/tests/unit/databases/centralDbStreamer.unit.test.d.ts +2 -0
- package/dist/tests/unit/databases/centralDbStreamer.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/databases/centralDbStreamer.unit.test.js +221 -0
- package/dist/tests/unit/databases/centralDbStreamer.unit.test.js.map +1 -0
- package/package.json +12 -9
- package/vite.test.config.ts +18 -0
package/dist/databases/index.js
CHANGED
|
@@ -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
|
|
@@ -1 +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,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"}
|
|
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"}
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { TranslationKey } from "@prosopo/locale";
|
|
1
|
+
import type { Logger } from "@prosopo/logger";
|
|
3
2
|
import { type RedisConnection } from "@prosopo/redis-client";
|
|
4
|
-
import { type Captcha, type CaptchaResult, type CaptchaSolution, CaptchaStates, ContextType, type Dataset, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type Hash, type PoWChallengeComponents, type PoWChallengeId, type RequestHeaders, type ScheduledTaskNames, type ScheduledTaskResult, type ScheduledTaskStatus, type
|
|
5
|
-
import type {
|
|
6
|
-
import { type ClientRecord, type IProviderDatabase, type
|
|
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";
|
|
7
6
|
import type { AccessRulesStorage } from "@prosopo/user-access-policy";
|
|
8
7
|
import type { ObjectId } from "mongoose";
|
|
9
8
|
import { MongoDatabase } from "../base/mongo.js";
|
|
9
|
+
import type { CentralDbStreamer } from "./centralDbStreamer.js";
|
|
10
10
|
declare enum TableNames {
|
|
11
11
|
captcha = "captcha",
|
|
12
12
|
dataset = "dataset",
|
|
13
13
|
solution = "solution",
|
|
14
14
|
commitment = "commitment",
|
|
15
15
|
usersolution = "usersolution",
|
|
16
|
-
pending = "pending",
|
|
17
16
|
scheduler = "scheduler",
|
|
18
17
|
powcaptcha = "powcaptcha",
|
|
18
|
+
puzzlecaptcha = "puzzlecaptcha",
|
|
19
19
|
client = "client",
|
|
20
20
|
session = "session",
|
|
21
21
|
detector = "detector",
|
|
22
|
-
|
|
22
|
+
decisionMachine = "decisionMachine",
|
|
23
|
+
clientContextEntropy = "clientContextEntropy",
|
|
24
|
+
spamEmailDomain = "spamEmailDomain"
|
|
23
25
|
}
|
|
24
26
|
type ProviderDatabaseOptions = {
|
|
25
27
|
mongo: {
|
|
@@ -37,11 +39,14 @@ type ProviderDatabaseOptions = {
|
|
|
37
39
|
export declare class ProviderDatabase extends MongoDatabase implements IProviderDatabase {
|
|
38
40
|
private readonly options;
|
|
39
41
|
tables: Tables<TableNames>;
|
|
42
|
+
private centralStreamer;
|
|
40
43
|
private redisConnection;
|
|
41
44
|
private redisAccessRulesConnection;
|
|
42
45
|
private userAccessRulesStorage;
|
|
43
46
|
private indexesEnsured;
|
|
44
47
|
constructor(options: ProviderDatabaseOptions);
|
|
48
|
+
setCentralDbStreamer(streamer: CentralDbStreamer): void;
|
|
49
|
+
hasCentralDbStreamer(): boolean;
|
|
45
50
|
connect(): Promise<void>;
|
|
46
51
|
protected setupRedis(): Promise<void>;
|
|
47
52
|
loadTables(): void;
|
|
@@ -60,27 +65,33 @@ export declare class ProviderDatabase extends MongoDatabase implements IProvider
|
|
|
60
65
|
removeCaptchas(captchaIds: string[]): Promise<void>;
|
|
61
66
|
getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
|
|
62
67
|
storeUserImageCaptchaSolution(captchas: CaptchaSolution[], commit: UserCommitment): Promise<void>;
|
|
63
|
-
storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, difficulty: number, providerSignature: string, ipAddress: CompositeIpAddress, headers: RequestHeaders, ja4: string, sessionId?: string, serverChecked?: boolean, userSubmitted?: boolean,
|
|
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>;
|
|
64
69
|
getPowCaptchaRecordByChallenge(challenge: string): Promise<PoWCaptchaRecord | null>;
|
|
65
70
|
updatePowCaptchaRecordResult(challenge: PoWChallengeId, result: CaptchaResult, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string, coords?: [number, number][][]): Promise<void>;
|
|
66
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>;
|
|
67
76
|
getCheckedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
|
|
68
77
|
getUnstoredDappUserCommitments(limit?: number, skip?: number): Promise<UserCommitmentRecord[]>;
|
|
69
|
-
markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise<void>;
|
|
78
|
+
markDappUserCommitmentsStored(commitmentIds: Hash[], asOfTimestamp?: Date): Promise<void>;
|
|
70
79
|
markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise<void>;
|
|
71
80
|
updateDappUserCommitment(commitmentId: Hash, updates: Partial<UserCommitment>): Promise<void>;
|
|
72
81
|
getUnstoredDappUserPoWCommitments(limit?: number, skip?: number): Promise<PoWCaptchaRecord[]>;
|
|
73
|
-
markDappUserPoWCommitmentsStored(challenges: string[]): Promise<void>;
|
|
82
|
+
markDappUserPoWCommitmentsStored(challenges: string[], asOfTimestamp?: Date): Promise<void>;
|
|
74
83
|
markDappUserPoWCommitmentsChecked(challenges: string[]): Promise<void>;
|
|
75
84
|
storeSessionRecord(sessionRecord: Session): Promise<void>;
|
|
76
85
|
getSessionRecordBySessionId(sessionId: string): Promise<Session | undefined>;
|
|
77
86
|
getSessionRecordByToken(token: string): Promise<Session | undefined>;
|
|
78
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>;
|
|
79
90
|
getSessionByuserSitekeyIpHash(userSitekeyIpHash: string): Promise<SessionRecord | undefined>;
|
|
80
91
|
getUnstoredSessionRecords(limit?: number, skip?: number): Promise<SessionRecord[]>;
|
|
81
|
-
markSessionRecordsStored(sessionIds: string[]): Promise<void>;
|
|
82
|
-
storePendingImageCommitment(userAccount: string, requestHash: string, salt: string, deadlineTimestamp:
|
|
83
|
-
getPendingImageCommitment(requestHash: string): Promise<
|
|
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>;
|
|
84
95
|
updatePendingImageCommitmentStatus(requestHash: string): Promise<void>;
|
|
85
96
|
getAllCaptchasByDatasetId(datasetId: string, state?: CaptchaStates): Promise<Captcha[] | undefined>;
|
|
86
97
|
getAllDappUserSolutions(captchaId: string[]): Promise<UserSolutionRecord[] | undefined>;
|
|
@@ -90,7 +101,7 @@ export declare class ProviderDatabase extends MongoDatabase implements IProvider
|
|
|
90
101
|
getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord | undefined>;
|
|
91
102
|
getDappUserCommitmentByAccount(userAccount: string, dappAccount: string): Promise<UserCommitmentRecord[]>;
|
|
92
103
|
approveDappUserCommitment(commitmentId: string, coords?: [number, number][][]): Promise<void>;
|
|
93
|
-
disapproveDappUserCommitment(commitmentId: string, reason?:
|
|
104
|
+
disapproveDappUserCommitment(commitmentId: string, reason?: ResultReason, coords?: [number, number][][]): Promise<void>;
|
|
94
105
|
flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise<void>;
|
|
95
106
|
flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
|
|
96
107
|
getScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
|
|
@@ -99,14 +110,34 @@ export declare class ProviderDatabase extends MongoDatabase implements IProvider
|
|
|
99
110
|
updateScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
|
|
100
111
|
cleanupScheduledTaskStatus(status: ScheduledTaskStatus): Promise<void>;
|
|
101
112
|
updateClientRecords(clientRecords: ClientRecord[]): Promise<void>;
|
|
113
|
+
removeClientRecords(accounts: string[]): Promise<void>;
|
|
102
114
|
getAllClientRecords(): Promise<ClientRecord[]>;
|
|
103
115
|
getClientRecord(account: string): Promise<ClientRecord | undefined>;
|
|
104
116
|
storeDetectorKey(detectorKey: string): Promise<void>;
|
|
105
117
|
removeDetectorKey(detectorKey: string, expirationInSeconds?: number): Promise<void>;
|
|
106
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>;
|
|
107
129
|
setClientContextEntropy(account: string, contextType: ContextType, entropy: string): Promise<void>;
|
|
108
130
|
getClientContextEntropy(account: string, contextType: ContextType): Promise<string | undefined>;
|
|
109
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>;
|
|
110
141
|
}
|
|
111
142
|
export {};
|
|
112
143
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/databases/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/databases/provider.ts"],"names":[],"mappings":"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"}
|