@prosopo/datasets 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.
Files changed (45) hide show
  1. package/dist/captcha/captcha.d.ts +3 -3
  2. package/dist/captcha/captcha.d.ts.map +1 -1
  3. package/dist/captcha/captcha.js +49 -37
  4. package/dist/captcha/captcha.js.map +1 -1
  5. package/dist/captcha/dataset.d.ts +2 -2
  6. package/dist/captcha/dataset.d.ts.map +1 -1
  7. package/dist/captcha/dataset.js +15 -13
  8. package/dist/captcha/dataset.js.map +1 -1
  9. package/dist/captcha/index.d.ts +4 -4
  10. package/dist/captcha/index.d.ts.map +1 -1
  11. package/dist/captcha/index.js +4 -4
  12. package/dist/captcha/index.js.map +1 -1
  13. package/dist/captcha/merkle.d.ts +2 -1
  14. package/dist/captcha/merkle.d.ts.map +1 -1
  15. package/dist/captcha/merkle.js +22 -5
  16. package/dist/captcha/merkle.js.map +1 -1
  17. package/dist/captcha/util.d.ts.map +1 -1
  18. package/dist/captcha/util.js +9 -4
  19. package/dist/captcha/util.js.map +1 -1
  20. package/dist/cjs/captcha/captcha.cjs +56 -42
  21. package/dist/cjs/captcha/dataset.cjs +14 -9
  22. package/dist/cjs/captcha/merkle.cjs +22 -3
  23. package/dist/cjs/captcha/util.cjs +7 -2
  24. package/dist/cjs/tests/mocks/data/captchas.cjs +6 -2
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/tests/captcha.test.js +149 -138
  30. package/dist/tests/captcha.test.js.map +1 -1
  31. package/dist/tests/dataset.test.js +53 -51
  32. package/dist/tests/dataset.test.js.map +1 -1
  33. package/dist/tests/merkle.test.js +86 -51
  34. package/dist/tests/merkle.test.js.map +1 -1
  35. package/dist/tests/mocks/data/captchas.d.ts +1 -1
  36. package/dist/tests/mocks/data/captchas.d.ts.map +1 -1
  37. package/dist/tests/mocks/data/captchas.js +608 -606
  38. package/dist/tests/mocks/data/captchas.js.map +1 -1
  39. package/dist/tests/mocks/data/captchas1.json +108 -27
  40. package/dist/tests/mocks/data/captchas2.json +144 -36
  41. package/dist/tests/mocks/data/captchas3.json +108 -27
  42. package/dist/tests/mocks/data/captchas4.json +108 -27
  43. package/package.json +70 -76
  44. package/vite.cjs.config.ts +3 -3
  45. package/vite.test.config.ts +12 -12
@@ -1,4 +1,4 @@
1
- import { AssetsResolver, Captcha, CaptchaSolution, CaptchaWithoutId, DatasetRaw, HashedItem, HashedSolution, Item, RawSolution } from '@prosopo/types';
1
+ import { type AssetsResolver, type Captcha, type CaptchaSolution, type CaptchaWithoutId, type DatasetRaw, type HashedItem, type HashedSolution, type Item, type RawSolution } from "@prosopo/types";
2
2
  export declare const NO_SOLUTION_VALUE = "NO_SOLUTION";
3
3
  export declare function parseCaptchaDataset(datasetJSON: JSON): DatasetRaw;
4
4
  export declare function parseAndSortCaptchaSolutions(captchaJSON: CaptchaSolution[]): CaptchaSolution[];
@@ -10,11 +10,11 @@ export declare function sortAndComputeHashes(received: CaptchaSolution[], stored
10
10
  hash: string;
11
11
  }[];
12
12
  export declare function compareCaptchaSolutions(received: CaptchaSolution[], stored: Captcha[]): boolean;
