stated-protocol-parser 1.0.4 → 1.0.5

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 (54) hide show
  1. package/dist/constants.js +19 -16
  2. package/dist/constants.js.map +1 -1
  3. package/dist/esm/constants.d.ts +47 -0
  4. package/dist/esm/constants.d.ts.map +1 -0
  5. package/dist/esm/constants.js +47 -0
  6. package/dist/esm/constants.js.map +1 -0
  7. package/dist/esm/hash.browser.d.ts +31 -0
  8. package/dist/esm/hash.browser.d.ts.map +1 -0
  9. package/dist/esm/hash.browser.js +58 -0
  10. package/dist/esm/hash.browser.js.map +1 -0
  11. package/dist/esm/hash.node.d.ts +31 -0
  12. package/dist/esm/hash.node.d.ts.map +1 -0
  13. package/dist/esm/hash.node.js +43 -0
  14. package/dist/esm/hash.node.js.map +1 -0
  15. package/dist/esm/hash.test.d.ts +2 -0
  16. package/dist/esm/hash.test.d.ts.map +1 -0
  17. package/dist/esm/hash.test.js +181 -0
  18. package/dist/esm/hash.test.js.map +1 -0
  19. package/dist/esm/index.d.ts +44 -0
  20. package/dist/esm/index.d.ts.map +1 -0
  21. package/dist/esm/index.js +643 -0
  22. package/dist/esm/index.js.map +1 -0
  23. package/dist/esm/index.test.d.ts +2 -0
  24. package/dist/esm/index.test.d.ts.map +1 -0
  25. package/dist/esm/index.test.js +293 -0
  26. package/dist/esm/index.test.js.map +1 -0
  27. package/dist/esm/types.d.ts +149 -0
  28. package/dist/esm/types.d.ts.map +1 -0
  29. package/dist/esm/types.js +2 -0
  30. package/dist/esm/types.js.map +1 -0
  31. package/dist/esm/utils.d.ts +4 -0
  32. package/dist/esm/utils.d.ts.map +1 -0
  33. package/dist/esm/utils.js +23 -0
  34. package/dist/esm/utils.js.map +1 -0
  35. package/dist/esm/v3.d.ts +5 -0
  36. package/dist/esm/v3.d.ts.map +1 -0
  37. package/dist/esm/v3.js +60 -0
  38. package/dist/esm/v3.js.map +1 -0
  39. package/dist/hash.browser.js +12 -5
  40. package/dist/hash.browser.js.map +1 -1
  41. package/dist/hash.node.js +17 -7
  42. package/dist/hash.node.js.map +1 -1
  43. package/dist/hash.test.js +40 -38
  44. package/dist/hash.test.js.map +1 -1
  45. package/dist/index.js +95 -46
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.test.js +26 -24
  48. package/dist/index.test.js.map +1 -1
  49. package/dist/types.js +2 -1
  50. package/dist/utils.js +17 -12
  51. package/dist/utils.js.map +1 -1
  52. package/dist/v3.js +7 -3
  53. package/dist/v3.js.map +1 -1
  54. package/package.json +6 -13
