@prosopo/database 2.0.1 → 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 +173 -81
- package/dist/databases/mongo.d.ts +17 -17
- package/dist/databases/mongo.d.ts.map +1 -1
- package/dist/databases/mongo.js +139 -73
- 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,32 +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
|
-
|
|
374
|
-
|
|
382
|
+
ipAddress,
|
|
383
|
+
result: { status: types.CaptchaStatus.pending },
|
|
384
|
+
userSubmitted,
|
|
385
|
+
serverChecked,
|
|
386
|
+
difficulty,
|
|
387
|
+
providerSignature,
|
|
388
|
+
userSignature,
|
|
389
|
+
lastUpdatedTimestamp: Date.now()
|
|
375
390
|
};
|
|
376
391
|
try {
|
|
377
392
|
await tables.powCaptcha.create(powCaptchaRecord);
|
|
378
393
|
this.logger.info("PowCaptcha record added successfully", {
|
|
379
394
|
challenge,
|
|
380
|
-
|
|
381
|
-
|
|
395
|
+
userSubmitted,
|
|
396
|
+
serverChecked,
|
|
397
|
+
storedStatus
|
|
382
398
|
});
|
|
383
399
|
} catch (error) {
|
|
384
400
|
this.logger.error("Failed to add PowCaptcha record", {
|
|
385
401
|
error,
|
|
386
402
|
challenge,
|
|
387
|
-
|
|
403
|
+
userSubmitted,
|
|
404
|
+
serverChecked,
|
|
405
|
+
storedStatus
|
|
388
406
|
});
|
|
389
407
|
throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
390
|
-
context: {
|
|
408
|
+
context: {
|
|
409
|
+
error,
|
|
410
|
+
challenge,
|
|
411
|
+
userSubmitted,
|
|
412
|
+
serverChecked,
|
|
413
|
+
storedStatus
|
|
414
|
+
},
|
|
391
415
|
logger: this.logger
|
|
392
416
|
});
|
|
393
417
|
}
|
|
@@ -395,7 +419,7 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
395
419
|
/**
|
|
396
420
|
* @description Retrieves a PoW Captcha record by its challenge string.
|
|
397
421
|
* @param {string} challenge The challenge string to search for.
|
|
398
|
-
* @returns {Promise<
|
|
422
|
+
* @returns {Promise<PoWCaptchaStored | null>} A promise that resolves with the found record or null if not found.
|
|
399
423
|
*/
|
|
400
424
|
async getPowCaptchaRecordByChallenge(challenge) {
|
|
401
425
|
if (!this.tables) {
|
|
@@ -428,38 +452,59 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
428
452
|
/**
|
|
429
453
|
* @description Updates a PoW Captcha record in the database.
|
|
430
454
|
* @param {string} challenge The challenge string of the captcha to be updated.
|
|
431
|
-
* @param
|
|
455
|
+
* @param result
|
|
456
|
+
* @param serverChecked
|
|
457
|
+
* @param userSubmitted
|
|
458
|
+
* @param storedStatus
|
|
459
|
+
* @param userSignature
|
|
432
460
|
* @returns {Promise<void>} A promise that resolves when the record is updated.
|
|
433
461
|
*/
|
|
434
|
-
async updatePowCaptchaRecord(challenge,
|
|
462
|
+
async updatePowCaptchaRecord(challenge, result, serverChecked = false, userSubmitted = false, userSignature) {
|
|
435
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
|
+
};
|
|
436
472
|
try {
|
|
437
473
|
const updateResult = await tables.powCaptcha.updateOne(
|
|
438
474
|
{ challenge },
|
|
439
|
-
{
|
|
475
|
+
{
|
|
476
|
+
$set: update
|
|
477
|
+
}
|
|
440
478
|
);
|
|
441
479
|
if (updateResult.matchedCount === 0) {
|
|
442
480
|
this.logger.info("No PowCaptcha record found to update", {
|
|
443
481
|
challenge,
|
|
444
|
-
|
|
482
|
+
...update
|
|
445
483
|
});
|
|
446
484
|
throw new common.ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
|
|
447
|
-
context: {
|
|
485
|
+
context: {
|
|
486
|
+
challenge,
|
|
487
|
+
...update
|
|
488
|
+
},
|
|
448
489
|
logger: this.logger
|
|
449
490
|
});
|
|
450
491
|
}
|
|
451
492
|
this.logger.info("PowCaptcha record updated successfully", {
|
|
452
493
|
challenge,
|
|
453
|
-
|
|
494
|
+
...update
|
|
454
495
|
});
|
|
455
496
|
} catch (error) {
|
|
456
497
|
this.logger.error("Failed to update PowCaptcha record", {
|
|
457
498
|
error,
|
|
458
499
|
challenge,
|
|
459
|
-
|
|
500
|
+
...update
|
|
460
501
|
});
|
|
461
502
|
throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
462
|
-
context: {
|
|
503
|
+
context: {
|
|
504
|
+
error,
|
|
505
|
+
challenge,
|
|
506
|
+
...update
|
|
507
|
+
},
|
|
463
508
|
logger: this.logger
|
|
464
509
|
});
|
|
465
510
|
}
|
|
@@ -468,35 +513,54 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
468
513
|
*/
|
|
469
514
|
async getProcessedDappUserSolutions() {
|
|
470
515
|
const docs = await this.tables?.usersolution.find({ processed: true }).lean();
|
|
471
|
-
return docs
|
|
516
|
+
return docs || [];
|
|
472
517
|
}
|
|
473
|
-
/** @description Get processed Dapp User captcha commitments from the commitments table
|
|
518
|
+
/** @description Get processed Dapp User image captcha commitments from the commitments table
|
|
474
519
|
*/
|
|
475
520
|
async getProcessedDappUserCommitments() {
|
|
476
521
|
const docs = await this.tables?.commitment.find({ processed: true }).lean();
|
|
477
|
-
return docs
|
|
522
|
+
return docs || [];
|
|
478
523
|
}
|
|
479
|
-
/** @description Get Dapp User captcha commitments from the commitments table
|
|
524
|
+
/** @description Get serverChecked Dapp User image captcha commitments from the commitments table
|
|
480
525
|
*/
|
|
481
|
-
async
|
|
482
|
-
const docs = await this.tables?.commitment.find({
|
|
483
|
-
return docs
|
|
526
|
+
async getCheckedDappUserCommitments() {
|
|
527
|
+
const docs = await this.tables?.commitment.find({ [typesDatabase.StoredStatusNames.serverChecked]: true }).lean();
|
|
528
|
+
return docs || [];
|
|
484
529
|
}
|
|
485
530
|
/** @description Get Dapp User captcha commitments from the commitments table that have not been counted towards the
|
|
486
531
|
* client's total
|
|
487
532
|
*/
|
|
488
533
|
async getUnstoredDappUserCommitments() {
|
|
489
534
|
const docs = await this.tables?.commitment.find({
|
|
490
|
-
$or: [
|
|
535
|
+
$or: [
|
|
536
|
+
{ storedStatus: { $ne: typesDatabase.StoredStatusNames.stored } },
|
|
537
|
+
{ storedStatus: { $exists: false } }
|
|
538
|
+
]
|
|
491
539
|
}).lean();
|
|
492
|
-
return docs
|
|
540
|
+
return docs || [];
|
|
493
541
|
}
|
|
494
542
|
/** @description Mark a list of captcha commits as stored
|
|
495
543
|
*/
|
|
496
544
|
async markDappUserCommitmentsStored(commitmentIds) {
|
|
545
|
+
const updateDoc = {
|
|
546
|
+
storedAtTimestamp: Date.now()
|
|
547
|
+
};
|
|
548
|
+
await this.tables?.commitment.updateMany(
|
|
549
|
+
{ id: { $in: commitmentIds } },
|
|
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
|
+
};
|
|
497
561
|
await this.tables?.commitment.updateMany(
|
|
498
562
|
{ id: { $in: commitmentIds } },
|
|
499
|
-
{ $set:
|
|
563
|
+
{ $set: updateDoc },
|
|
500
564
|
{ upsert: false }
|
|
501
565
|
);
|
|
502
566
|
}
|
|
@@ -504,24 +568,39 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
504
568
|
*/
|
|
505
569
|
async getUnstoredDappUserPoWCommitments() {
|
|
506
570
|
const docs = await this.tables?.powCaptcha.find({
|
|
507
|
-
$or: [
|
|
571
|
+
$or: [
|
|
572
|
+
{ storedStatus: { $ne: typesDatabase.StoredStatusNames.stored } },
|
|
573
|
+
{ storedStatus: { $exists: false } }
|
|
574
|
+
]
|
|
508
575
|
}).lean();
|
|
509
576
|
return docs || [];
|
|
510
577
|
}
|
|
511
578
|
/** @description Mark a list of PoW captcha commits as stored
|
|
512
579
|
*/
|
|
513
580
|
async markDappUserPoWCommitmentsStored(challenges) {
|
|
581
|
+
const updateDoc = {
|
|
582
|
+
storedAtTimestamp: Date.now()
|
|
583
|
+
};
|
|
514
584
|
await this.tables?.powCaptcha.updateMany(
|
|
515
585
|
{ challenge: { $in: challenges } },
|
|
516
|
-
{ $set:
|
|
586
|
+
{ $set: updateDoc },
|
|
517
587
|
{ upsert: false }
|
|
518
588
|
);
|
|
519
589
|
}
|
|
520
|
-
/** @description
|
|
590
|
+
/** @description Mark a list of PoW captcha commits as checked by the server
|
|
521
591
|
*/
|
|
522
|
-
async
|
|
523
|
-
const
|
|
524
|
-
|
|
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
|
+
);
|
|
525
604
|
}
|
|
526
605
|
/** @description Remove processed Dapp User captcha solutions from the user solution table
|
|
527
606
|
*/
|
|
@@ -542,7 +621,7 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
542
621
|
/**
|
|
543
622
|
* @description Store a Dapp User's pending record
|
|
544
623
|
*/
|
|
545
|
-
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp,
|
|
624
|
+
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtTimestamp, ipAddress) {
|
|
546
625
|
if (!is.isHex(requestHash)) {
|
|
547
626
|
throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
|
|
548
627
|
context: {
|
|
@@ -557,7 +636,8 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
557
636
|
salt,
|
|
558
637
|
requestHash,
|
|
559
638
|
deadlineTimestamp,
|
|
560
|
-
|
|
639
|
+
requestedAtTimestamp,
|
|
640
|
+
ipAddress
|
|
561
641
|
};
|
|
562
642
|
await this.tables?.pending.updateOne(
|
|
563
643
|
{ requestHash },
|
|
@@ -598,7 +678,7 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
598
678
|
{ requestHash },
|
|
599
679
|
{
|
|
600
680
|
$set: {
|
|
601
|
-
pending: false
|
|
681
|
+
[types.CaptchaStatus.pending]: false
|
|
602
682
|
}
|
|
603
683
|
},
|
|
604
684
|
{ upsert: true }
|
|
@@ -716,14 +796,15 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
716
796
|
async getDappUserCommitmentById(commitmentId) {
|
|
717
797
|
const commitmentCursor = this.tables?.commitment?.findOne({ id: commitmentId }).lean();
|
|
718
798
|
const doc = await commitmentCursor;
|
|
719
|
-
return doc ?
|
|
799
|
+
return doc ? doc : void 0;
|
|
720
800
|
}
|
|
721
801
|
/**
|
|
722
802
|
* @description Get dapp user commitment by user account
|
|
723
|
-
* @param {string
|
|
803
|
+
* @param {string} userAccount
|
|
804
|
+
* @param {string} dappAccount
|
|
724
805
|
*/
|
|
725
|
-
async getDappUserCommitmentByAccount(userAccount) {
|
|
726
|
-
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();
|
|
727
808
|
return docs ? docs : [];
|
|
728
809
|
}
|
|
729
810
|
/**
|
|
@@ -732,9 +813,14 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
732
813
|
*/
|
|
733
814
|
async approveDappUserCommitment(commitmentId) {
|
|
734
815
|
try {
|
|
816
|
+
const result = { status: types.CaptchaStatus.approved };
|
|
817
|
+
const updateDoc = {
|
|
818
|
+
result,
|
|
819
|
+
lastUpdatedTimestamp: Date.now()
|
|
820
|
+
};
|
|
735
821
|
await this.tables?.commitment?.findOneAndUpdate(
|
|
736
822
|
{ id: commitmentId },
|
|
737
|
-
{ $set:
|
|
823
|
+
{ $set: updateDoc },
|
|
738
824
|
{ upsert: false }
|
|
739
825
|
).lean();
|
|
740
826
|
} catch (err) {
|
|
@@ -744,37 +830,41 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
744
830
|
}
|
|
745
831
|
}
|
|
746
832
|
/**
|
|
747
|
-
* @description
|
|
748
|
-
* @param {string
|
|
833
|
+
* @description Disapprove a dapp user's solution
|
|
834
|
+
* @param {string} commitmentId
|
|
835
|
+
* @param reason
|
|
749
836
|
*/
|
|
750
|
-
async
|
|
837
|
+
async disapproveDappUserCommitment(commitmentId, reason) {
|
|
751
838
|
try {
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
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 },
|
|
755
846
|
{ upsert: false }
|
|
756
847
|
).lean();
|
|
757
848
|
} catch (err) {
|
|
758
|
-
throw new common.ProsopoDBError("DATABASE.
|
|
759
|
-
context: { error: err,
|
|
849
|
+
throw new common.ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", {
|
|
850
|
+
context: { error: err, commitmentId }
|
|
760
851
|
});
|
|
761
852
|
}
|
|
762
853
|
}
|
|
763
854
|
/**
|
|
764
|
-
* @description Flag dapp
|
|
765
|
-
* @param {string[]}
|
|
855
|
+
* @description Flag a dapp user's solutions as used by calculated solution
|
|
856
|
+
* @param {string[]} captchaIds
|
|
766
857
|
*/
|
|
767
|
-
async
|
|
858
|
+
async flagProcessedDappUserSolutions(captchaIds) {
|
|
768
859
|
try {
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
{ id: { $in: distinctCommitmentIds } },
|
|
860
|
+
await this.tables?.usersolution?.updateMany(
|
|
861
|
+
{ captchaId: { $in: captchaIds } },
|
|
772
862
|
{ $set: { processed: true } },
|
|
773
863
|
{ upsert: false }
|
|
774
864
|
).lean();
|
|
775
865
|
} catch (err) {
|
|
776
|
-
throw new common.ProsopoDBError("DATABASE.
|
|
777
|
-
context: { error: err,
|
|
866
|
+
throw new common.ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
|
|
867
|
+
context: { error: err, captchaIds }
|
|
778
868
|
});
|
|
779
869
|
}
|
|
780
870
|
}
|
|
@@ -782,12 +872,12 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
782
872
|
* @description Flag dapp users' commitments as used by calculated solution
|
|
783
873
|
* @param {string[]} commitmentIds
|
|
784
874
|
*/
|
|
785
|
-
async
|
|
875
|
+
async flagProcessedDappUserCommitments(commitmentIds) {
|
|
786
876
|
try {
|
|
787
877
|
const distinctCommitmentIds = [...new Set(commitmentIds)];
|
|
788
878
|
await this.tables?.commitment?.updateMany(
|
|
789
879
|
{ id: { $in: distinctCommitmentIds } },
|
|
790
|
-
{ $set: {
|
|
880
|
+
{ $set: { processed: true } },
|
|
791
881
|
{ upsert: false }
|
|
792
882
|
).lean();
|
|
793
883
|
} catch (err) {
|
|
@@ -796,20 +886,6 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
796
886
|
});
|
|
797
887
|
}
|
|
798
888
|
}
|
|
799
|
-
/**
|
|
800
|
-
* @description Get the last batch commit time or return 0 if none
|
|
801
|
-
*/
|
|
802
|
-
async getLastBatchCommitTime() {
|
|
803
|
-
const cursor = this.tables?.scheduler?.findOne({
|
|
804
|
-
processName: types.ScheduledTaskNames.BatchCommitment,
|
|
805
|
-
status: types.ScheduledTaskStatus.Completed
|
|
806
|
-
}).sort({ timestamp: -1 });
|
|
807
|
-
const doc = await cursor?.lean();
|
|
808
|
-
if (doc) {
|
|
809
|
-
return doc.datetime;
|
|
810
|
-
}
|
|
811
|
-
return /* @__PURE__ */ new Date(0);
|
|
812
|
-
}
|
|
813
889
|
/**
|
|
814
890
|
* @description Get a scheduled task status record by task ID and status
|
|
815
891
|
*/
|
|
@@ -829,18 +905,34 @@ class ProsopoDatabase extends common.AsyncFactory {
|
|
|
829
905
|
return cursor ? cursor : void 0;
|
|
830
906
|
}
|
|
831
907
|
/**
|
|
832
|
-
* @description
|
|
908
|
+
* @description Create the status of a scheduled task
|
|
833
909
|
*/
|
|
834
|
-
async
|
|
835
|
-
const now = /* @__PURE__ */ new Date();
|
|
910
|
+
async createScheduledTaskStatus(taskName, status) {
|
|
911
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
836
912
|
const doc = typesDatabase.ScheduledTaskSchema.parse({
|
|
837
|
-
|
|
838
|
-
processName: task,
|
|
913
|
+
processName: taskName,
|
|
839
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 = {
|
|
840
925
|
status,
|
|
926
|
+
updated: (/* @__PURE__ */ new Date()).getTime(),
|
|
841
927
|
...result && { result }
|
|
842
|
-
}
|
|
843
|
-
await this.tables?.scheduler.
|
|
928
|
+
};
|
|
929
|
+
await this.tables?.scheduler.updateOne(
|
|
930
|
+
{ _id: taskId },
|
|
931
|
+
{ $set: update },
|
|
932
|
+
{
|
|
933
|
+
upsert: false
|
|
934
|
+
}
|
|
935
|
+
);
|
|
844
936
|
}
|
|
845
937
|
}
|
|
846
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
|
-
|
|
35
|
+
markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise<void>;
|
|
36
|
+
getUnstoredDappUserPoWCommitments(): Promise<PoWCaptchaStored[]>;
|
|
37
37
|
markDappUserPoWCommitmentsStored(challenges: string[]): Promise<void>;
|
|
38
|
-
|
|
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,30 +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
|
-
|
|
311
|
-
|
|
313
|
+
ipAddress,
|
|
314
|
+
result: { status: CaptchaStatus.pending },
|
|
315
|
+
userSubmitted,
|
|
316
|
+
serverChecked,
|
|
317
|
+
difficulty,
|
|
318
|
+
providerSignature,
|
|
319
|
+
userSignature,
|
|
320
|
+
lastUpdatedTimestamp: Date.now(),
|
|
312
321
|
};
|
|
313
322
|
try {
|
|
314
323
|
await tables.powCaptcha.create(powCaptchaRecord);
|
|
315
324
|
this.logger.info("PowCaptcha record added successfully", {
|
|
316
325
|
challenge,
|
|
317
|
-
|
|
318
|
-
|
|
326
|
+
userSubmitted,
|
|
327
|
+
serverChecked,
|
|
328
|
+
storedStatus,
|
|
319
329
|
});
|
|
320
330
|
}
|
|
321
331
|
catch (error) {
|
|
322
332
|
this.logger.error("Failed to add PowCaptcha record", {
|
|
323
333
|
error,
|
|
324
334
|
challenge,
|
|
325
|
-
|
|
335
|
+
userSubmitted,
|
|
336
|
+
serverChecked,
|
|
337
|
+
storedStatus,
|
|
326
338
|
});
|
|
327
339
|
throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
328
|
-
context: {
|
|
340
|
+
context: {
|
|
341
|
+
error,
|
|
342
|
+
challenge,
|
|
343
|
+
userSubmitted,
|
|
344
|
+
serverChecked,
|
|
345
|
+
storedStatus,
|
|
346
|
+
},
|
|
329
347
|
logger: this.logger,
|
|
330
348
|
});
|
|
331
349
|
}
|
|
@@ -338,9 +356,7 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
338
356
|
});
|
|
339
357
|
}
|
|
340
358
|
try {
|
|
341
|
-
const record = await this.tables.powCaptcha
|
|
342
|
-
.findOne({ challenge })
|
|
343
|
-
.lean();
|
|
359
|
+
const record = await this.tables.powCaptcha.findOne({ challenge }).lean();
|
|
344
360
|
if (record) {
|
|
345
361
|
this.logger.info("PowCaptcha record retrieved successfully", {
|
|
346
362
|
challenge,
|
|
@@ -361,33 +377,50 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
361
377
|
});
|
|
362
378
|
}
|
|
363
379
|
}
|
|
364
|
-
async updatePowCaptchaRecord(challenge,
|
|
380
|
+
async updatePowCaptchaRecord(challenge, result, serverChecked = false, userSubmitted = false, userSignature) {
|
|
365
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
|
+
};
|
|
366
390
|
try {
|
|
367
|
-
const updateResult = await tables.powCaptcha.updateOne({ challenge }, {
|
|
391
|
+
const updateResult = await tables.powCaptcha.updateOne({ challenge }, {
|
|
392
|
+
$set: update,
|
|
393
|
+
});
|
|
368
394
|
if (updateResult.matchedCount === 0) {
|
|
369
395
|
this.logger.info("No PowCaptcha record found to update", {
|
|
370
396
|
challenge,
|
|
371
|
-
|
|
397
|
+
...update,
|
|
372
398
|
});
|
|
373
399
|
throw new ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
|
|
374
|
-
context: {
|
|
400
|
+
context: {
|
|
401
|
+
challenge,
|
|
402
|
+
...update,
|
|
403
|
+
},
|
|
375
404
|
logger: this.logger,
|
|
376
405
|
});
|
|
377
406
|
}
|
|
378
407
|
this.logger.info("PowCaptcha record updated successfully", {
|
|
379
408
|
challenge,
|
|
380
|
-
|
|
409
|
+
...update,
|
|
381
410
|
});
|
|
382
411
|
}
|
|
383
412
|
catch (error) {
|
|
384
413
|
this.logger.error("Failed to update PowCaptcha record", {
|
|
385
414
|
error,
|
|
386
415
|
challenge,
|
|
387
|
-
|
|
416
|
+
...update,
|
|
388
417
|
});
|
|
389
418
|
throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
|
|
390
|
-
context: {
|
|
419
|
+
context: {
|
|
420
|
+
error,
|
|
421
|
+
challenge,
|
|
422
|
+
...update,
|
|
423
|
+
},
|
|
391
424
|
logger: this.logger,
|
|
392
425
|
});
|
|
393
426
|
}
|
|
@@ -396,41 +429,69 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
396
429
|
const docs = await this.tables?.usersolution
|
|
397
430
|
.find({ processed: true })
|
|
398
431
|
.lean();
|
|
399
|
-
return docs
|
|
432
|
+
return docs || [];
|
|
400
433
|
}
|
|
401
434
|
async getProcessedDappUserCommitments() {
|
|
402
|
-
const docs = await this.tables?.commitment
|
|
403
|
-
|
|
435
|
+
const docs = await this.tables?.commitment
|
|
436
|
+
.find({ processed: true })
|
|
437
|
+
.lean();
|
|
438
|
+
return docs || [];
|
|
404
439
|
}
|
|
405
|
-
async
|
|
406
|
-
const docs = await this.tables?.commitment
|
|
407
|
-
|
|
440
|
+
async getCheckedDappUserCommitments() {
|
|
441
|
+
const docs = await this.tables?.commitment
|
|
442
|
+
.find({ [StoredStatusNames.serverChecked]: true })
|
|
443
|
+
.lean();
|
|
444
|
+
return docs || [];
|
|
408
445
|
}
|
|
409
446
|
async getUnstoredDappUserCommitments() {
|
|
410
447
|
const docs = await this.tables?.commitment
|
|
411
448
|
.find({
|
|
412
|
-
$or: [
|
|
449
|
+
$or: [
|
|
450
|
+
{ storedStatus: { $ne: StoredStatusNames.stored } },
|
|
451
|
+
{ storedStatus: { $exists: false } },
|
|
452
|
+
],
|
|
413
453
|
})
|
|
414
454
|
.lean();
|
|
415
|
-
return docs
|
|
455
|
+
return docs || [];
|
|
416
456
|
}
|
|
417
457
|
async markDappUserCommitmentsStored(commitmentIds) {
|
|
418
|
-
|
|
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 });
|
|
419
469
|
}
|
|
420
470
|
async getUnstoredDappUserPoWCommitments() {
|
|
421
471
|
const docs = await this.tables?.powCaptcha
|
|
422
472
|
.find({
|
|
423
|
-
$or: [
|
|
473
|
+
$or: [
|
|
474
|
+
{ storedStatus: { $ne: StoredStatusNames.stored } },
|
|
475
|
+
{ storedStatus: { $exists: false } },
|
|
476
|
+
],
|
|
424
477
|
})
|
|
425
478
|
.lean();
|
|
426
479
|
return docs || [];
|
|
427
480
|
}
|
|
428
481
|
async markDappUserPoWCommitmentsStored(challenges) {
|
|
429
|
-
|
|
482
|
+
const updateDoc = {
|
|
483
|
+
storedAtTimestamp: Date.now(),
|
|
484
|
+
};
|
|
485
|
+
await this.tables?.powCaptcha.updateMany({ challenge: { $in: challenges } }, { $set: updateDoc }, { upsert: false });
|
|
430
486
|
}
|
|
431
|
-
async
|
|
432
|
-
const
|
|
433
|
-
|
|
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 });
|
|
434
495
|
}
|
|
435
496
|
async removeProcessedDappUserSolutions(commitmentIds) {
|
|
436
497
|
return await this.tables?.usersolution.deleteMany({
|
|
@@ -444,7 +505,7 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
444
505
|
id: { $in: commitmentIds },
|
|
445
506
|
});
|
|
446
507
|
}
|
|
447
|
-
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp,
|
|
508
|
+
async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtTimestamp, ipAddress) {
|
|
448
509
|
if (!isHex(requestHash)) {
|
|
449
510
|
throw new ProsopoDBError("DATABASE.INVALID_HASH", {
|
|
450
511
|
context: {
|
|
@@ -459,7 +520,8 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
459
520
|
salt,
|
|
460
521
|
requestHash,
|
|
461
522
|
deadlineTimestamp,
|
|
462
|
-
|
|
523
|
+
requestedAtTimestamp,
|
|
524
|
+
ipAddress,
|
|
463
525
|
};
|
|
464
526
|
await this.tables?.pending.updateOne({ requestHash: requestHash }, { $set: pendingRecord }, { upsert: true });
|
|
465
527
|
}
|
|
@@ -488,7 +550,7 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
488
550
|
}
|
|
489
551
|
await this.tables?.pending.updateOne({ requestHash: requestHash }, {
|
|
490
552
|
$set: {
|
|
491
|
-
pending: false,
|
|
553
|
+
[CaptchaStatus.pending]: false,
|
|
492
554
|
},
|
|
493
555
|
}, { upsert: true });
|
|
494
556
|
}
|
|
@@ -593,18 +655,23 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
593
655
|
?.findOne({ id: commitmentId })
|
|
594
656
|
.lean();
|
|
595
657
|
const doc = await commitmentCursor;
|
|
596
|
-
return doc ?
|
|
658
|
+
return doc ? doc : undefined;
|
|
597
659
|
}
|
|
598
|
-
async getDappUserCommitmentByAccount(userAccount) {
|
|
660
|
+
async getDappUserCommitmentByAccount(userAccount, dappAccount) {
|
|
599
661
|
const docs = await this.tables?.commitment
|
|
600
|
-
?.find({ userAccount }, { _id: 0 }, { sort: { _id: -1 } })
|
|
662
|
+
?.find({ userAccount, dappAccount }, { _id: 0 }, { sort: { _id: -1 } })
|
|
601
663
|
.lean();
|
|
602
664
|
return docs ? docs : [];
|
|
603
665
|
}
|
|
604
666
|
async approveDappUserCommitment(commitmentId) {
|
|
605
667
|
try {
|
|
668
|
+
const result = { status: CaptchaStatus.approved };
|
|
669
|
+
const updateDoc = {
|
|
670
|
+
result,
|
|
671
|
+
lastUpdatedTimestamp: Date.now(),
|
|
672
|
+
};
|
|
606
673
|
await this.tables?.commitment
|
|
607
|
-
?.findOneAndUpdate({ id: commitmentId }, { $set:
|
|
674
|
+
?.findOneAndUpdate({ id: commitmentId }, { $set: updateDoc }, { upsert: false })
|
|
608
675
|
.lean();
|
|
609
676
|
}
|
|
610
677
|
catch (err) {
|
|
@@ -613,36 +680,39 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
613
680
|
});
|
|
614
681
|
}
|
|
615
682
|
}
|
|
616
|
-
async
|
|
683
|
+
async disapproveDappUserCommitment(commitmentId, reason) {
|
|
617
684
|
try {
|
|
618
|
-
|
|
619
|
-
|
|
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 })
|
|
620
691
|
.lean();
|
|
621
692
|
}
|
|
622
693
|
catch (err) {
|
|
623
|
-
throw new ProsopoDBError("DATABASE.
|
|
624
|
-
context: { error: err,
|
|
694
|
+
throw new ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", {
|
|
695
|
+
context: { error: err, commitmentId },
|
|
625
696
|
});
|
|
626
697
|
}
|
|
627
698
|
}
|
|
628
|
-
async
|
|
699
|
+
async flagProcessedDappUserSolutions(captchaIds) {
|
|
629
700
|
try {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false })
|
|
701
|
+
await this.tables?.usersolution
|
|
702
|
+
?.updateMany({ captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false })
|
|
633
703
|
.lean();
|
|
634
704
|
}
|
|
635
705
|
catch (err) {
|
|
636
|
-
throw new ProsopoDBError("DATABASE.
|
|
637
|
-
context: { error: err,
|
|
706
|
+
throw new ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
|
|
707
|
+
context: { error: err, captchaIds },
|
|
638
708
|
});
|
|
639
709
|
}
|
|
640
710
|
}
|
|
641
|
-
async
|
|
711
|
+
async flagProcessedDappUserCommitments(commitmentIds) {
|
|
642
712
|
try {
|
|
643
713
|
const distinctCommitmentIds = [...new Set(commitmentIds)];
|
|
644
714
|
await this.tables?.commitment
|
|
645
|
-
?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: {
|
|
715
|
+
?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false })
|
|
646
716
|
.lean();
|
|
647
717
|
}
|
|
648
718
|
catch (err) {
|
|
@@ -651,19 +721,6 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
651
721
|
});
|
|
652
722
|
}
|
|
653
723
|
}
|
|
654
|
-
async getLastBatchCommitTime() {
|
|
655
|
-
const cursor = this.tables?.scheduler
|
|
656
|
-
?.findOne({
|
|
657
|
-
processName: ScheduledTaskNames.BatchCommitment,
|
|
658
|
-
status: ScheduledTaskStatus.Completed,
|
|
659
|
-
})
|
|
660
|
-
.sort({ timestamp: -1 });
|
|
661
|
-
const doc = await cursor?.lean();
|
|
662
|
-
if (doc) {
|
|
663
|
-
return doc.datetime;
|
|
664
|
-
}
|
|
665
|
-
return new Date(0);
|
|
666
|
-
}
|
|
667
724
|
async getScheduledTaskStatus(taskId, status) {
|
|
668
725
|
const cursor = await this.tables?.scheduler
|
|
669
726
|
?.findOne({ taskId: taskId, status: status })
|
|
@@ -681,16 +738,25 @@ export class ProsopoDatabase extends AsyncFactory {
|
|
|
681
738
|
.lean();
|
|
682
739
|
return cursor ? cursor : undefined;
|
|
683
740
|
}
|
|
684
|
-
async
|
|
685
|
-
const now = new Date();
|
|
741
|
+
async createScheduledTaskStatus(taskName, status) {
|
|
742
|
+
const now = new Date().getTime();
|
|
686
743
|
const doc = ScheduledTaskSchema.parse({
|
|
687
|
-
|
|
688
|
-
processName: task,
|
|
744
|
+
processName: taskName,
|
|
689
745
|
datetime: now,
|
|
690
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(),
|
|
691
755
|
...(result && { result }),
|
|
756
|
+
};
|
|
757
|
+
await this.tables?.scheduler.updateOne({ _id: taskId }, { $set: update }, {
|
|
758
|
+
upsert: false,
|
|
692
759
|
});
|
|
693
|
-
await this.tables?.scheduler.create(doc);
|
|
694
760
|
}
|
|
695
761
|
}
|
|
696
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
|
}
|