@prosopo/database 0.2.41 → 0.3.1

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/README.md ADDED
File without changes
@@ -28,73 +28,82 @@ class ProsopoDatabase extends common.AsyncFactory {
28
28
  this.logger = logger;
29
29
  return this;
30
30
  }
31
+ getTables() {
32
+ if (!this.tables) {
33
+ throw new common.ProsopoDBError("DATABASE.TABLES_UNDEFINED", {
34
+ context: { failedFuncName: this.getTables.name },
35
+ logger: this.logger
36
+ });
37
+ }
38
+ return this.tables;
39
+ }
40
+ getConnection() {
41
+ if (!this.connection) {
42
+ throw new common.ProsopoDBError("DATABASE.CONNECTION_UNDEFINED", {
43
+ context: { failedFuncName: this.getConnection.name },
44
+ logger: this.logger
45
+ });
46
+ }
47
+ return this.connection;
48
+ }
31
49
  /**
32
50
  * @description Connect to the database and set the various tables
33
51
  */
34
52
  async connect() {
35
- const MAX_RETRIES = 3;
36
- const RETRY_INTERVAL_MS = 1e3;
37
- for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
38
- try {
39
- if (this.connection) {
40
- return;
41
- }
42
- await new Promise((resolve, reject) => {
43
- this.logger.info(`Mongo url: ${this.url.replace(/\w+:\w+/, "<Credentials>")}`);
44
- this.connection = mongoose.createConnection(this.url, {
45
- dbName: this.dbname,
46
- serverApi: mongodb.ServerApiVersion.v1
47
- });
48
- this.tables = {
49
- captcha: this.connection.models.Captcha || this.connection.model("Captcha", typesDatabase.CaptchaRecordSchema),
50
- dataset: this.connection.models.Dataset || this.connection.model("Dataset", typesDatabase.DatasetRecordSchema),
51
- solution: this.connection.models.Solution || this.connection.model("Solution", typesDatabase.SolutionRecordSchema),
52
- commitment: this.connection.models.UserCommitment || this.connection.model("UserCommitment", typesDatabase.UserCommitmentRecordSchema),
53
- usersolution: this.connection.models.UserSolution || this.connection.model("UserSolution", typesDatabase.UserSolutionRecordSchema),
54
- pending: this.connection.models.Pending || this.connection.model("Pending", typesDatabase.PendingRecordSchema),
55
- scheduler: this.connection.models.Scheduler || this.connection.model("Scheduler", typesDatabase.ScheduledTaskRecordSchema)
56
- };
57
- this.connection.once("open", resolve).on("error", (e) => {
58
- var _a;
59
- if (attempt === MAX_RETRIES) {
60
- reject(
61
- new common.ProsopoDBError("DATABASE.CONNECT_ERROR", {
62
- context: { url: this.url, error: e, attempt },
63
- logger: this.logger
64
- })
65
- );
66
- } else {
67
- (_a = this.connection) == null ? void 0 : _a.removeAllListeners("error");
68
- }
69
- });
70
- });
71
- return;
72
- } catch (e) {
73
- if (attempt < MAX_RETRIES) {
74
- this.logger.info(`Attempt ${attempt} failed, retrying in ${RETRY_INTERVAL_MS / 1e3} seconds...`);
75
- await new Promise((resolve) => setTimeout(resolve, RETRY_INTERVAL_MS));
76
- } else {
77
- throw e;
78
- }
79
- }
80
- }
53
+ this.logger.info(`Mongo url: ${this.url.replace(/\w+:\w+/, "<Credentials>")}`);
54
+ this.connection = await new Promise((resolve, reject) => {
55
+ const connection = mongoose.createConnection(this.url, {
56
+ dbName: this.dbname,
57
+ serverApi: mongodb.ServerApiVersion.v1
58
+ });
59
+ connection.on("open", () => {
60
+ this.logger.info(`Database connection to ${this.url} opened`);
61
+ resolve(connection);
62
+ });
63
+ connection.on("error", (err) => {
64
+ this.logger.error(`Database error: ${err}`);
65
+ reject(err);
66
+ });
67
+ connection.on("connected", () => {
68
+ this.logger.info(`Database connected to ${this.url}`);
69
+ });
70
+ connection.on("disconnected", () => {
71
+ this.logger.info(`Database disconnected from ${this.url}`);
72
+ });
73
+ connection.on("reconnected", () => {
74
+ this.logger.info(`Database reconnected to ${this.url}`);
75
+ });
76
+ connection.on("reconnectFailed", () => {
77
+ this.logger.error(`Database reconnect failed to ${this.url}`);
78
+ });
79
+ connection.on("close", () => {
80
+ this.logger.info(`Database connection to ${this.url} closed`);
81
+ });
82
+ connection.on("fullsetup", () => {
83
+ this.logger.info(`Database connection to ${this.url} is fully setup`);
84
+ });
85
+ });
86
+ this.tables = {
87
+ captcha: this.connection.model("Captcha", typesDatabase.CaptchaRecordSchema),
88
+ powCaptcha: this.connection.model("PowCaptcha", typesDatabase.PowCaptchaRecordSchema),
89
+ dataset: this.connection.model("Dataset", typesDatabase.DatasetRecordSchema),
90
+ solution: this.connection.model("Solution", typesDatabase.SolutionRecordSchema),
91
+ commitment: this.connection.model("UserCommitment", typesDatabase.UserCommitmentRecordSchema),
92
+ usersolution: this.connection.model("UserSolution", typesDatabase.UserSolutionRecordSchema),
93
+ pending: this.connection.model("Pending", typesDatabase.PendingRecordSchema),
94
+ scheduler: this.connection.model("Scheduler", typesDatabase.ScheduledTaskRecordSchema)
95
+ };
81
96
  }
82
97
  /** Close connection to the database */
83
98
  async close() {
84
99
  this.logger.debug(`Closing connection to ${this.url}`);
85
- await new Promise(async (resolve, reject) => {
86
- mongoose.connection.close().then(() => {
87
- this.logger.debug(`Connection to ${this.url} closed`);
88
- resolve();
89
- }).catch(reject);
90
- });
100
+ await this.connection?.close();
91
101
  }
92
102
  /**
93
103
  * @description Load a dataset to the database
94
104
  * @param {Dataset} dataset
95
105
  */