package/dist/esm/v3.js ADDED
@@ -0,0 +1,60 @@
1
+ import { UTCFormat } from './constants';
2
+ export const parsePollV3 = (s, version) => {
3
+ const pollRegex = new RegExp(''
4
+ + /^\n\tType: Poll\n/.source
5
+ + /(?:\tPoll type: (?<pollType>[^\n]+?)\n)?/.source
6
+ + /(?:\tWho can vote: (?<scopeDescription>[^\n]+?)\n)?/.source
7
+ + /(?:\tLink to query defining who can vote: (?<scopeQueryLink>[^\n]+?)\n)?/.source
8
+ + /(?:\tCountry scope: (?<country>[^\n]+?)\n)?/.source
9
+ + /(?:\tCity scope: (?<city>[^\n]+?)\n)?/.source
10
+ + /(?:\tLegal form scope: (?<legalEntity>[^\n]+?)\n)?/.source
11
+ + /(?:\tDomain scope: (?<domainScope>[^\n]+?)\n)?/.source
12
+ + /(?:\tThe decision is finalized when the following nodes agree: (?<judges>[^\n]+?)\n)?/.source
13
+ + /(?:\tVoting deadline: (?<deadline>[^\n]+?)\n)?/.source
14
+ + /\tPoll: (?<poll>[^\n]+?)\n/.source
15
+ + /(?:\tOption 1: (?<option1>[^\n]+?)\n)?/.source
16
+ + /(?:\tOption 2: (?<option2>[^\n]+?)\n)?/.source
17
+ + /(?:\tOption 3: (?<option3>[^\n]+?)\n)?/.source
18
+ + /(?:\tOption 4: (?<option4>[^\n]+?)\n)?/.source
19
+ + /(?:\tOption 5: (?<option5>[^\n]+?)\n)?/.source
20
+ + /$/.source);
21
+ const match = s.match(pollRegex);
22
+ if (!match)
23
+ throw new Error("Invalid poll format: " + s);
24
+ const m = {
25
+ pollType: match[1],
26
+ scopeDescription: match[2],
27
+ scopeQueryLink: match[3],
28
+ country: match[4],
29
+ city: match[5],
30
+ legalEntity: match[6],
31
+ domainScope: match[7],
32
+ judges: match[8],
33
+ deadline: match[9],
34
+ poll: match[10],
35
+ option1: match[11],
36
+ option2: match[12],
37
+ option3: match[13],
38
+ option4: match[14],
39
+ option5: match[15]
40
+ };
41
+ const options = [m.option1, m.option2, m.option3, m.option4, m.option5].filter(o => o);
42
+ const domainScope = m.domainScope?.split(', ');
43
+ const deadlineStr = m.deadline;
44
+ if (!deadlineStr.match(UTCFormat))
45
+ throw new Error("Invalid poll, deadline must be in UTC: " + deadlineStr);
46
+ return {
47
+ pollType: m['pollType'],
48
+ country: m['country'],
49
+ scopeDescription: m['scopeDescription'],
50
+ scopeQueryLink: m['scopeQueryLink'],
51
+ city: m['city'],
52
+ legalEntity: m['legalEntity'],
53
+ domainScope: (domainScope && domainScope.length > 0) ? domainScope : undefined,
54
+ judges: m['judges'],
55
+ deadline: new Date(deadlineStr),
56
+ poll: m['poll'],
57
+ options
58
+ };
59
+ };
60
+ //# sourceMappingURL=v3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3.js","sourceRoot":"","sources":["../../src/v3.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,17 @@
1
+ "use strict";
1
2
  /**
2
3
  * Browser-compatible hash utilities using Web Crypto API
3
4
  * Async operations for client-side use
4
5
  */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.toUrlSafeBase64 = exports.fromUrlSafeBase64 = exports.verify = exports.sha256 = void 0;
5
8
  /**
6
9
  * Compute SHA-256 hash of a string and return it as URL-safe base64
7
10
  * Works in both browser and Node.js environments
8
11
  * @param input - The string or buffer to hash
9
12
  * @returns URL-safe base64 encoded hash
10
13
  */
