@prosopo/database 2.1.8 → 2.1.10

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.
@@ -0,0 +1,3 @@
1
+ export * from "./mongo.js";
2
+ export * from "./mongoMemory.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAaA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./mongo.js";
2
+ export * from "./mongoMemory.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAaA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type Logger } from "@prosopo/common";
2
+ import mongoose, { type Connection } from "mongoose";
3
+ export declare class MongoDatabase {
4
+ protected readonly _url: string;
5
+ safeURL: string;
6
+ dbname: string;
7
+ connection?: Connection;
8
+ logger: Logger;
9
+ connected: boolean;
10
+ constructor(url: string, dbname?: string, authSource?: string, logger?: Logger);
11
+ get url(): string;
12
+ getConnection(): mongoose.Connection;
13
+ connect(): Promise<void>;
14
+ close(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=mongo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,iBAAiB,CAAC;AAEhF,OAAO,QAAQ,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAarD,qBAAa,aAAa;IACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,UAAS;gBAGjB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;IAgBhB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,aAAa,IAAI,QAAQ,CAAC,UAAU;IAa9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmExB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
@@ -0,0 +1,95 @@
1
+ import { ProsopoDBError, getLoggerDefault } from "@prosopo/common";
2
+ import { ServerApiVersion } from "mongodb";
3
+ import mongoose from "mongoose";
4
+ mongoose.set("strictQuery", false);
5
+ const DEFAULT_ENDPOINT = "mongodb://127.0.0.1:27017";
6
+ export class MongoDatabase {
7
+ constructor(url, dbname, authSource, logger) {
8
+ this.connected = false;
9
+ const baseEndpoint = url || DEFAULT_ENDPOINT;
10
+ const parsedUrl = new URL(baseEndpoint);
11
+ if (dbname) {
12
+ parsedUrl.pathname = dbname;
13
+ }
14
+ if (authSource) {
15
+ parsedUrl.searchParams.set("authSource", authSource);
16
+ }
17
+ this._url = parsedUrl.toString();
18
+ this.safeURL = this.url.replace(/\w+:\w+/, "<Credentials>");
19
+ this.dbname = dbname || parsedUrl.pathname.replace("/", "");
20
+ this.logger = logger || getLoggerDefault();
21
+ }
22
+ get url() {
23
+ return this._url;
24
+ }
25
+ getConnection() {
26
+ if (!this.connection) {
27
+ throw new ProsopoDBError("DATABASE.CONNECTION_UNDEFINED", {
28
+ context: { failedFuncName: this.getConnection.name },
29
+ logger: this.logger,
30
+ });
31
+ }
32
+ return this.connection;
33
+ }
34
+ async connect() {
35
+ this.logger.info(`Mongo url: ${this.safeURL}`);
36
+ try {
37
+ if (this.connected) {
38
+ this.logger.info(`Database connection to ${this.safeURL} already open`);
39
+ return;
40
+ }
41
+ this.connection = await new Promise((resolve, reject) => {
42
+ const connection = mongoose.createConnection(this.url, {
43
+ dbName: this.dbname,
44
+ serverApi: ServerApiVersion.v1,
45
+ });
46
+ connection.on("open", () => {
47
+ this.logger.info(`Database connection to ${this.safeURL} opened`);
48
+ this.connected = true;
49
+ resolve(connection);
50
+ });
51
+ connection.on("error", (err) => {
52
+ this.connected = false;
53
+ this.logger.error(`Database error: ${err}`);
54
+ reject(err);
55
+ });
56
+ connection.on("connected", () => {
57
+ this.logger.info(`Database connected to ${this.safeURL}`);
58
+ this.connected = true;
59
+ resolve(connection);
60
+ });
61
+ connection.on("disconnected", () => {
62
+ this.connected = false;
63
+ this.logger.info(`Database disconnected from ${this.safeURL}`);
64
+ });
65
+ connection.on("reconnected", () => {
66
+ this.logger.info(`Database reconnected to ${this.safeURL}`);
67
+ this.connected = true;
68
+ resolve(connection);
69
+ });
70
+ connection.on("reconnectFailed", () => {
71
+ this.connected = false;
72
+ this.logger.error(`Database reconnect failed to ${this.safeURL}`);
73
+ });
74
+ connection.on("close", () => {
75
+ this.connected = false;
76
+ this.logger.info(`Database connection to ${this.safeURL} closed`);
77
+ });
78
+ connection.on("fullsetup", () => {
79
+ this.connected = true;
80
+ this.logger.info(`Database connection to ${this.safeURL} is fully setup`);
81
+ resolve(connection);
82
+ });
83
+ });
84
+ }
85
+ catch (e) {
86
+ this.logger.error(`Database connection error: ${e}`);
87
+ throw e;
88
+ }
89
+ }
90
+ async close() {
91
+ this.logger.debug(`Closing connection to ${this.safeURL}`);
92
+ await this.connection?.close();
93
+ }
94
+ }
95
+ //# sourceMappingURL=mongo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Logger } from "@prosopo/common";
2
+ import { MongoDatabase } from "./mongo.js";
3
+ export declare class MongoMemoryDatabase extends MongoDatabase {
4
+ protected readonly _url: string;
5
+ private mongod;
6
+ private running;
7
+ constructor(url: string, dbname: string, logger: Logger, authSource?: string);
8
+ connect(): Promise<void>;
9
+ close(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=mongoMemory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoMemory.d.ts","sourceRoot":"","sources":["../../src/base/mongoMemory.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,aAAa;IACrD,mBAA4B,IAAI,EAAE,MAAM,CAAC;IACzC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,OAAO,CAAS;gBAGvB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM;IASX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAOrC"}
@@ -0,0 +1,27 @@
1
+ import { MongoMemoryServer } from "mongodb-memory-server";
2
+ import { MongoDatabase } from "./mongo.js";
3
+ export class MongoMemoryDatabase extends MongoDatabase {
4
+ constructor(url, dbname, logger, authSource) {
5
+ const mongod = new MongoMemoryServer();
6
+ const mongoMemoryURL = mongod.getUri();
7
+ super(mongoMemoryURL, dbname, authSource, logger);
8
+ this.running = false;
9
+ this.mongod = mongod;
10
+ this._url = mongoMemoryURL;
11
+ }
12
+ connect() {
13
+ if (!this.running) {
14
+ this.mongod?.start();
15
+ this.running = true;
16
+ }
17
+ else {
18
+ }
19
+ return super.connect();
20
+ }
21
+ async close() {
22
+ await super.close();
23
+ await this.mongod?.stop();
24
+ this.running = false;
25
+ }
26
+ }
27
+ //# sourceMappingURL=mongoMemory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoMemory.js","sourceRoot":"","sources":["../../src/base/mongoMemory.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAKrD,YACC,GAAW,EACX,MAAc,EACd,MAAc,EACd,UAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACvC,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAV3C,YAAO,GAAG,KAAK,CAAC;QAWvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC5B,CAAC;IAEQ,OAAO;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAGnB,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;QAER,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAEQ,KAAK,CAAC,KAAK;QACnB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAGpB,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;CACD"}
@@ -0,0 +1,16 @@
1
+ import { type Logger } from "@prosopo/common";
2
+ import { type ICaptchaDatabase, type PoWCaptchaRecord, type Tables, type UserCommitmentRecord } from "@prosopo/types-database";
3
+ import { MongoDatabase } from "../base/index.js";
4
+ declare enum TableNames {
5
+ commitment = "commitment",
6
+ powcaptcha = "powcaptcha"
7
+ }
8
+ export declare class CaptchaDatabase extends MongoDatabase implements ICaptchaDatabase {
9
+ tables: Tables<TableNames>;
10
+ constructor(url: string, dbname?: string, authSource?: string, logger?: Logger);
11
+ connect(): Promise<void>;
12
+ getTables(): Tables<TableNames>;
13
+ saveCaptchas(imageCaptchaEvents: UserCommitmentRecord[], powCaptchaEvents: PoWCaptchaRecord[]): Promise<void>;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=captcha.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/databases/captcha.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAErB,KAAK,MAAM,EACX,KAAK,oBAAoB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,aAAK,UAAU;IACd,UAAU,eAAe;IACzB,UAAU,eAAe;CACzB;AAeD,qBAAa,eAAgB,SAAQ,aAAc,YAAW,gBAAgB;IAC7E,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAG1B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;IAMD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;IAUzB,YAAY,CACjB,kBAAkB,EAAE,oBAAoB,EAAE,EAC1C,gBAAgB,EAAE,gBAAgB,EAAE;CAsCrC"}
@@ -0,0 +1,75 @@
1
+ import { ProsopoDBError, getLoggerDefault } from "@prosopo/common";
2
+ import { PoWCaptchaRecordSchema, UserCommitmentRecordSchema, } from "@prosopo/types-database";
3
+ import { MongoDatabase } from "../base/index.js";
4
+ const logger = getLoggerDefault();
5
+ var TableNames;
6
+ (function (TableNames) {
7
+ TableNames["commitment"] = "commitment";
8
+ TableNames["powcaptcha"] = "powcaptcha";
9
+ })(TableNames || (TableNames = {}));
10
+ const CAPTCHA_TABLES = [
11
+ {
12
+ collectionName: TableNames.powcaptcha,
13
+ modelName: "PowCaptcha",
14
+ schema: PoWCaptchaRecordSchema,
15
+ },
16
+ {
17
+ collectionName: TableNames.commitment,
18
+ modelName: "UserCommitment",
19
+ schema: UserCommitmentRecordSchema,
20
+ },
21
+ ];
22
+ export class CaptchaDatabase extends MongoDatabase {
23
+ constructor(url, dbname, authSource, logger) {
24
+ super(url, dbname, authSource, logger);
25
+ this.tables = {};
26
+ }
27
+ async connect() {
28
+ await super.connect();
29
+ CAPTCHA_TABLES.map(({ collectionName, modelName, schema }) => {
30
+ if (this.connection) {
31
+ this.tables[collectionName] = this.connection.model(modelName, schema);
32
+ }
33
+ });
34
+ }
35
+ getTables() {
36
+ if (!this.tables) {
37
+ throw new ProsopoDBError("DATABASE.TABLES_UNDEFINED", {
38
+ context: { failedFuncName: this.getTables.name },
39
+ logger: this.logger,
40
+ });
41
+ }
42
+ return this.tables;
43
+ }
44
+ async saveCaptchas(imageCaptchaEvents, powCaptchaEvents) {
45
+ await this.connect();
46
+ if (imageCaptchaEvents.length) {
47
+ const result = await this.tables.commitment.bulkWrite(imageCaptchaEvents.map((doc) => {
48
+ const { _id, ...safeDoc } = doc;
49
+ return {
50
+ updateOne: {
51
+ filter: { id: safeDoc.id },
52
+ update: { $set: safeDoc },
53
+ upsert: true,
54
+ },
55
+ };
56
+ }));
57
+ logger.info("Mongo Saved Image Events", result.upsertedCount);
58
+ }
59
+ if (powCaptchaEvents.length) {
60
+ const result = await this.tables.powcaptcha.bulkWrite(powCaptchaEvents.map((doc) => {
61
+ const { _id, ...safeDoc } = doc;
62
+ return {
63
+ updateOne: {
64
+ filter: { challenge: safeDoc.challenge },
65
+ update: { $set: safeDoc },
66
+ upsert: true,
67
+ },
68
+ };
69
+ }));
70
+ logger.info("Mongo Saved PoW Events", result.upsertedCount);
71
+ }
72
+ await this.close();
73
+ }
74
+ }
75
+ //# sourceMappingURL=captcha.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/databases/captcha.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type Logger } from "@prosopo/common";
2
+ import type { Timestamp } from "@prosopo/types";
3
+ import { type ClientRecord, type IClientDatabase, TableNames, type Tables } from "@prosopo/types-database";
4
+ import { MongoDatabase } from "../base/index.js";
5
+ export declare class ClientDatabase extends MongoDatabase implements IClientDatabase {
6
+ tables: Tables<TableNames>;
7
+ constructor(url: string, dbname?: string, authSource?: string, logger?: Logger);
8
+ connect(): Promise<void>;
9
+ getTables(): Tables<TableNames>;
10
+ getUpdatedClients(updatedAtTimestamp: Timestamp): Promise<ClientRecord[]>;
11
+ }
12
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/databases/client.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,MAAM,EAEX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUjD,qBAAa,cAAe,SAAQ,aAAc,YAAW,eAAe;IAC3E,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAG1B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;IAMD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;IAUzB,iBAAiB,CACtB,kBAAkB,EAAE,SAAS,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC;CAkB1B"}
@@ -0,0 +1,48 @@
1
+ import { ProsopoDBError } from "@prosopo/common";
2
+ import { TableNames, UserDataSchema, } from "@prosopo/types-database";
3
+ import { MongoDatabase } from "../base/index.js";
4
+ const CLIENT_TABLES = [
5
+ {
6
+ collectionName: TableNames.emails,
7
+ modelName: "Email",
8
+ schema: UserDataSchema,
9
+ },
10
+ ];
11
+ export class ClientDatabase extends MongoDatabase {
12
+ constructor(url, dbname, authSource, logger) {
13
+ super(url, dbname, authSource, logger);
14
+ this.tables = {};
15
+ }
16
+ async connect() {
17
+ await super.connect();
18
+ CLIENT_TABLES.map(({ collectionName, modelName, schema }) => {
19
+ if (this.connection) {
20
+ this.tables[collectionName] = this.connection.model(modelName, schema);
21
+ }
22
+ });
23
+ }
24
+ getTables() {
25
+ if (!this.tables) {
26
+ throw new ProsopoDBError("DATABASE.TABLES_UNDEFINED", {
27
+ context: { failedFuncName: this.getTables.name },
28
+ logger: this.logger,
29
+ });
30
+ }
31
+ return this.tables;
32
+ }
33
+ async getUpdatedClients(updatedAtTimestamp) {
34
+ await this.connect();
35
+ const newClientRecords = await this.tables.emails
36
+ .find({
37
+ $or: [
38
+ { updatedAtTimestamp: { $gt: updatedAtTimestamp } },
39
+ { updatedAtTimestamp: { $exists: false } },
40
+ ],
41
+ activated: true,
42
+ }, { account: 1, settings: 1 })
43
+ .lean();
44
+ await this.close();
45
+ return newClientRecords;
46
+ }
47
+ }
48
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/databases/client.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAGN,UAAU,EAEV,cAAc,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,aAAa,GAAG;IACrB;QACC,cAAc,EAAE,UAAU,CAAC,MAAM;QACjC,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,cAAc;KACtB;CACD,CAAC;AAEF,MAAM,OAAO,cAAe,SAAQ,aAAa;IAGhD,YACC,GAAW,EACX,MAAe,EACf,UAAmB,EACnB,MAAe;QAEf,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,EAAwB,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,OAAO;QACrB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;YAC3D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxE,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,SAAS;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,2BAA2B,EAAE;gBACrD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBAChD,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACtB,kBAA6B;QAE7B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;aAC/C,IAAI,CACJ;YACC,GAAG,EAAE;gBACJ,EAAE,kBAAkB,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE;gBACnD,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;aAC1C;YACD,SAAS,EAAE,IAAI;SACf,EACD,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC3B;aACA,IAAI,EAAkB,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,gBAAgB,CAAC;IACzB,CAAC;CACD"}
@@ -0,0 +1,16 @@
1
+ import { MongoDatabase } from "../base/mongo.js";
2
+ import { MongoMemoryDatabase } from "../base/mongoMemory.js";
3
+ import { CaptchaDatabase } from "./captcha.js";
4
+ import { ClientDatabase } from "./client.js";
5
+ import { ProviderDatabase } from "./provider.js";
6
+ export * from "./captcha.js";
7
+ export * from "./client.js";
8
+ export { ProviderDatabase } from "./provider.js";
9
+ export declare const Databases: {
10
+ mongo: typeof MongoDatabase;
11
+ provider: typeof ProviderDatabase;
12
+ client: typeof ClientDatabase;
13
+ captcha: typeof CaptchaDatabase;
14
+ mongoMemory: typeof MongoMemoryDatabase;
15
+ };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/databases/index.ts"],"names":[],"mappings":"AAcA,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,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { DatabaseTypes } from "@prosopo/types";
2
+ import { MongoDatabase } from "../base/mongo.js";
3
+ import { MongoMemoryDatabase } from "../base/mongoMemory.js";
4
+ import { CaptchaDatabase } from "./captcha.js";
5
+ import { ClientDatabase } from "./client.js";
6
+ import { ProviderDatabase } from "./provider.js";
7
+ export * from "./captcha.js";
8
+ export * from "./client.js";
9
+ export { ProviderDatabase } from "./provider.js";
10
+ export const Databases = {
11
+ [DatabaseTypes.Values.mongo]: MongoDatabase,
12
+ [DatabaseTypes.Values.provider]: ProviderDatabase,
13
+ [DatabaseTypes.Values.client]: ClientDatabase,
14
+ [DatabaseTypes.Values.captcha]: CaptchaDatabase,
15
+ [DatabaseTypes.Values.mongoMemory]: MongoMemoryDatabase,
16
+ };
17
+ //# sourceMappingURL=index.js.map
@@ -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,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,80 @@
1
+ import { type Logger } from "@prosopo/common";
2
+ import type { TranslationKey } from "@prosopo/locale";
3
+ import { type Captcha, type CaptchaResult, type CaptchaSolution, CaptchaStates, type Dataset, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type Hash, type PendingCaptchaRequest, type PoWChallengeComponents, type PoWChallengeId, type RequestHeaders, type ScheduledTaskNames, type ScheduledTaskResult, type ScheduledTaskStatus } from "@prosopo/types";
4
+ import { type ClientRecord, type IPBlockRuleRecord, type IProviderDatabase, type PoWCaptchaRecord, type ScheduledTaskRecord, type SessionRecord, type SolutionRecord, type StoredStatus, type Tables, type UserAccountBlockRule, type UserAccountBlockRuleRecord, type UserCommitment, type UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
5
+ import type { IPBlockRuleMongo } from "@prosopo/types-database";
6
+ import type { DeleteResult } from "mongodb";
7
+ import type { ObjectId } from "mongoose";
8
+ import { MongoDatabase } from "../base/mongo.js";
9
+ declare enum TableNames {
10
+ captcha = "captcha",
11
+ dataset = "dataset",
12
+ solution = "solution",
13
+ commitment = "commitment",
14
+ usersolution = "usersolution",
15
+ pending = "pending",
16
+ scheduler = "scheduler",
17
+ powcaptcha = "powcaptcha",
18
+ client = "client",
19
+ session = "session",
20
+ ipblockrules = "ipblockrules",
21
+ userblockrules = "userblockrules"
22
+ }
23
+ export declare class ProviderDatabase extends MongoDatabase implements IProviderDatabase {
24
+ tables: Tables<TableNames>;
25
+ constructor(url: string, dbname?: string, authSource?: string, logger?: Logger);
26
+ connect(): Promise<void>;
27
+ loadTables(): void;
28
+ getTables(): Tables<TableNames>;
29
+ storeDataset(dataset: Dataset | DatasetWithIdsAndTree): Promise<void>;
30
+ getSolutions(datasetId: string): Promise<SolutionRecord[]>;
31
+ getDataset(datasetId: string): Promise<DatasetWithIds>;
32
+ getRandomCaptcha(solved: boolean, datasetId: Hash, size?: number): Promise<Captcha[] | undefined>;
33
+ getCaptchaById(captchaId: string[]): Promise<Captcha[] | undefined>;
34
+ updateCaptcha(captcha: Captcha, datasetId: Hash): Promise<void>;
35
+ removeCaptchas(captchaIds: string[]): Promise<void>;
36
+ getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
37
+ storeDappUserSolution(captchas: CaptchaSolution[], commit: UserCommitment): Promise<void>;
38
+ storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, difficulty: number, providerSignature: string, ipAddress: bigint, headers: RequestHeaders, serverChecked?: boolean, userSubmitted?: boolean, storedStatus?: StoredStatus, userSignature?: string): Promise<void>;
39
+ getPowCaptchaRecordByChallenge(challenge: string): Promise<PoWCaptchaRecord | null>;
40
+ updatePowCaptchaRecord(challenge: PoWChallengeId, result: CaptchaResult, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string): Promise<void>;
41
+ getProcessedDappUserSolutions(): Promise<UserSolutionRecord[]>;
42
+ getProcessedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
43
+ getCheckedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
44
+ getUnstoredDappUserCommitments(limit?: number, skip?: number): Promise<UserCommitmentRecord[]>;
45
+ markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise<void>;
46
+ markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise<void>;
47
+ getUnstoredDappUserPoWCommitments(limit?: number, skip?: number): Promise<PoWCaptchaRecord[]>;
48
+ markDappUserPoWCommitmentsStored(challenges: string[]): Promise<void>;
49
+ markDappUserPoWCommitmentsChecked(challenges: string[]): Promise<void>;
50
+ storeSessionRecord(sessionRecord: SessionRecord): Promise<void>;
51
+ checkAndRemoveSession(sessionId: string): Promise<SessionRecord | undefined>;
52
+ removeProcessedDappUserSolutions(commitmentIds: string[]): Promise<DeleteResult | undefined>;
53
+ removeProcessedDappUserCommitments(commitmentIds: string[]): Promise<DeleteResult | undefined>;
54
+ storeDappUserPending(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: number, requestedAtTimestamp: number, ipAddress: bigint): Promise<void>;
55
+ getDappUserPending(requestHash: string): Promise<PendingCaptchaRequest>;
56
+ updateDappUserPendingStatus(requestHash: string): Promise<void>;
57
+ getAllCaptchasByDatasetId(datasetId: string, state?: CaptchaStates): Promise<Captcha[] | undefined>;
58
+ getAllDappUserSolutions(captchaId: string[]): Promise<UserSolutionRecord[] | undefined>;
59
+ getDatasetIdWithSolvedCaptchasOfSizeN(solvedCaptchaCount: number): Promise<string>;
60
+ getRandomSolvedCaptchasFromSingleDataset(datasetId: string, size: number): Promise<CaptchaSolution[]>;
61
+ getDappUserSolutionById(commitmentId: string): Promise<UserSolutionRecord | undefined>;
62
+ getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord | undefined>;
63
+ getDappUserCommitmentByAccount(userAccount: string, dappAccount: string): Promise<UserCommitmentRecord[]>;
64
+ approveDappUserCommitment(commitmentId: string): Promise<void>;
65
+ disapproveDappUserCommitment(commitmentId: string, reason?: TranslationKey): Promise<void>;
66
+ flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise<void>;
67
+ flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
68
+ getScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
69
+ getLastScheduledTaskStatus(task: ScheduledTaskNames, status?: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
70
+ createScheduledTaskStatus(taskName: ScheduledTaskNames, status: ScheduledTaskStatus): Promise<ObjectId>;
71
+ updateScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
72
+ updateClientRecords(clientRecords: ClientRecord[]): Promise<void>;
73
+ getClientRecord(account: string): Promise<ClientRecord | undefined>;
74
+ getIPBlockRuleRecord(ipAddress: bigint): Promise<IPBlockRuleMongo | undefined>;
75
+ storeIPBlockRuleRecords(rules: IPBlockRuleRecord[]): Promise<void>;
76
+ getUserBlockRuleRecord(userAccount: string, dappAccount: string): Promise<UserAccountBlockRuleRecord | undefined>;
77
+ storeUserBlockRuleRecords(rules: UserAccountBlockRule[]): Promise<void>;
78
+ }
79
+ export {};
80
+ //# 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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"}