@fedify/vocab-runtime 2.4.0-dev.1655 → 2.4.0-pr.936.41

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 (37) hide show
  1. package/deno.json +1 -1
  2. package/dist/mod.cjs +3 -146
  3. package/dist/mod.d.cts +1 -82
  4. package/dist/mod.d.ts +1 -82
  5. package/dist/mod.js +4 -141
  6. package/dist/tests/decimal.test.cjs +4 -5
  7. package/dist/tests/decimal.test.mjs +4 -5
  8. package/dist/tests/{docloader-HbEvzi-t.mjs → docloader-Ck8bcBir.mjs} +1 -1
  9. package/dist/tests/{docloader-DVVWmXLI.cjs → docloader-S_gQZ2tt.cjs} +1 -1
  10. package/dist/tests/docloader.test.cjs +2 -2
  11. package/dist/tests/docloader.test.mjs +2 -2
  12. package/dist/tests/{key-Drbw_2tw.mjs → key-CDGDH_vC.mjs} +1 -1
  13. package/dist/tests/{key-BcOWDLMm.cjs → key-_wXwomh_.cjs} +1 -1
  14. package/dist/tests/key.test.cjs +2 -2
  15. package/dist/tests/key.test.mjs +2 -2
  16. package/dist/tests/langstr.test.cjs +1 -1
  17. package/dist/tests/langstr.test.mjs +1 -1
  18. package/dist/tests/multibase/multibase.test.cjs +1 -1
  19. package/dist/tests/multibase/multibase.test.mjs +1 -1
  20. package/dist/tests/{multibase-Cluwl8OM.mjs → multibase-B4bvakyA.mjs} +1 -12
  21. package/dist/tests/{multibase-DcDQDNnI.cjs → multibase-Bz_UUDtL.cjs} +0 -17
  22. package/dist/tests/{request-B6s_F7bi.mjs → request-C8CaGwtt.mjs} +1 -1
  23. package/dist/tests/{request-DvEyU5Zf.cjs → request-uk51rkhO.cjs} +1 -1
  24. package/dist/tests/request.test.cjs +1 -1
  25. package/dist/tests/request.test.mjs +1 -1
  26. package/package.json +1 -1
  27. package/src/mod.ts +0 -10
  28. package/dist/tests/digest-BJlumPNJ.mjs +0 -140
  29. package/dist/tests/digest-DLwUyHCK.cjs +0 -175
  30. package/dist/tests/digest.test.cjs +0 -103
  31. package/dist/tests/digest.test.d.cts +0 -1
  32. package/dist/tests/digest.test.d.mts +0 -1
  33. package/dist/tests/digest.test.mjs +0 -103
  34. package/src/digest.test.ts +0 -220
  35. package/src/digest.ts +0 -229
  36. /package/dist/tests/{langstr-BOQHfJDr.cjs → langstr-CbAxaeEZ.cjs} +0 -0
  37. /package/dist/tests/{langstr-DDLc4833.mjs → langstr-Di5AvKpB.mjs} +0 -0
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-C2EiDwsr.cjs");
2
- const require_langstr = require("./langstr-BOQHfJDr.cjs");
2
+ const require_langstr = require("./langstr-CbAxaeEZ.cjs");
3
3
  let node_assert = require("node:assert");
4
4
  let node_test = require("node:test");
5
5
  let node_util = require("node:util");
@@ -1,4 +1,4 @@
1
- import { t as LanguageString } from "./langstr-DDLc4833.mjs";
1
+ import { t as LanguageString } from "./langstr-Di5AvKpB.mjs";
2
2
  import { deepStrictEqual } from "node:assert";
3
3
  import { test } from "node:test";
4
4
  import util from "node:util";
@@ -1,5 +1,5 @@
1
1
  require("../chunk-C2EiDwsr.cjs");
2
- const require_multibase = require("../multibase-DcDQDNnI.cjs");
2
+ const require_multibase = require("../multibase-Bz_UUDtL.cjs");
3
3
  let node_assert = require("node:assert");
4
4
  let node_test = require("node:test");
5
5
  //#region src/multibase/multibase.test.ts
@@ -1,4 +1,4 @@
1
- import { a as names, i as codes, n as encodeMultibase, o as decodeText, s as encodeText, t as decodeMultibase } from "../multibase-Cluwl8OM.mjs";
1
+ import { a as decodeText, i as names, n as encodeMultibase, o as encodeText, r as codes, t as decodeMultibase } from "../multibase-B4bvakyA.mjs";
2
2
  import { deepStrictEqual } from "node:assert";
