@prosopo/database 2.1.4 → 2.1.6

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/dist/base/index.d.ts +3 -0
  2. package/dist/base/index.d.ts.map +1 -0
  3. package/dist/base/index.js +3 -0
  4. package/dist/base/index.js.map +1 -0
  5. package/dist/base/mongo.d.ts +16 -0
  6. package/dist/base/mongo.d.ts.map +1 -0
  7. package/dist/base/mongo.js +89 -0
  8. package/dist/base/mongo.js.map +1 -0
  9. package/dist/base/mongoMemory.d.ts +11 -0
  10. package/dist/base/mongoMemory.d.ts.map +1 -0
  11. package/dist/base/mongoMemory.js +27 -0
  12. package/dist/base/mongoMemory.js.map +1 -0
  13. package/dist/captchaDatabase/captchaDatabse.d.ts +3 -0
  14. package/dist/captchaDatabase/captchaDatabse.d.ts.map +1 -0
  15. package/dist/captchaDatabase/captchaDatabse.js +22 -0
  16. package/dist/captchaDatabase/captchaDatabse.js.map +1 -0
  17. package/dist/captchaDatabase/index.d.ts +2 -0
  18. package/dist/captchaDatabase/index.d.ts.map +1 -0
  19. package/dist/captchaDatabase/index.js +2 -0
  20. package/dist/captchaDatabase/index.js.map +1 -0
  21. package/dist/cjs/base/index.cjs +6 -0
  22. package/dist/cjs/base/mongo.cjs +97 -0
  23. package/dist/cjs/base/mongoMemory.cjs +28 -0
  24. package/dist/cjs/databases/captcha.cjs +82 -0
  25. package/dist/cjs/databases/client.cjs +52 -0
  26. package/dist/cjs/databases/index.cjs +19 -0
  27. package/dist/cjs/databases/provider.cjs +983 -0
  28. package/dist/cjs/index.cjs +15 -0
  29. package/dist/databases/captcha.d.ts +16 -0
  30. package/dist/databases/captcha.d.ts.map +1 -0
  31. package/dist/databases/captcha.js +75 -0
  32. package/dist/databases/captcha.js.map +1 -0
  33. package/dist/databases/client.d.ts +12 -0
  34. package/dist/databases/client.d.ts.map +1 -0
  35. package/dist/databases/client.js +48 -0
  36. package/dist/databases/client.js.map +1 -0
  37. package/dist/databases/index.d.ts +16 -0
  38. package/dist/databases/index.d.ts.map +1 -0
  39. package/dist/databases/index.js +17 -0
  40. package/dist/databases/index.js.map +1 -0
  41. package/dist/databases/mongo.d.ts +58 -0
  42. package/dist/databases/mongo.d.ts.map +1 -0
  43. package/dist/databases/mongo.js +682 -0
  44. package/dist/databases/mongo.js.map +1 -0
  45. package/dist/databases/mongoMemory.d.ts +10 -0
  46. package/dist/databases/mongoMemory.d.ts.map +1 -0
  47. package/dist/databases/mongoMemory.js +30 -0
  48. package/dist/databases/mongoMemory.js.map +1 -0
  49. package/dist/databases/provider.d.ts +73 -0
  50. package/dist/databases/provider.d.ts.map +1 -0
  51. package/dist/databases/provider.js +823 -0
  52. package/dist/databases/provider.js.map +1 -0
  53. package/dist/eventsDatabase/eventsDatabase.d.ts +3 -0
  54. package/dist/eventsDatabase/eventsDatabase.d.ts.map +1 -0
  55. package/dist/eventsDatabase/eventsDatabase.js +46 -0
  56. package/dist/eventsDatabase/eventsDatabase.js.map +1 -0
  57. package/dist/eventsDatabase/index.d.ts +2 -0
  58. package/dist/eventsDatabase/index.d.ts.map +1 -0
  59. package/dist/eventsDatabase/index.js +2 -0
  60. package/dist/eventsDatabase/index.js.map +1 -0
  61. package/dist/index.d.ts +3 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js.map +1 -0
  64. package/package.json +6 -6
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("./base/index.cjs");
4
+ const index = require("./databases/index.cjs");
5
+ const mongo = require("./base/mongo.cjs");
6
+ const mongoMemory = require("./base/mongoMemory.cjs");
7
+ const provider = require("./databases/provider.cjs");
8
+ const captcha = require("./databases/captcha.cjs");
9
+ const client = require("./databases/client.cjs");
10
+ exports.Databases = index.Databases;
11
+ exports.MongoDatabase = mongo.MongoDatabase;
12
+ exports.MongoMemoryDatabase = mongoMemory.MongoMemoryDatabase;
13
+ exports.ProviderDatabase = provider.ProviderDatabase;
14
+ exports.CaptchaDatabase = captcha.CaptchaDatabase;
15
+ exports.ClientDatabase = client.ClientDatabase;
@@ -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);
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);
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,58 @@
1
+ /// <reference types="mongoose/types/connection.js" />
2
+ import { AsyncFactory, type Logger } from "@prosopo/common";
3
+ import { type Captcha, type CaptchaSolution, CaptchaStates, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type Hash, type PendingCaptchaRequest, type PowCaptcha, ScheduledTaskNames, type ScheduledTaskResult, ScheduledTaskStatus } from "@prosopo/types";
4
+ import { type Database, type ScheduledTaskRecord, type SolutionRecord, type Tables, type UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
5
+ import { type DeleteResult } from "mongodb";
6
+ import mongoose, { type Connection } from "mongoose";
7
+ export declare class ProsopoDatabase extends AsyncFactory implements Database {
8
+ url: string;
9
+ tables?: Tables;
10
+ dbname: string;
11
+ connection?: Connection;
12
+ logger: Logger;
13
+ constructor();
14
+ init(url: string, dbname: string, logger: Logger, authSource?: string): Promise<this>;
15
+ getTables(): Tables;
16
+ getConnection(): mongoose.Connection;
17
+ connect(): Promise<void>;
18
+ close(): Promise<void>;
19
+ storeDataset(dataset: DatasetWithIdsAndTree): Promise<void>;
20
+ getSolutions(datasetId: string): Promise<SolutionRecord[]>;
21
+ getDataset(datasetId: string): Promise<DatasetWithIds>;
22
+ getRandomCaptcha(solved: boolean, datasetId: Hash, size?: number): Promise<Captcha[] | undefined>;
23
+ getCaptchaById(captchaId: string[]): Promise<Captcha[] | undefined>;
24
+ updateCaptcha(captcha: Captcha, datasetId: Hash): Promise<void>;
25
+ removeCaptchas(captchaIds: string[]): Promise<void>;
26
+ getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
27
+ storeDappUserSolution(captchas: CaptchaSolution[], commit: UserCommitmentRecord): Promise<void>;
28
+ storePowCaptchaRecord(challenge: string, checked: boolean): Promise<void>;
29
+ getPowCaptchaRecordByChallenge(challenge: string): Promise<PowCaptcha | null>;
30
+ updatePowCaptchaRecord(challenge: string, checked: boolean): Promise<void>;
31
+ getProcessedDappUserSolutions(): Promise<UserSolutionRecord[]>;
32
+ getProcessedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
33
+ getUnbatchedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
34
+ getUnstoredDappUserCommitments(): Promise<UserCommitmentRecord[]>;
35
+ markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise<void>;
36
+ getBatchedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
37
+ removeProcessedDappUserSolutions(commitmentIds: string[]): Promise<DeleteResult | undefined>;
38
+ removeProcessedDappUserCommitments(commitmentIds: string[]): Promise<DeleteResult | undefined>;
39
+ storeDappUserPending(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: number, requestedAtBlock: number): Promise<void>;
40
+ getDappUserPending(requestHash: string): Promise<PendingCaptchaRequest>;
41
+ updateDappUserPendingStatus(requestHash: string): Promise<void>;
42
+ getAllCaptchasByDatasetId(datasetId: string, state?: CaptchaStates): Promise<Captcha[] | undefined>;
43
+ getAllDappUserSolutions(captchaId: string[]): Promise<UserSolutionRecord[] | undefined>;
44
+ getDatasetIdWithSolvedCaptchasOfSizeN(solvedCaptchaCount: number): Promise<string>;
45
+ getRandomSolvedCaptchasFromSingleDataset(datasetId: string, size: number): Promise<CaptchaSolution[]>;
46
+ getDappUserSolutionById(commitmentId: string): Promise<UserSolutionRecord | undefined>;
47
+ getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord | undefined>;
48
+ getDappUserCommitmentByAccount(userAccount: string): Promise<UserCommitmentRecord[]>;
49
+ approveDappUserCommitment(commitmentId: string): Promise<void>;
50
+ flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise<void>;
51
+ flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
52
+ flagBatchedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
53
+ getLastBatchCommitTime(): Promise<Date>;
54
+ getScheduledTaskStatus(taskId: string, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
55
+ getLastScheduledTaskStatus(task: ScheduledTaskNames, status?: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
56
+ storeScheduledTaskStatus(taskId: `0x${string}`, task: ScheduledTaskNames, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
57
+ }
58
+ //# sourceMappingURL=mongo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}