@prosopo/provider 1.0.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -258
- package/dist/api/admin.d.ts +2 -2
- package/dist/api/admin.d.ts.map +1 -1
- package/dist/api/admin.js +5 -64
- package/dist/api/admin.js.map +1 -1
- package/dist/api/authMiddleware.d.ts +4 -4
- package/dist/api/authMiddleware.d.ts.map +1 -1
- package/dist/api/authMiddleware.js +15 -29
- package/dist/api/authMiddleware.js.map +1 -1
- package/dist/api/captcha.d.ts +2 -2
- package/dist/api/captcha.d.ts.map +1 -1
- package/dist/api/captcha.js +64 -55
- package/dist/api/captcha.js.map +1 -1
- package/dist/api/captchaScheduler.d.ts +2 -2
- package/dist/api/captchaScheduler.d.ts.map +1 -1
- package/dist/api/captchaScheduler.js +11 -10
- package/dist/api/captchaScheduler.js.map +1 -1
- package/dist/api/errorHandler.d.ts +3 -3
- package/dist/api/errorHandler.d.ts.map +1 -1
- package/dist/api/errorHandler.js +7 -3
- package/dist/api/errorHandler.js.map +1 -1
- package/dist/api/verify.d.ts +2 -2
- package/dist/api/verify.d.ts.map +1 -1
- package/dist/api/verify.js +37 -29
- package/dist/api/verify.js.map +1 -1
- package/dist/cjs/api/admin.cjs +2 -89
- package/dist/cjs/api/authMiddleware.cjs +1 -15
- package/dist/cjs/api/captcha.cjs +89 -52
- package/dist/cjs/api/captchaScheduler.cjs +4 -7
- package/dist/cjs/api/errorHandler.cjs +3 -1
- package/dist/cjs/api/verify.cjs +54 -28
- package/dist/cjs/index.cjs +0 -3
- package/dist/cjs/tasks/dataset/datasetTasks.cjs +68 -0
- package/dist/cjs/tasks/dataset/datasetTasksUtils.cjs +34 -0
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +277 -0
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasksUtils.cjs +25 -0
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +107 -0
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +55 -0
- package/dist/cjs/tasks/tasks.cjs +21 -524
- package/dist/cjs/util.cjs +32 -19
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -8
- package/dist/index.js.map +1 -1
- package/dist/tasks/dataset/datasetTasks.d.ts +15 -0
- package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -0
- package/dist/tasks/dataset/datasetTasks.js +40 -0
- package/dist/tasks/dataset/datasetTasks.js.map +1 -0
- package/dist/tasks/dataset/datasetTasksUtils.d.ts +3 -0
- package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +1 -0
- package/dist/tasks/dataset/datasetTasksUtils.js +34 -0
- package/dist/tasks/dataset/datasetTasksUtils.js.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +28 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +212 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +7 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js +18 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +1 -0
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts +13 -0
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -0
- package/dist/tasks/powCaptcha/powTasks.js +66 -0
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -0
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts +5 -0
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -0
- package/dist/tasks/powCaptcha/powTasksUtils.js +49 -0
- package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -0
- package/dist/tasks/tasks.d.ts +12 -43
- package/dist/tasks/tasks.d.ts.map +1 -1
- package/dist/tasks/tasks.js +13 -431
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/tests/index.d.ts +2 -0
- package/dist/tests/index.d.ts.map +1 -0
- package/dist/tests/index.js +2 -0
- package/dist/tests/index.js.map +1 -0
- package/dist/tests/integration/imgCaptcha.test.d.ts +2 -0
- package/dist/tests/integration/imgCaptcha.test.d.ts.map +1 -0
- package/dist/tests/integration/imgCaptcha.test.js +111 -0
- package/dist/tests/integration/imgCaptcha.test.js.map +1 -0
- package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +32 -0
- package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +1 -0
- package/dist/tests/integration/mocks/solvedTestCaptchas.js +1042 -0
- package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -0
- package/dist/tests/integration/powCaptcha.test.d.ts +2 -0
- package/dist/tests/integration/powCaptcha.test.d.ts.map +1 -0
- package/dist/tests/integration/powCaptcha.test.js +171 -0
- package/dist/tests/integration/powCaptcha.test.js.map +1 -0
- package/dist/tests/unit/api/authMiddleware.test.d.ts +2 -0
- package/dist/tests/unit/api/authMiddleware.test.d.ts.map +1 -0
- package/dist/tests/unit/api/authMiddleware.test.js +87 -0
- package/dist/tests/unit/api/authMiddleware.test.js.map +1 -0
- package/dist/tests/unit/api/captchaScheduler.test.d.ts +2 -0
- package/dist/tests/unit/api/captchaScheduler.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captchaScheduler.test.js +47 -0
- package/dist/tests/unit/api/captchaScheduler.test.js.map +1 -0
- package/dist/tests/unit/api/errorHandler.test.d.ts +2 -0
- package/dist/tests/unit/api/errorHandler.test.d.ts.map +1 -0
- package/dist/tests/unit/api/errorHandler.test.js +65 -0
- package/dist/tests/unit/api/errorHandler.test.js.map +1 -0
- package/dist/tests/unit/tasks/dataset/datasetTasks.test.d.ts +2 -0
- package/dist/tests/unit/tasks/dataset/datasetTasks.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/dataset/datasetTasks.test.js +88 -0
- package/dist/tests/unit/tasks/dataset/datasetTasks.test.js.map +1 -0
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.d.ts +2 -0
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.js +75 -0
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.js.map +1 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.d.ts +2 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.js +260 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.js.map +1 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.d.ts +2 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.js +46 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.js.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.test.d.ts +2 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.test.js +133 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.test.js.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.d.ts +2 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.js +94 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.js.map +1 -0
- package/dist/util.d.ts +2 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +10 -8
- package/dist/util.js.map +1 -1
- package/package.json +73 -86
- package/vite.cjs.config.ts +3 -3
- package/vite.test.config.ts +12 -12
- package/dist/batch/commitments.d.ts +0 -24
- package/dist/batch/commitments.d.ts.map +0 -1
- package/dist/batch/commitments.js +0 -130
- package/dist/batch/commitments.js.map +0 -1
- package/dist/batch/index.d.ts +0 -2
- package/dist/batch/index.d.ts.map +0 -1
- package/dist/batch/index.js +0 -2
- package/dist/batch/index.js.map +0 -1
- package/dist/cjs/batch/commitments.cjs +0 -158
- package/dist/cjs/batch/index.cjs +0 -4
- package/dist/scheduler.d.ts +0 -4
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js +0 -21
- package/dist/scheduler.js.map +0 -1
- package/dist/tests/accounts.d.ts +0 -12
- package/dist/tests/accounts.d.ts.map +0 -1
- package/dist/tests/accounts.js +0 -35
- package/dist/tests/accounts.js.map +0 -1
- package/dist/tests/contract/helpers.test.d.ts +0 -6
- package/dist/tests/contract/helpers.test.d.ts.map +0 -1
- package/dist/tests/contract/helpers.test.js +0 -54
- package/dist/tests/contract/helpers.test.js.map +0 -1
- package/dist/tests/dataUtils/DatabaseAccounts.d.ts +0 -35
- package/dist/tests/dataUtils/DatabaseAccounts.d.ts.map +0 -1
- package/dist/tests/dataUtils/DatabaseAccounts.js +0 -84
- package/dist/tests/dataUtils/DatabaseAccounts.js.map +0 -1
- package/dist/tests/dataUtils/DatabasePopulator.d.ts +0 -73
- package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +0 -1
- package/dist/tests/dataUtils/DatabasePopulator.js +0 -326
- package/dist/tests/dataUtils/DatabasePopulator.js.map +0 -1
- package/dist/tests/dataUtils/dapp-example-contract/dapp.json +0 -648
- package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts +0 -4
- package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts.map +0 -1
- package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js +0 -27
- package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js.map +0 -1
- package/dist/tests/dataUtils/funds.d.ts +0 -9
- package/dist/tests/dataUtils/funds.d.ts.map +0 -1
- package/dist/tests/dataUtils/funds.js +0 -105
- package/dist/tests/dataUtils/funds.js.map +0 -1
- package/dist/tests/dataUtils/populateDatabase.d.ts +0 -16
- package/dist/tests/dataUtils/populateDatabase.d.ts.map +0 -1
- package/dist/tests/dataUtils/populateDatabase.js +0 -72
- package/dist/tests/dataUtils/populateDatabase.js.map +0 -1
- package/dist/tests/getUser.d.ts +0 -4
- package/dist/tests/getUser.d.ts.map +0 -1
- package/dist/tests/getUser.js +0 -18
- package/dist/tests/getUser.js.map +0 -1
- package/dist/tests/tasks/tasks.test.d.ts +0 -6
- package/dist/tests/tasks/tasks.test.d.ts.map +0 -1
- package/dist/tests/tasks/tasks.test.js +0 -636
- package/dist/tests/tasks/tasks.test.js.map +0 -1
- package/dist/tests/util.test.d.ts +0 -2
- package/dist/tests/util.test.d.ts.map +0 -1
- package/dist/tests/util.test.js +0 -23
- package/dist/tests/util.test.js.map +0 -1
package/dist/tasks/tasks.d.ts
CHANGED
|
@@ -1,51 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { SubmittableResult } from '@polkadot/api/submittable';
|
|
1
|
+
import type { KeyringPair } from "@polkadot/keyring/types";
|
|
2
|
+
import { type Logger } from "@prosopo/common";
|
|
3
|
+
import { type CaptchaConfig, type ProsopoConfigOutput } from "@prosopo/types";
|
|
4
|
+
import type { Database } from "@prosopo/types-database";
|
|
5
|
+
import type { ProviderEnvironment } from "@prosopo/types-env";
|
|
6
|
+
import { DatasetManager } from "./dataset/datasetTasks.js";
|
|
7
|
+
import { ImgCaptchaManager } from "./imgCaptcha/imgCaptchaTasks.js";
|
|
8
|
+
import { PowCaptchaManager } from "./powCaptcha/powTasks.js";
|
|
10
9
|
export declare class Tasks {
|
|
11
|
-
contract: ProsopoCaptchaContract;
|
|
12
10
|
db: Database;
|
|
13
11
|
captchaConfig: CaptchaConfig;
|
|
14
|
-
captchaSolutionConfig: CaptchaSolutionConfig;
|
|
15
12
|
logger: Logger;
|
|
16
13
|
config: ProsopoConfigOutput;
|
|
14
|
+
pair: KeyringPair;
|
|
15
|
+
powCaptchaManager: PowCaptchaManager;
|
|
16
|
+
datasetManager: DatasetManager;
|
|
17
|
+
imgCaptchaManager: ImgCaptchaManager;
|
|
17
18
|
constructor(env: ProviderEnvironment);
|
|
18
|
-
providerSetDatasetFromFile(file: JSON): Promise<SubmittableResult | undefined>;
|
|
19
|
-
providerSetDataset(datasetRaw: DatasetRaw): Promise<SubmittableResult | undefined>;
|
|
20
|
-
getCaptchaWithProof(datasetId: Hash, solved: boolean, size: number): Promise<CaptchaWithProof[]>;
|
|
21
|
-
getPowCaptchaChallenge(userAccount: string, dappAccount: string, origin: string): Promise<PoWCaptcha>;
|
|
22
|
-
verifyPowCaptchaSolution(blockNumber: number, challenge: string, difficulty: number, signature: string, nonce: number, timeout: number): Promise<boolean>;
|
|
23
|
-
serverVerifyPowCaptchaSolution(dappAccount: string, challenge: string, timeout: number): Promise<boolean>;
|
|
24
|
-
dappUserSolution(userAccount: string, dappAccount: string, requestHash: string, captchas: CaptchaSolution[], signature: string): Promise<DappUserSolutionResult>;
|
|
25
|
-
dappIsActive(dappAccount: string): Promise<boolean>;
|
|
26
|
-
providerStatus(): Promise<ProviderRegistered>;
|
|
27
|
-
validateReceivedCaptchasAgainstStoredCaptchas(captchas: CaptchaSolution[]): Promise<{
|
|
28
|
-
storedCaptchas: Captcha[];
|
|
29
|
-
receivedCaptchas: CaptchaSolution[];
|
|
30
|
-
captchaIds: string[];
|
|
31
|
-
}>;
|
|
32
|
-
buildTreeAndGetCommitmentId(captchaSolutions: CaptchaSolution[]): Promise<{
|
|
33
|
-
tree: CaptchaMerkleTree;
|
|
34
|
-
commitmentId: string;
|
|
35
|
-
}>;
|
|
36
|
-
validateDappUserSolutionRequestIsPending(requestHash: string, pendingRecord: PendingCaptchaRequest, userAccount: string, captchaIds: string[]): Promise<boolean>;
|
|
37
|
-
getRandomCaptchasAndRequestHash(datasetId: string, userAccount: string): Promise<{
|
|
38
|
-
captchas: CaptchaWithProof[];
|
|
39
|
-
requestHash: string;
|
|
40
|
-
}>;
|
|
41
|
-
isRecentBlock(contract: ContractPromise, header: Header, blockNo: number, depth?: number): Promise<boolean>;
|
|
42
|
-
validateProviderWasRandomlyChosen(userAccount: string, dappContractAccount: string, datasetId: string | Hash, blockNumber: number): Promise<void>;
|
|
43
|
-
private getPaymentInfo;
|
|
44
|
-
getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord>;
|
|
45
|
-
getDappUserCommitmentByAccount(userAccount: string): Promise<UserCommitmentRecord | undefined>;
|
|
46
|
-
getProviderDetails(): Promise<ProviderDetails>;
|
|
47
|
-
getProviderDataset(datasetId: string): Promise<DatasetWithIds>;
|
|
48
|
-
saveCaptchaEvent(events: StoredEvents, accountId: string): Promise<void>;
|
|
49
|
-
storeCommitmentsExternal(): Promise<void>;
|
|
50
19
|
}
|
|
51
20
|
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAA8B,MAAM,iBAAiB,CAAC;AAc1E,OAAO,EACN,KAAK,aAAa,EAGlB,KAAK,mBAAmB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,qBAAa,KAAK;IACjB,EAAE,EAAE,QAAQ,CAAC;IACb,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;gBAEzB,GAAG,EAAE,mBAAmB;CA0BpC"}
|
package/dist/tasks/tasks.js
CHANGED
|
@@ -1,440 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { getCurrentBlockNumber, verifyRecency, wrapQuery } from '@prosopo/contract';
|
|
6
|
-
import { at } from '@prosopo/util';
|
|
7
|
-
import { hexToU8a } from '@polkadot/util/hex';
|
|
8
|
-
import { randomAsHex } from '@polkadot/util-crypto/random';
|
|
9
|
-
import { saveCaptchaEvent, saveCaptchas } from '@prosopo/database';
|
|
10
|
-
import { sha256 } from '@noble/hashes/sha256';
|
|
11
|
-
import { shuffleArray } from '../util.js';
|
|
12
|
-
import { signatureVerify } from '@polkadot/util-crypto/signature';
|
|
13
|
-
import { stringToHex } from '@polkadot/util/string';
|
|
14
|
-
import { u8aToHex } from '@polkadot/util';
|
|
15
|
-
const POW_SEPARATOR = '___';
|
|
1
|
+
import { ProsopoEnvError, getLogger } from "@prosopo/common";
|
|
2
|
+
import { DatasetManager } from "./dataset/datasetTasks.js";
|
|
3
|
+
import { ImgCaptchaManager } from "./imgCaptcha/imgCaptchaTasks.js";
|
|
4
|
+
import { PowCaptchaManager } from "./powCaptcha/powTasks.js";
|
|
16
5
|
export class Tasks {
|
|
17
6
|
constructor(env) {
|
|
18
|
-
if (!env.contractInterface) {
|
|
19
|
-
throw new ProsopoEnvError('CONTRACT.CONTRACT_UNDEFINED', {
|
|
20
|
-
context: { failedFuncName: this.constructor.name, contractAddress: env.contractAddress },
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
7
|
this.config = env.config;
|
|
24
|
-
this.
|
|
25
|
-
this.db = env.db;
|
|
8
|
+
this.db = env.getDb();
|
|
26
9
|
this.captchaConfig = env.config.captchas;
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const datasetRaw = parseCaptchaDataset(file);
|
|
32
|
-
this.logger.debug('Parsed raw data set');
|
|
33
|
-
return await this.providerSetDataset(datasetRaw);
|
|
34
|
-
}
|
|
35
|
-
async providerSetDataset(datasetRaw) {
|
|
36
|
-
if (datasetRaw.captchas.length < this.config.captchas.solved.count + this.config.captchas.unsolved.count) {
|
|
37
|
-
throw new ProsopoEnvError('DATASET.CAPTCHAS_COUNT_LESS_THAN_CONFIGURED', {
|
|
38
|
-
context: { failedFuncName: this.providerSetDataset.name },
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
const solutions = datasetRaw.captchas
|
|
42
|
-
.map((captcha) => (captcha.solution ? 1 : 0))
|
|
43
|
-
.reduce((partialSum, b) => partialSum + b, 0);
|
|
44
|
-
if (solutions < this.config.captchas.solved.count) {
|
|
45
|
-
throw new ProsopoEnvError('DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED', {
|
|
46
|
-
context: { failedFuncName: this.providerSetDataset.name },
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
if (solutions < this.config.captchas.unsolved.count) {
|
|
50
|
-
throw new ProsopoEnvError('DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED', {
|
|
51
|
-
context: { failedFuncName: this.providerSetDataset.name },
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
const dataset = await buildDataset(datasetRaw);
|
|
55
|
-
if (!dataset.datasetId || !dataset.datasetContentId) {
|
|
56
|
-
throw new ProsopoEnvError('DATASET.DATASET_ID_UNDEFINED', {
|
|
57
|
-
context: { failedFuncName: this.providerSetDataset.name },
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
await this.db?.storeDataset(dataset);
|
|
61
|
-
await wrapQuery(this.contract.query.providerSetDataset, this.contract.query)(dataset.datasetId, dataset.datasetContentId);
|
|
62
|
-
const txResult = await this.contract.methods.providerSetDataset(dataset.datasetId, dataset.datasetContentId, {
|
|
63
|
-
value: 0,
|
|
64
|
-
});
|
|
65
|
-
return txResult.result;
|
|
66
|
-
}
|
|
67
|
-
async getCaptchaWithProof(datasetId, solved, size) {
|
|
68
|
-
const captchaDocs = await this.db.getRandomCaptcha(solved, datasetId, size);
|
|
69
|
-
if (captchaDocs) {
|
|
70
|
-
const captchas = [];
|
|
71
|
-
for (const captcha of captchaDocs) {
|
|
72
|
-
const datasetDetails = await this.db.getDatasetDetails(datasetId);
|
|
73
|
-
const tree = new CaptchaMerkleTree();
|
|
74
|
-
if (datasetDetails.contentTree) {
|
|
75
|
-
tree.layers = datasetDetails.contentTree;
|
|
76
|
-
const proof = tree.proof(captcha.captchaContentId);
|
|
77
|
-
delete captcha.solution;
|
|
78
|
-
captcha.items = shuffleArray(captcha.items);
|
|
79
|
-
captchas.push({ captcha, proof });
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return captchas;
|
|
83
|
-
}
|
|
84
|
-
throw new ProsopoEnvError('DATABASE.CAPTCHA_GET_FAILED', {
|
|
85
|
-
context: { failedFuncName: this.getCaptchaWithProof.name, datasetId, solved, size },
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async getPowCaptchaChallenge(userAccount, dappAccount, origin) {
|
|
89
|
-
const difficulty = 4;
|
|
90
|
-
const latestHeader = await this.contract.api.rpc.chain.getHeader();
|
|
91
|
-
const latestBlockNumber = latestHeader.number.toNumber();
|
|
92
|
-
const challenge = `${latestBlockNumber}___${userAccount}___${dappAccount}`;
|
|
93
|
-
const signature = u8aToHex(this.contract.pair.sign(stringToHex(challenge)));
|
|
94
|
-
return { challenge, difficulty, signature };
|
|
95
|
-
}
|
|
96
|
-
async verifyPowCaptchaSolution(blockNumber, challenge, difficulty, signature, nonce, timeout) {
|
|
97
|
-
const recent = verifyRecency(this.contract.api, blockNumber, timeout);
|
|
98
|
-
if (!recent) {
|
|
99
|
-
throw new ProsopoContractError('CONTRACT.INVALID_BLOCKHASH', {
|
|
100
|
-
context: {
|
|
101
|
-
ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1000} seconds`,
|
|
102
|
-
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
103
|
-
blockNumber,
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
const signatureVerification = signatureVerify(stringToHex(challenge), signature, this.contract.pair.address);
|
|
108
|
-
if (!signatureVerification.isValid) {
|
|
109
|
-
throw new ProsopoContractError('GENERAL.INVALID_SIGNATURE', {
|
|
110
|
-
context: {
|
|
111
|
-
ERROR: 'Provider signature is invalid for this message',
|
|
112
|
-
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
113
|
-
signature,
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
const solutionValid = Array.from(sha256(new TextEncoder().encode(nonce + challenge)))
|
|
118
|
-
.map((byte) => byte.toString(16).padStart(2, '0'))
|
|
119
|
-
.join('')
|
|
120
|
-
.startsWith('0'.repeat(difficulty));
|
|
121
|
-
if (!solutionValid) {
|
|
122
|
-
throw new ProsopoContractError('API.CAPTCHA_FAILED', {
|
|
123
|
-
context: {
|
|
124
|
-
ERROR: 'Captcha solution is invalid',
|
|
125
|
-
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
126
|
-
nonce,
|
|
127
|
-
challenge,
|
|
128
|
-
difficulty,
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
await this.db.storePowCaptchaRecord(challenge, false);
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
async serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout) {
|
|
136
|
-
const challengeRecord = await this.db.getPowCaptchaRecordByChallenge(challenge);
|
|
137
|
-
if (!challengeRecord) {
|
|
138
|
-
throw new ProsopoEnvError('DATABASE.CAPTCHA_GET_FAILED', {
|
|
139
|
-
context: { failedFuncName: this.serverVerifyPowCaptchaSolution.name, challenge },
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
if (challengeRecord.checked) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
const [blocknumber, userAccount, challengeDappAccount] = challengeRecord.challenge.split(POW_SEPARATOR);
|
|
146
|
-
if (dappAccount !== challengeDappAccount) {
|
|
147
|
-
throw new ProsopoEnvError('CAPTCHA.DAPP_USER_SOLUTION_NOT_FOUND', {
|
|
148
|
-
context: {
|
|
149
|
-
failedFuncName: this.serverVerifyPowCaptchaSolution.name,
|
|
150
|
-
dappAccount,
|
|
151
|
-
challengeDappAccount,
|
|
152
|
-
},
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
if (!blocknumber) {
|
|
156
|
-
throw new ProsopoContractError('CONTRACT.INVALID_BLOCKHASH', {
|
|
157
|
-
context: {
|
|
158
|
-
ERROR: 'Block number not provided',
|
|
159
|
-
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
160
|
-
blocknumber,
|
|
161
|
-
},
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
const recent = verifyRecency(this.contract.api, parseInt(blocknumber), timeout);
|
|
165
|
-
if (!recent) {
|
|
166
|
-
throw new ProsopoContractError('CONTRACT.INVALID_BLOCKHASH', {
|
|
167
|
-
context: {
|
|
168
|
-
ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1000} seconds`,
|
|
169
|
-
failedFuncName: this.verifyPowCaptchaSolution.name,
|
|
170
|
-
blocknumber,
|
|
171
|
-
},
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
await this.db.updatePowCaptchaRecord(challengeRecord.challenge, true);
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
async dappUserSolution(userAccount, dappAccount, requestHash, captchas, signature) {
|
|
178
|
-
if (!(await this.dappIsActive(dappAccount))) {
|
|
179
|
-
throw new ProsopoEnvError('CONTRACT.DAPP_NOT_ACTIVE', {
|
|
180
|
-
context: { failedFuncName: this.getPaymentInfo.name, dappAccount },
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
const verification = signatureVerify(stringToHex(requestHash), signature, userAccount);
|
|
184
|
-
if (!verification.isValid) {
|
|
185
|
-
throw new ProsopoEnvError('GENERAL.INVALID_SIGNATURE', {
|
|
186
|
-
context: { failedFuncName: this.dappUserSolution.name, userAccount },
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
let response = {
|
|
190
|
-
captchas: [],
|
|
191
|
-
verified: false,
|
|
192
|
-
};
|
|
193
|
-
const { storedCaptchas, receivedCaptchas, captchaIds } = await this.validateReceivedCaptchasAgainstStoredCaptchas(captchas);
|
|
194
|
-
const { tree, commitmentId } = await this.buildTreeAndGetCommitmentId(receivedCaptchas);
|
|
195
|
-
const provider = (await this.contract.methods.getProvider(this.contract.pair.address, {})).value
|
|
196
|
-
.unwrap()
|
|
197
|
-
.unwrap();
|
|
198
|
-
const pendingRecord = await this.db.getDappUserPending(requestHash);
|
|
199
|
-
const pendingRequest = await this.validateDappUserSolutionRequestIsPending(requestHash, pendingRecord, userAccount, captchaIds);
|
|
200
|
-
const userSignature = hexToU8a(signature);
|
|
201
|
-
const blockNumber = await getCurrentBlockNumber(this.contract.api);
|
|
202
|
-
if (pendingRequest) {
|
|
203
|
-
await this.db.updateDappUserPendingStatus(requestHash);
|
|
204
|
-
const commit = {
|
|
205
|
-
id: commitmentId,
|
|
206
|
-
userAccount: userAccount,
|
|
207
|
-
dappContract: dappAccount,
|
|
208
|
-
providerAccount: this.contract.pair.address,
|
|
209
|
-
datasetId: provider.datasetId.toString(),
|
|
210
|
-
status: CaptchaStatus.pending,
|
|
211
|
-
userSignature: Array.from(userSignature),
|
|
212
|
-
requestedAt: pendingRecord.requestedAtBlock,
|
|
213
|
-
completedAt: blockNumber,
|
|
214
|
-
processed: false,
|
|
215
|
-
batched: false,
|
|
216
|
-
stored: false,
|
|
217
|
-
};
|
|
218
|
-
await this.db.storeDappUserSolution(receivedCaptchas, commit);
|
|
219
|
-
if (compareCaptchaSolutions(receivedCaptchas, storedCaptchas)) {
|
|
220
|
-
response = {
|
|
221
|
-
captchas: captchaIds.map((id) => ({
|
|
222
|
-
captchaId: id,
|
|
223
|
-
proof: tree.proof(id),
|
|
224
|
-
})),
|
|
225
|
-
verified: true,
|
|
226
|
-
};
|
|
227
|
-
await this.db.approveDappUserCommitment(commitmentId);
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
response = {
|
|
231
|
-
captchas: captchaIds.map((id) => ({
|
|
232
|
-
captchaId: id,
|
|
233
|
-
proof: [[]],
|
|
234
|
-
})),
|
|
235
|
-
verified: false,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return response;
|
|
240
|
-
}
|
|
241
|
-
async dappIsActive(dappAccount) {
|
|
242
|
-
const dapp = await wrapQuery(this.contract.query.getDapp, this.contract.query)(dappAccount);
|
|
243
|
-
return dapp.status.toString() === 'Active';
|
|
244
|
-
}
|
|
245
|
-
async providerStatus() {
|
|
246
|
-
try {
|
|
247
|
-
const provider = await wrapQuery(this.contract.query.getProvider, this.contract.query)(this.contract.pair.address);
|
|
248
|
-
return { status: provider.status ? 'Registered' : 'Unregistered' };
|
|
249
|
-
}
|
|
250
|
-
catch (e) {
|
|
251
|
-
return { status: 'Unregistered' };
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
async validateReceivedCaptchasAgainstStoredCaptchas(captchas) {
|
|
255
|
-
const receivedCaptchas = parseAndSortCaptchaSolutions(captchas);
|
|
256
|
-
const captchaIds = receivedCaptchas.map((captcha) => captcha.captchaId);
|
|
257
|
-
const storedCaptchas = await this.db.getCaptchaById(captchaIds);
|
|
258
|
-
if (!storedCaptchas || receivedCaptchas.length !== storedCaptchas.length) {
|
|
259
|
-
throw new ProsopoEnvError('CAPTCHA.INVALID_CAPTCHA_ID', {
|
|
260
|
-
context: {
|
|
261
|
-
failedFuncName: this.validateReceivedCaptchasAgainstStoredCaptchas.name,
|
|
262
|
-
captchas,
|
|
263
|
-
},
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
if (!storedCaptchas.every((captcha) => captcha.datasetId === at(storedCaptchas, 0).datasetId)) {
|
|
267
|
-
throw new ProsopoEnvError('CAPTCHA.DIFFERENT_DATASET_IDS', {
|
|
268
|
-
context: {
|
|
269
|
-
failedFuncName: this.validateReceivedCaptchasAgainstStoredCaptchas.name,
|
|
270
|
-
captchas,
|
|
271
|
-
},
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
return { storedCaptchas, receivedCaptchas, captchaIds };
|
|
275
|
-
}
|
|
276
|
-
async buildTreeAndGetCommitmentId(captchaSolutions) {
|
|
277
|
-
const tree = new CaptchaMerkleTree();
|
|
278
|
-
const solutionsHashed = captchaSolutions.map((captcha) => computeCaptchaSolutionHash(captcha));
|
|
279
|
-
tree.build(solutionsHashed);
|
|
280
|
-
const commitmentId = tree.root?.hash;
|
|
281
|
-
if (!commitmentId) {
|
|
282
|
-
throw new ProsopoEnvError('CONTRACT.CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST', {
|
|
283
|
-
context: {
|
|
284
|
-
failedFuncName: this.buildTreeAndGetCommitmentId.name,
|
|
285
|
-
commitmentId: commitmentId,
|
|
286
|
-
},
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
return { tree, commitmentId };
|
|
290
|
-
}
|
|
291
|
-
async validateDappUserSolutionRequestIsPending(requestHash, pendingRecord, userAccount, captchaIds) {
|
|
292
|
-
const currentTime = Date.now();
|
|
293
|
-
if (pendingRecord.deadlineTimestamp < currentTime) {
|
|
294
|
-
this.logger.info('Deadline for responding to captcha has expired');
|
|
295
|
-
return false;
|
|
296
|
-
}
|
|
297
|
-
if (pendingRecord) {
|
|
298
|
-
const pendingHashComputed = computePendingRequestHash(captchaIds, userAccount, pendingRecord.salt);
|
|
299
|
-
return requestHash === pendingHashComputed;
|
|
300
|
-
}
|
|
301
|
-
return false;
|
|
302
|
-
}
|
|
303
|
-
async getRandomCaptchasAndRequestHash(datasetId, userAccount) {
|
|
304
|
-
const dataset = await this.db.getDatasetDetails(datasetId);
|
|
305
|
-
if (!dataset) {
|
|
306
|
-
throw new ProsopoEnvError('DATABASE.DATASET_GET_FAILED');
|
|
307
|
-
}
|
|
308
|
-
const unsolvedCount = Math.abs(Math.trunc(this.captchaConfig.unsolved.count));
|
|
309
|
-
const solvedCount = Math.abs(Math.trunc(this.captchaConfig.solved.count));
|
|
310
|
-
if (!solvedCount) {
|
|
311
|
-
throw new ProsopoEnvError('CONFIG.INVALID_CAPTCHA_NUMBER');
|
|
312
|
-
}
|
|
313
|
-
const solved = await this.getCaptchaWithProof(datasetId, true, solvedCount);
|
|
314
|
-
let unsolved = [];
|
|
315
|
-
if (unsolvedCount) {
|
|
316
|
-
unsolved = await this.getCaptchaWithProof(datasetId, false, unsolvedCount);
|
|
317
|
-
}
|
|
318
|
-
const captchas = shuffleArray([...solved, ...unsolved]);
|
|
319
|
-
const salt = randomAsHex();
|
|
320
|
-
const requestHash = computePendingRequestHash(captchas.map((c) => c.captcha.captchaId), userAccount, salt);
|
|
321
|
-
const currentTime = Date.now();
|
|
322
|
-
const timeLimit = captchas
|
|
323
|
-
.map((captcha) => captcha.captcha.timeLimitMs || DEFAULT_IMAGE_CAPTCHA_TIMEOUT)
|
|
324
|
-
.reduce((a, b) => a + b, 0);
|
|
325
|
-
const deadlineTs = timeLimit + currentTime;
|
|
326
|
-
const currentBlockNumber = await getCurrentBlockNumber(this.contract.api);
|
|
327
|
-
await this.db.storeDappUserPending(userAccount, requestHash, salt, deadlineTs, currentBlockNumber);
|
|
328
|
-
return { captchas, requestHash };
|
|
329
|
-
}
|
|
330
|
-
async isRecentBlock(contract, header, blockNo, depth = this.captchaSolutionConfig.captchaBlockRecency) {
|
|
331
|
-
if (depth == 0) {
|
|
332
|
-
return false;
|
|
333
|
-
}
|
|
334
|
-
const headerBlockNo = header.number.toPrimitive();
|
|
335
|
-
if (headerBlockNo === blockNo) {
|
|
336
|
-
return true;
|
|
337
|
-
}
|
|
338
|
-
const parent = await contract.api.rpc.chain.getBlock(header.parentHash);
|
|
339
|
-
return this.isRecentBlock(contract, parent.block.header, blockNo, depth - 1);
|
|
340
|
-
}
|
|
341
|
-
async validateProviderWasRandomlyChosen(userAccount, dappContractAccount, datasetId, blockNumber) {
|
|
342
|
-
const contract = await this.contract.contract;
|
|
343
|
-
if (!contract) {
|
|
344
|
-
throw new ProsopoEnvError('CONTRACT.CONTRACT_UNDEFINED', {
|
|
345
|
-
context: { failedFuncName: this.validateProviderWasRandomlyChosen.name },
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
const header = await contract.api.rpc.chain.getHeader();
|
|
349
|
-
const isBlockNoValid = await this.isRecentBlock(contract, header, blockNumber);
|
|
350
|
-
if (!isBlockNoValid) {
|
|
351
|
-
throw new ProsopoEnvError('CAPTCHA.INVALID_BLOCK_NO', {
|
|
352
|
-
context: {
|
|
353
|
-
failedFuncName: this.validateProviderWasRandomlyChosen.name,
|
|
354
|
-
userAccount,
|
|
355
|
-
dappContractAccount,
|
|
356
|
-
datasetId,
|
|
357
|
-
header,
|
|
358
|
-
blockNumber,
|
|
359
|
-
},
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
const block = (await contract.api.rpc.chain.getBlockHash(blockNumber));
|
|
363
|
-
const randomProviderAndBlockNo = await this.contract.queryAtBlock(block, 'getRandomActiveProvider', [userAccount, dappContractAccount]);
|
|
364
|
-
if (datasetId.toString().localeCompare(randomProviderAndBlockNo.provider.datasetId.toString())) {
|
|
365
|
-
throw new ProsopoEnvError('DATASET.INVALID_DATASET_ID', {
|
|
366
|
-
context: {
|
|
367
|
-
failedFuncName: this.validateProviderWasRandomlyChosen.name,
|
|
368
|
-
randomProviderAndBlockNo,
|
|
369
|
-
},
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
async getPaymentInfo(userAccount, blockHash, txHash) {
|
|
374
|
-
const signedBlock = (await this.contract.api.rpc.chain.getBlock(blockHash));
|
|
375
|
-
if (!signedBlock) {
|
|
376
|
-
return null;
|
|
377
|
-
}
|
|
378
|
-
const extrinsic = signedBlock.block.extrinsics.find((extrinsic) => extrinsic.hash.toString() === txHash);
|
|
379
|
-
if (!extrinsic || extrinsic.signer.toString() !== userAccount) {
|
|
380
|
-
return null;
|
|
381
|
-
}
|
|
382
|
-
const paymentInfo = (await this.contract.api.rpc.payment.queryInfo(extrinsic.toHex(), blockHash));
|
|
383
|
-
if (!paymentInfo) {
|
|
384
|
-
return null;
|
|
385
|
-
}
|
|
386
|
-
return paymentInfo;
|
|
387
|
-
}
|
|
388
|
-
async getDappUserCommitmentById(commitmentId) {
|
|
389
|
-
const dappUserSolution = await this.db.getDappUserCommitmentById(commitmentId);
|
|
390
|
-
if (!dappUserSolution) {
|
|
391
|
-
throw new ProsopoEnvError('CAPTCHA.DAPP_USER_SOLUTION_NOT_FOUND', {
|
|
392
|
-
context: {
|
|
393
|
-
failedFuncName: this.getDappUserCommitmentById.name,
|
|
394
|
-
commitmentId: commitmentId,
|
|
395
|
-
},
|
|
10
|
+
this.logger = getLogger(env.config.logLevel, "Tasks");
|
|
11
|
+
if (!env.pair) {
|
|
12
|
+
throw new ProsopoEnvError("DEVELOPER.MISSING_PROVIDER_PAIR", {
|
|
13
|
+
context: { failedFuncName: "Tasks.constructor" },
|
|
396
14
|
});
|
|
397
15
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
if (dappUserSolutions.length > 0) {
|
|
403
|
-
for (const dappUserSolution of dappUserSolutions) {
|
|
404
|
-
if (dappUserSolution.status === CaptchaStatus.approved) {
|
|
405
|
-
return dappUserSolution;
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
return undefined;
|
|
410
|
-
}
|
|
411
|
-
async getProviderDetails() {
|
|
412
|
-
const provider = await wrapQuery(this.contract.query.getProvider, this.contract.query)(this.contract.pair.address);
|
|
413
|
-
const dbConnectionOk = await this.getCaptchaWithProof(provider.datasetId, true, 1)
|
|
414
|
-
.then(() => true)
|
|
415
|
-
.catch(() => false);
|
|
416
|
-
return { provider, dbConnectionOk };
|
|
417
|
-
}
|
|
418
|
-
async getProviderDataset(datasetId) {
|
|
419
|
-
return await this.db.getDataset(datasetId);
|
|
420
|
-
}
|
|
421
|
-
async saveCaptchaEvent(events, accountId) {
|
|
422
|
-
if (!this.config.devOnlyWatchEvents || !this.config.mongoEventsUri) {
|
|
423
|
-
this.logger.info('Dev watch events not set to true, not saving events');
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
await saveCaptchaEvent(events, accountId, this.config.mongoEventsUri);
|
|
427
|
-
}
|
|
428
|
-
async storeCommitmentsExternal() {
|
|
429
|
-
if (!this.config.mongoCaptchaUri) {
|
|
430
|
-
this.logger.info('Mongo env not set');
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
const commitments = await this.db.getUnstoredDappUserCommitments();
|
|
434
|
-
this.logger.info(`Storing ${commitments.length} commitments externally`);
|
|
435
|
-
await saveCaptchas(commitments, this.config.mongoCaptchaUri);
|
|
436
|
-
const commitIds = commitments.map((commitment) => commitment.id);
|
|
437
|
-
await this.db.markDappUserCommitmentsStored(commitIds);
|
|
16
|
+
this.pair = env.pair;
|
|
17
|
+
this.powCaptchaManager = new PowCaptchaManager(this.pair, this.db);
|
|
18
|
+
this.datasetManager = new DatasetManager(this.config, this.logger, this.captchaConfig, this.db);
|
|
19
|
+
this.imgCaptchaManager = new ImgCaptchaManager(this.db, this.pair, this.logger, this.captchaConfig);
|
|
438
20
|
}
|
|
439
21
|
}
|
|
440
22
|
//# sourceMappingURL=tasks.js.map
|
package/dist/tasks/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tasks/tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAsB1E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,MAAM,OAAO,KAAK;IAUjB,YAAY,GAAwB;QACnC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,eAAe,CAAC,iCAAiC,EAAE;gBAC5D,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE;aAChD,CAAC,CAAC;SACH;QACD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAErB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,EAAE,CACP,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC7C,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,CAClB,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imgCaptcha.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/imgCaptcha.test.ts"],"names":[],"mappings":""}
|