3
3
  import { test } from "node:test";
4
4
  //#region src/multibase/multibase.test.ts
@@ -303,16 +303,5 @@ function encoding(nameOrCode) {
303
303
  else if (Object.prototype.hasOwnProperty.call(codes, nameOrCode)) return codes[nameOrCode];
304
304
  else throw new Error(`Unsupported encoding: ${nameOrCode}`);
305
305
  }
306
- /**
307
- * Get encoding multibase from data
308
- *
309
- * @param {string|Uint8Array} data
310
- * @returns {Base}
311
- * @throws {Error} Will throw if the encoding is not supported
312
- */
313
- function encodingFromBaseData(data) {
314
- if (data instanceof Uint8Array) data = decodeText(data);
315
- return encoding(data[0]);
316
- }
317
306
  //#endregion
318
- export { names as a, codes as i, encodeMultibase as n, decodeText as o, encodingFromBaseData as r, encodeText as s, decodeMultibase as t };
307
+ export { decodeText as a, names as i, encodeMultibase as n, encodeText as o, codes as r, decodeMultibase as t };
@@ -305,17 +305,6 @@ function encoding(nameOrCode) {
305
305
  else if (Object.prototype.hasOwnProperty.call(codes, nameOrCode)) return codes[nameOrCode];
306
306
  else throw new Error(`Unsupported encoding: ${nameOrCode}`);
307
307
  }
308
- /**
309
- * Get encoding multibase from data
310
- *
311
- * @param {string|Uint8Array} data
312
- * @returns {Base}
313
- * @throws {Error} Will throw if the encoding is not supported
314
- */
315
- function encodingFromBaseData(data) {
316
- if (data instanceof Uint8Array) data = decodeText(data);
317
- return encoding(data[0]);
318
- }
319
308
  //#endregion