11
- export const sha256 = async (input) => {
14
+ const sha256 = async (input) => {
12
15
  let data;
13
16
  if (typeof input === 'string') {
14
17
  const encoder = new TextEncoder();
@@ -26,33 +29,37 @@ export const sha256 = async (input) => {
26
29
  const urlSafe = base64.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
27
30
  return urlSafe;
28
31
  };
32
+ exports.sha256 = sha256;
29
33
  /**
30
34
  * Verify that content matches a given hash
31
35
  * @param content - The content to verify
32
36
  * @param hash - The expected hash
33
37
  * @returns True if the hash matches
34
38
  */
35
- export const verify = async (content, hash) => {
36
- const computed = await sha256(content);
39
+ const verify = async (content, hash) => {
40
+ const computed = await (0, exports.sha256)(content);
37
41
  return computed === hash;
38
42
  };
43
+ exports.verify = verify;
39
44
  /**
40
45
  * Convert URL-safe base64 back to standard base64
41
46
  * @param urlSafe - URL-safe base64 string
42
47
  * @returns Standard base64 string with padding
43
48
  */
44
- export const fromUrlSafeBase64 = (urlSafe) => {
49
+ const fromUrlSafeBase64 = (urlSafe) => {
45
50
  const base64 = urlSafe.replace(/-/g, '+').replace(/_/g, '/');
46
51
  // Add padding if needed
47
52
  const padding = '='.repeat((4 - (base64.length % 4)) % 4);
48
53
  return base64 + padding;
49
54
  };
55
+ exports.fromUrlSafeBase64 = fromUrlSafeBase64;
50
56
  /**
51
57
  * Convert standard base64 to URL-safe base64
52
58
  * @param base64 - Standard base64 string
53
59
  * @returns URL-safe base64 string without padding
54
60
  */
55
- export const toUrlSafeBase64 = (base64) => {
61
+ const toUrlSafeBase64 = (base64) => {
56
62
  return base64.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
57
63
  };
64
+ exports.toUrlSafeBase64 = toUrlSafeBase64;
58
65
  //# sourceMappingURL=hash.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash.browser.js","sourceRoot":"","sources":["../src/hash.browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,KAA0B,EAAmB,EAAE;IACxE,IAAI,IAAgB,CAAC;IAErB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,KAAK,CAAC;IACjB,CAAC;IAED,yEAAyE;IACzE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzD,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAEvD,kEAAkE;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjF,OAAO,OAAO,CAAC;AACnB,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,OAA4B,EAAE,IAAY,EAAoB,EAAE;IACzF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,QAAQ,KAAK,IAAI,CAAC;AAC7B,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,wBAAwB;IACxB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,OAAO,CAAC;AAC5B,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC,CAAA"}
1
+ {"version":3,"file":"hash.browser.js","sourceRoot":"","sources":["../src/hash.browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;;GAKG;AACI,MAAM,MAAM,GAAG,KAAK,EAAE,KAA0B,EAAmB,EAAE;IACxE,IAAI,IAAgB,CAAC;IAErB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,KAAK,CAAC;IACjB,CAAC;IAED,yEAAyE;IACzE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzD,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAEvD,kEAAkE;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjF,OAAO,OAAO,CAAC;AACnB,CAAC,CAAA;AArBY,QAAA,MAAM,UAqBlB;AAED;;;;;GAKG;AACI,MAAM,MAAM,GAAG,KAAK,EAAE,OAA4B,EAAE,IAAY,EAAoB,EAAE;IACzF,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;IACvC,OAAO,QAAQ,KAAK,IAAI,CAAC;AAC7B,CAAC,CAAA;AAHY,QAAA,MAAM,UAGlB;AAED;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,wBAAwB;IACxB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,OAAO,CAAC;AAC5B,CAAC,CAAA;AALY,QAAA,iBAAiB,qBAK7B;AAED;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B"}
package/dist/hash.node.js CHANGED
@@ -1,43 +1,53 @@
1
+ "use strict";
1
2
  /**
2
3
  * Node.js-specific hash utilities using native crypto module
3
4
  * Synchronous operations for server-side use
4
5
  */
5
- import crypto from 'crypto';
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.toUrlSafeBase64 = exports.fromUrlSafeBase64 = exports.verify = exports.sha256 = void 0;
11
+ const crypto_1 = __importDefault(require("crypto"));
6
12
  /**
7
13
  * Compute SHA-256 hash and return as URL-safe base64 (Node.js)
8
14
  * @param input - String or buffer to hash
9
15
  * @returns URL-safe base64 encoded hash
10
16
  */
11
- export const sha256 = (input) => {
12
- const base64 = crypto.createHash('sha256').update(input).digest('base64');
17
+ const sha256 = (input) => {
18
+ const base64 = crypto_1.default.createHash('sha256').update(input).digest('base64');
13
19
  const urlSafe = base64.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
14
20
  return urlSafe;
15
21
  };
22
+ exports.sha256 = sha256;
16
23
  /**
17
24
  * Verify that content matches a given hash
18
25
  * @param content - Content to verify
19
26
  * @param hash - Expected hash
20
27
  * @returns True if hash matches
21
28
  */
22
- export const verify = (content, hash) => {
23
- return hash === sha256(content);
29
+ const verify = (content, hash) => {
30
+ return hash === (0, exports.sha256)(content);
24
31
  };
32
+ exports.verify = verify;
25
33
  /**
26
34
  * Convert URL-safe base64 back to standard base64
27
35
  * @param urlSafe - URL-safe base64 string
28
36
  * @returns Standard base64 string with padding
29
37
  */
30
- export const fromUrlSafeBase64 = (urlSafe) => {
38
+ const fromUrlSafeBase64 = (urlSafe) => {
31
39
  const base64 = urlSafe.replace(/-/g, '+').replace(/_/g, '/');
32
40
  const padding = '='.repeat((4 - (base64.length % 4)) % 4);
33
41
  return base64 + padding;
34
42
  };
43
+ exports.fromUrlSafeBase64 = fromUrlSafeBase64;
35
44
  /**
36
45
  * Convert standard base64 to URL-safe base64
37
46
  * @param base64 - Standard base64 string
38
47
  * @returns URL-safe base64 string without padding
39
48
  */
40
- export const toUrlSafeBase64 = (base64) => {
49
+ const toUrlSafeBase64 = (base64) => {
41
50
  return base64.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
42
51
  };
52
+ exports.toUrlSafeBase64 = toUrlSafeBase64;
43
53
  //# sourceMappingURL=hash.node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash.node.js","sourceRoot":"","sources":["../src/hash.node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAwB,EAAU,EAAE;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAChF,OAAO,OAAO,CAAA;AAClB,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAA0B,EAAE,IAAY,EAAW,EAAE;IACxE,OAAO,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,OAAO,CAAC;AAC5B,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC,CAAA"}
1
+ {"version":3,"file":"hash.node.js","sourceRoot":"","sources":["../src/hash.node.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAA2B;AAE3B;;;;GAIG;AACI,MAAM,MAAM,GAAG,CAAC,KAAwB,EAAU,EAAE;IACvD,MAAM,MAAM,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAChF,OAAO,OAAO,CAAA;AAClB,CAAC,CAAA;AAJY,QAAA,MAAM,UAIlB;AAED;;;;;GAKG;AACI,MAAM,MAAM,GAAG,CAAC,OAA0B,EAAE,IAAY,EAAW,EAAE;IACxE,OAAO,IAAI,KAAK,IAAA,cAAM,EAAC,OAAO,CAAC,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,MAAM,UAElB;AAED;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,OAAO,CAAC;AAC5B,CAAC,CAAA;AAJY,QAAA,iBAAiB,qBAI7B;AAED;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B"}
package/dist/hash.test.js CHANGED
@@ -1,51 +1,53 @@
1
- import { sha256, verify, fromUrlSafeBase64, toUrlSafeBase64 } from './hash.node';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hash_node_1 = require("./hash.node");
2
4
  describe('Hash utilities', () => {
3
5
  describe('sha256', () => {
4
6
  it('should hash a simple string', () => {
5
7
  const input = 'hello world';
6
- const hash = sha256(input);
8
+ const hash = (0, hash_node_1.sha256)(input);
7
9
  // Verify it's URL-safe (no +, /, or =)
8
10
  expect(hash).not.toContain('+');
9
11
  expect(hash).not.toContain('/');
10
12
  expect(hash).not.toContain('=');
11
13
  // Verify consistent output
12
- const hash2 = sha256(input);
14
+ const hash2 = (0, hash_node_1.sha256)(input);
13
15
  expect(hash).toBe(hash2);
14
16
  });
15
17
  it('should produce correct hash for known input', () => {
16
18
  const input = 'hello world';
17
19
  const expectedHash = 'uU0nuZNNPgilLlLX2n2r-sSE7-N6U4DukIj3rOLvzek';
18
- const hash = sha256(input);
20
+ const hash = (0, hash_node_1.sha256)(input);
19
21
  expect(hash).toBe(expectedHash);
20
22
  });
21
23
  it('should handle empty string', () => {
22
- const hash = sha256('');
24
+ const hash = (0, hash_node_1.sha256)('');
23
25
  expect(hash).toBeTruthy();
24
26
  expect(typeof hash).toBe('string');
25
27
  });
26
28
  it('should handle unicode characters', () => {
27
29
  const input = '你好世界 🌍';
28
- const hash = sha256(input);
30
+ const hash = (0, hash_node_1.sha256)(input);
29
31
  expect(hash).toBeTruthy();
30
32
  expect(typeof hash).toBe('string');
31
33
  // Verify consistency
32
- const hash2 = sha256(input);
34
+ const hash2 = (0, hash_node_1.sha256)(input);
33
35
  expect(hash).toBe(hash2);
34
36
  });
35
37
  it('should handle Buffer input', () => {
36
38
  const data = Buffer.from('hello world');
37
- const hash = sha256(data);
39
+ const hash = (0, hash_node_1.sha256)(data);
38
40
  // Should produce same hash as string input
39
- const stringHash = sha256('hello world');
41
+ const stringHash = (0, hash_node_1.sha256)('hello world');
40
42
  expect(hash).toBe(stringHash);
41
43
  });
42
44
  it('should produce different hashes for different inputs', () => {
43
- const hash1 = sha256('hello');
44
- const hash2 = sha256('world');
45
+ const hash1 = (0, hash_node_1.sha256)('hello');
46
+ const hash2 = (0, hash_node_1.sha256)('world');
45
47
  expect(hash1).not.toBe(hash2);
46
48
  });
47
49
  it('should produce 43-character URL-safe base64 string', () => {
48
- const hash = sha256('test');
50
+ const hash = (0, hash_node_1.sha256)('test');
49
51
  // SHA-256 produces 256 bits = 32 bytes
50
52
  // Base64 encoding: 32 bytes * 4/3 = 42.67, rounded up = 43 chars (without padding)
51
53
  expect(hash.length).toBe(43);
@@ -54,27 +56,27 @@ describe('Hash utilities', () => {
54
56
  describe('verify', () => {
55
57
  it('should verify correct hash', () => {
56
58
  const content = 'hello world';
57
- const hash = sha256(content);
58
- const isValid = verify(content, hash);
59
+ const hash = (0, hash_node_1.sha256)(content);
60
+ const isValid = (0, hash_node_1.verify)(content, hash);
59
61
  expect(isValid).toBe(true);
60
62
  });
61
63
  it('should reject incorrect hash', () => {
62
64
  const content = 'hello world';
63
65
  const wrongHash = 'incorrect_hash_value_here_1234567890';
64
- const isValid = verify(content, wrongHash);
66
+ const isValid = (0, hash_node_1.verify)(content, wrongHash);
65
67
  expect(isValid).toBe(false);
66
68
  });
67
69
  it('should reject hash for different content', () => {
68
70
  const content1 = 'hello world';
69
71
  const content2 = 'goodbye world';
70
- const hash1 = sha256(content1);
71
- const isValid = verify(content2, hash1);
72
+ const hash1 = (0, hash_node_1.sha256)(content1);
73
+ const isValid = (0, hash_node_1.verify)(content2, hash1);
72
74
  expect(isValid).toBe(false);
73
75
  });
74
76
  it('should work with Buffer', () => {
75
77
  const data = Buffer.from('test data');
76
- const hash = sha256(data);
77
- const isValid = verify(data, hash);
78
+ const hash = (0, hash_node_1.sha256)(data);
79
+ const isValid = (0, hash_node_1.verify)(data, hash);
78
80
  expect(isValid).toBe(true);
79
81
  });
80
82
  });
@@ -82,7 +84,7 @@ describe('Hash utilities', () => {
82
84
  it('should convert URL-safe base64 to standard base64', () => {
83
85
  // Use a URL-safe string that contains both - and _ characters
84
86
  const urlSafe = 'abc-def_ghi';
85
- const standard = fromUrlSafeBase64(urlSafe);
87
+ const standard = (0, hash_node_1.fromUrlSafeBase64)(urlSafe);
86
88
  // Should replace - with + and _ with /
87
89
  expect(standard).toContain('+');
88
90
  expect(standard).toContain('/');
@@ -98,21 +100,21 @@ describe('Hash utilities', () => {
98
100
  { input: 'abcdef', expectedPadding: 2 },
99
101
  ];
100
102
  testCases.forEach(({ input, expectedPadding }) => {
101
- const result = fromUrlSafeBase64(input);
103
+ const result = (0, hash_node_1.fromUrlSafeBase64)(input);
102
104
  const paddingCount = (result.match(/=/g) || []).length;
103
105
  expect(paddingCount).toBe(expectedPadding);
104
106
  });
105
107
  });
106
108
  it('should handle strings without special characters', () => {
107
109
  const input = 'abcdefghijklmnop';
108
- const result = fromUrlSafeBase64(input);
110
+ const result = (0, hash_node_1.fromUrlSafeBase64)(input);
109
111
  expect(result).toBeTruthy();
110
112
  });
111
113
  });
112
114
  describe('toUrlSafeBase64', () => {
113
115
  it('should convert standard base64 to URL-safe', () => {
114
116
  const standard = 'uU0nuZNNPgilLlLX2n2r+sSE7+N6U4DukIj3rOLvzek=';
115
- const urlSafe = toUrlSafeBase64(standard);
117
+ const urlSafe = (0, hash_node_1.toUrlSafeBase64)(standard);
116
118
  // Should not contain standard base64 special characters
117
119
  expect(urlSafe).not.toContain('+');
118
120
  expect(urlSafe).not.toContain('/');
@@ -122,15 +124,15 @@ describe('Hash utilities', () => {
122
124
  });
123
125
  it('should remove padding', () => {
124
126
  const withPadding = 'abc=';
125
- const result = toUrlSafeBase64(withPadding);
127
+ const result = (0, hash_node_1.toUrlSafeBase64)(withPadding);
126
128
  expect(result).not.toContain('=');
127
129
  expect(result).toBe('abc');
128
130
  });
129
131
  it('should be reversible with fromUrlSafeBase64', () => {
130
132
  // Start with a standard base64 string with special chars
131
133
  const original = 'test+data/with==';
132
- const urlSafe = toUrlSafeBase64(original);
133
- const restored = fromUrlSafeBase64(urlSafe);
134
+ const urlSafe = (0, hash_node_1.toUrlSafeBase64)(original);
135
+ const restored = (0, hash_node_1.fromUrlSafeBase64)(urlSafe);
134
136
  // Should restore to equivalent base64 (padding might differ slightly)
135
137
  expect(restored.replace(/=+$/, '')).toBe(original.replace(/=+$/, ''));
136
138
  });
@@ -138,42 +140,42 @@ describe('Hash utilities', () => {
138
140
  describe('Round-trip conversions', () => {
139
141
  it('should maintain hash integrity through URL-safe conversion', () => {
140
142
  const content = 'test content for hashing';
141
- const hash = sha256(content);
143
+ const hash = (0, hash_node_1.sha256)(content);
142
144
  // Convert to standard base64 and back
143
- const standard = fromUrlSafeBase64(hash);
144
- const backToUrlSafe = toUrlSafeBase64(standard);
145
+ const standard = (0, hash_node_1.fromUrlSafeBase64)(hash);
146
+ const backToUrlSafe = (0, hash_node_1.toUrlSafeBase64)(standard);
145
147
  expect(backToUrlSafe).toBe(hash);
146
148
  });
147
149
  it('should verify hash after conversion', () => {
148
150
  const content = 'verification test';
149
- const hash = sha256(content);
151
+ const hash = (0, hash_node_1.sha256)(content);
150
152
  // Convert and back
151
- const standard = fromUrlSafeBase64(hash);
152
- const urlSafe = toUrlSafeBase64(standard);
153
+ const standard = (0, hash_node_1.fromUrlSafeBase64)(hash);
154
+ const urlSafe = (0, hash_node_1.toUrlSafeBase64)(standard);
153
155
  // Should still verify
154
- const isValid = verify(content, urlSafe);
156
+ const isValid = (0, hash_node_1.verify)(content, urlSafe);
155
157
  expect(isValid).toBe(true);
156
158
  });
157
159
  });
158
160
  describe('Edge cases', () => {
159
161
  it('should handle very long strings', () => {
160
162
  const longString = 'a'.repeat(10000);
161
- const hash = sha256(longString);
163
+ const hash = (0, hash_node_1.sha256)(longString);
162
164
  expect(hash).toBeTruthy();
163
165
  expect(hash.length).toBe(43);
164
166
  });
165
167
  it('should handle special characters', () => {
166
168
  const special = '!@#$%^&*()_+-=[]{}|;:,.<>?';
167
- const hash = sha256(special);
169
+ const hash = (0, hash_node_1.sha256)(special);
168
170
  expect(hash).toBeTruthy();
169
- const isValid = verify(special, hash);
171
+ const isValid = (0, hash_node_1.verify)(special, hash);
170
172
  expect(isValid).toBe(true);
171
173
  });
172
174
  it('should handle newlines and whitespace', () => {
173
175
  const withNewlines = 'line1\nline2\r\nline3\ttab';
174
- const hash = sha256(withNewlines);
176
+ const hash = (0, hash_node_1.sha256)(withNewlines);
175
177
  expect(hash).toBeTruthy();
176
- const isValid = verify(withNewlines, hash);
178
+ const isValid = (0, hash_node_1.verify)(withNewlines, hash);
177
179
  expect(isValid).toBe(true);
178
180
  });
179
181
  });
@@ -1 +1 @@
1
- {"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../src/hash.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../src/hash.test.ts"],"names":[],"mappings":"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"}