13
- export declare function computeCaptchaHash(captcha: CaptchaWithoutId, includeSolution: boolean | undefined, includeSalt: boolean | undefined, sortItemHashes: boolean): string;
13
+ export declare function computeCaptchaHash(captcha: CaptchaWithoutId, includeSolution: boolean, includeSalt: boolean, sortItemHashes: boolean): string;
14
14
  export declare function getSolutionValueToHash(solution?: HashedSolution[] | RawSolution[]): number[] | string[];
15
15
  export declare function computeItemHash(item: Item): Promise<HashedItem>;
16
16
  export declare function matchItemsToSolutions(solutions: RawSolution[] | HashedSolution[], items: HashedItem[] | undefined): HashedSolution[];
17
17
  export declare function computeCaptchaSolutionHash(captcha: CaptchaSolution): string;
18
- export declare function computePendingRequestHash(captchaIds: string[], userAccount: string, salt: string): string;
18
+ export declare function computePendingRequestHash(captchaIds: string[], userAccount: string | number[], salt: string): string;
19
19
  export declare function parseCaptchaAssets(item: Item, assetsResolver: AssetsResolver | undefined): Item;
20
20
  //# sourceMappingURL=captcha.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/captcha/captcha.ts"],"names":[],"mappings":"AAaA,OAAO,EACH,cAAc,EACd,OAAO,EACP,eAAe,EAEf,gBAAgB,EAChB,UAAU,EAEV,UAAU,EACV,cAAc,EACd,IAAI,EACJ,WAAW,EACd,MAAM,gBAAgB,CAAA;AAMvB,eAAO,MAAM,iBAAiB,gBAAgB,CAAA;AAO9C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,CAsBjE;AAOD,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAS9F;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAEtE;AAED,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,eAAe,EAAE,EAC3B,MAAM,EAAE,OAAO,EAAE,GAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAyBvC;AAQD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAO/F;AAUD,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,eAAe,qBAAQ,EACvB,WAAW,qBAAQ,EACnB,cAAc,EAAE,OAAO,GACxB,MAAM,CAyBR;AAMD,wBAAgB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,uBAEjF;AAMD,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAQrE;AAQD,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,EAC3C,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,GAChC,cAAc,EAAE,CAsBlB;AAOD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,UAElE;AASD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzG;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAE/F"}
1
+ {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/captcha/captcha.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,MAAM,gBAAgB,CAAC;AAIxB,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAO/C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,CA+BjE;AAOD,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,eAAe,EAAE,GAC5B,eAAe,EAAE,CAWnB;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAEtE;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,eAAe,EAAE,EAC3B,MAAM,EAAE,OAAO,EAAE,GACf;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CA2BvC;AAQD,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,eAAe,EAAE,EAC3B,MAAM,EAAE,OAAO,EAAE,GACf,OAAO,CAOT;AAUD,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,OAAO,GACrB,MAAM,CA0BR;AAMD,wBAAgB,sBAAsB,CACrC,QAAQ,CAAC,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,uBAG3C;AAMD,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAQrE;AAQD,wBAAgB,qBAAqB,CACpC,SAAS,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,EAC3C,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,GAC7B,cAAc,EAAE,CAsBlB;AAOD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,UAOlE;AASD,wBAAgB,yBAAyB,CACxC,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAC9B,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAOD,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,GAAG,SAAS,GACxC,IAAI,CAKN"}
@@ -1,9 +1,9 @@
1
- import { CaptchaSolutionArraySchema, DatasetWithNumericSolutionSchema, } from '@prosopo/types';
2
- import { ProsopoDatasetError, ProsopoEnvError, hexHash, hexHashArray } from '@prosopo/common';
3
- import { at } from '@prosopo/util';
4
- import { downloadImage } from './util.js';
5
- import { isHex } from '@polkadot/util';
6
- export const NO_SOLUTION_VALUE = 'NO_SOLUTION';
1
+ import { isHex } from "@polkadot/util";
2
+ import { ProsopoDatasetError, ProsopoEnvError, hexHash, hexHashArray, } from "@prosopo/common";
3
+ import { CaptchaSolutionArraySchema, DatasetWithNumericSolutionSchema, } from "@prosopo/types";
4
+ import { at } from "@prosopo/util";
5
+ import { downloadImage } from "./util.js";
6
+ export const NO_SOLUTION_VALUE = "NO_SOLUTION";
7
7
  export function parseCaptchaDataset(datasetJSON) {
8
8
  try {
9
9
  const result = DatasetWithNumericSolutionSchema.parse(datasetJSON);
@@ -12,8 +12,12 @@ export function parseCaptchaDataset(datasetJSON) {
12
12
  captchas: result.captchas.map((captcha) => {
13
13
  return {
14
14
  ...captcha,
15
- solution: captcha.solution ? matchItemsToSolutions(captcha.solution, captcha.items) : [],
16
- unlabelled: captcha.unlabelled ? matchItemsToSolutions(captcha.unlabelled, captcha.items) : [],
15
+ solution: captcha.solution
16
+ ? matchItemsToSolutions(captcha.solution, captcha.items)
17
+ : [],
18
+ unlabelled: captcha.unlabelled
19
+ ? matchItemsToSolutions(captcha.unlabelled, captcha.items)
20
+ : [],
17
21
  };
18
22
  }),
19
23
  };
@@ -28,7 +32,9 @@ export function parseCaptchaDataset(datasetJSON) {
28
32
  return result2;
29
33
  }
30
34
  catch (err) {
31
- throw new ProsopoDatasetError('DATASET.DATASET_PARSE_ERROR', { context: { error: err } });
35
+ throw new ProsopoDatasetError("DATASET.DATASET_PARSE_ERROR", {
36
+ context: { error: err },
37
+ });
32
38
  }
33
39
  }
34
40
  export function parseAndSortCaptchaSolutions(captchaJSON) {
@@ -39,7 +45,9 @@ export function parseAndSortCaptchaSolutions(captchaJSON) {
39
45
  }));
40
46
  }