320
309
  Object.defineProperty(exports, "codes", {
321
310
  enumerable: true,
@@ -347,12 +336,6 @@ Object.defineProperty(exports, "encodeText", {
347
336
  return encodeText;
348
337
  }
349
338
  });
350
- Object.defineProperty(exports, "encodingFromBaseData", {
351
- enumerable: true,
352
- get: function() {
353
- return encodingFromBaseData;
354
- }
355
- });
356
339
  Object.defineProperty(exports, "names", {
357
340
  enumerable: true,
358
341
  get: function() {
@@ -1,7 +1,7 @@
1
1
  import process from "node:process";
2
2
  //#region deno.json
3
3
  var name = "@fedify/vocab-runtime";
4
- var version = "2.4.0-dev.1655+b8f3c3d5";
4
+ var version = "2.4.0-pr.936.41+59c7432c";
5
5
  //#endregion
6
6
  //#region src/request.ts
7
7
  /**
@@ -3,7 +3,7 @@ let node_process = require("node:process");
3
3
  node_process = require_chunk.__toESM(node_process, 1);
4
4
  //#region deno.json
5
5
  var name = "@fedify/vocab-runtime";
6
- var version = "2.4.0-dev.1655+b8f3c3d5";
6
+ var version = "2.4.0-pr.936.41+59c7432c";
7
7
  //#endregion
8
8
  //#region src/request.ts
9
9
  /**
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-C2EiDwsr.cjs");
2
- const require_request = require("./request-DvEyU5Zf.cjs");
2
+ const require_request = require("./request-uk51rkhO.cjs");
3
3
  let node_assert = require("node:assert");
4
4
  let node_test = require("node:test");
5
5
  let node_process = require("node:process");
@@ -1,4 +1,4 @@
1
- import { o as version, r as getUserAgent } from "./request-B6s_F7bi.mjs";
1
+ import { o as version, r as getUserAgent } from "./request-C8CaGwtt.mjs";
2
2
  import { deepStrictEqual } from "node:assert";
3
3
  import { test } from "node:test";
4
4
  import process from "node:process";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/vocab-runtime",
3
- "version": "2.4.0-dev.1655+b8f3c3d5",
3
+ "version": "2.4.0-pr.936.41+59c7432c",
4
4
  "homepage": "https://fedify.dev/",
5
5
  "repository": {
6
6
  "type": "git",
package/src/mod.ts CHANGED
@@ -34,16 +34,6 @@ export {
34
34
  isDecimal,
35
35
  parseDecimal,
36
36
  } from "./decimal.ts";
37
- export {
38
- computeDigestMultibase,
39
- createHashlink,
40
- type ParsedDigestMultibase,
41
- type ParsedHashlink,
42
- parseDigestMultibase,
43
- parseHashlink,
44
- verifyDigestMultibase,
45
- verifyHashlink,
46
- } from "./digest.ts";
47
37
  export { LanguageString } from "./langstr.ts";
48
38
  export {
49
39
  decodeMultibase,
@@ -1,140 +0,0 @@
1
- import { n as getMulticodecPrefix, t as addMulticodecPrefix } from "./multicodec-CyFp54fI.mjs";
2
- import { n as encodeMultibase, r as encodingFromBaseData, t as decodeMultibase } from "./multibase-Cluwl8OM.mjs";
3
- //#region src/digest.ts
4
- const SHA2_256_MULTIHASH_CODE = 18;
5
- const SHA2_256_DIGEST_LENGTH = 32;
6
- const MAX_DIGEST_MULTIBASE_LENGTH = 1 + (SHA2_256_DIGEST_LENGTH + 2) * 8;
7
- const textDecoder = new TextDecoder();
8
- const getArrayBufferByteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength")?.get;
9
- function isCanonicalVarintPrefix(data, prefix) {
10
- const canonical = addMulticodecPrefix(prefix.code, new Uint8Array());
11
- if (canonical.length !== prefix.prefixLength) return false;
12
- for (let i = 0; i < canonical.length; i++) if (data[i] !== canonical[i]) return false;
13
- return true;
14
- }
15
- function toWebCryptoBytes(bytes) {
16
- if (getArrayBufferByteLength != null) try {
17
- getArrayBufferByteLength.call(bytes.buffer);
18
- return bytes;
19
- } catch {}
20
- return new Uint8Array(bytes);
21
- }
22
- /**
23
- * Computes the SHA-256 digest of a byte sequence and encodes it as a
24
- * base58-btc multibase multihash suitable for FEP-ef61's
25
- * `digestMultibase` property.
26
- *
27
- * @param bytes The bytes to digest.
28
- * @returns The base58-btc multibase-encoded SHA-256 multihash.
29
- * @since 2.4.0
30
- */
31
- async function computeDigestMultibase(bytes) {
32
- const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", toWebCryptoBytes(bytes)));
33
- const multihash = addMulticodecPrefix(SHA2_256_MULTIHASH_CODE, addMulticodecPrefix(digest.length, digest));
34
- return textDecoder.decode(encodeMultibase("base58btc", multihash));
35
- }
36
- /**
37
- * Parses and validates a SHA-256 `digestMultibase` value.
38
- *
39
- * @param value The multibase-encoded multihash to parse.
40
- * @returns The digest algorithm and raw digest bytes.
41
- * @throws {TypeError} If the value is malformed or uses an unsupported hash
42
- * algorithm.
43
- * @since 2.4.0
44
- */
45
- function parseDigestMultibase(value) {
46
- if (value.length > MAX_DIGEST_MULTIBASE_LENGTH) throw new TypeError("Invalid digestMultibase encoding.");
47
- let multihash;
48
- try {
49
- multihash = decodeMultibase(value);
50
- } catch (error) {
51
- throw new TypeError("Invalid digestMultibase encoding.", { cause: error });
52
- }
53
- const encoding = encodingFromBaseData(value);
54
- if (value !== textDecoder.decode(encodeMultibase(encoding.name, multihash))) throw new TypeError("Invalid digestMultibase encoding.");
55
- let algorithmPrefix;
56
- try {
57
- algorithmPrefix = getMulticodecPrefix(multihash);
58
- } catch (error) {
59
- throw new TypeError("Invalid digestMultibase multihash.", { cause: error });
60
- }
61
- if (!isCanonicalVarintPrefix(multihash, algorithmPrefix)) throw new TypeError("Invalid digestMultibase multihash.");
62
- if (algorithmPrefix.code !== SHA2_256_MULTIHASH_CODE) throw new TypeError(`Unsupported digest algorithm: 0x${algorithmPrefix.code.toString(16)}`);
63
- const lengthAndDigest = multihash.subarray(algorithmPrefix.prefixLength);
64
- let lengthPrefix;
65
- try {
66
- lengthPrefix = getMulticodecPrefix(lengthAndDigest);
67
- } catch (error) {
68
- throw new TypeError("Invalid digestMultibase multihash.", { cause: error });
69
- }
70
- if (!isCanonicalVarintPrefix(lengthAndDigest, lengthPrefix)) throw new TypeError("Invalid digestMultibase multihash.");
71
- const digest = lengthAndDigest.slice(lengthPrefix.prefixLength);
72
- if (lengthPrefix.code !== SHA2_256_DIGEST_LENGTH || digest.length !== SHA2_256_DIGEST_LENGTH) throw new TypeError("Invalid SHA-256 digest length.");
73
- return {
74
- algorithm: "sha2-256",
75
- digest
76
- };
77
- }
78
- function extractDigestMultibase(value) {
79
- const hashlink = typeof value === "string" ? value : value.href;
80
- const match = /^hl:([^:\r\n\u2028\u2029]+)$/i.exec(hashlink);
81
- if (match == null || match[0].length !== hashlink.length) throw new TypeError("Invalid simple hashlink.");
82
- return match[1];
83
- }
84
- /**
85
- * Parses a metadata-free `hl:` hashlink and validates its resource digest.
86
- *
87
- * @param value The simple hashlink to parse.
88
- * @returns The `digestMultibase` value carried by the hashlink.
89
- * @throws {TypeError} If the hashlink is malformed, contains metadata, or
90
- * carries an invalid or unsupported digest.
91
- * @since 2.4.0
92
- */
93
- function parseHashlink(value) {
94
- const digestMultibase = extractDigestMultibase(value);
95
- parseDigestMultibase(digestMultibase);
96
- return { digestMultibase };
97
- }
98
- /**
99
- * Creates a metadata-free `hl:` hashlink from a `digestMultibase` value.
100
- *
101
- * @param digestMultibase The SHA-256 multibase multihash to embed.
102
- * @returns The simple hashlink.
103
- * @throws {TypeError} If the digest is malformed or unsupported.
104
- * @since 2.4.0
105
- */
106
- function createHashlink(digestMultibase) {
107
- parseDigestMultibase(digestMultibase);
108
- return `hl:${digestMultibase}`;
109
- }
110
- /**
111
- * Verifies that bytes match a SHA-256 `digestMultibase` value.
112
- *
113
- * @param bytes The bytes to verify.
114
- * @param digestMultibase The expected digest.
115
- * @returns Whether the bytes match the digest.
116
- * @throws {TypeError} If the digest is malformed or unsupported.
117
- * @since 2.4.0
118
- */
119
- async function verifyDigestMultibase(bytes, digestMultibase) {
120
- const expected = parseDigestMultibase(digestMultibase).digest;
121
- const actual = new Uint8Array(await crypto.subtle.digest("SHA-256", toWebCryptoBytes(bytes)));
122
- if (expected.length !== actual.length) return false;
123
- let difference = 0;
124
- for (let i = 0; i < expected.length; i++) difference |= expected[i] ^ actual[i];
125
- return difference === 0;
126
- }
127
- /**
128
- * Verifies that bytes match the resource digest in a simple hashlink.
129
- *
130
- * @param bytes The bytes to verify.
131
- * @param hashlink The simple hashlink containing the expected digest.
132
- * @returns Whether the bytes match the hashlink digest.
133
- * @throws {TypeError} If the hashlink or digest is malformed or unsupported.
134
- * @since 2.4.0
135
- */
136
- async function verifyHashlink(bytes, hashlink) {
137
- return await verifyDigestMultibase(bytes, extractDigestMultibase(hashlink));
138
- }
139
- //#endregion
140
- export { verifyDigestMultibase as a, parseHashlink as i, createHashlink as n, verifyHashlink as o, parseDigestMultibase as r, computeDigestMultibase as t };
@@ -1,175 +0,0 @@
1
- const require_multicodec = require("./multicodec-CxGVGa91.cjs");
2
- const require_multibase = require("./multibase-DcDQDNnI.cjs");
3
- //#region src/digest.ts
4
- const SHA2_256_MULTIHASH_CODE = 18;
5
- const SHA2_256_DIGEST_LENGTH = 32;
6
- const MAX_DIGEST_MULTIBASE_LENGTH = 1 + (SHA2_256_DIGEST_LENGTH + 2) * 8;
7
- const textDecoder = new TextDecoder();
8
- const getArrayBufferByteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength")?.get;
9
- function isCanonicalVarintPrefix(data, prefix) {
10
- const canonical = require_multicodec.addMulticodecPrefix(prefix.code, new Uint8Array());
11
- if (canonical.length !== prefix.prefixLength) return false;
12
- for (let i = 0; i < canonical.length; i++) if (data[i] !== canonical[i]) return false;
13
- return true;
14
- }
15
- function toWebCryptoBytes(bytes) {
16
- if (getArrayBufferByteLength != null) try {
17
- getArrayBufferByteLength.call(bytes.buffer);
18
- return bytes;
19
- } catch {}
20
- return new Uint8Array(bytes);
21
- }
22
- /**
23
- * Computes the SHA-256 digest of a byte sequence and encodes it as a
24
- * base58-btc multibase multihash suitable for FEP-ef61's
25
- * `digestMultibase` property.
26
- *
27
- * @param bytes The bytes to digest.
28
- * @returns The base58-btc multibase-encoded SHA-256 multihash.
29
- * @since 2.4.0
30
- */
31
- async function computeDigestMultibase(bytes) {
32
- const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", toWebCryptoBytes(bytes)));
33
- const multihash = require_multicodec.addMulticodecPrefix(SHA2_256_MULTIHASH_CODE, require_multicodec.addMulticodecPrefix(digest.length, digest));
34
- return textDecoder.decode(require_multibase.encodeMultibase("base58btc", multihash));
35
- }
36
- /**
37
- * Parses and validates a SHA-256 `digestMultibase` value.
38
- *
39
- * @param value The multibase-encoded multihash to parse.
40
- * @returns The digest algorithm and raw digest bytes.
41
- * @throws {TypeError} If the value is malformed or uses an unsupported hash
42
- * algorithm.
43
- * @since 2.4.0
44
- */
45
- function parseDigestMultibase(value) {
46
- if (value.length > MAX_DIGEST_MULTIBASE_LENGTH) throw new TypeError("Invalid digestMultibase encoding.");
47
- let multihash;
48
- try {
49
- multihash = require_multibase.decodeMultibase(value);
50
- } catch (error) {
51
- throw new TypeError("Invalid digestMultibase encoding.", { cause: error });
52
- }
53
- const encoding = require_multibase.encodingFromBaseData(value);
54
- if (value !== textDecoder.decode(require_multibase.encodeMultibase(encoding.name, multihash))) throw new TypeError("Invalid digestMultibase encoding.");
55
- let algorithmPrefix;
56
- try {
57
- algorithmPrefix = require_multicodec.getMulticodecPrefix(multihash);
58
- } catch (error) {
59
- throw new TypeError("Invalid digestMultibase multihash.", { cause: error });
60
- }
61
- if (!isCanonicalVarintPrefix(multihash, algorithmPrefix)) throw new TypeError("Invalid digestMultibase multihash.");
62
- if (algorithmPrefix.code !== SHA2_256_MULTIHASH_CODE) throw new TypeError(`Unsupported digest algorithm: 0x${algorithmPrefix.code.toString(16)}`);
63
- const lengthAndDigest = multihash.subarray(algorithmPrefix.prefixLength);
64
- let lengthPrefix;
65
- try {
66
- lengthPrefix = require_multicodec.getMulticodecPrefix(lengthAndDigest);
67
- } catch (error) {
68
- throw new TypeError("Invalid digestMultibase multihash.", { cause: error });
69
- }
70
- if (!isCanonicalVarintPrefix(lengthAndDigest, lengthPrefix)) throw new TypeError("Invalid digestMultibase multihash.");
71
- const digest = lengthAndDigest.slice(lengthPrefix.prefixLength);
72
- if (lengthPrefix.code !== SHA2_256_DIGEST_LENGTH || digest.length !== SHA2_256_DIGEST_LENGTH) throw new TypeError("Invalid SHA-256 digest length.");
73
- return {
74
- algorithm: "sha2-256",
75
- digest
76
- };
77
- }
78
- function extractDigestMultibase(value) {
79
- const hashlink = typeof value === "string" ? value : value.href;
80
- const match = /^hl:([^:\r\n\u2028\u2029]+)$/i.exec(hashlink);
81
- if (match == null || match[0].length !== hashlink.length) throw new TypeError("Invalid simple hashlink.");
82
- return match[1];
83
- }
84
- /**
85
- * Parses a metadata-free `hl:` hashlink and validates its resource digest.
86
- *
87
- * @param value The simple hashlink to parse.
88
- * @returns The `digestMultibase` value carried by the hashlink.
89
- * @throws {TypeError} If the hashlink is malformed, contains metadata, or
90
- * carries an invalid or unsupported digest.
91
- * @since 2.4.0
92
- */
93
- function parseHashlink(value) {
94
- const digestMultibase = extractDigestMultibase(value);
95
- parseDigestMultibase(digestMultibase);
96
- return { digestMultibase };
97
- }
98
- /**
99
- * Creates a metadata-free `hl:` hashlink from a `digestMultibase` value.
100
- *
101
- * @param digestMultibase The SHA-256 multibase multihash to embed.
102
- * @returns The simple hashlink.
103
- * @throws {TypeError} If the digest is malformed or unsupported.
104
- * @since 2.4.0
105
- */
106
- function createHashlink(digestMultibase) {
107
- parseDigestMultibase(digestMultibase);
108
- return `hl:${digestMultibase}`;
109
- }
110
- /**
111
- * Verifies that bytes match a SHA-256 `digestMultibase` value.
112
- *
113
- * @param bytes The bytes to verify.
114
- * @param digestMultibase The expected digest.
115
- * @returns Whether the bytes match the digest.
116
- * @throws {TypeError} If the digest is malformed or unsupported.
117
- * @since 2.4.0
118
- */
119
- async function verifyDigestMultibase(bytes, digestMultibase) {
120
- const expected = parseDigestMultibase(digestMultibase).digest;
121
- const actual = new Uint8Array(await crypto.subtle.digest("SHA-256", toWebCryptoBytes(bytes)));
122
- if (expected.length !== actual.length) return false;
123
- let difference = 0;
124
- for (let i = 0; i < expected.length; i++) difference |= expected[i] ^ actual[i];
125
- return difference === 0;
126
- }
127
- /**
128
- * Verifies that bytes match the resource digest in a simple hashlink.
129
- *
130
- * @param bytes The bytes to verify.
131
- * @param hashlink The simple hashlink containing the expected digest.
132
- * @returns Whether the bytes match the hashlink digest.
133
- * @throws {TypeError} If the hashlink or digest is malformed or unsupported.
134
- * @since 2.4.0
135
- */
136
- async function verifyHashlink(bytes, hashlink) {
137
- return await verifyDigestMultibase(bytes, extractDigestMultibase(hashlink));
138
- }
139
- //#endregion
140
- Object.defineProperty(exports, "computeDigestMultibase", {
141
- enumerable: true,
142
- get: function() {
143
- return computeDigestMultibase;
144
- }
145
- });
146
- Object.defineProperty(exports, "createHashlink", {
147
- enumerable: true,
148
- get: function() {
149
- return createHashlink;
150
- }
151
- });
152
- Object.defineProperty(exports, "parseDigestMultibase", {
153
- enumerable: true,
154
- get: function() {
155
- return parseDigestMultibase;
156
- }
157
- });
158
- Object.defineProperty(exports, "parseHashlink", {
159
- enumerable: true,
160
- get: function() {
161
- return parseHashlink;
162
- }
163
- });
164
- Object.defineProperty(exports, "verifyDigestMultibase", {
165
- enumerable: true,
166
- get: function() {
167
- return verifyDigestMultibase;
168
- }
169
- });
170
- Object.defineProperty(exports, "verifyHashlink", {
171
- enumerable: true,
172
- get: function() {
173
- return verifyHashlink;
174
- }
175
- });
@@ -1,103 +0,0 @@
1
- require("./chunk-C2EiDwsr.cjs");
2
- const require_multicodec = require("./multicodec-CxGVGa91.cjs");
3
- const require_multibase = require("./multibase-DcDQDNnI.cjs");
4
- const require_digest = require("./digest-DLwUyHCK.cjs");
5
- let node_test = require("node:test");
6
- let node_assert_strict = require("node:assert/strict");
7
- //#region src/digest.test.ts
8
- const encoder = new TextEncoder();
9
- const decoder = new TextDecoder();
10
- const bytes = encoder.encode("Hello World!");
11
- const digestMultibase = "zQmWvQxTqbG2Z9HPJgG57jjwR154cKhbtJenbyYTWkjgF3e";
12
- const hashlink = `hl:${digestMultibase}`;
13
- (0, node_test.test)("computeDigestMultibase() computes a SHA-256 multihash", async () => {
14
- (0, node_assert_strict.equal)(await require_digest.computeDigestMultibase(bytes), digestMultibase);
15
- const parsed = require_digest.parseDigestMultibase(digestMultibase);
16
- (0, node_assert_strict.equal)(parsed.algorithm, "sha2-256");
17
- (0, node_assert_strict.deepStrictEqual)(parsed.digest, new Uint8Array(await crypto.subtle.digest("SHA-256", bytes)));
18
- });
19
- (0, node_test.test)("digest helpers accept SharedArrayBuffer-backed bytes", async () => {
20
- const sharedBytes = new Uint8Array(new SharedArrayBuffer(bytes.length));
21
- sharedBytes.set(bytes);
22
- Object.defineProperty(sharedBytes, "slice", { value: () => {
23
- throw new Error("Shared input must not be copied with slice().");
24
- } });
25
- (0, node_assert_strict.equal)(await require_digest.computeDigestMultibase(sharedBytes), digestMultibase);
26
- (0, node_assert_strict.equal)(await require_digest.verifyDigestMultibase(sharedBytes, digestMultibase), true);
27
- });
28
- (0, node_test.test)("digest helpers ignore spoofed shared buffer tags", async () => {
29
- const taggedBytes = bytes.slice();
30
- Object.defineProperty(taggedBytes.buffer, Symbol.toStringTag, { value: "SharedArrayBuffer" });
31
- Object.defineProperty(taggedBytes, "slice", { value: () => {
32
- throw new Error("ArrayBuffer input must not be copied.");
33
- } });
34
- (0, node_assert_strict.equal)(await require_digest.computeDigestMultibase(taggedBytes), digestMultibase);
35
- (0, node_assert_strict.equal)(await require_digest.verifyDigestMultibase(taggedBytes, digestMultibase), true);
36
- });
37
- (0, node_test.test)("createHashlink() and parseHashlink() round-trip simple hashlinks", () => {
38
- (0, node_assert_strict.equal)(require_digest.createHashlink(digestMultibase), hashlink);
39
- (0, node_assert_strict.deepStrictEqual)(require_digest.parseHashlink(hashlink), { digestMultibase });
40
- (0, node_assert_strict.deepStrictEqual)(require_digest.parseHashlink(new URL(hashlink)), { digestMultibase });
41
- const base64DigestMultibase = decoder.decode(require_multibase.encodeMultibase("base64", require_multicodec.addMulticodecPrefix(18, require_multicodec.addMulticodecPrefix(32, new Uint8Array(32).fill(255)))));
42
- const base64Hashlink = require_digest.createHashlink(base64DigestMultibase);
43
- (0, node_assert_strict.equal)(base64Hashlink, "hl:mEiD//////////////////////////////////////////w");
44
- (0, node_assert_strict.deepStrictEqual)(require_digest.parseHashlink(base64Hashlink), { digestMultibase: base64DigestMultibase });
45
- (0, node_assert_strict.deepStrictEqual)(require_digest.parseHashlink(new URL(base64Hashlink)), { digestMultibase: base64DigestMultibase });
46
- });
47
- (0, node_test.test)("digest and hashlink verification accepts matching bytes", async () => {
48
- (0, node_assert_strict.equal)(await require_digest.verifyDigestMultibase(bytes, digestMultibase), true);
49
- (0, node_assert_strict.equal)(await require_digest.verifyHashlink(bytes, hashlink), true);
50
- (0, node_assert_strict.equal)(await require_digest.verifyHashlink(bytes, new URL(hashlink)), true);
51
- });
52
- (0, node_test.test)("digest and hashlink verification rejects non-matching bytes", async () => {
53
- const different = encoder.encode("Hello World?");
54
- (0, node_assert_strict.equal)(await require_digest.verifyDigestMultibase(different, digestMultibase), false);
55
- (0, node_assert_strict.equal)(await require_digest.verifyHashlink(different, hashlink), false);
56
- });
57
- (0, node_test.test)("parseDigestMultibase() rejects unsupported algorithms", () => {
58
- const sha1Multihash = require_multicodec.addMulticodecPrefix(17, require_multicodec.addMulticodecPrefix(20, new Uint8Array(20)));
59
- const value = decoder.decode(require_multibase.encodeMultibase("base58btc", sha1Multihash));
60
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(value), /* @__PURE__ */ new TypeError("Unsupported digest algorithm: 0x11"));
61
- });
62
- (0, node_test.test)("parseDigestMultibase() rejects malformed values", async () => {
63
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase("not-multibase"), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
64
- const missingLength = decoder.decode(require_multibase.encodeMultibase("base58btc", Uint8Array.of(18)));
65
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(missingLength), /* @__PURE__ */ new TypeError("Invalid digestMultibase multihash."));
66
- const multihash = require_multicodec.addMulticodecPrefix(18, require_multicodec.addMulticodecPrefix(32, new Uint8Array(32)));
67
- const base2 = decoder.decode(require_multibase.encodeMultibase("base2", multihash));
68
- (0, node_assert_strict.equal)(base2.length, 273);
69
- (0, node_assert_strict.deepStrictEqual)(require_digest.parseDigestMultibase(base2).digest, new Uint8Array(32));
70
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(`${base2}0`), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
71
- const padded = decoder.decode(require_multibase.encodeMultibase("base64pad", multihash));
72
- (0, node_assert_strict.equal)(padded.endsWith("=="), true);
73
- (0, node_assert_strict.deepStrictEqual)(require_digest.parseDigestMultibase(padded).digest, new Uint8Array(32));
74
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(padded.slice(0, -1)), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
75
- (0, node_assert_strict.throws)(() => require_digest.createHashlink(`${padded}=`), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
76
- const overlongAlgorithm = decoder.decode(require_multibase.encodeMultibase("base58btc", Uint8Array.of(146, 0, 32, ...new Uint8Array(32))));
77
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(overlongAlgorithm), /* @__PURE__ */ new TypeError("Invalid digestMultibase multihash."));
78
- const overlongLength = decoder.decode(require_multibase.encodeMultibase("base58btc", Uint8Array.of(18, 160, 0, ...new Uint8Array(32))));
79
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(overlongLength), /* @__PURE__ */ new TypeError("Invalid digestMultibase multihash."));
80
- const shortDigest = decoder.decode(require_multibase.encodeMultibase("base58btc", require_multicodec.addMulticodecPrefix(18, require_multicodec.addMulticodecPrefix(31, new Uint8Array(31)))));
81
- (0, node_assert_strict.throws)(() => require_digest.parseDigestMultibase(shortDigest), /* @__PURE__ */ new TypeError("Invalid SHA-256 digest length."));
82
- await (0, node_assert_strict.rejects)(() => require_digest.verifyDigestMultibase(bytes, shortDigest), /* @__PURE__ */ new TypeError("Invalid SHA-256 digest length."));
83
- });
84
- (0, node_test.test)("simple hashlink helpers reject metadata and malformed forms", async () => {
85
- for (const terminator of [
86
- "\n",
87
- "\r",
88
- "\r\n",
89
- "\u2028",
90
- "\u2029"
91
- ]) {
92
- const malformedHashlink = `${hashlink}${terminator}`;
93
- (0, node_assert_strict.throws)(() => require_digest.parseHashlink(malformedHashlink), /* @__PURE__ */ new TypeError("Invalid simple hashlink."));
94
- await (0, node_assert_strict.rejects)(() => require_digest.verifyHashlink(bytes, malformedHashlink), /* @__PURE__ */ new TypeError("Invalid simple hashlink."));
95
- }
96
- (0, node_assert_strict.throws)(() => require_digest.parseHashlink(`${hashlink}:zmetadata`), /* @__PURE__ */ new TypeError("Invalid simple hashlink."));
97
- await (0, node_assert_strict.rejects)(() => require_digest.verifyHashlink(bytes, `${hashlink}:zmetadata`), /* @__PURE__ */ new TypeError("Invalid simple hashlink."));
98
- (0, node_assert_strict.throws)(() => require_digest.parseHashlink(`https://example.com/file?hl=${digestMultibase}`), /* @__PURE__ */ new TypeError("Invalid simple hashlink."));
99
- (0, node_assert_strict.throws)(() => require_digest.parseHashlink("hl:not-multibase"), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
100
- await (0, node_assert_strict.rejects)(() => require_digest.verifyHashlink(bytes, "hl:not-multibase"), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
101
- (0, node_assert_strict.throws)(() => require_digest.createHashlink("not-multibase"), /* @__PURE__ */ new TypeError("Invalid digestMultibase encoding."));
102
- });
103
- //#endregion
@@ -1 +0,0 @@
1
- export { };
@@ -1 +0,0 @@
1
- export { };