@prosopo/database 2.0.0 → 2.0.2
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/captchaDatabase/captchaDatabase.d.ts +2 -3
- package/dist/captchaDatabase/captchaDatabase.d.ts.map +1 -1
- package/dist/captchaDatabase/captchaDatabase.js +16 -4
- package/dist/captchaDatabase/captchaDatabase.js.map +1 -1
- package/dist/cjs/captchaDatabase/captchaDatabase.cjs +20 -4
- package/dist/cjs/databases/mongo.cjs +175 -81
- package/dist/databases/mongo.d.ts +18 -18
- package/dist/databases/mongo.d.ts.map +1 -1
- package/dist/databases/mongo.js +140 -72
- package/dist/databases/mongo.js.map +1 -1
- package/package.json +44 -44
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type UserCommitmentRecord } from "@prosopo/types-database";
|
|
2
|
-
|
|
3
|
-
export declare const saveCaptchas: (imageCaptchaEvents: UserCommitmentRecord[], powCaptchaEvents: PowCaptcha[], atlasUri: string) => Promise<void>;
|
|
1
|
+
import { PoWCaptchaStored, type UserCommitmentRecord } from "@prosopo/types-database";
|
|
2
|
+
export declare const saveCaptchas: (imageCaptchaEvents: UserCommitmentRecord[], powCaptchaEvents: PoWCaptchaStored[], atlasUri: string) => Promise<void>;
|
|
4
3
|
//# sourceMappingURL=captchaDatabase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captchaDatabase.d.ts","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"captchaDatabase.d.ts","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,gBAAgB,EAChB,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,YAAY,uBACH,oBAAoB,EAAE,oBACxB,gBAAgB,EAAE,YAC1B,MAAM,kBA+CjB,CAAC"}
|
|
@@ -19,12 +19,24 @@ export const saveCaptchas = async (imageCaptchaEvents, powCaptchaEvents, atlasUr
|
|
|
19
19
|
.on("error", reject);
|
|
20
20
|
});
|
|
21
21
|
if (imageCaptchaEvents.length) {
|
|
22
|
-
await StoredImageCaptcha.
|
|
23
|
-
|
|
22
|
+
const result = await StoredImageCaptcha.bulkWrite(imageCaptchaEvents.map((doc) => ({
|
|
23
|
+
updateOne: {
|
|
24
|
+
filter: { id: doc.id },
|
|
25
|
+
update: { $set: doc },
|
|
26
|
+
upsert: true,
|
|
27
|
+
},
|
|
28
|
+
})));
|
|
29
|
+
logger.info("Mongo Saved Image Events", result);
|
|
24
30
|
}
|
|
25
31
|
if (powCaptchaEvents.length) {
|
|
26
|
-
await StoredPoWCaptcha.
|
|
27
|
-
|
|
32
|
+
const result = await StoredPoWCaptcha.bulkWrite(powCaptchaEvents.map((doc) => ({
|
|
33
|
+
updateOne: {
|
|
34
|
+
filter: { challenge: doc.challenge },
|
|
35
|
+
update: { $set: doc },
|
|
36
|
+
upsert: true,
|
|
37
|
+
},
|
|
38
|
+
})));
|
|
39
|
+
logger.info("Mongo Saved PoW Events", result);
|
|
28
40
|
}
|
|
29
41
|
await connection.close();
|
|
30
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captchaDatabase.js","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"captchaDatabase.js","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAEL,sBAAsB,EAGtB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAElC,IAAI,kBAAwD,CAAC;AAC7D,IAAI,gBAAkD,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,kBAA0C,EAC1C,gBAAoC,EACpC,QAAgB,EAChB,EAAE;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QACrD,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU;aACP,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,kBAAkB,GAAG,UAAU,CAAC,KAAK,CACnC,oBAAoB,EACpB,0BAA0B,CAC3B,CAAC;YACF,gBAAgB,GAAG,UAAU,CAAC,KAAK,CACjC,kBAAkB,EAClB,sBAAsB,CACvB,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,IAAI,kBAAkB,CAAC,MAAM,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAC/C,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;gBACtB,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;gBACrB,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC,CACJ,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;KACjD;IACD,IAAI,gBAAgB,CAAC,MAAM,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAC7C,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;gBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;gBACrB,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC,CACJ,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;KAC/C;IAED,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC"}
|
|
@@ -25,12 +25,28 @@ const saveCaptchas = async (imageCaptchaEvents, powCaptchaEvents, atlasUri) => {
|
|
|
25
25
|
}).on("error", reject);
|
|
26
26
|
});
|
|
27
27
|
if (imageCaptchaEvents.length) {
|
|
28
|
-
await StoredImageCaptcha.
|
|
29
|
-
|
|
28
|
+
const result = await StoredImageCaptcha.bulkWrite(
|
|
29
|
+
imageCaptchaEvents.map((doc) => ({
|
|
30
|
+
updateOne: {
|
|
31
|
+
filter: { id: doc.id },
|
|
32
|
+
update: { $set: doc },
|
|
33
|
+
upsert: true
|
|
34
|
+
}
|
|
35
|
+
}))
|
|
36
|
+
);
|
|
37
|
+
logger.info("Mongo Saved Image Events", result);
|
|
30
38
|
}
|
|
31
39
|
if (powCaptchaEvents.length) {
|
|
32
|
-
await StoredPoWCaptcha.
|
|
33
|
-
|
|
40
|
+
const result = await StoredPoWCaptcha.bulkWrite(
|
|
41
|
+
powCaptchaEvents.map((doc) => ({
|
|
42
|
+
updateOne: {
|
|
43
|
+
filter: { challenge: doc.challenge },
|
|
44
|
+
update: { $set: doc },
|
|
45
|
+
upsert: true
|
|
46
|
+
}
|
|
47
|
+
}))
|
|
48
|
+
);
|
|
49
|
+
logger.info("Mongo Saved PoW Events", result);
|
|
34
50
|
}
|
|
35
51
|
await connection.close();
|
|
36
52
|
};
|
|
@@ -330,7 +330,10 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
330
330
|
* @description Store a Dapp User's captcha solution commitment
|
|
331
331
|
*/
|
|
332
332
|
async storeDappUserSolution(captchas, commit) {
|
|
333
|
-
const commitmentRecord = typesDatabase.UserCommitmentSchema.parse(
|
|
333
|
+
const commitmentRecord = typesDatabase.UserCommitmentSchema.parse({
|
|
334
|
+
...commit,
|
|
335
|
+
lastUpdatedTimestamp: Date.now()
|
|
336
|
+
});
|
|
334
337
|
if (captchas.length) {
|
|
335
338
|
await this.tables?.commitment.updateOne(
|
|
336
339
|
{
|
|
@@ -362,30 +365,53 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
362
365
|
* @description Adds a new PoW Captcha record to the database.
|
|
363
366
|
* @param {string} challenge The challenge string for the captcha.
|
|
364
367
|
* @param components The components of the PoW challenge.
|
|
365
|
-
* @param
|
|
368
|
+
* @param difficulty
|
|
369
|
+
* @param providerSignature
|
|
370
|
+
* @param ipAddress
|
|
371
|
+
* @param serverChecked
|
|
372
|
+
* @param userSubmitted
|
|
373
|
+
* @param storedStatus
|
|
374
|
+
* @param userSignature
|
|
366
375
|
* @returns {Promise<void>} A promise that resolves when the record is added.
|
|
367
376
|
*/
|
|
368
|
-
async storePowCaptchaRecord(challenge, components,
|
|
377
|
+
async storePowCaptchaRecord(challenge, components, difficulty, providerSignature, ipAddress, serverChecked = false, userSubmitted = false, storedStatus = typesDatabase.StoredStatusNames.notStored, userSignature) {
|
|
369
378
|
const tables = this.getTables();
|
|
370
379
|
const powCaptchaRecord = {
|
|
371
380
|
challenge,
|
|
372
381
|
...components,
|
|
373
|
-
|
|
382
|
+
ipAddress,
|
|
383
|
+
result: { status: types.CaptchaStatus.pending },
|
|
384
|
+
userSubmitted,
|
|
385
|
+
serverChecked,
|
|
386
|
+
difficulty,
|
|
387
|
+
providerSignature,
|
|
388
|
+
userSignature,
|
|
389
|
+
lastUpdatedTimestamp: Date.now()
|
|
374
390
|
};
|
|
375
391
|
try {
|
|
376
392
|
await tables.powCaptcha.create(powCaptchaRecord);
|
|
377
393
|
this.logger.info("PowCaptcha record added successfully", {
|
|
378
394
|
challenge,
|
|
379
|
-
|
|
395
|
+
userSubmitted,
|
|
396
|
+
serverChecked,
|
|
397
|
+
storedStatus
|
|
380
398
|
});
|
|
381
399
|
} catch (error) {
|
|
382
400
|
this.logger.error("Failed to add PowCaptcha record", {
|
|
383
401
|
error,
|
|
384
402
|
challenge,
|
|
385
|
-
|
|
403
|
+
userSubmitted,
|
|
404
|
+
serverChecked,
|
|
405
|
+
storedStatus
|
|
386
406
|
});
|
|
387
407
|
throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
388
|
-
context: {
|
|
408
|
+
context: {
|
|
409
|
+
error,
|
|
410
|
+
challenge,
|
|
411
|
+
userSubmitted,
|
|
412
|
+
serverChecked,
|
|
413
|
+
storedStatus
|
|
414
|
+
},
|
|
389
415
|
logger: this.logger
|
|
390
416
|
});
|
|
391
417
|
}
|
|
@@ -393,7 +419,7 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
393
419
|
/**
|
|
394
420
|
* @description Retrieves a PoW Captcha record by its challenge string.
|
|
395
421
|
* @param {string} challenge The challenge string to search for.
|
|
396
|
-
* @returns {Promise<
|
|
422
|
+
* @returns {Promise<PoWCaptchaStored | null>} A promise that resolves with the found record or null if not found.
|
|
397
423
|
*/
|
|
398
424
|
async getPowCaptchaRecordByChallenge(challenge) {
|
|
399
425
|
if (!this.tables) {
|
|
@@ -426,38 +452,59 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
426
452
|
/**
|
|
427
453
|
* @description Updates a PoW Captcha record in the database.
|
|
428
454
|
* @param {string} challenge The challenge string of the captcha to be updated.
|
|
429
|
-
* @param
|
|
455
|
+
* @param result
|
|
456
|
+
* @param serverChecked
|
|
457
|
+
* @param userSubmitted
|
|
458
|
+
* @param storedStatus
|
|
459
|
+
* @param userSignature
|
|
430
460
|
* @returns {Promise<void>} A promise that resolves when the record is updated.
|
|
431
461
|
*/
|
|
432
|
-
async updatePowCaptchaRecord(challenge,
|
|
462
|
+
async updatePowCaptchaRecord(challenge, result, serverChecked = false, userSubmitted = false, userSignature) {
|
|
433
463
|
const tables = this.getTables();
|
|
464
|
+
const timestamp = Date.now();
|
|
465
|
+
const update = {
|
|
466
|
+
result,
|
|
467
|
+
serverChecked,
|
|
468
|
+
userSubmitted,
|
|
469
|
+
userSignature,
|
|
470
|
+
lastUpdatedTimestamp: timestamp
|
|
471
|
+
};
|
|
434
472
|
try {
|
|
435
473
|
const updateResult = await tables.powCaptcha.updateOne(
|
|
436
474
|
{ challenge },
|
|
437
|
-
{
|
|
475
|
+
{
|
|
476
|
+
$set: update
|
|
477
|
+
}
|
|
438
478
|
);
|
|
439
479
|
if (updateResult.matchedCount === 0) {
|
|
440
480
|
this.logger.info("No PowCaptcha record found to update", {
|
|
441
481
|
challenge,
|
|
442
|
-
|
|
482
|
+
...update
|
|
443
483
|
});
|
|
444
484
|
throw new common.ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
|
|
445
|
-
context: {
|
|
485
|
+
context: {
|
|
486
|
+
challenge,
|
|
487
|
+
...update
|
|
488
|
+
},
|
|
446
489
|
logger: this.logger
|
|
447
490
|
});
|
|
448
491
|
}
|
|
449
492
|
this.logger.info("PowCaptcha record updated successfully", {
|
|
450
493
|
challenge,
|
|
451
|
-
|
|
494
|
+
...update
|
|
452
495
|
});
|
|
453
496
|
} catch (error) {
|
|
454
497
|
this.logger.error("Failed to update PowCaptcha record", {
|
|
455
498
|
error,
|
|
456
499
|
challenge,
|
|
457
|
-
|
|
500
|
+
...update
|
|
458
501
|
});
|
|
459
502
|
throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
460
|
-
context: {
|
|
503
|
+
context: {
|
|
504
|
+
error,
|
|
505
|
+
challenge,
|
|
506
|
+
...update
|
|
507
|
+
},
|
|
461
508
|
logger: this.logger
|
|
462
509
|
});
|
|
463
510
|
}
|
|
@@ -466,35 +513,54 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
466
513
|
*/
|
|
467
514
|
async getProcessedDappUserSolutions() {
|
|
468
515
|
const docs = await this.tables?.usersolution.find({ processed: true }).lean();
|
|
469
|
-
return docs
|
|
516
|
+
return docs || [];
|
|
470
517
|
}
|
|
471
|
-
/** @description Get processed Dapp User captcha commitments from the commitments table
|
|
518
|
+
/** @description Get processed Dapp User image captcha commitments from the commitments table
|
|
472
519
|
*/
|
|
473
520
|
async getProcessedDappUserCommitments() {
|
|
474
521
|
const docs = await this.tables?.commitment.find({ processed: true }).lean();
|
|
475
|
-
return docs
|
|
522
|
+
return docs || [];
|
|
476
523
|
}
|
|
477
|
-
/** @description Get Dapp User captcha commitments from the commitments table
|
|
524
|
+
/** @description Get serverChecked Dapp User image captcha commitments from the commitments table
|
|
478
525
|
*/
|
|
479
|
-
async
|
|
480
|
-
const docs = await this.tables?.commitment.find({
|
|
481
|
-
return docs
|
|
526
|
+
async getCheckedDappUserCommitments() {
|
|
527
|
+
const docs = await this.tables?.commitment.find({ [typesDatabase.StoredStatusNames.serverChecked]: true }).lean();
|
|
528
|
+
return docs || [];
|
|
482
529
|
}
|
|
483
530
|
/** @description Get Dapp User captcha commitments from the commitments table that have not been counted towards the
|
|
484
531
|
* client's total
|
|
485
532
|
*/
|
|
486
533
|
async getUnstoredDappUserCommitments() {
|
|
487
534
|
const docs = await this.tables?.commitment.find({
|
|
488
|
-
$or: [
|
|
535
|
+
$or: [
|
|
536
|
+
{ storedStatus: { $ne: typesDatabase.StoredStatusNames.stored } },
|
|
537
|
+
{ storedStatus: { $exists: false } }
|
|
538
|
+
]
|
|
489
539
|
}).lean();
|
|
490
|
-
return docs
|
|
540
|
+
return docs || [];
|
|
491
541
|
}
|
|
492
542
|
/** @description Mark a list of captcha commits as stored
|
|
493
543
|
*/
|
|
494
544
|
async markDappUserCommitmentsStored(commitmentIds) {
|
|
545
|
+
const updateDoc = {
|
|
546
|
+
storedAtTimestamp: Date.now()
|
|
547
|
+
};
|
|
495
548
|
await this.tables?.commitment.updateMany(
|
|
496
549
|
{ id: { $in: commitmentIds } },
|
|
497
|
-
{ $set:
|
|
550
|
+
{ $set: updateDoc },
|
|
551
|
+
{ upsert: false }
|
|
552
|
+
);
|
|
553
|
+
}
|
|
554
|
+
/** @description Mark a list of captcha commits as checked
|
|
555
|
+
*/
|
|
556
|
+
async markDappUserCommitmentsChecked(commitmentIds) {
|
|
557
|
+
const updateDoc = {
|
|
558
|
+
[typesDatabase.StoredStatusNames.serverChecked]: true,
|
|
559
|
+
lastUpdatedTimestamp: Date.now()
|
|
560
|
+
};
|
|
561
|
+
await this.tables?.commitment.updateMany(
|
|
562
|
+
{ id: { $in: commitmentIds } },
|
|
563
|
+
{ $set: updateDoc },
|
|
498
564
|
{ upsert: false }
|
|
499
565
|
);
|
|
500
566
|
}
|
|
@@ -502,24 +568,39 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
502
568
|
*/
|
|
503
569
|
async getUnstoredDappUserPoWCommitments() {
|
|
504
570
|
const docs = await this.tables?.powCaptcha.find({
|
|
505
|
-
$or: [
|
|
571
|
+
$or: [
|
|
572
|
+
{ storedStatus: { $ne: typesDatabase.StoredStatusNames.stored } },
|
|
573
|
+
{ storedStatus: { $exists: false } }
|
|
574
|
+
]
|
|
506
575
|
}).lean();
|
|
507
576
|
return docs || [];
|
|
508
577
|
}
|
|
509
578
|
/** @description Mark a list of PoW captcha commits as stored
|
|
510
579
|
*/
|
|
511
|
-
async markDappUserPoWCommitmentsStored(
|
|
580
|
+
async markDappUserPoWCommitmentsStored(challenges) {
|
|
581
|
+
const updateDoc = {
|
|
582
|
+
storedAtTimestamp: Date.now()
|
|
583
|
+
};
|
|
512
584
|
await this.tables?.powCaptcha.updateMany(
|
|
513
|
-
{ challenge: { $in:
|
|
514
|
-
{ $set:
|
|
585
|
+
{ challenge: { $in: challenges } },
|
|
586
|
+
{ $set: updateDoc },
|
|
515
587
|
{ upsert: false }
|
|
516
588
|
);
|
|
517
589
|
}
|
|
518
|
-
/** @description
|
|
590
|
+
/** @description Mark a list of PoW captcha commits as checked by the server
|
|
519
591
|
*/
|
|
520
|
-
async
|
|
521
|
-
const
|
|
522
|
-
|
|
592
|
+
async markDappUserPoWCommitmentsChecked(challenges) {
|
|
593
|
+
const updateDoc = {
|
|
594
|
+
[typesDatabase.StoredStatusNames.serverChecked]: true,
|
|
595
|
+
lastUpdatedTimestamp: Date.now()
|
|
596
|
+
};
|
|
597
|
+
await this.tables?.powCaptcha.updateMany(
|
|
598
|
+
{ challenge: { $in: challenges } },
|
|
599
|
+
{
|
|
600
|
+
$set: updateDoc
|
|
601
|
+
},
|
|
602
|
+
{ upsert: false }
|
|
603
|
+
);
|
|
523
604
|
}
|
|
524
605
|
/** @description Remove processed Dapp User captcha solutions from the user solution table
|
|
525
606
|
*/
|
|
@@ -540,7 +621,7 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
540
621
|
/**
|
|
541
622
|
* @description Store a Dapp User's pending record
|
|
542
623
|
*/
|
|
543
|
-
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp,
|
|
624
|
+
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtTimestamp, ipAddress) {
|
|
544
625
|
if (!is.isHex(requestHash)) {
|
|
545
626
|
throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
|
|
546
627
|
context: {
|
|
@@ -555,7 +636,8 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
555
636
|
salt,
|
|
556
637
|
requestHash,
|
|
557
638
|
deadlineTimestamp,
|
|
558
|
-
|
|
639
|
+
requestedAtTimestamp,
|
|
640
|
+
ipAddress
|
|
559
641
|
};
|
|
560
642
|
await this.tables?.pending.updateOne(
|
|
561
643
|
{ requestHash },
|
|
@@ -596,7 +678,7 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
596
678
|
{ requestHash },
|
|
597
679
|
{
|
|
598
680
|
$set: {
|
|
599
|
-
pending: false
|
|
681
|
+
[types.CaptchaStatus.pending]: false
|
|
600
682
|
}
|
|
601
683
|
},
|
|
602
684
|
{ upsert: true }
|
|
@@ -714,14 +796,15 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
714
796
|
async getDappUserCommitmentById(commitmentId) {
|
|
715
797
|
const commitmentCursor = this.tables?.commitment?.findOne({ id: commitmentId }).lean();
|
|
716
798
|
const doc = await commitmentCursor;
|
|
717
|
-
return doc ?
|
|
799
|
+
return doc ? doc : void 0;
|
|
718
800
|
}
|
|
719
801
|
/**
|
|
720
802
|
* @description Get dapp user commitment by user account
|
|
721
|
-
* @param {string
|
|
803
|
+
* @param {string} userAccount
|
|
804
|
+
* @param {string} dappAccount
|
|
722
805
|
*/
|
|
723
|
-
async getDappUserCommitmentByAccount(userAccount) {
|
|
724
|
-
const docs = await this.tables?.commitment?.find({ userAccount }, { _id: 0 }, { sort: { _id: -1 } }).lean();
|
|
806
|
+
async getDappUserCommitmentByAccount(userAccount, dappAccount) {
|
|
807
|
+
const docs = await this.tables?.commitment?.find({ userAccount, dappAccount }, { _id: 0 }, { sort: { _id: -1 } }).lean();
|
|
725
808
|
return docs ? docs : [];
|
|
726
809
|
}
|
|
727
810
|
/**
|
|
@@ -730,9 +813,14 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
730
813
|
*/
|
|
731
814
|
async approveDappUserCommitment(commitmentId) {
|
|
732
815
|
try {
|
|
816
|
+
const result = { status: types.CaptchaStatus.approved };
|
|
817
|
+
const updateDoc = {
|
|
818
|
+
result,
|
|
819
|
+
lastUpdatedTimestamp: Date.now()
|
|
820
|
+
};
|
|
733
821
|
await this.tables?.commitment?.findOneAndUpdate(
|
|
734
822
|
{ id: commitmentId },
|
|
735
|
-
{ $set:
|
|
823
|
+
{ $set: updateDoc },
|
|
736
824
|
{ upsert: false }
|
|
737
825
|
).lean();
|
|
738
826
|
} catch (err) {
|
|
@@ -742,37 +830,41 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
742
830
|
}
|
|
743
831
|
}
|
|
744
832
|
/**
|
|
745
|
-
* @description
|
|
746
|
-
* @param {string
|
|
833
|
+
* @description Disapprove a dapp user's solution
|
|
834
|
+
* @param {string} commitmentId
|
|
835
|
+
* @param reason
|
|
747
836
|
*/
|
|
748
|
-
async
|
|
837
|
+
async disapproveDappUserCommitment(commitmentId, reason) {
|
|
749
838
|
try {
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
839
|
+
const updateDoc = {
|
|
840
|
+
result: { status: types.CaptchaStatus.disapproved, reason },
|
|
841
|
+
lastUpdatedTimestamp: Date.now()
|
|
842
|
+
};
|
|
843
|
+
await this.tables?.commitment?.findOneAndUpdate(
|
|
844
|
+
{ id: commitmentId },
|
|
845
|
+
{ $set: updateDoc },
|
|
753
846
|
{ upsert: false }
|
|
754
847
|
).lean();
|
|
755
848
|
} catch (err) {
|
|
756
|
-
throw new common.ProsopoDBError("DATABASE.
|
|
757
|
-
context: { error: err,
|
|
849
|
+
throw new common.ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", {
|
|
850
|
+
context: { error: err, commitmentId }
|
|
758
851
|
});
|
|
759
852
|
}
|
|
760
853
|
}
|
|
761
854
|
/**
|
|
762
|
-
* @description Flag dapp
|
|
763
|
-
* @param {string[]}
|
|
855
|
+
* @description Flag a dapp user's solutions as used by calculated solution
|
|
856
|
+
* @param {string[]} captchaIds
|
|
764
857
|
*/
|
|
765
|
-
async
|
|
858
|
+
async flagProcessedDappUserSolutions(captchaIds) {
|
|
766
859
|
try {
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
{ id: { $in: distinctCommitmentIds } },
|
|
860
|
+
await this.tables?.usersolution?.updateMany(
|
|
861
|
+
{ captchaId: { $in: captchaIds } },
|
|
770
862
|
{ $set: { processed: true } },
|
|
771
863
|
{ upsert: false }
|
|
772
864
|
).lean();
|
|
773
865
|
} catch (err) {
|
|
774
|
-
throw new common.ProsopoDBError("DATABASE.
|
|
775
|
-
context: { error: err,
|
|
866
|
+
throw new common.ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
|
|
867
|
+
context: { error: err, captchaIds }
|
|
776
868
|
});
|
|
777
869
|
}
|
|
778
870
|
}
|
|
@@ -780,12 +872,12 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
780
872
|
* @description Flag dapp users' commitments as used by calculated solution
|
|
781
873
|
* @param {string[]} commitmentIds
|
|
782
874
|
*/
|
|
783
|
-
async
|
|
875
|
+
async flagProcessedDappUserCommitments(commitmentIds) {
|
|
784
876
|
try {
|
|
785
877
|
const distinctCommitmentIds = [...new Set(commitmentIds)];
|
|
786
878
|
await this.tables?.commitment?.updateMany(
|
|
787
879
|
{ id: { $in: distinctCommitmentIds } },
|
|
788
|
-
{ $set: {
|
|
880
|
+
{ $set: { processed: true } },
|
|
789
881
|
{ upsert: false }
|
|
790
882
|
).lean();
|
|
791
883
|
} catch (err) {
|
|
@@ -794,20 +886,6 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
794
886
|
});
|
|
795
887
|
}
|
|
796
888
|
}
|
|
797
|
-
/**
|
|
798
|
-
* @description Get the last batch commit time or return 0 if none
|
|
799
|
-
*/
|
|
800
|
-
async getLastBatchCommitTime() {
|
|
801
|
-
const cursor = this.tables?.scheduler?.findOne({
|
|
802
|
-
processName: types.ScheduledTaskNames.BatchCommitment,
|
|
803
|
-
status: types.ScheduledTaskStatus.Completed
|
|
804
|
-
}).sort({ timestamp: -1 });
|
|
805
|
-
const doc = await cursor?.lean();
|
|
806
|
-
if (doc) {
|
|
807
|
-
return doc.datetime;
|
|
808
|
-
}
|
|
809
|
-
return /* @__PURE__ */ new Date(0);
|
|
810
|
-
}
|
|
811
889
|
/**
|
|
812
890
|
* @description Get a scheduled task status record by task ID and status
|
|
813
891
|
*/
|
|
@@ -827,18 +905,34 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
827
905
|
return cursor ? cursor : void 0;
|
|
828
906
|
}
|
|
829
907
|
/**
|
|
830
|
-
* @description
|
|
908
|
+
* @description Create the status of a scheduled task
|
|
831
909
|
*/
|
|
832
|
-
async
|
|
833
|
-
const now = /* @__PURE__ */ new Date();
|
|
910
|
+
async createScheduledTaskStatus(taskName, status) {
|
|
911
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
834
912
|
const doc = typesDatabase.ScheduledTaskSchema.parse({
|
|
835
|
-
|
|
836
|
-
processName: task,
|
|
913
|
+
processName: taskName,
|
|
837
914
|
datetime: now,
|
|
915
|
+
status
|
|
916
|
+
});
|
|
917
|
+
const taskRecord = await this.tables?.scheduler.create(doc);
|
|
918
|
+
return taskRecord._id;
|
|
919
|
+
}
|
|
920
|
+
/**
|
|
921
|
+
* @description Update the status of a scheduled task and an optional result
|
|
922
|
+
*/
|
|
923
|
+
async updateScheduledTaskStatus(taskId, status, result) {
|
|
924
|
+
const update = {
|
|
838
925
|
status,
|
|
926
|
+
updated: (/* @__PURE__ */ new Date()).getTime(),
|
|
839
927
|
...result && { result }
|
|
840
|
-
}
|
|
841
|
-
await this.tables?.scheduler.
|
|
928
|
+
};
|
|
929
|
+
await this.tables?.scheduler.updateOne(
|
|
930
|
+
{ _id: taskId },
|
|
931
|
+
{ $set: update },
|
|
932
|
+
{
|
|
933
|
+
upsert: false
|
|
934
|
+
}
|
|
935
|
+
);
|
|
842
936
|
}
|
|
843
937
|
}
|
|
844
938
|
exports.ProsopoDatabase = ProsopoDatabase;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { type
|
|
4
|
-
import { type Database, type ScheduledTaskRecord, type SolutionRecord, type Tables, type UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
|
|
1
|
+
import { AsyncFactory, type Logger, TranslationKey } from "@prosopo/common";
|
|
2
|
+
import { type Captcha, CaptchaResult, type CaptchaSolution, CaptchaStates, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type Hash, type PendingCaptchaRequest, PoWChallengeComponents, PoWChallengeId, ScheduledTaskNames, type ScheduledTaskResult, ScheduledTaskStatus } from "@prosopo/types";
|
|
3
|
+
import { type Database, type PoWCaptchaStored, type ScheduledTaskRecord, type SolutionRecord, StoredStatus, type Tables, type UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
|
|
5
4
|
import { type DeleteResult } from "mongodb";
|
|
6
|
-
import mongoose, { type Connection } from "mongoose";
|
|
5
|
+
import mongoose, { type Connection, ObjectId } from "mongoose";
|
|
7
6
|
export declare class ProsopoDatabase extends AsyncFactory implements Database {
|
|
8
7
|
url: string;
|
|
9
8
|
tables?: Tables;
|
|
@@ -25,20 +24,21 @@ export declare class ProsopoDatabase extends AsyncFactory implements Database {
|
|
|
25
24
|
removeCaptchas(captchaIds: string[]): Promise<void>;
|
|
26
25
|
getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
|
|
27
26
|
storeDappUserSolution(captchas: CaptchaSolution[], commit: UserCommitmentRecord): Promise<void>;
|
|
28
|
-
storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents,
|
|
29
|
-
getPowCaptchaRecordByChallenge(challenge: string): Promise<
|
|
30
|
-
updatePowCaptchaRecord(challenge:
|
|
27
|
+
storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, difficulty: number, providerSignature: string, ipAddress: string, serverChecked?: boolean, userSubmitted?: boolean, storedStatus?: StoredStatus, userSignature?: string): Promise<void>;
|
|
28
|
+
getPowCaptchaRecordByChallenge(challenge: string): Promise<PoWCaptchaStored | null>;
|
|
29
|
+
updatePowCaptchaRecord(challenge: PoWChallengeId, result: CaptchaResult, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string): Promise<void>;
|
|
31
30
|
getProcessedDappUserSolutions(): Promise<UserSolutionRecord[]>;
|
|
32
31
|
getProcessedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
|
|
33
|
-
|
|
32
|
+
getCheckedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
|
|
34
33
|
getUnstoredDappUserCommitments(): Promise<UserCommitmentRecord[]>;
|
|
35
34
|
markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise<void>;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise<void>;
|
|
36
|
+
getUnstoredDappUserPoWCommitments(): Promise<PoWCaptchaStored[]>;
|
|
37
|
+
markDappUserPoWCommitmentsStored(challenges: string[]): Promise<void>;
|
|
38
|
+
markDappUserPoWCommitmentsChecked(challenges: string[]): Promise<void>;
|
|
39
39
|
removeProcessedDappUserSolutions(commitmentIds: string[]): Promise<DeleteResult | undefined>;
|
|
40
40
|
removeProcessedDappUserCommitments(commitmentIds: string[]): Promise<DeleteResult | undefined>;
|
|
41
|
-
storeDappUserPending(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: number,
|
|
41
|
+
storeDappUserPending(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: number, requestedAtTimestamp: number, ipAddress: string): Promise<void>;
|
|
42
42
|
getDappUserPending(requestHash: string): Promise<PendingCaptchaRequest>;
|
|
43
43
|
updateDappUserPendingStatus(requestHash: string): Promise<void>;
|
|
44
44
|
getAllCaptchasByDatasetId(datasetId: string, state?: CaptchaStates): Promise<Captcha[] | undefined>;
|
|
@@ -47,14 +47,14 @@ export declare class ProsopoDatabase extends AsyncFactory implements Database {
|
|
|
47
47
|
getRandomSolvedCaptchasFromSingleDataset(datasetId: string, size: number): Promise<CaptchaSolution[]>;
|
|
48
48
|
getDappUserSolutionById(commitmentId: string): Promise<UserSolutionRecord | undefined>;
|
|
49
49
|
getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord | undefined>;
|
|
50
|
-
getDappUserCommitmentByAccount(userAccount: string): Promise<UserCommitmentRecord[]>;
|
|
50
|
+
getDappUserCommitmentByAccount(userAccount: string, dappAccount: string): Promise<UserCommitmentRecord[]>;
|
|
51
51
|
approveDappUserCommitment(commitmentId: string): Promise<void>;
|
|
52
|
+
disapproveDappUserCommitment(commitmentId: string, reason?: TranslationKey): Promise<void>;
|
|
52
53
|
flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise<void>;
|
|
53
54
|
flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
|
|
54
|
-
|
|
55
|
-
getLastBatchCommitTime(): Promise<Date>;
|
|
56
|
-
getScheduledTaskStatus(taskId: string, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
|
|
55
|
+
getScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
|
|
57
56
|
getLastScheduledTaskStatus(task: ScheduledTaskNames, status?: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
|
|
58
|
-
|
|
57
|
+
createScheduledTaskStatus(taskName: ScheduledTaskNames, status: ScheduledTaskStatus): Promise<ObjectId>;
|
|
58
|
+
updateScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
|
|
59
59
|
}
|
|
60
60
|
//# sourceMappingURL=mongo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
|
package/dist/databases/mongo.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isHex } from "@polkadot/util/is";
|
|
2
|
-
import { AsyncFactory, ProsopoDBError, ProsopoEnvError,
|
|
3
|
-
import { CaptchaStates, CaptchaStatus, DatasetWithIdsAndTreeSchema,
|
|
4
|
-
import { CaptchaRecordSchema, DatasetRecordSchema, PendingRecordSchema, PowCaptchaRecordSchema, ScheduledTaskRecordSchema, ScheduledTaskSchema, SolutionRecordSchema, UserCommitmentRecordSchema, UserCommitmentSchema, UserSolutionRecordSchema,
|
|
2
|
+
import { AsyncFactory, getLoggerDefault, ProsopoDBError, ProsopoEnvError, } from "@prosopo/common";
|
|
3
|
+
import { CaptchaStates, CaptchaStatus, DatasetWithIdsAndTreeSchema, } from "@prosopo/types";
|
|
4
|
+
import { CaptchaRecordSchema, DatasetRecordSchema, PendingRecordSchema, PowCaptchaRecordSchema, ScheduledTaskRecordSchema, ScheduledTaskSchema, SolutionRecordSchema, StoredStatusNames, UserCommitmentRecordSchema, UserCommitmentSchema, UserSolutionRecordSchema, } from "@prosopo/types-database";
|
|
5
5
|
import { ServerApiVersion } from "mongodb";
|
|
6
6
|
import mongoose from "mongoose";
|
|
7
7
|
mongoose.set("strictQuery", false);
|
|
@@ -278,7 +278,10 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
278
278
|
});
|
|
279
279
|
}
|
|
280
280
|
async storeDappUserSolution(captchas, commit) {
|
|
281
|
-
const commitmentRecord = UserCommitmentSchema.parse(
|
|
281
|
+
const commitmentRecord = UserCommitmentSchema.parse({
|
|
282
|
+
...commit,
|
|
283
|
+
lastUpdatedTimestamp: Date.now(),
|
|
284
|
+
});
|
|
282
285
|
if (captchas.length) {
|
|
283
286
|
await this.tables?.commitment.updateOne({
|
|
284
287
|
id: commit.id,
|
|
@@ -302,28 +305,45 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
302
305
|
await this.tables?.usersolution.bulkWrite(ops);
|
|
303
306
|
}
|
|
304
307
|
}
|
|
305
|
-
async storePowCaptchaRecord(challenge, components,
|
|
308
|
+
async storePowCaptchaRecord(challenge, components, difficulty, providerSignature, ipAddress, serverChecked = false, userSubmitted = false, storedStatus = StoredStatusNames.notStored, userSignature) {
|
|
306
309
|
const tables = this.getTables();
|
|
307
310
|
const powCaptchaRecord = {
|
|
308
311
|
challenge,
|
|
309
312
|
...components,
|
|
310
|
-
|
|
313
|
+
ipAddress,
|
|
314
|
+
result: { status: CaptchaStatus.pending },
|
|
315
|
+
userSubmitted,
|
|
316
|
+
serverChecked,
|
|
317
|
+
difficulty,
|
|
318
|
+
providerSignature,
|
|
319
|
+
userSignature,
|
|
320
|
+
lastUpdatedTimestamp: Date.now(),
|
|
311
321
|
};
|
|
312
322
|
try {
|
|
313
323
|
await tables.powCaptcha.create(powCaptchaRecord);
|
|
314
324
|
this.logger.info("PowCaptcha record added successfully", {
|
|
315
325
|
challenge,
|
|
316
|
-
|
|
326
|
+
userSubmitted,
|
|
327
|
+
serverChecked,
|
|
328
|
+
storedStatus,
|
|
317
329
|
});
|
|
318
330
|
}
|
|
319
331
|
catch (error) {
|
|
320
332
|
this.logger.error("Failed to add PowCaptcha record", {
|
|
321
333
|
error,
|
|
322
334
|
challenge,
|
|
323
|
-
|
|
335
|
+
userSubmitted,
|
|
336
|
+
serverChecked,
|
|
337
|
+
storedStatus,
|
|
324
338
|
});
|
|
325
339
|
throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
326
|
-
context: {
|
|
340
|
+
context: {
|
|
341
|
+
error,
|
|
342
|
+
challenge,
|
|
343
|
+
userSubmitted,
|
|
344
|
+
serverChecked,
|
|
345
|
+
storedStatus,
|
|
346
|
+
},
|
|
327
347
|
logger: this.logger,
|
|
328
348
|
});
|
|
329
349
|
}
|
|
@@ -336,9 +356,7 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
336
356
|
});
|
|
337
357
|
}
|
|
338
358
|
try {
|
|
339
|
-
const record = await this.tables.powCaptcha
|
|
340
|
-
.findOne({ challenge })
|
|
341
|
-
.lean();
|
|
359
|
+
const record = await this.tables.powCaptcha.findOne({ challenge }).lean();
|
|
342
360
|
if (record) {
|
|
343
361
|
this.logger.info("PowCaptcha record retrieved successfully", {
|
|
344
362
|
challenge,
|
|
@@ -359,33 +377,50 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
359
377
|
});
|
|
360
378
|
}
|
|
361
379
|
}
|
|
362
|
-
async updatePowCaptchaRecord(challenge,
|
|
380
|
+
async updatePowCaptchaRecord(challenge, result, serverChecked = false, userSubmitted = false, userSignature) {
|
|
363
381
|
const tables = this.getTables();
|
|
382
|
+
const timestamp = Date.now();
|
|
383
|
+
const update = {
|
|
384
|
+
result,
|
|
385
|
+
serverChecked,
|
|
386
|
+
userSubmitted,
|
|
387
|
+
userSignature,
|
|
388
|
+
lastUpdatedTimestamp: timestamp,
|
|
389
|
+
};
|
|
364
390
|
try {
|
|
365
|
-
const updateResult = await tables.powCaptcha.updateOne({ challenge }, {
|
|
391
|
+
const updateResult = await tables.powCaptcha.updateOne({ challenge }, {
|
|
392
|
+
$set: update,
|
|
393
|
+
});
|
|
366
394
|
if (updateResult.matchedCount === 0) {
|
|
367
395
|
this.logger.info("No PowCaptcha record found to update", {
|
|
368
396
|
challenge,
|
|
369
|
-
|
|
397
|
+
...update,
|
|
370
398
|
});
|
|
371
399
|
throw new ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
|
|
372
|
-
context: {
|
|
400
|
+
context: {
|
|
401
|
+
challenge,
|
|
402
|
+
...update,
|
|
403
|
+
},
|
|
373
404
|
logger: this.logger,
|
|
374
405
|
});
|
|
375
406
|
}
|
|
376
407
|
this.logger.info("PowCaptcha record updated successfully", {
|
|
377
408
|
challenge,
|
|
378
|
-
|
|
409
|
+
...update,
|
|
379
410
|
});
|
|
380
411
|
}
|
|
381
412
|
catch (error) {
|
|
382
413
|
this.logger.error("Failed to update PowCaptcha record", {
|
|
383
414
|
error,
|
|
384
415
|
challenge,
|
|
385
|
-
|
|
416
|
+
...update,
|
|
386
417
|
});
|
|
387
418
|
throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
388
|
-
context: {
|
|
419
|
+
context: {
|
|
420
|
+
error,
|
|
421
|
+
challenge,
|
|
422
|
+
...update,
|
|
423
|
+
},
|
|
389
424
|
logger: this.logger,
|
|
390
425
|
});
|
|
391
426
|
}
|
|
@@ -394,41 +429,69 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
394
429
|
const docs = await this.tables?.usersolution
|
|
395
430
|
.find({ processed: true })
|
|
396
431
|
.lean();
|
|
397
|
-
return docs
|
|
432
|
+
return docs || [];
|
|
398
433
|
}
|
|
399
434
|
async getProcessedDappUserCommitments() {
|
|
400
|
-
const docs = await this.tables?.commitment
|
|
401
|
-
|
|
435
|
+
const docs = await this.tables?.commitment
|
|
436
|
+
.find({ processed: true })
|
|
437
|
+
.lean();
|
|
438
|
+
return docs || [];
|
|
402
439
|
}
|
|
403
|
-
async
|
|
404
|
-
const docs = await this.tables?.commitment
|
|
405
|
-
|
|
440
|
+
async getCheckedDappUserCommitments() {
|
|
441
|
+
const docs = await this.tables?.commitment
|
|
442
|
+
.find({ [StoredStatusNames.serverChecked]: true })
|
|
443
|
+
.lean();
|
|
444
|
+
return docs || [];
|
|
406
445
|
}
|
|
407
446
|
async getUnstoredDappUserCommitments() {
|
|
408
447
|
const docs = await this.tables?.commitment
|
|
409
448
|
.find({
|
|
410
|
-
$or: [
|
|
449
|
+
$or: [
|
|
450
|
+
{ storedStatus: { $ne: StoredStatusNames.stored } },
|
|
451
|
+
{ storedStatus: { $exists: false } },
|
|
452
|
+
],
|
|
411
453
|
})
|
|
412
454
|
.lean();
|
|
413
|
-
return docs
|
|
455
|
+
return docs || [];
|
|
414
456
|
}
|
|
415
457
|
async markDappUserCommitmentsStored(commitmentIds) {
|
|
416
|
-
|
|
458
|
+
const updateDoc = {
|
|
459
|
+
storedAtTimestamp: Date.now(),
|
|
460
|
+
};
|
|
461
|
+
await this.tables?.commitment.updateMany({ id: { $in: commitmentIds } }, { $set: updateDoc }, { upsert: false });
|
|
462
|
+
}
|
|
463
|
+
async markDappUserCommitmentsChecked(commitmentIds) {
|
|
464
|
+
const updateDoc = {
|
|
465
|
+
[StoredStatusNames.serverChecked]: true,
|
|
466
|
+
lastUpdatedTimestamp: Date.now(),
|
|
467
|
+
};
|
|
468
|
+
await this.tables?.commitment.updateMany({ id: { $in: commitmentIds } }, { $set: updateDoc }, { upsert: false });
|
|
417
469
|
}
|
|
418
470
|
async getUnstoredDappUserPoWCommitments() {
|
|
419
471
|
const docs = await this.tables?.powCaptcha
|
|
420
472
|
.find({
|
|
421
|
-
$or: [
|
|
473
|
+
$or: [
|
|
474
|
+
{ storedStatus: { $ne: StoredStatusNames.stored } },
|
|
475
|
+
{ storedStatus: { $exists: false } },
|
|
476
|
+
],
|
|
422
477
|
})
|
|
423
478
|
.lean();
|
|
424
479
|
return docs || [];
|
|
425
480
|
}
|
|
426
|
-
async markDappUserPoWCommitmentsStored(
|
|
427
|
-
|
|
481
|
+
async markDappUserPoWCommitmentsStored(challenges) {
|
|
482
|
+
const updateDoc = {
|
|
483
|
+
storedAtTimestamp: Date.now(),
|
|
484
|
+
};
|
|
485
|
+
await this.tables?.powCaptcha.updateMany({ challenge: { $in: challenges } }, { $set: updateDoc }, { upsert: false });
|
|
428
486
|
}
|
|
429
|
-
async
|
|
430
|
-
const
|
|
431
|
-
|
|
487
|
+
async markDappUserPoWCommitmentsChecked(challenges) {
|
|
488
|
+
const updateDoc = {
|
|
489
|
+
[StoredStatusNames.serverChecked]: true,
|
|
490
|
+
lastUpdatedTimestamp: Date.now(),
|
|
491
|
+
};
|
|
492
|
+
await this.tables?.powCaptcha.updateMany({ challenge: { $in: challenges } }, {
|
|
493
|
+
$set: updateDoc,
|
|
494
|
+
}, { upsert: false });
|
|
432
495
|
}
|
|
433
496
|
async removeProcessedDappUserSolutions(commitmentIds) {
|
|
434
497
|
return await this.tables?.usersolution.deleteMany({
|
|
@@ -442,7 +505,7 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
442
505
|
id: { $in: commitmentIds },
|
|
443
506
|
});
|
|
444
507
|
}
|
|
445
|
-
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp,
|
|
508
|
+
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtTimestamp, ipAddress) {
|
|
446
509
|
if (!isHex(requestHash)) {
|
|
447
510
|
throw new ProsopoDBError("DATABASE.INVALID_HASH", {
|
|
448
511
|
context: {
|
|
@@ -457,7 +520,8 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
457
520
|
salt,
|
|
458
521
|
requestHash,
|
|
459
522
|
deadlineTimestamp,
|
|
460
|
-
|
|
523
|
+
requestedAtTimestamp,
|
|
524
|
+
ipAddress,
|
|
461
525
|
};
|
|
462
526
|
await this.tables?.pending.updateOne({ requestHash: requestHash }, { $set: pendingRecord }, { upsert: true });
|
|
463
527
|
}
|
|
@@ -486,7 +550,7 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
486
550
|
}
|
|
487
551
|
await this.tables?.pending.updateOne({ requestHash: requestHash }, {
|
|
488
552
|
$set: {
|
|
489
|
-
pending: false,
|
|
553
|
+
[CaptchaStatus.pending]: false,
|
|
490
554
|
},
|
|
491
555
|
}, { upsert: true });
|
|
492
556
|
}
|
|
@@ -591,18 +655,23 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
591
655
|
?.findOne({ id: commitmentId })
|
|
592
656
|
.lean();
|
|
593
657
|
const doc = await commitmentCursor;
|
|
594
|
-
return doc ?
|
|
658
|
+
return doc ? doc : undefined;
|
|
595
659
|
}
|
|
596
|
-
async getDappUserCommitmentByAccount(userAccount) {
|
|
660
|
+
async getDappUserCommitmentByAccount(userAccount, dappAccount) {
|
|
597
661
|
const docs = await this.tables?.commitment
|
|
598
|
-
?.find({ userAccount }, { _id: 0 }, { sort: { _id: -1 } })
|
|
662
|
+
?.find({ userAccount, dappAccount }, { _id: 0 }, { sort: { _id: -1 } })
|
|
599
663
|
.lean();
|
|
600
664
|
return docs ? docs : [];
|
|
601
665
|
}
|
|
602
666
|
async approveDappUserCommitment(commitmentId) {
|
|
603
667
|
try {
|
|
668
|
+
const result = { status: CaptchaStatus.approved };
|
|
669
|
+
const updateDoc = {
|
|
670
|
+
result,
|
|
671
|
+
lastUpdatedTimestamp: Date.now(),
|
|
672
|
+
};
|
|
604
673
|
await this.tables?.commitment
|
|
605
|
-
?.findOneAndUpdate({ id: commitmentId }, { $set:
|
|
674
|
+
?.findOneAndUpdate({ id: commitmentId }, { $set: updateDoc }, { upsert: false })
|
|
606
675
|
.lean();
|
|
607
676
|
}
|
|
608
677
|
catch (err) {
|
|
@@ -611,36 +680,39 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
611
680
|
});
|
|
612
681
|
}
|
|
613
682
|
}
|
|
614
|
-
async
|
|
683
|
+
async disapproveDappUserCommitment(commitmentId, reason) {
|
|
615
684
|
try {
|
|
616
|
-
|
|
617
|
-
|
|
685
|
+
const updateDoc = {
|
|
686
|
+
result: { status: CaptchaStatus.disapproved, reason },
|
|
687
|
+
lastUpdatedTimestamp: Date.now(),
|
|
688
|
+
};
|
|
689
|
+
await this.tables?.commitment
|
|
690
|
+
?.findOneAndUpdate({ id: commitmentId }, { $set: updateDoc }, { upsert: false })
|
|
618
691
|
.lean();
|
|
619
692
|
}
|
|
620
693
|
catch (err) {
|
|
621
|
-
throw new ProsopoDBError("DATABASE.
|
|
622
|
-
context: { error: err,
|
|
694
|
+
throw new ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", {
|
|
695
|
+
context: { error: err, commitmentId },
|
|
623
696
|
});
|
|
624
697
|
}
|
|
625
698
|
}
|
|
626
|
-
async
|
|
699
|
+
async flagProcessedDappUserSolutions(captchaIds) {
|
|
627
700
|
try {
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false })
|
|
701
|
+
await this.tables?.usersolution
|
|
702
|
+
?.updateMany({ captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false })
|
|
631
703
|
.lean();
|
|
632
704
|
}
|
|
633
705
|
catch (err) {
|
|
634
|
-
throw new ProsopoDBError("DATABASE.
|
|
635
|
-
context: { error: err,
|
|
706
|
+
throw new ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
|
|
707
|
+
context: { error: err, captchaIds },
|
|
636
708
|
});
|
|
637
709
|
}
|
|
638
710
|
}
|
|
639
|
-
async
|
|
711
|
+
async flagProcessedDappUserCommitments(commitmentIds) {
|
|
640
712
|
try {
|
|
641
713
|
const distinctCommitmentIds = [...new Set(commitmentIds)];
|
|
642
714
|
await this.tables?.commitment
|
|
643
|
-
?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: {
|
|
715
|
+
?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false })
|
|
644
716
|
.lean();
|
|
645
717
|
}
|
|
646
718
|
catch (err) {
|
|
@@ -649,19 +721,6 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
649
721
|
});
|
|
650
722
|
}
|
|
651
723
|
}
|
|
652
|
-
async getLastBatchCommitTime() {
|
|
653
|
-
const cursor = this.tables?.scheduler
|
|
654
|
-
?.findOne({
|
|
655
|
-
processName: ScheduledTaskNames.BatchCommitment,
|
|
656
|
-
status: ScheduledTaskStatus.Completed,
|
|
657
|
-
})
|
|
658
|
-
.sort({ timestamp: -1 });
|
|
659
|
-
const doc = await cursor?.lean();
|
|
660
|
-
if (doc) {
|
|
661
|
-
return doc.datetime;
|
|
662
|
-
}
|
|
663
|
-
return new Date(0);
|
|
664
|
-
}
|
|
665
724
|
async getScheduledTaskStatus(taskId, status) {
|
|
666
725
|
const cursor = await this.tables?.scheduler
|
|
667
726
|
?.findOne({ taskId: taskId, status: status })
|
|
@@ -679,16 +738,25 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
679
738
|
.lean();
|
|
680
739
|
return cursor ? cursor : undefined;
|
|
681
740
|
}
|
|
682
|
-
async
|
|
683
|
-
const now = new Date();
|
|
741
|
+
async createScheduledTaskStatus(taskName, status) {
|
|
742
|
+
const now = new Date().getTime();
|
|
684
743
|
const doc = ScheduledTaskSchema.parse({
|
|
685
|
-
|
|
686
|
-
processName: task,
|
|
744
|
+
processName: taskName,
|
|
687
745
|
datetime: now,
|
|
688
746
|
status,
|
|
747
|
+
});
|
|
748
|
+
const taskRecord = await this.tables?.scheduler.create(doc);
|
|
749
|
+
return taskRecord._id;
|
|
750
|
+
}
|
|
751
|
+
async updateScheduledTaskStatus(taskId, status, result) {
|
|
752
|
+
const update = {
|
|
753
|
+
status,
|
|
754
|
+
updated: new Date().getTime(),
|
|
689
755
|
...(result && { result }),
|
|
756
|
+
};
|
|
757
|
+
await this.tables?.scheduler.updateOne({ _id: taskId }, { $set: update }, {
|
|
758
|
+
upsert: false,
|
|
690
759
|
});
|
|
691
|
-
await this.tables?.scheduler.create(doc);
|
|
692
760
|
}
|
|
693
761
|
}
|
|
694
762
|
//# sourceMappingURL=mongo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
2
|
+
"name": "@prosopo/database",
|
|
3
|
+
"version": "2.0.2",
|
|
4
|
+
"description": "Prosopo database plugins for provider",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=20",
|
|
9
|
+
"npm": ">=9"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/cjs/index.cjs"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "echo \"No test specified\"",
|
|
19
|
+
"clean": "tsc --build --clean",
|
|
20
|
+
"build": "tsc --build --verbose",
|
|
21
|
+
"build:cjs": "npx vite --config vite.cjs.config.ts build"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+ssh://git@github.com/prosopo/captcha.git"
|
|
26
|
+
},
|
|
27
|
+
"author": "Prosopo Limited",
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/prosopo/captcha/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/prosopo/captcha#readme",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@prosopo/common": "2.0.2",
|
|
35
|
+
"@prosopo/config": "2.0.2",
|
|
36
|
+
"@prosopo/types": "2.0.2",
|
|
37
|
+
"@prosopo/types-database": "2.0.2",
|
|
38
|
+
"mongodb-memory-server": "^9.4.0",
|
|
39
|
+
"mongoose": "^8.5.1"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"tslib": "2.6.2",
|
|
43
|
+
"typescript": "5.1.6"
|
|
44
|
+
},
|
|
45
|
+
"sideEffects": false
|
|
46
46
|
}
|