@prosopo/database 2.1.7 → 2.1.9
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/dist/base/index.d.ts +3 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +3 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/mongo.d.ts +16 -0
- package/dist/base/mongo.d.ts.map +1 -0
- package/dist/base/mongo.js +95 -0
- package/dist/base/mongo.js.map +1 -0
- package/dist/base/mongoMemory.d.ts +11 -0
- package/dist/base/mongoMemory.d.ts.map +1 -0
- package/dist/base/mongoMemory.js +27 -0
- package/dist/base/mongoMemory.js.map +1 -0
- package/dist/databases/captcha.d.ts +16 -0
- package/dist/databases/captcha.d.ts.map +1 -0
- package/dist/databases/captcha.js +75 -0
- package/dist/databases/captcha.js.map +1 -0
- package/dist/databases/client.d.ts +12 -0
- package/dist/databases/client.d.ts.map +1 -0
- package/dist/databases/client.js +48 -0
- package/dist/databases/client.js.map +1 -0
- package/dist/databases/index.d.ts +16 -0
- package/dist/databases/index.d.ts.map +1 -0
- package/dist/databases/index.js +17 -0
- package/dist/databases/index.js.map +1 -0
- package/dist/databases/provider.d.ts +80 -0
- package/dist/databases/provider.d.ts.map +1 -0
- package/dist/databases/provider.js +874 -0
- package/dist/databases/provider.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/package.json +5 -5
|
@@ -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 @@
|
|
|
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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"}
|