41
47
  catch (err) {
42
- throw new ProsopoDatasetError('DATASET.SOLUTION_PARSE_ERROR', { context: { error: err } });
48
+ throw new ProsopoDatasetError("DATASET.SOLUTION_PARSE_ERROR", {
49
+ context: { error: err },
50
+ });
43
51
  }
44
52
  }
45
53
  export function captchaSort(a, b) {
@@ -48,10 +56,10 @@ export function captchaSort(a, b) {
48
56
  export function sortAndComputeHashes(received, stored) {
49
57
  received.sort(captchaSort);
50
58
  stored.sort(captchaSort);
51
- return stored.map(({ salt, items = [], target = '', captchaId, solved }, index) => {
59
+ return stored.map(({ salt, items = [], target = "", captchaId, solved }, index) => {
52
60
  const item = at(received, index);
53
- if (captchaId != item.captchaId) {
54
- throw new ProsopoEnvError('CAPTCHA.ID_MISMATCH');
61
+ if (captchaId !== item.captchaId) {
62
+ throw new ProsopoEnvError("CAPTCHA.ID_MISMATCH");
55
63
  }
56
64
  return {
57
65
  hash: computeCaptchaHash({
@@ -71,73 +79,77 @@ export function compareCaptchaSolutions(received, stored) {
71
79
  }
72
80
  return false;
73
81
  }
74
- export function computeCaptchaHash(captcha, includeSolution = false, includeSalt = false, sortItemHashes) {
82
+ export function computeCaptchaHash(captcha, includeSolution, includeSalt, sortItemHashes) {
75
83
  try {
76
84
  const itemHashes = captcha.items.map((item, index) => {
77
85
  if (item.hash) {
78
86
  return item.hash;
79
87
  }
80
- else {
81
- throw new ProsopoDatasetError('CAPTCHA.MISSING_ITEM_HASH', {
82
- context: {
83
- computeCaptchaHashName: computeCaptchaHash.name,
84
- index,
85
- },
86
- });
87
- }
88
+ throw new ProsopoDatasetError("CAPTCHA.MISSING_ITEM_HASH", {
89
+ context: {
90
+ computeCaptchaHashName: computeCaptchaHash.name,
91
+ index,
92
+ },
93
+ });
88
94
  });
89
95
  return hexHashArray([
90
96
  captcha.target,
91
97
  ...(includeSolution ? getSolutionValueToHash(captcha.solution) : []),
92
- includeSalt ? captcha.salt : '',
98
+ includeSalt ? captcha.salt : "",
93
99
  sortItemHashes ? itemHashes.sort() : itemHashes,
94
100
  ]);
95
101
  }
96
102
  catch (err) {
97
- throw new ProsopoDatasetError('DATASET.HASH_ERROR', { context: { error: err } });
103
+ throw new ProsopoDatasetError("DATASET.HASH_ERROR", {
104
+ context: { error: err },
105
+ });
98
106
  }
99
107
  }
100
108
  export function getSolutionValueToHash(solution) {
101
109
  return solution !== undefined ? solution.sort() : [NO_SOLUTION_VALUE];
102
110
  }
103
111
  export async function computeItemHash(item) {
104
- if (item.type === 'text') {
112
+ if (item.type === "text") {
105
113
  return { ...item, hash: hexHash(item.data) };
106
114
  }
107
- else if (item.type === 'image') {
115
+ if (item.type === "image") {
108
116
  return { ...item, hash: hexHash(await downloadImage(item.data)) };
109
117
  }
110
- else {
111
- throw new ProsopoDatasetError('CAPTCHA.INVALID_ITEM_FORMAT');
112
- }
118
+ throw new ProsopoDatasetError("CAPTCHA.INVALID_ITEM_FORMAT");
113
119
  }
114
120
  export function matchItemsToSolutions(solutions, items) {
115
121
  if (!items) {
116
122
  return [];
117
123
  }
118
124
  return solutions.map((solution) => {
119
- if (typeof solution === 'string' && isHex(solution)) {
125
+ if (typeof solution === "string" && isHex(solution)) {
120
126
  if (!items?.some((item) => item.hash === solution)) {
121
- throw new ProsopoDatasetError('CAPTCHA.INVALID_ITEM_HASH');
127
+ throw new ProsopoDatasetError("CAPTCHA.INVALID_ITEM_HASH");
122
128
  }
123
129
  return solution;
124
130
  }
125
- else if (typeof solution === 'number') {
131
+ if (typeof solution === "number") {
126
132
  const item = at(items, solution);
127
133
  return item.hash;
128
134
  }
129
- else {
130
- throw new ProsopoDatasetError('CAPTCHA.INVALID_SOLUTION_TYPE');
131
- }
135
+ throw new ProsopoDatasetError("CAPTCHA.INVALID_SOLUTION_TYPE");
132
136
  });
133
137
  }
134
138
  export function computeCaptchaSolutionHash(captcha) {
135
- return hexHashArray([captcha.captchaId, captcha.captchaContentId, [...captcha.solution].sort(), captcha.salt]);
139
+ return hexHashArray([
140
+ captcha.captchaId,
141
+ captcha.captchaContentId,
142
+ [...captcha.solution].sort(),
143
+ captcha.salt,
144
+ ]);
136
145
  }
137
146
  export function computePendingRequestHash(captchaIds, userAccount, salt) {
138
147
  return hexHashArray([...captchaIds.sort(), userAccount, salt]);
139
148
  }
140
149
  export function parseCaptchaAssets(item, assetsResolver) {
141
- return { ...item, data: assetsResolver?.resolveAsset(item.data).getURL() || item.data };
150
+ return {
151
+ ...item,
152
+ data: assetsResolver?.resolveAsset(item.data).getURL() || item.data,
153
+ };
142
154
  }
143
155
  //# sourceMappingURL=captcha.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/captcha/captcha.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/captcha/captcha.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { Captcha, Dataset, DatasetRaw } from '@prosopo/types';
2
- import { CaptchaMerkleTree } from './merkle.js';
1
+ import type { Captcha, Dataset, DatasetRaw } from "@prosopo/types";
2
+ import { CaptchaMerkleTree } from "./merkle.js";
3
3
  export declare function hashDatasetItems(datasetRaw: Dataset | DatasetRaw): Promise<Promise<Captcha>[]>;
4
4
  export declare function validateDatasetContent(datasetOriginal: Dataset): Promise<boolean>;
5
5
  export declare function buildDataset(datasetRaw: DatasetRaw): Promise<Dataset>;
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../src/captcha/dataset.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAoB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAO/C,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAQpG;AAMD,wBAAsB,sBAAsB,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBvF;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB3E;AAED,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,OAAO,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAY5B;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAc1E"}
1
+ {"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../src/captcha/dataset.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,OAAO,EAEP,OAAO,EACP,UAAU,EACV,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,wBAAsB,gBAAgB,CACrC,UAAU,EAAE,OAAO,GAAG,UAAU,GAC9B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAU7B;AAMD,wBAAsB,sBAAsB,CAC3C,eAAe,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,CAAC,CAwBlB;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB3E;AAED,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,OAAO,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAY5B;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAgB1E"}
@@ -1,8 +1,8 @@
1
- import { CaptchaMerkleTree } from './merkle.js';
2
- import { ProsopoEnvError, getLogger } from '@prosopo/common';
3
- import { at } from '@prosopo/util';
4
- import { computeCaptchaHash, computeItemHash, matchItemsToSolutions } from './captcha.js';
5
- const logger = getLogger(`Info`, `dataset.ts`);
1
+ import { ProsopoEnvError, getLogger } from "@prosopo/common";
2
+ import { at } from "@prosopo/util";
3
+ import { computeCaptchaHash, computeItemHash, matchItemsToSolutions, } from "./captcha.js";
4
+ import { CaptchaMerkleTree } from "./merkle.js";
5
+ const logger = getLogger("Info", "dataset.ts");
6
6
  export async function hashDatasetItems(datasetRaw) {
7
7
  return datasetRaw.captchas.map(async (captcha) => {
8
8
  const items = await Promise.all(captcha.items.map(async (item) => computeItemHash(item)));
@@ -20,20 +20,20 @@ export async function validateDatasetContent(datasetOriginal) {
20
20
  captchas,
21
21
  };
22
22
  const hashes = dataset.captchas.map((captcha) => {
23
- const captchaRaw = datasetOriginal.captchas.find((captchaRaw) => 'captchaId' in captchaRaw ? captchaRaw.captchaId === captcha.captchaId : false);
23
+ const captchaRaw = datasetOriginal.captchas.find((captchaRaw) => "captchaId" in captchaRaw
24
+ ? captchaRaw.captchaId === captcha.captchaId
25
+ : false);
24
26
  if (captchaRaw) {
25
27
  return captcha.items.every((item, index) => item.hash === at(captchaRaw.items, index).hash);
26
28
  }
27
- else {
28
- return false;
29
- }
29
+ return false;
30
30
  });
31
31
  return hashes.every((hash) => hash);
32
32
  }
33
33
  export async function buildDataset(datasetRaw) {
34
- logger.debug(`Adding solution hashes to dataset`);
34
+ logger.debug("Adding solution hashes to dataset");
35
35
  const dataset = await addSolutionHashesToDataset(datasetRaw);
36
- logger.debug(`Building dataset merkle trees`);
36
+ logger.debug("Building dataset merkle trees");
37
37
  const contentTree = await buildCaptchaTree(dataset, false, false, true);
38
38
  const solutionTree = await buildCaptchaTree(dataset, true, true, false);
39
39
  dataset.captchas = dataset.captchas.map((captcha, index) => ({
@@ -58,7 +58,7 @@ export async function buildCaptchaTree(dataset, includeSolution, includeSalt, so
58
58
  return tree;
59
59
  }
60
60
  catch (err) {
61
- throw new ProsopoEnvError('DATASET.HASH_ERROR');
61
+ throw new ProsopoEnvError("DATASET.HASH_ERROR");
62
62
  }
63
63
  }
64
64
  export function addSolutionHashesToDataset(datasetRaw) {
@@ -66,7 +66,9 @@ export function addSolutionHashesToDataset(datasetRaw) {
66
66
  return {
67
67
  ...captcha,
68
68
  items: captcha.items,
69
- ...(captcha.solution !== undefined && { solution: matchItemsToSolutions(captcha.solution, captcha.items) }),
69
+ ...(captcha.solution !== undefined && {
70
+ solution: matchItemsToSolutions(captcha.solution, captcha.items),
71
+ }),
70
72
  };
71
73
  });
72
74
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../../src/captcha/dataset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../../src/captcha/dataset.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export * from './captcha.js';
2
- export * from './merkle.js';
3
- export * from './util.js';
4
- export * from './dataset.js';
1
+ export * from "./captcha.js";
2
+ export * from "./merkle.js";
3
+ export * from "./util.js";
4
+ export * from "./dataset.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/captcha/index.ts"],"names":[],"mappings":"AAaA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/captcha/index.ts"],"names":[],"mappings":"AAaA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -1,5 +1,5 @@
1
- export * from './captcha.js';
2
- export * from './merkle.js';
3
- export * from './util.js';
4
- export * from './dataset.js';
1
+ export * from "./captcha.js";
2
+ export * from "./merkle.js";
3
+ export * from "./util.js";
4
+ export * from "./dataset.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/captcha/index.ts"],"names":[],"mappings":"AAaA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/captcha/index.ts"],"names":[],"mappings":"AAaA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- import { MerkleLayer, MerkleLeaf, MerkleNodeInterface, MerkleProof } from '@prosopo/types';
1
+ import type { MerkleLayer, MerkleLeaf, MerkleNodeInterface, MerkleProof } from "@prosopo/types";
2
2
  declare class MerkleNode implements MerkleNodeInterface {
3
3
  hash: string;
4
4
  parent: string | null;
@@ -9,6 +9,7 @@ export declare class CaptchaMerkleTree {
9
9
  layers: MerkleLayer[];
10
10
  root: MerkleNode | undefined;
11
11
  constructor();
12
+ getRoot(): MerkleNode;
12
13
  build(leaves: string[]): void;
13
14
  buildMerkleTree(leaves: MerkleNode[]): MerkleNode[];
14
15
  createParent(leftChild: MerkleNode, rightChild: MerkleNode): MerkleNode;
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/captcha/merkle.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAA;AAI5G,cAAM,UAAW,YAAW,mBAAmB;IAC3C,IAAI,EAAE,MAAM,CAAA;IAEZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;gBAET,IAAI,EAAE,MAAM;CAI3B;AAED,qBAAa,iBAAiB;IAC1B,MAAM,EAAE,UAAU,EAAE,CAAA;IAEpB,MAAM,EAAE,WAAW,EAAE,CAAA;IAErB,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;;IAO5B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;IAetB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;IA4BnD,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU;IAOvE,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW;CAiC3C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAmBzE"}
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/captcha/merkle.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,WAAW,EAEX,MAAM,gBAAgB,CAAC;AAGxB,cAAM,UAAW,YAAW,mBAAmB;IAC9C,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEV,IAAI,EAAE,MAAM;CAIxB;AAED,qBAAa,iBAAiB;IAC7B,MAAM,EAAE,UAAU,EAAE,CAAC;IAErB,MAAM,EAAE,WAAW,EAAE,CAAC;IAEtB,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;;IAO7B,OAAO;IAYP,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;IAetB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;IA+BnD,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU;IASvE,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW;CAsCxC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAmBzE"}
@@ -1,5 +1,5 @@
1
- import { ProsopoError, hexHashArray } from '@prosopo/common';
2
- import { at } from '@prosopo/util';
1
+ import { ProsopoError, hexHashArray } from "@prosopo/common";
2
+ import { at } from "@prosopo/util";
3
3
  class MerkleNode {
4
4
  constructor(hash) {
5
5
  this.hash = hash;
@@ -11,6 +11,17 @@ export class CaptchaMerkleTree {
11
11
  this.leaves = [];
12
12
  this.layers = [];
13
13
  }
14
+ getRoot() {
15
+ if (this.root === undefined) {
16
+ throw new ProsopoError("DATASET.MERKLE_ERROR", {
17
+ context: {
18
+ error: "root undefined",
19
+ failedFuncName: this.getRoot.name,
20
+ },
21
+ });
22
+ }
23
+ return this.root;
24
+ }
14
25
  build(leaves) {
15
26
  if (this.layers.length) {
16
27
  this.layers = [];
@@ -35,7 +46,9 @@ export class CaptchaMerkleTree {
35
46
  while (leafIndex < numLeaves) {
36
47
  const leftChild = leaves[leafIndex];
37
48
  if (leftChild === undefined) {
38
- throw new ProsopoError('DEVELOPER.GENERAL', { context: { error: 'leftChild undefined' } });
49
+ throw new ProsopoError("DEVELOPER.GENERAL", {
50
+ context: { error: "leftChild undefined" },
51
+ });
39
52
  }
40
53
  const rightChild = leafIndex + 1 < numLeaves ? at(leaves, leafIndex + 1) : leftChild;
41
54
  const parentNode = this.createParent(leftChild, rightChild);
@@ -58,8 +71,12 @@ export class CaptchaMerkleTree {
58
71
  while (layerNum < this.layers.length - 1) {
59
72
  const layer = this.layers[layerNum];
60
73
  if (layer === undefined) {
61
- throw new ProsopoError('DATASET.MERKLE_ERROR', {
62
- context: { error: 'layer undefined', failedFuncName: this.proof.name, layerNum },
74
+ throw new ProsopoError("DATASET.MERKLE_ERROR", {
75
+ context: {
76
+ error: "layer undefined",
77
+ failedFuncName: this.proof.name,
78
+ layerNum,
79
+ },
63
80
  });
64
81
  }
65
82
  const leafIndex = layer.indexOf(leafHash);
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/captcha/merkle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/captcha/merkle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/captcha/util.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAapE"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/captcha/util.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBpE"}
@@ -1,17 +1,22 @@
1
- import { ProsopoDatasetError, ProsopoEnvError } from '@prosopo/common';
1
+ import { ProsopoDatasetError, ProsopoEnvError } from "@prosopo/common";
2
2
  export async function downloadImage(url) {
3
3
  try {
4
4
  const response = await fetch(url);
5
5
  if (!response.ok) {
6
- throw new ProsopoDatasetError('API.BAD_REQUEST', {
7
- context: { error: `Network response was not ok, status: ${response.status}`, url },
6
+ throw new ProsopoDatasetError("API.BAD_REQUEST", {
7
+ context: {
8
+ error: `Network response was not ok, status: ${response.status}`,
9
+ url,
10
+ },
8
11
  });
9
12
  }
10
13
  const buffer = await response.arrayBuffer();
11
14
  return new Uint8Array(buffer);
12
15
  }
13
16
  catch (err) {
14
- throw new ProsopoEnvError('DATABASE.IMAGE_GET_FAILED', { context: { error: err } });
17
+ throw new ProsopoEnvError("DATABASE.IMAGE_GET_FAILED", {
18
+ context: { error: err },
19
+ });
15
20
  }
16
21
  }
17
22
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/captcha/util.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC3C,IAAI;QACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACd,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;gBAC7C,OAAO,EAAE,EAAE,KAAK,EAAE,wCAAwC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE;aACrF,CAAC,CAAA;SACL;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC3C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;KAChC;IAAC,OAAO,GAAG,EAAE;QACV,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;KACtF;AACL,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/captcha/util.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC9C,IAAI;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE;gBAChD,OAAO,EAAE;oBACR,KAAK,EAAE,wCAAwC,QAAQ,CAAC,MAAM,EAAE;oBAChE,GAAG;iBACH;aACD,CAAC,CAAC;SACH;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;KAC9B;IAAC,OAAO,GAAG,EAAE;QACb,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;YACtD,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACvB,CAAC,CAAC;KACH;AACF,CAAC"}