96
106
  async storeDataset(dataset) {
97
- var _a, _b, _c;
98
107
  try {
99
108
  this.logger.debug(`Storing dataset in database`);
100
109
  const parsedDataset = types.DatasetWithIdsAndTreeSchema.parse(dataset);
@@ -105,21 +114,21 @@ class ProsopoDatabase extends common.AsyncFactory {
105
114
  contentTree: parsedDataset.contentTree,
106
115
  solutionTree: parsedDataset.solutionTree
107
116
  };
108
- await ((_a = this.tables) == null ? void 0 : _a.dataset.updateOne(
117
+ await this.tables?.dataset.updateOne(
109
118
  { datasetId: parsedDataset.datasetId },
110
119
  { $set: datasetDoc },
111
120
  { upsert: true }
112
- ));
121
+ );
113
122
  const captchaDocs = parsedDataset.captchas.map(({ solution, ...captcha }, index) => ({
114
123
  ...captcha,
115
124
  datasetId: parsedDataset.datasetId,
116
125
  datasetContentId: parsedDataset.datasetContentId,
117
126
  index,
118
- solved: !!(solution == null ? void 0 : solution.length)
127
+ solved: !!solution?.length
119
128
  }));
120
129
  this.logger.debug(`Inserting captcha records`);
121
130
  if (captchaDocs.length) {
122
- await ((_b = this.tables) == null ? void 0 : _b.captcha.bulkWrite(
131
+ await this.tables?.captcha.bulkWrite(
123
132
  captchaDocs.map((captchaDoc) => ({
124
133
  updateOne: {
125
134
  filter: { captchaId: captchaDoc.captchaId },
@@ -127,9 +136,9 @@ class ProsopoDatabase extends common.AsyncFactory {
127
136
  upsert: true
128
137
  }
129
138
  }))
130
- ));
139
+ );
131
140
  }
132
- const captchaSolutionDocs = parsedDataset.captchas.filter(({ solution }) => solution == null ? void 0 : solution.length).map((captcha) => ({
141
+ const captchaSolutionDocs = parsedDataset.captchas.filter(({ solution }) => solution?.length).map((captcha) => ({
133
142
  captchaId: captcha.captchaId,
134
143
  captchaContentId: captcha.captchaContentId,
135
144
  solution: captcha.solution,
@@ -139,7 +148,7 @@ class ProsopoDatabase extends common.AsyncFactory {
139
148
  }));
140
149
  this.logger.debug(`Inserting solution records`);
141
150
  if (captchaSolutionDocs.length) {
142
- await ((_c = this.tables) == null ? void 0 : _c.solution.bulkWrite(
151
+ await this.tables?.solution.bulkWrite(
143
152
  captchaSolutionDocs.map((captchaSolutionDoc) => ({
144
153
  updateOne: {
145
154
  filter: { captchaId: captchaSolutionDoc.captchaId },
@@ -147,7 +156,7 @@ class ProsopoDatabase extends common.AsyncFactory {
147
156
  upsert: true
148
157
  }
149
158
  }))
150
- ));
159
+ );
151
160
  }
152
161
  this.logger.debug(`Dataset stored in database`);
153
162
  } catch (err) {
@@ -161,20 +170,18 @@ class ProsopoDatabase extends common.AsyncFactory {
161
170
  * @param {string} datasetId
162
171
  */
163
172
  async getSolutions(datasetId) {
164
- var _a;
165
- const docs = await ((_a = this.tables) == null ? void 0 : _a.solution.find({ datasetId }).lean());
173
+ const docs = await this.tables?.solution.find({ datasetId }).lean();
166
174
  return docs ? docs : [];
167
175
  }
168
176
  /** @description Get a dataset from the database
169
177
  * @param {string} datasetId
170
178
  */
171
179
  async getDataset(datasetId) {
172
- var _a, _b, _c;
173
- const datasetDoc = await ((_a = this.tables) == null ? void 0 : _a.dataset.findOne({ datasetId }).lean());
180
+ const datasetDoc = await this.tables?.dataset.findOne({ datasetId }).lean();
174
181
  if (datasetDoc) {
175
182
  const { datasetContentId, format, contentTree, solutionTree } = datasetDoc;
176
- const captchas = await ((_b = this.tables) == null ? void 0 : _b.captcha.find({ datasetId }).lean()) || [];
177
- const solutions = await ((_c = this.tables) == null ? void 0 : _c.solution.find({ datasetId }).lean()) || [];
183
+ const captchas = await this.tables?.captcha.find({ datasetId }).lean() || [];
184
+ const solutions = await this.tables?.solution.find({ datasetId }).lean() || [];
178
185
  const solutionsKeyed = {};
179
186
  for (const solution of solutions) {
180
187
  solutionsKeyed[solution.captchaId] = solution;
@@ -211,14 +218,13 @@ class ProsopoDatabase extends common.AsyncFactory {
211
218
  * @param {number} size the number of records to be returned
212
219
  */
213
220
  async getRandomCaptcha(solved, datasetId, size) {
214
- var _a;
215
221
  if (!is.isHex(datasetId)) {
216
222
  throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
217
223
  context: { failedFuncName: this.getRandomCaptcha.name, datasetId }
218
224
  });
219
225
  }
220
226
  const sampleSize = size ? Math.abs(Math.trunc(size)) : 1;
221
- const cursor = (_a = this.tables) == null ? void 0 : _a.captcha.aggregate([
227
+ const cursor = this.tables?.captcha.aggregate([
222
228
  { $match: { datasetId, solved } },
223
229
  { $sample: { size: sampleSize } },
224
230
  {
@@ -245,8 +251,7 @@ class ProsopoDatabase extends common.AsyncFactory {
245
251
  * @param {string[]} captchaId
246
252
  */
247
253
  async getCaptchaById(captchaId) {
248
- var _a;
249
- const cursor = (_a = this.tables) == null ? void 0 : _a.captcha.find({ captchaId: { $in: captchaId } }).lean();
254
+ const cursor = this.tables?.captcha.find({ captchaId: { $in: captchaId } }).lean();
250
255
  const docs = await cursor;
251
256
  if (docs && docs.length) {
252
257
  return docs.map(({ _id, ...keepAttrs }) => keepAttrs);
@@ -261,14 +266,13 @@ class ProsopoDatabase extends common.AsyncFactory {
261
266
  * @param {string} datasetId the id of the data set
262
267
  */
263
268
  async updateCaptcha(captcha, datasetId) {
264
- var _a;
265
269
  if (!is.isHex(datasetId)) {
266
270
  throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
267
271
  context: { failedFuncName: this.updateCaptcha.name, datasetId }
268
272
  });
269
273
  }
270
274
  try {
271
- await ((_a = this.tables) == null ? void 0 : _a.captcha.updateOne({ datasetId }, { $set: captcha }, { upsert: false }));
275
+ await this.tables?.captcha.updateOne({ datasetId }, { $set: captcha }, { upsert: false });
272
276
  } catch (err) {
273
277
  throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
274
278
  context: { failedFuncName: this.getDatasetDetails.name, error: err }
@@ -279,20 +283,18 @@ class ProsopoDatabase extends common.AsyncFactory {
279
283
  * @description Remove captchas
280
284
  */
281
285
  async removeCaptchas(captchaIds) {
282
- var _a;
283
- await ((_a = this.tables) == null ? void 0 : _a.captcha.deleteMany({ captchaId: { $in: captchaIds } }));
286
+ await this.tables?.captcha.deleteMany({ captchaId: { $in: captchaIds } });
284
287
  }
285
288
  /**
286
289
  * @description Get a dataset by Id
287
290
  */
288
291
  async getDatasetDetails(datasetId) {
289
- var _a;
290
292
  if (!is.isHex(datasetId)) {
291
293
  throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
292
294
  context: { failedFuncName: this.getDatasetDetails.name, datasetId }
293
295
  });
294
296
  }
295
- const doc = await ((_a = this.tables) == null ? void 0 : _a.dataset.findOne({ datasetId }).lean());
297
+ const doc = await this.tables?.dataset.findOne({ datasetId }).lean();
296
298
  if (doc) {
297
299
  return doc;
298
300
  }
@@ -304,16 +306,15 @@ class ProsopoDatabase extends common.AsyncFactory {
304
306
  * @description Store a Dapp User's captcha solution commitment
305
307
  */
306
308
  async storeDappUserSolution(captchas, commit) {
307
- var _a, _b;
308
309
  const commitmentRecord = typesDatabase.UserCommitmentSchema.parse(commit);
309
310
  if (captchas.length) {
310
- await ((_a = this.tables) == null ? void 0 : _a.commitment.updateOne(
311
+ await this.tables?.commitment.updateOne(
311
312
  {
312
313
  id: commit.id
313
314
  },
314
315
  commitmentRecord,
315
316
  { upsert: true }
316
- ));
317
+ );
317
318
  const ops = captchas.map((captcha) => ({
318
319
  updateOne: {
319
320
  filter: { commitmentId: commit.id, captchaId: captcha.captchaId },
@@ -330,54 +331,136 @@ class ProsopoDatabase extends common.AsyncFactory {
330
331
  upsert: true
331
332
  }
332
333
  }));
333
- await ((_b = this.tables) == null ? void 0 : _b.usersolution.bulkWrite(ops));
334
+ await this.tables?.usersolution.bulkWrite(ops);
335
+ }
336
+ }
337
+ /**
338
+ * @description Adds a new PoW Captcha record to the database.
339
+ * @param {string} challenge The challenge string for the captcha.
340
+ * @param {boolean} checked Indicates if the captcha has been checked.
341
+ * @returns {Promise<void>} A promise that resolves when the record is added.
342
+ */
343
+ async storePowCaptchaRecord(challenge, checked) {
344
+ if (!this.tables) {
345
+ throw new common.ProsopoEnvError("DATABASE.DATABASE_UNDEFINED", {
346
+ context: { failedFuncName: this.storePowCaptchaRecord.name },
347
+ logger: this.logger
348
+ });
349
+ }
350
+ const powCaptchaRecord = {
351
+ challenge,
352
+ checked
353
+ };
354
+ try {
355
+ await this.tables.powCaptcha.create(powCaptchaRecord);
356
+ this.logger.info("PowCaptcha record added successfully", { challenge, checked });
357
+ } catch (error) {
358
+ this.logger.error("Failed to add PowCaptcha record", { error, challenge, checked });
359
+ throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
360
+ context: { error, challenge, checked },
361
+ logger: this.logger
362
+ });
363
+ }
364
+ }
365
+ /**
366
+ * @description Retrieves a PoW Captcha record by its challenge string.
367
+ * @param {string} challenge The challenge string to search for.
368
+ * @returns {Promise<PowCaptcha | null>} A promise that resolves with the found record or null if not found.
369
+ */
370
+ async getPowCaptchaRecordByChallenge(challenge) {
371
+ if (!this.tables) {
372
+ throw new common.ProsopoEnvError("DATABASE.DATABASE_UNDEFINED", {
373
+ context: { failedFuncName: this.getPowCaptchaRecordByChallenge.name },
374
+ logger: this.logger
375
+ });
376
+ }
377
+ try {
378
+ const record = await this.tables.powCaptcha.findOne({ challenge }).lean();
379
+ if (record) {
380
+ this.logger.info("PowCaptcha record retrieved successfully", { challenge });
381
+ return record;
382
+ } else {
383
+ this.logger.info("No PowCaptcha record found", { challenge });
384
+ return null;
385
+ }
386
+ } catch (error) {
387
+ this.logger.error("Failed to retrieve PowCaptcha record", { error, challenge });
388
+ throw new common.ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
389
+ context: { error, challenge },
390
+ logger: this.logger
391
+ });
392
+ }
393
+ }
394
+ /**
395
+ * @description Updates a PoW Captcha record in the database.
396
+ * @param {string} challenge The challenge string of the captcha to be updated.
397
+ * @param {boolean} checked New value indicating whether the captcha has been checked.
398
+ * @returns {Promise<void>} A promise that resolves when the record is updated.
399
+ */
400
+ async updatePowCaptchaRecord(challenge, checked) {
401
+ if (!this.tables) {
402
+ throw new common.ProsopoEnvError("DATABASE.DATABASE_UNDEFINED", {
403
+ context: { failedFuncName: this.updatePowCaptchaRecord.name },
404
+ logger: this.logger
405
+ });
406
+ }
407
+ try {
408
+ const updateResult = await this.tables.powCaptcha.updateOne({ challenge }, { $set: { checked } });
409
+ if (updateResult.matchedCount === 0) {
410
+ this.logger.info("No PowCaptcha record found to update", { challenge, checked });
411
+ throw new common.ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
412
+ context: { challenge, checked },
413
+ logger: this.logger
414
+ });
415
+ } else {
416
+ this.logger.info("PowCaptcha record updated successfully", { challenge, checked });
417
+ }
418
+ } catch (error) {
419
+ this.logger.error("Failed to update PowCaptcha record", { error, challenge, checked });
420
+ throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
421
+ context: { error, challenge, checked },
422
+ logger: this.logger
423
+ });
334
424
  }
335
425
  }
336
426
  /** @description Get processed Dapp User captcha solutions from the user solution table
337
427
  */
338
428
  async getProcessedDappUserSolutions() {
339
- var _a;
340
- const docs = await ((_a = this.tables) == null ? void 0 : _a.usersolution.find({ processed: true }).lean());
429
+ const docs = await this.tables?.usersolution.find({ processed: true }).lean();
341
430
  return docs ? docs.map((doc) => typesDatabase.UserSolutionSchema.parse(doc)) : [];
342
431
  }
343
432
  /** @description Get processed Dapp User captcha commitments from the commitments table
344
433
  */
345
434
  async getProcessedDappUserCommitments() {
346
- var _a;
347
- const docs = await ((_a = this.tables) == null ? void 0 : _a.commitment.find({ processed: true }).lean());
435
+ const docs = await this.tables?.commitment.find({ processed: true }).lean();
348
436
  return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
349
437
  }
350
438
  /** @description Get Dapp User captcha commitments from the commitments table that have not been batched on-chain
351
439
  */
352
440
  async getUnbatchedDappUserCommitments() {
353
- var _a;
354
- const docs = await ((_a = this.tables) == null ? void 0 : _a.commitment.find({ batched: false }).lean());
441
+ const docs = await this.tables?.commitment.find({ batched: false }).lean();
355
442
  return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
356
443
  }
357
444
  /** @description Get Dapp User captcha commitments from the commitments table that have been batched on-chain
358
445
  */
359
446
  async getBatchedDappUserCommitments() {
360
- var _a;
361
- const docs = await ((_a = this.tables) == null ? void 0 : _a.commitment.find({ batched: true }).lean());
447
+ const docs = await this.tables?.commitment.find({ batched: true }).lean();
362
448
  return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
363
449
  }
364
450
  /** @description Remove processed Dapp User captcha solutions from the user solution table
365
451
  */
366
452
  async removeProcessedDappUserSolutions(commitmentIds) {
367
- var _a;
368
- return await ((_a = this.tables) == null ? void 0 : _a.usersolution.deleteMany({ processed: true, commitmentId: { $in: commitmentIds } }));
453
+ return await this.tables?.usersolution.deleteMany({ processed: true, commitmentId: { $in: commitmentIds } });
369
454
  }
370
455
  /** @description Remove processed Dapp User captcha commitments from the user commitments table
371
456
  */
372
457
  async removeProcessedDappUserCommitments(commitmentIds) {
373
- var _a;
374
- return await ((_a = this.tables) == null ? void 0 : _a.commitment.deleteMany({ processed: true, id: { $in: commitmentIds } }));
458
+ return await this.tables?.commitment.deleteMany({ processed: true, id: { $in: commitmentIds } });
375
459
  }
376
460
  /**
377
461
  * @description Store a Dapp User's pending record
378
462
  */
379
463
  async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtBlock) {
380
- var _a;
381
464
  if (!is.isHex(requestHash)) {
382
465
  throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
383
466
  context: { failedFuncName: this.storeDappUserPending.name, requestHash }
@@ -391,19 +474,18 @@ class ProsopoDatabase extends common.AsyncFactory {
391
474
  deadlineTimestamp,
392
475
  requestedAtBlock
393
476
  };
394
- await ((_a = this.tables) == null ? void 0 : _a.pending.updateOne({ requestHash }, { $set: pendingRecord }, { upsert: true }));
477
+ await this.tables?.pending.updateOne({ requestHash }, { $set: pendingRecord }, { upsert: true });
395
478
  }
396
479
  /**
397
480
  * @description Get a Dapp user's pending record
398
481
  */
399
482
  async getDappUserPending(requestHash) {
400
- var _a;
401
483
  if (!is.isHex(requestHash)) {
402
484
  throw new common.ProsopoEnvError("DATABASE.INVALID_HASH", {
403
485
  context: { failedFuncName: this.getDappUserPending.name, requestHash }
404
486
  });
405
487
  }
406
- const doc = await ((_a = this.tables) == null ? void 0 : _a.pending.findOne({ requestHash }).lean());
488
+ const doc = await this.tables?.pending.findOne({ requestHash }).lean();
407
489
  if (doc) {
408
490
  return doc;
409
491
  }
@@ -415,13 +497,12 @@ class ProsopoDatabase extends common.AsyncFactory {
415
497
  * @description Update a Dapp User's pending record
416
498
  */
417
499
  async updateDappUserPendingStatus(userAccount, requestHash, approve) {
418
- var _a;
419
500
  if (!is.isHex(requestHash)) {
420
501
  throw new common.ProsopoEnvError("DATABASE.INVALID_HASH", {
421
502
  context: { failedFuncName: this.updateDappUserPendingStatus.name, requestHash }
422
503
  });
423
504
  }
424
- await ((_a = this.tables) == null ? void 0 : _a.pending.updateOne(
505
+ await this.tables?.pending.updateOne(
425
506
  { requestHash },
426
507
  {
427
508
  $set: {
@@ -432,14 +513,13 @@ class ProsopoDatabase extends common.AsyncFactory {
432
513
  }
433
514
  },
434
515
  { upsert: true }
435
- ));
516
+ );
436
517
  }
437
518
  /**
438
519
  * @description Get all unsolved captchas
439
520
  */
440
521
  async getAllCaptchasByDatasetId(datasetId, state) {
441
- var _a;
442
- const cursor = (_a = this.tables) == null ? void 0 : _a.captcha.find({
522
+ const cursor = this.tables?.captcha.find({
443
523
  datasetId,
444
524
  solved: state === types.CaptchaStates.Solved
445
525
  }).lean();
@@ -453,8 +533,7 @@ class ProsopoDatabase extends common.AsyncFactory {
453
533
  * @description Get all dapp user solutions by captchaIds
454
534
  */
455
535
  async getAllDappUserSolutions(captchaId) {
456
- var _a, _b;
457
- const cursor = (_b = (_a = this.tables) == null ? void 0 : _a.usersolution) == null ? void 0 : _b.find({ captchaId: { $in: captchaId } }).lean();
536
+ const cursor = this.tables?.usersolution?.find({ captchaId: { $in: captchaId } }).lean();
458
537
  const docs = await cursor;
459
538
  if (docs) {
460
539
  return docs.map(({ _id, ...keepAttrs }) => keepAttrs);
@@ -462,8 +541,7 @@ class ProsopoDatabase extends common.AsyncFactory {
462
541
  throw new common.ProsopoEnvError("DATABASE.SOLUTION_GET_FAILED");
463
542
  }
464
543
  async getDatasetIdWithSolvedCaptchasOfSizeN(solvedCaptchaCount) {
465
- var _a;
466
- const cursor = (_a = this.tables) == null ? void 0 : _a.solution.aggregate([
544
+ const cursor = this.tables?.solution.aggregate([
467
545
  {
468
546
  $match: {}
469
547
  },
@@ -489,14 +567,13 @@ class ProsopoDatabase extends common.AsyncFactory {
489
567
  throw new common.ProsopoDBError("DATABASE.DATASET_WITH_SOLUTIONS_GET_FAILED");
490
568
  }
491
569
  async getRandomSolvedCaptchasFromSingleDataset(datasetId, size) {
492
- var _a;
493
570
  if (!is.isHex(datasetId)) {
494
571
  throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
495
572
  context: { failedFuncName: this.getRandomSolvedCaptchasFromSingleDataset.name, datasetId }
496
573
  });
497
574
  }
498
575
  const sampleSize = size ? Math.abs(Math.trunc(size)) : 1;
499
- const cursor = (_a = this.tables) == null ? void 0 : _a.solution.aggregate([
576
+ const cursor = this.tables?.solution.aggregate([
500
577
  { $match: { datasetId } },
501
578
  { $sample: { size: sampleSize } },
502
579
  {
@@ -520,8 +597,7 @@ class ProsopoDatabase extends common.AsyncFactory {
520
597
  * @param {string[]} commitmentId
521
598
  */
522
599
  async getDappUserSolutionById(commitmentId) {
523
- var _a, _b;
524
- const cursor = (_b = (_a = this.tables) == null ? void 0 : _a.usersolution) == null ? void 0 : _b.findOne(
600
+ const cursor = this.tables?.usersolution?.findOne(
525
601
  {
526
602
  commitmentId
527
603
  },
@@ -540,8 +616,7 @@ class ProsopoDatabase extends common.AsyncFactory {
540
616
  * @param commitmentId
541
617
  */
542
618
  async getDappUserCommitmentById(commitmentId) {
543
- var _a, _b;
544
- const commitmentCursor = (_b = (_a = this.tables) == null ? void 0 : _a.commitment) == null ? void 0 : _b.findOne({ id: commitmentId }).lean();
619
+ const commitmentCursor = this.tables?.commitment?.findOne({ id: commitmentId }).lean();
545
620
  const doc = await commitmentCursor;
546
621
  return doc ? typesDatabase.UserCommitmentSchema.parse(doc) : void 0;
547
622
  }
@@ -550,8 +625,7 @@ class ProsopoDatabase extends common.AsyncFactory {
550
625
  * @param {string[]} userAccount
551
626
  */
552
627
  async getDappUserCommitmentByAccount(userAccount) {
553
- var _a, _b;
554
- const docs = await ((_b = (_a = this.tables) == null ? void 0 : _a.commitment) == null ? void 0 : _b.find({ userAccount }).lean());
628
+ const docs = await this.tables?.commitment?.find({ userAccount }).lean();
555
629
  return docs ? docs : [];
556
630
  }
557
631
  /**
@@ -559,13 +633,12 @@ class ProsopoDatabase extends common.AsyncFactory {
559
633
  * @param {string[]} commitmentId
560
634
  */
561
635
  async approveDappUserCommitment(commitmentId) {
562
- var _a, _b;
563
636
  try {
564
- await ((_b = (_a = this.tables) == null ? void 0 : _a.commitment) == null ? void 0 : _b.findOneAndUpdate(
637
+ await this.tables?.commitment?.findOneAndUpdate(
565
638
  { id: commitmentId },
566
639
  { $set: { status: typesReturns.CaptchaStatus.approved } },
567
640
  { upsert: false }
568
- ).lean());
641
+ ).lean();
569
642
  } catch (err) {
570
643
  throw new common.ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", { context: { error: err, commitmentId } });
571
644
  }
@@ -575,9 +648,8 @@ class ProsopoDatabase extends common.AsyncFactory {
575
648
  * @param {string[]} captchaIds
576
649
  */
577
650
  async flagProcessedDappUserSolutions(captchaIds) {
578
- var _a, _b;
579
651
  try {
580
- await ((_b = (_a = this.tables) == null ? void 0 : _a.usersolution) == null ? void 0 : _b.updateMany({ captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false }).lean());
652
+ await this.tables?.usersolution?.updateMany({ captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false }).lean();
581
653
  } catch (err) {
582
654
  throw new common.ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", { context: { error: err, captchaIds } });
583
655
  }
@@ -587,10 +659,9 @@ class ProsopoDatabase extends common.AsyncFactory {
587
659
  * @param {string[]} commitmentIds
588
660
  */
589
661
  async flagProcessedDappUserCommitments(commitmentIds) {
590
- var _a, _b;
591
662
  try {
592
663
  const distinctCommitmentIds = [...new Set(commitmentIds)];
593
- await ((_b = (_a = this.tables) == null ? void 0 : _a.commitment) == null ? void 0 : _b.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false }).lean());
664
+ await this.tables?.commitment?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false }).lean();
594
665
  } catch (err) {
595
666
  throw new common.ProsopoDBError("DATABASE.COMMITMENT_FLAG_FAILED", { context: { error: err, commitmentIds } });
596
667
  }
@@ -600,10 +671,9 @@ class ProsopoDatabase extends common.AsyncFactory {
600
671
  * @param {string[]} commitmentIds
601
672
  */
602
673
  async flagBatchedDappUserCommitments(commitmentIds) {
603
- var _a, _b;
604
674
  try {
605
675
  const distinctCommitmentIds = [...new Set(commitmentIds)];
606
- await ((_b = (_a = this.tables) == null ? void 0 : _a.commitment) == null ? void 0 : _b.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { batched: true } }, { upsert: false }).lean());
676
+ await this.tables?.commitment?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { batched: true } }, { upsert: false }).lean();
607
677
  } catch (err) {
608
678
  throw new common.ProsopoDBError("DATABASE.COMMITMENT_FLAG_FAILED", { context: { error: err, commitmentIds } });
609
679
  }
@@ -612,9 +682,8 @@ class ProsopoDatabase extends common.AsyncFactory {
612
682
  * @description Get the last batch commit time or return 0 if none
613
683
  */
614
684
  async getLastBatchCommitTime() {
615
- var _a, _b;
616
- const cursor = (_b = (_a = this.tables) == null ? void 0 : _a.scheduler) == null ? void 0 : _b.findOne({ processName: types.ScheduledTaskNames.BatchCommitment, status: types.ScheduledTaskStatus.Completed }).sort({ timestamp: -1 });
617
- const doc = await (cursor == null ? void 0 : cursor.lean());
685
+ const cursor = this.tables?.scheduler?.findOne({ processName: types.ScheduledTaskNames.BatchCommitment, status: types.ScheduledTaskStatus.Completed }).sort({ timestamp: -1 });
686
+ const doc = await cursor?.lean();
618
687
  if (doc) {
619
688
  return doc.datetime;
620
689
  }
@@ -624,27 +693,24 @@ class ProsopoDatabase extends common.AsyncFactory {
624
693
  * @description Get a scheduled task status record by task ID and status
625
694
  */
626
695
  async getScheduledTaskStatus(taskId, status) {
627
- var _a, _b;
628
- const cursor = await ((_b = (_a = this.tables) == null ? void 0 : _a.scheduler) == null ? void 0 : _b.findOne({ taskId, status }).lean());
696
+ const cursor = await this.tables?.scheduler?.findOne({ taskId, status }).lean();
629
697
  return cursor ? cursor : void 0;
630
698
  }
631
699
  /**
632
700
  * @description Get the most recent scheduled task status record for a given task
633
701
  */
634
702
  async getLastScheduledTaskStatus(task, status) {
635
- var _a, _b;
636
703
  const lookup = { processName: task };
637
704
  if (status) {
638
705
  lookup["status"] = status;
639
706
  }
640
- const cursor = await ((_b = (_a = this.tables) == null ? void 0 : _a.scheduler) == null ? void 0 : _b.findOne(lookup).sort({ datetime: -1 }).lean());
707
+ const cursor = await this.tables?.scheduler?.findOne(lookup).sort({ datetime: -1 }).lean();
641
708
  return cursor ? cursor : void 0;
642
709
  }
643
710
  /**
644
711
  * @description Store the status of a scheduled task and an optional result
645
712
  */
646
713
  async storeScheduledTaskStatus(taskId, task, status, result) {
647
- var _a;
648
714
  const now = /* @__PURE__ */ new Date();
649
715
  const doc = typesDatabase.ScheduledTaskSchema.parse({
650
716
  taskId,
@@ -653,7 +719,7 @@ class ProsopoDatabase extends common.AsyncFactory {
653
719
  status,
654
720
  ...result && { result }
655
721
  });
656
- await ((_a = this.tables) == null ? void 0 : _a.scheduler.create(doc));
722
+ await this.tables?.scheduler.create(doc);
657
723
  }
658
724
  }
659
725
  exports.ProsopoDatabase = ProsopoDatabase;
@@ -3,11 +3,29 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const mongo = require("./mongo.cjs");
4
4
  const mongodbMemoryServer = require("mongodb-memory-server");
5
5
  class MongoMemoryDatabase extends mongo.ProsopoDatabase {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.running = false;
9
+ }
6
10
  async init(url, dbname, logger, authSource) {
7
- const mongod = await mongodbMemoryServer.MongoMemoryServer.create();
8
- const mongoMemoryURL = mongod.getUri();
11
+ this.mongod = await mongodbMemoryServer.MongoMemoryServer.create();
12
+ this.running = true;
13
+ const mongoMemoryURL = this.mongod.getUri();
9
14
  await super.init(mongoMemoryURL, dbname, logger, authSource);
10
15
  return this;
11
16
  }
17
+ connect() {
18
+ if (!this.running) {
19
+ this.mongod?.start();
20
+ this.running = true;
21
+ } else {
22
+ }
23
+ return super.connect();
24
+ }
25
+ async close() {
26
+ await super.close();
27
+ await this.mongod?.stop();
28
+ this.running = false;
29
+ }
12
30
  }
13
31
  exports.MongoMemoryDatabase = MongoMemoryDatabase;
@@ -59,7 +59,7 @@ const saveCaptchaEvent = async (events, accountId, atlasUri) => {
59
59
  })
60
60
  );
61
61
  } else {
62
- connection == null ? void 0 : connection.removeAllListeners("error");
62
+ connection?.removeAllListeners("error");
63
63
  }
64
64
  });
65
65
  }
@@ -1,10 +1,10 @@
1
1
  /// <reference types="mongoose/types/connection.js" />
2
2
  import { AsyncFactory, Logger } from '@prosopo/common';
3
- import { Captcha, CaptchaSolution, CaptchaStates, DatasetBase, DatasetWithIds, DatasetWithIdsAndTree, PendingCaptchaRequest, ScheduledTaskNames, ScheduledTaskResult, ScheduledTaskStatus } from '@prosopo/types';
3
+ import { Captcha, CaptchaSolution, CaptchaStates, DatasetBase, DatasetWithIds, DatasetWithIdsAndTree, PendingCaptchaRequest, PowCaptcha, ScheduledTaskNames, ScheduledTaskResult, ScheduledTaskStatus } from '@prosopo/types';
4
4
  import { Database, ScheduledTaskRecord, SolutionRecord, Tables, UserCommitmentRecord, UserSolutionRecord } from '@prosopo/types-database';
5
5
  import { Hash } from '@prosopo/captcha-contract/types-returns';
6
6
  import { DeleteResult } from 'mongodb';
7
- import { Connection } from 'mongoose';
7
+ import mongoose, { Connection } from 'mongoose';
8
8
  export declare class ProsopoDatabase extends AsyncFactory implements Database {
9
9
  url: string;
10
10
  tables?: Tables;
@@ -13,6 +13,8 @@ export declare class ProsopoDatabase extends AsyncFactory implements Database {
13
13
  logger: Logger;
14
14
  constructor();
15
15
  init(url: string, dbname: string, logger: Logger, authSource?: string): Promise<this>;
16
+ getTables(): Tables;
17
+ getConnection(): mongoose.Connection;
16
18
  connect(): Promise<void>;
17
19
  close(): Promise<void>;
18
20
  storeDataset(dataset: DatasetWithIdsAndTree): Promise<void>;
@@ -24,6 +26,9 @@ export declare class ProsopoDatabase extends AsyncFactory implements Database {
24
26
  removeCaptchas(captchaIds: string[]): Promise<void>;
25
27
  getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
26
28
  storeDappUserSolution(captchas: CaptchaSolution[], commit: UserCommitmentRecord): Promise<void>;
29
+ storePowCaptchaRecord(challenge: string, checked: boolean): Promise<void>;
30
+ getPowCaptchaRecordByChallenge(challenge: string): Promise<PowCaptcha | null>;
31
+ updatePowCaptchaRecord(challenge: string, checked: boolean): Promise<void>;
27
32
  getProcessedDappUserSolutions(): Promise<UserSolutionRecord[]>;
28
33
  getProcessedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
29
34
  getUnbatchedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { AsyncFactory, ProsopoDBError, ProsopoEnvError, getLoggerDefault } from '@prosopo/common';
2
2
  import { CaptchaStates, DatasetWithIdsAndTreeSchema, ScheduledTaskNames, ScheduledTaskStatus, } from '@prosopo/types';
3
- import { CaptchaRecordSchema, DatasetRecordSchema, PendingRecordSchema, ScheduledTaskRecordSchema, ScheduledTaskSchema, SolutionRecordSchema, UserCommitmentRecordSchema, UserCommitmentSchema, UserSolutionRecordSchema, UserSolutionSchema, } from '@prosopo/types-database';
3
+ import { CaptchaRecordSchema, DatasetRecordSchema, PendingRecordSchema, PowCaptchaRecordSchema, ScheduledTaskRecordSchema, ScheduledTaskSchema, SolutionRecordSchema, UserCommitmentRecordSchema, UserCommitmentSchema, UserSolutionRecordSchema, UserSolutionSchema, } from '@prosopo/types-database';
4
4
  import { CaptchaStatus } from '@prosopo/captcha-contract/types-returns';
5
5
  import { ServerApiVersion } from 'mongodb';
6
6
  import { isHex } from '@polkadot/util/is';
@@ -26,68 +26,72 @@ export class ProsopoDatabase extends AsyncFactory {
26
26
  this.logger = logger;
27
27
  return this;
28
28
  }
29
- async connect() {
30
- const MAX_RETRIES = 3;
31
- const RETRY_INTERVAL_MS = 1000;
32
- for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
33
- try {
34
- if (this.connection) {
35
- return;
36
- }
37
- await new Promise((resolve, reject) => {
38
- this.logger.info(`Mongo url: ${this.url.replace(/\w+:\w+/, '<Credentials>')}`);
39
- this.connection = mongoose.createConnection(this.url, {
40
- dbName: this.dbname,
41
- serverApi: ServerApiVersion.v1,
42
- });
43
- this.tables = {
44
- captcha: this.connection.models.Captcha || this.connection.model('Captcha', CaptchaRecordSchema),
45
- dataset: this.connection.models.Dataset || this.connection.model('Dataset', DatasetRecordSchema),
46
- solution: this.connection.models.Solution || this.connection.model('Solution', SolutionRecordSchema),
47
- commitment: this.connection.models.UserCommitment ||
48
- this.connection.model('UserCommitment', UserCommitmentRecordSchema),
49
- usersolution: this.connection.models.UserSolution ||
50
- this.connection.model('UserSolution', UserSolutionRecordSchema),
51
- pending: this.connection.models.Pending || this.connection.model('Pending', PendingRecordSchema),
52
- scheduler: this.connection.models.Scheduler ||
53
- this.connection.model('Scheduler', ScheduledTaskRecordSchema),
54
- };
55
- this.connection.once('open', resolve).on('error', (e) => {
56
- if (attempt === MAX_RETRIES) {
57
- reject(new ProsopoDBError('DATABASE.CONNECT_ERROR', {
58
- context: { url: this.url, error: e, attempt },
59
- logger: this.logger,
60
- }));
61
- }
62
- else {
63
- this.connection?.removeAllListeners('error');
64
- }
65
- });
66
- });
67
- return;
68
- }
69
- catch (e) {
70
- if (attempt < MAX_RETRIES) {
71
- this.logger.info(`Attempt ${attempt} failed, retrying in ${RETRY_INTERVAL_MS / 1000} seconds...`);
72
- await new Promise((resolve) => setTimeout(resolve, RETRY_INTERVAL_MS));
73
- }
74
- else {
75
- throw e;
76
- }
77
- }
29
+ getTables() {
30
+ if (!this.tables) {
31
+ throw new ProsopoDBError('DATABASE.TABLES_UNDEFINED', {
32
+ context: { failedFuncName: this.getTables.name },
33
+ logger: this.logger,
34
+ });
78
35
  }
36
+ return this.tables;
37
+ }
38
+ getConnection() {
39
+ if (!this.connection) {
40
+ throw new ProsopoDBError('DATABASE.CONNECTION_UNDEFINED', {
41
+ context: { failedFuncName: this.getConnection.name },
42
+ logger: this.logger,
43
+ });
44
+ }
45
+ return this.connection;
46
+ }
47
+ async connect() {
48
+ this.logger.info(`Mongo url: ${this.url.replace(/\w+:\w+/, '<Credentials>')}`);
49
+ this.connection = await new Promise((resolve, reject) => {
50
+ const connection = mongoose.createConnection(this.url, {
51
+ dbName: this.dbname,
52
+ serverApi: ServerApiVersion.v1,
53
+ });
54
+ connection.on('open', () => {
55
+ this.logger.info(`Database connection to ${this.url} opened`);
56
+ resolve(connection);
57
+ });
58
+ connection.on('error', (err) => {
59
+ this.logger.error(`Database error: ${err}`);
60
+ reject(err);
61
+ });
62
+ connection.on('connected', () => {
63
+ this.logger.info(`Database connected to ${this.url}`);
64
+ });
65
+ connection.on('disconnected', () => {
66
+ this.logger.info(`Database disconnected from ${this.url}`);
67
+ });
68
+ connection.on('reconnected', () => {
69
+ this.logger.info(`Database reconnected to ${this.url}`);
70
+ });
71
+ connection.on('reconnectFailed', () => {
72
+ this.logger.error(`Database reconnect failed to ${this.url}`);
73
+ });
74
+ connection.on('close', () => {
75
+ this.logger.info(`Database connection to ${this.url} closed`);
76
+ });
77
+ connection.on('fullsetup', () => {
78
+ this.logger.info(`Database connection to ${this.url} is fully setup`);
79
+ });
80
+ });
81
+ this.tables = {
82
+ captcha: this.connection.model('Captcha', CaptchaRecordSchema),
83
+ powCaptcha: this.connection.model('PowCaptcha', PowCaptchaRecordSchema),
84
+ dataset: this.connection.model('Dataset', DatasetRecordSchema),
85
+ solution: this.connection.model('Solution', SolutionRecordSchema),
86
+ commitment: this.connection.model('UserCommitment', UserCommitmentRecordSchema),
87
+ usersolution: this.connection.model('UserSolution', UserSolutionRecordSchema),
88
+ pending: this.connection.model('Pending', PendingRecordSchema),
89
+ scheduler: this.connection.model('Scheduler', ScheduledTaskRecordSchema),
90
+ };
79
91
  }
80
92
  async close() {
81
93
  this.logger.debug(`Closing connection to ${this.url}`);
82
- await new Promise(async (resolve, reject) => {
83
- mongoose.connection
84
- .close()
85
- .then(() => {
86
- this.logger.debug(`Connection to ${this.url} closed`);
87
- resolve();
88
- })
89
- .catch(reject);
90
- });
94
+ await this.connection?.close();
91
95
  }
92
96
  async storeDataset(dataset) {
93
97
  try {
@@ -284,6 +288,83 @@ export class ProsopoDatabase extends AsyncFactory {
284
288
  await this.tables?.usersolution.bulkWrite(ops);
285
289
  }
286
290
  }
291
+ async storePowCaptchaRecord(challenge, checked) {
292
+ if (!this.tables) {
293
+ throw new ProsopoEnvError('DATABASE.DATABASE_UNDEFINED', {
294
+ context: { failedFuncName: this.storePowCaptchaRecord.name },
295
+ logger: this.logger,
296
+ });
297
+ }
298
+ const powCaptchaRecord = {
299
+ challenge,
300
+ checked,
301
+ };
302
+ try {
303
+ await this.tables.powCaptcha.create(powCaptchaRecord);
304
+ this.logger.info('PowCaptcha record added successfully', { challenge, checked });
305
+ }
306
+ catch (error) {
307
+ this.logger.error('Failed to add PowCaptcha record', { error, challenge, checked });
308
+ throw new ProsopoDBError('DATABASE.CAPTCHA_UPDATE_FAILED', {
309
+ context: { error, challenge, checked },
310
+ logger: this.logger,
311
+ });
312
+ }
313
+ }
314
+ async getPowCaptchaRecordByChallenge(challenge) {
315
+ if (!this.tables) {
316
+ throw new ProsopoEnvError('DATABASE.DATABASE_UNDEFINED', {
317
+ context: { failedFuncName: this.getPowCaptchaRecordByChallenge.name },
318
+ logger: this.logger,
319
+ });
320
+ }
321
+ try {
322
+ const record = await this.tables.powCaptcha.findOne({ challenge }).lean();
323
+ if (record) {
324
+ this.logger.info('PowCaptcha record retrieved successfully', { challenge });
325
+ return record;
326
+ }
327
+ else {
328
+ this.logger.info('No PowCaptcha record found', { challenge });
329
+ return null;
330
+ }
331
+ }
332
+ catch (error) {
333
+ this.logger.error('Failed to retrieve PowCaptcha record', { error, challenge });
334
+ throw new ProsopoDBError('DATABASE.CAPTCHA_GET_FAILED', {
335
+ context: { error, challenge },
336
+ logger: this.logger,
337
+ });
338
+ }
339
+ }
340
+ async updatePowCaptchaRecord(challenge, checked) {
341
+ if (!this.tables) {
342
+ throw new ProsopoEnvError('DATABASE.DATABASE_UNDEFINED', {
343
+ context: { failedFuncName: this.updatePowCaptchaRecord.name },
344
+ logger: this.logger,
345
+ });
346
+ }
347
+ try {
348
+ const updateResult = await this.tables.powCaptcha.updateOne({ challenge }, { $set: { checked } });
349
+ if (updateResult.matchedCount === 0) {
350
+ this.logger.info('No PowCaptcha record found to update', { challenge, checked });
351
+ throw new ProsopoDBError('DATABASE.CAPTCHA_GET_FAILED', {
352
+ context: { challenge, checked },
353
+ logger: this.logger,
354
+ });
355
+ }
356
+ else {
357
+ this.logger.info('PowCaptcha record updated successfully', { challenge, checked });
358
+ }
359
+ }
360
+ catch (error) {
361
+ this.logger.error('Failed to update PowCaptcha record', { error, challenge, checked });
362
+ throw new ProsopoDBError('DATABASE.CAPTCHA_UPDATE_FAILED', {
363
+ context: { error, challenge, checked },
364
+ logger: this.logger,
365
+ });
366
+ }
367
+ }
287
368
  async getProcessedDappUserSolutions() {
288
369
  const docs = await this.tables?.usersolution.find({ processed: true }).lean();
289
370
  return docs ? docs.map((doc) => UserSolutionSchema.parse(doc)) : [];
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAU,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,EAGH,aAAa,EAIb,2BAA2B,EAE3B,kBAAkB,EAElB,mBAAmB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACH,mBAAmB,EAEnB,mBAAmB,EACnB,mBAAmB,EAEnB,yBAAyB,EACzB,mBAAmB,EAEnB,oBAAoB,EAGpB,0BAA0B,EAC1B,oBAAoB,EAEpB,wBAAwB,EACxB,kBAAkB,GACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAQ,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAgB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,QAAwB,MAAM,UAAU,CAAA;AAE/C,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AAGlC,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AAQpD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAO7C;QACI,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAA;IACpC,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,MAAc,EAAE,MAAc,EAAE,UAAmB;QAC9E,MAAM,YAAY,GAAG,GAAG,IAAI,gBAAgB,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAA;QACvC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC3B,IAAI,UAAU,EAAE;YACZ,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;SACvD;QACD,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,OAAO,IAAI,CAAA;IACf,CAAC;IAKD,KAAK,CAAC,OAAO;QACT,MAAM,WAAW,GAAG,CAAC,CAAA;QACrB,MAAM,iBAAiB,GAAG,IAAI,CAAA;QAE9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE;YACrD,IAAI;gBAEA,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,OAAM;iBACT;gBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,CAAA;oBAC9E,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE;wBAClD,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS,EAAE,gBAAgB,CAAC,EAAE;qBACjC,CAAC,CAAA;oBAEF,IAAI,CAAC,MAAM,GAAG;wBACV,OAAO,EACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC;wBAC3F,OAAO,EACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC;wBAC3F,QAAQ,EACJ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC;wBAC9F,UAAU,EACN,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc;4BACrC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;wBACvE,YAAY,EACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY;4BACnC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,EAAE,wBAAwB,CAAC;wBACnE,OAAO,EACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC;wBAC3F,SAAS,EACL,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS;4BAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC;qBACpE,CAAA;oBAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wBAEpD,IAAI,OAAO,KAAK,WAAW,EAAE;4BACzB,MAAM,CACF,IAAI,cAAc,CAAC,wBAAwB,EAAE;gCACzC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;gCAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;6BACtB,CAAC,CACL,CAAA;yBACJ;6BAAM;4BAEH,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;yBAC/C;oBACL,CAAC,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;gBAEF,OAAM;aACT;YAAC,OAAO,CAAC,EAAE;gBAER,IAAI,OAAO,GAAG,WAAW,EAAE;oBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,wBAAwB,iBAAiB,GAAG,IAAI,aAAa,CAAC,CAAA;oBACjG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAA;iBACzE;qBAAM;oBAEH,MAAM,CAAC,CAAA;iBACV;aACJ;SACJ;IACL,CAAC;IAGD,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAEtD,MAAM,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAiB,EAAE;YAC7D,QAAQ,CAAC,UAAU;iBACd,KAAK,EAAE;iBACP,IAAI,CAAC,GAAG,EAAE;gBACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;gBACrD,OAAO,EAAE,CAAA;YACb,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;IACN,CAAC;IAMD,KAAK,CAAC,YAAY,CAAC,OAA8B;QAC7C,IAAI;YACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAChD,MAAM,aAAa,GAAG,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAChE,MAAM,UAAU,GAAG;gBACf,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;gBAChD,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,WAAW,EAAE,aAAa,CAAC,WAAW;gBACtC,YAAY,EAAE,aAAa,CAAC,YAAY;aAC3C,CAAA;YAED,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAChC,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,EACtC,EAAE,IAAI,EAAE,UAAU,EAAE,EACpB,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAA;YAGD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjF,GAAG,OAAO;gBACV,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;gBAChD,KAAK;gBACL,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM;aAC7B,CAAC,CAAC,CAAA;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAE9C,IAAI,WAAW,CAAC,MAAM,EAAE;gBACpB,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAChC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC7B,SAAS,EAAE;wBACP,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE;wBAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;wBAC5B,MAAM,EAAE,IAAI;qBACf;iBACJ,CAAC,CAAC,CACN,CAAA;aACJ;YAGD,MAAM,mBAAmB,GAAG,aAAa,CAAC,QAAQ;iBAC7C,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;iBAC1C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACf,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;aACnD,CAAC,CAAC,CAAA;YAEP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAE/C,IAAI,mBAAmB,CAAC,MAAM,EAAE;gBAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CACjC,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;oBAC7C,SAAS,EAAE;wBACP,MAAM,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,SAAS,EAAE;wBACnD,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;wBACpC,MAAM,EAAE,IAAI;qBACf;iBACJ,CAAC,CAAC,CACN,CAAA;aACJ;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAClD;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,cAAc,CAAC,8BAA8B,EAAE;gBACrD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC/D,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC,CAAA;SACL;IACL,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,SAAiB;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAoB,CAAA;QACrF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3B,CAAC;IAKD,KAAK,CAAC,UAAU,CAAC,SAAiB;QAC9B,MAAM,UAAU,GAAsC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO;aAC3E,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;aACjC,IAAI,EAAE,CAAA;QAEX,IAAI,UAAU,EAAE;YACZ,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,UAAU,CAAA;YAE1E,MAAM,QAAQ,GAAc,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YAEzF,MAAM,SAAS,GAAqB,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YAElG,MAAM,cAAc,GAEhB,EAAE,CAAA;YACN,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAC9B,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA;aAChD;YACD,OAAO;gBACH,SAAS;gBACT,gBAAgB;gBAChB,MAAM;gBACN,WAAW,EAAE,WAAW,IAAI,EAAE;gBAC9B,YAAY,EAAE,YAAY,IAAI,EAAE;gBAChC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;oBAC/E,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;oBAC1C,OAAO;wBACH,SAAS;wBACT,gBAAgB;wBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,IAAI;wBACJ,KAAK;wBACL,MAAM;wBACN,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAe;qBACtE,CAAA;gBACL,CAAC,CAAC;aACL,CAAA;SACJ;QACD,MAAM,IAAI,cAAc,CAAC,6BAA6B,EAAE;YACpD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;SAC/D,CAAC,CAAA;IACN,CAAC;IAQD,KAAK,CAAC,gBAAgB,CAAC,MAAe,EAAE,SAAe,EAAE,IAAa;QAClE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACnB,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE;aACrE,CAAC,CAAA;SACL;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;YAC1C,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;YACjC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;YACjC;gBACI,QAAQ,EAAE;oBACN,SAAS,EAAE,CAAC;oBACZ,gBAAgB,EAAE,CAAC;oBACnB,SAAS,EAAE,CAAC;oBACZ,gBAAgB,EAAE,CAAC;oBACnB,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;iBACZ;aACJ;SACJ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;QAEzB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAErB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAc,CAAA;SACrE;QAED,MAAM,IAAI,cAAc,CAAC,6BAA6B,EAAE;YACpD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;SACnF,CAAC,CAAA;IACN,CAAC;IAMD,KAAK,CAAC,cAAc,CAAC,SAAmB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAClF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;QAEzB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAErB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAc,CAAA;SACrE;QAED,MAAM,IAAI,cAAc,CAAC,6BAA6B,EAAE;YACpD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;SACnE,CAAC,CAAA;IACN,CAAC;IAOD,KAAK,CAAC,aAAa,CAAC,OAAgB,EAAE,SAAe;QACjD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACnB,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE;aAClE,CAAC,CAAA;SACL;QACD,IAAI;YACA,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;SAC5F;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,cAAc,CAAC,gCAAgC,EAAE;gBACvD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;aACvE,CAAC,CAAA;SACL;IACL,CAAC;IAKD,KAAK,CAAC,cAAc,CAAC,UAAoB;QACrC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;IAC7E,CAAC;IAKD,KAAK,CAAC,iBAAiB,CAAC,SAAe;QACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACnB,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;aACtE,CAAC,CAAA;SACL;QAED,MAAM,GAAG,GAAmC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAEpG,IAAI,GAAG,EAAE;YACL,OAAO,GAAG,CAAA;SACb;QAED,MAAM,IAAI,cAAc,CAAC,6BAA6B,EAAE;YACpD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;SACtE,CAAC,CAAA;IACN,CAAC;IAKD,KAAK,CAAC,qBAAqB,CAAC,QAA2B,EAAE,MAA4B;QACjF,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;YACjB,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CACnC;gBACI,EAAE,EAAE,MAAM,CAAC,EAAE;aAChB,EACD,gBAAgB,EAChB,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAA;YAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAwB,EAAE,EAAE,CAAC,CAAC;gBACpD,SAAS,EAAE;oBACP,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;oBACjE,MAAM,EAAE;wBACJ,IAAI,EAAsB;4BACtB,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;4BAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,YAAY,EAAE,MAAM,CAAC,EAAE;4BACvB,SAAS,EAAE,KAAK;yBACnB;qBACJ;oBACD,MAAM,EAAE,IAAI;iBACf;aACJ,CAAC,CAAC,CAAA;YACH,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;SACjD;IACL,CAAC;IAID,KAAK,CAAC,6BAA6B;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC7E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvE,CAAC;IAID,KAAK,CAAC,+BAA+B;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;IAID,KAAK,CAAC,+BAA+B;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;IAID,KAAK,CAAC,6BAA6B;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACzE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;IAID,KAAK,CAAC,gCAAgC,CAAC,aAAuB;QAC1D,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;IAChH,CAAC;IAID,KAAK,CAAC,kCAAkC,CAAC,aAAuB;QAC5D,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;IACpG,CAAC;IAKD,KAAK,CAAC,oBAAoB,CACtB,WAAmB,EACnB,WAAmB,EACnB,IAAY,EACZ,iBAAyB,EACzB,gBAAwB;QAExB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACrB,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE;aAC3E,CAAC,CAAA;SACL;QACD,MAAM,aAAa,GAAG;YAClB,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,WAAW;YACX,iBAAiB;YACjB,gBAAgB;SACnB,CAAA;QACD,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACjH,CAAC;IAKD,KAAK,CAAC,kBAAkB,CAAC,WAAmB;QACxC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACrB,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE;gBAC/C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE;aACzE,CAAC,CAAA;SACL;QAED,MAAM,GAAG,GAA6C,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO;aAC3E,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;aACrC,IAAI,EAAE,CAAA;QAEX,IAAI,GAAG,EAAE;YACL,OAAO,GAAG,CAAA;SACb;QAED,MAAM,IAAI,eAAe,CAAC,mCAAmC,EAAE;YAC3D,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE;SACzE,CAAC,CAAA;IACN,CAAC;IAKD,KAAK,CAAC,2BAA2B,CAAC,WAAmB,EAAE,WAAmB,EAAE,OAAgB;QACxF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACrB,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE;gBAC/C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE;aAClF,CAAC,CAAA;SACL;QAED,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAChC,EAAE,WAAW,EAAE,WAAW,EAAE,EAC5B;YACI,IAAI,EAAE;gBACF,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;gBACjB,WAAW;aACd;SACJ,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAA;IACL,CAAC;IAKD,KAAK,CAAC,yBAAyB,CAAC,SAAiB,EAAE,KAAqB;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO;aAC9B,IAAI,CAAC;YACF,SAAS;YACT,MAAM,EAAE,KAAK,KAAK,aAAa,CAAC,MAAM;SACzC,CAAC;aACD,IAAI,EAAE,CAAA;QACX,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;QAEzB,IAAI,IAAI,EAAE;YAEN,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAc,CAAA;SACrE;QAED,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAA;IAC5D,CAAC;IAKD,KAAK,CAAC,uBAAuB,CAAC,SAAmB;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACxF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;QAEzB,IAAI,IAAI,EAAE;YAEN,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAyB,CAAA;SAChF;QAED,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,qCAAqC,CAAC,kBAA0B;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;YAC3C;gBACI,MAAM,EAAE,EAAE;aACb;YACD;gBACI,MAAM,EAAE;oBACJ,GAAG,EAAE,YAAY;oBACjB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;iBACrB;aACJ;YACD;gBACI,MAAM,EAAE;oBACJ,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;iBACtC;aACJ;YACD;gBACI,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;aACvB;SACJ,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;QACzB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAErB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;SACrB;QAED,MAAM,IAAI,cAAc,CAAC,4CAA4C,CAAC,CAAA;IAC1E,CAAC;IAED,KAAK,CAAC,wCAAwC,CAAC,SAAiB,EAAE,IAAY;QAC1E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACnB,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,wCAAwC,CAAC,IAAI,EAAE,SAAS,EAAE;aAC7F,CAAC,CAAA;SACL;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;YAC3C,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE;YACzB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;YACjC;gBACI,QAAQ,EAAE;oBACN,SAAS,EAAE,CAAC;oBACZ,gBAAgB,EAAE,CAAC;oBACnB,QAAQ,EAAE,CAAC;iBACd;aACJ;SACJ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAA;QAEzB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YACrB,OAAO,IAAyB,CAAA;SACnC;QAED,MAAM,IAAI,cAAc,CAAC,8BAA8B,EAAE;YACrD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,wCAAwC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;SACnG,CAAC,CAAA;IACN,CAAC;IAMD,KAAK,CAAC,uBAAuB,CAAC,YAAoB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY;YACpC,EAAE,OAAO,CACL;YACI,YAAY,EAAE,YAAY;SAC7B,EACD,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAC7B;aACA,IAAI,EAAE,CAAA;QACX,MAAM,GAAG,GAAG,MAAM,MAAM,CAAA;QAExB,IAAI,GAAG,EAAE;YACL,OAAO,GAAoC,CAAA;SAC9C;QAED,MAAM,IAAI,cAAc,CAAC,8BAA8B,EAAE;YACrD,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;SACtE,CAAC,CAAA;IACN,CAAC;IAMD,KAAK,CAAC,yBAAyB,CAAC,YAAoB;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAEtF,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAA;QAElC,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,CAAC;IAMD,KAAK,CAAC,8BAA8B,CAAC,WAAmB;QACpD,MAAM,IAAI,GAA8C,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU;YACjF,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;aACtB,IAAI,EAAE,CAAA;QAEX,OAAO,IAAI,CAAC,CAAC,CAAE,IAA+B,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,CAAC;IAMD,KAAK,CAAC,yBAAyB,CAAC,YAAoB;QAChD,IAAI;YACA,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU;gBACzB,EAAE,gBAAgB,CACd,EAAE,EAAE,EAAE,YAAY,EAAE,EACpB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,EAC5C,EAAE,MAAM,EAAE,KAAK,EAAE,CACpB;iBACA,IAAI,EAAE,CAAA;SACd;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,cAAc,CAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;SAC1G;IACL,CAAC;IAMD,KAAK,CAAC,8BAA8B,CAAC,UAAkB;QACnD,IAAI;YACA,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY;gBAC3B,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;iBACjG,IAAI,EAAE,CAAA;SACd;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,cAAc,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;SACrG;IACL,CAAC;IAMD,KAAK,CAAC,gCAAgC,CAAC,aAAqB;QACxD,IAAI;YACA,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;YACzD,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU;gBACzB,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;iBACrG,IAAI,EAAE,CAAA;SACd;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,cAAc,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;SAC1G;IACL,CAAC;IAMD,KAAK,CAAC,8BAA8B,CAAC,aAAqB;QACtD,IAAI;YACA,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;YACzD,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU;gBACzB,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;iBACnG,IAAI,EAAE,CAAA;SACd;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,cAAc,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;SAC1G;IACL,CAAC;IAKD,KAAK,CAAC,sBAAsB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS;YACjC,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,CAAC;aACpG,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,GAAG,GAA2C,MAAM,MAAM,EAAE,IAAI,EAAE,CAAA;QAExE,IAAI,GAAG,EAAE;YACL,OAAO,GAAG,CAAC,QAAQ,CAAA;SACtB;QAED,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAKD,KAAK,CAAC,sBAAsB,CACxB,MAAc,EACd,MAA2B;QAE3B,MAAM,MAAM,GAA2C,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS;YAC/E,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;aAC5C,IAAI,EAAE,CAAA;QACX,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IACtC,CAAC;IAKD,KAAK,CAAC,0BAA0B,CAC5B,IAAwB,EACxB,MAA4B;QAE5B,MAAM,MAAM,GAGR,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;QACzB,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;SAC5B;QACD,MAAM,MAAM,GAA2C,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS;YAC/E,EAAE,OAAO,CAAC,MAAM,CAAC;aAChB,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;aACtB,IAAI,EAAE,CAAA;QACX,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IACtC,CAAC;IAKD,KAAK,CAAC,wBAAwB,CAC1B,MAAqB,EACrB,IAAwB,EACxB,MAA2B,EAC3B,MAA4B;QAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC;YAClC,MAAM;YACN,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,GAAG;YACb,MAAM;YACN,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;SAC5B,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;CACJ"}
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { Logger } from '@prosopo/common';
2
2
  import { ProsopoDatabase as MongoDatabase } from './mongo.js';
3
3
  export declare class MongoMemoryDatabase extends MongoDatabase {
4
+ private mongod;
5
+ private running;
4
6
  init(url: string, dbname: string, logger: Logger, authSource?: string): Promise<this>;
7
+ connect(): Promise<void>;
8
+ close(): Promise<void>;
5
9
  }
6
10
  //# sourceMappingURL=mongoMemory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongoMemory.d.ts","sourceRoot":"","sources":["../../src/databases/mongoMemory.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AAG7D,qBAAa,mBAAoB,SAAQ,aAAa;IACnC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMvG"}
1
+ {"version":3,"file":"mongoMemory.d.ts","sourceRoot":"","sources":["../../src/databases/mongoMemory.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AAG7D,qBAAa,mBAAoB,SAAQ,aAAa;IAClD,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAQ;IAER,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAOxC"}
@@ -1,11 +1,30 @@
1
1
  import { ProsopoDatabase as MongoDatabase } from './mongo.js';
2
2
  import { MongoMemoryServer } from 'mongodb-memory-server';
3
3
  export class MongoMemoryDatabase extends MongoDatabase {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.running = false;
7
+ }
4
8
  async init(url, dbname, logger, authSource) {
5
- const mongod = await MongoMemoryServer.create();
6
- const mongoMemoryURL = mongod.getUri();
9
+ this.mongod = await MongoMemoryServer.create();
10
+ this.running = true;
11
+ const mongoMemoryURL = this.mongod.getUri();
7
12
  await super.init(mongoMemoryURL, dbname, logger, authSource);
8
13
  return this;
9
14
  }
15
+ connect() {
16
+ if (!this.running) {
17
+ this.mongod?.start();
18
+ this.running = true;
19
+ }
20
+ else {
21
+ }
22
+ return super.connect();
23
+ }
24
+ async close() {
25
+ await super.close();
26
+ await this.mongod?.stop();
27
+ this.running = false;
28
+ }
10
29
  }
11
30
  //# sourceMappingURL=mongoMemory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongoMemory.js","sourceRoot":"","sources":["../../src/databases/mongoMemory.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IACzC,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,MAAc,EAAE,MAAc,EAAE,UAAmB;QAChF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAA;QAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;QACtC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAA;IACf,CAAC;CACJ"}
1
+ {"version":3,"file":"mongoMemory.js","sourceRoot":"","sources":["../../src/databases/mongoMemory.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAAtD;;QAEY,YAAO,GAAG,KAAK,CAAA;IA6B3B,CAAC;IA3BY,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,MAAc,EAAE,MAAc,EAAE,UAAmB;QAChF,IAAI,CAAC,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAC3C,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAA;IACf,CAAC;IAEQ,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAGf,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;SACtB;aAAM;SAEN;QACD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAEQ,KAAK,CAAC,KAAK;QAChB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QAGnB,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACxB,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/database",
3
- "version": "0.2.41",
3
+ "version": "0.3.1",
4
4
  "description": "Prosopo database plugins for provider",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -36,12 +36,12 @@
36
36
  },
37
37
  "homepage": "https://github.com/prosopo/captcha#readme",
38
38
  "dependencies": {
39
- "@polkadot/util": "^12.5.1",
40
- "@prosopo/captcha-contract": "0.2.41",
41
- "@prosopo/common": "0.2.41",
42
- "@prosopo/config": "0.2.41",
43
- "@prosopo/types": "0.2.41",
44
- "@prosopo/types-database": "0.2.41",
39
+ "@polkadot/util": "12.6.1",
40
+ "@prosopo/captcha-contract": "0.3.1",
41
+ "@prosopo/common": "0.3.1",
42
+ "@prosopo/config": "0.3.1",
43
+ "@prosopo/types": "0.3.1",
44
+ "@prosopo/types-database": "0.3.1",
45
45
  "mongodb": "5.8.0",
46
46
  "mongodb-memory-server": "^8.7.2",
47
47
  "mongoose": "^7.3.3"
@@ -0,0 +1,6 @@
1
+ export default {
2
+ entryPoints: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.js', 'src/**/*.jsx', 'src/**/*.json'],
3
+ includes: 'src',
4
+ extends: '../../typedoc.base.config.js',
5
+ readme: 'README.md',
6
+ }