@fedify/vocab-runtime 2.0.8 → 2.0.10

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 (47) hide show
  1. package/deno.json +1 -1
  2. package/dist/{chunk-CUT6urMc.cjs → chunk-CKQMccvm.cjs} +7 -9
  3. package/dist/jsonld.cjs +4 -5
  4. package/dist/jsonld.d.cts +3 -4
  5. package/dist/jsonld.d.ts +2 -2
  6. package/dist/jsonld.js +1 -3
  7. package/dist/mod.cjs +56 -121
  8. package/dist/mod.d.cts +1 -5
  9. package/dist/mod.d.ts +1 -5
  10. package/dist/mod.js +32 -100
  11. package/dist/tests/{chunk-DWy1uDak.cjs → chunk-Do9eywBl.cjs} +13 -17
  12. package/dist/tests/docloader.test.cjs +65 -106
  13. package/dist/tests/{docloader.test.js → docloader.test.mjs} +60 -107
  14. package/dist/tests/internal/multicodec.test.cjs +5 -7
  15. package/dist/tests/internal/{multicodec.test.js → multicodec.test.mjs} +3 -4
  16. package/dist/tests/key.test.cjs +39 -70
  17. package/dist/tests/{key.test.js → key.test.mjs} +32 -62
  18. package/dist/tests/langstr.test.cjs +6 -8
  19. package/dist/tests/{langstr.test.js → langstr.test.mjs} +2 -4
  20. package/dist/tests/{link-CdFPEo9O.cjs → link-B6ZWBZhf.cjs} +6 -8
  21. package/dist/tests/{link-Ck2yj4dH.js → link-B8JGXSS2.mjs} +1 -2
  22. package/dist/tests/link.test.cjs +5 -7
  23. package/dist/tests/{link.test.js → link.test.mjs} +3 -4
  24. package/dist/tests/multibase/multibase.test.cjs +10 -17
  25. package/dist/tests/multibase/{multibase.test.js → multibase.test.mjs} +10 -18
  26. package/dist/tests/{multibase-B2D6B0V4.cjs → multibase-CgYqpk4Z.cjs} +43 -49
  27. package/dist/tests/{multibase-BdHCGO4H.js → multibase-jcKrOpuU.mjs} +5 -12
  28. package/dist/tests/{multicodec-mHcRzSGY.cjs → multicodec-DeYop8xg.cjs} +16 -18
  29. package/dist/tests/{multicodec-DvC5xnX2.js → multicodec-aqbZnrNi.mjs} +1 -2
  30. package/dist/tests/{request-Cqx2eUpt.js → request-BaPLwjp1.mjs} +4 -45
  31. package/dist/tests/{request-D2-F2dMS.cjs → request-DIHEQLwz.cjs} +38 -72
  32. package/dist/tests/request.test.cjs +23 -24
  33. package/dist/tests/request.test.mjs +42 -0
  34. package/dist/tests/{url-C5Vs9nYh.cjs → url-Cr2K-wzd.cjs} +31 -35
  35. package/dist/tests/{url-fW_DHbih.js → url-Djghaq0m.mjs} +3 -7
  36. package/dist/tests/url.test.cjs +5 -7
  37. package/dist/tests/{url.test.js → url.test.mjs} +3 -4
  38. package/package.json +3 -3
  39. package/dist/tests/request.test.js +0 -43
  40. /package/dist/tests/{docloader.test.d.ts → docloader.test.d.mts} +0 -0
  41. /package/dist/tests/internal/{multicodec.test.d.ts → multicodec.test.d.mts} +0 -0
  42. /package/dist/tests/{key.test.d.ts → key.test.d.mts} +0 -0
  43. /package/dist/tests/{langstr.test.d.ts → langstr.test.d.mts} +0 -0
  44. /package/dist/tests/{link.test.d.ts → link.test.d.mts} +0 -0
  45. /package/dist/tests/multibase/{multibase.test.d.ts → multibase.test.d.mts} +0 -0
  46. /package/dist/tests/{request.test.d.ts → request.test.d.mts} +0 -0
  47. /package/dist/tests/{url.test.d.ts → url.test.d.mts} +0 -0
@@ -1,22 +1,20 @@
1
- const require_chunk = require('./chunk-DWy1uDak.cjs');
2
- const require_multicodec = require('./multicodec-mHcRzSGY.cjs');
3
- const require_multibase = require('./multibase-B2D6B0V4.cjs');
4
- const node_assert = require_chunk.__toESM(require("node:assert"));
5
- const node_test = require_chunk.__toESM(require("node:test"));
6
- const asn1js = require_chunk.__toESM(require("asn1js"));
7
- const byte_encodings_base64 = require_chunk.__toESM(require("byte-encodings/base64"));
8
- const byte_encodings_base64url = require_chunk.__toESM(require("byte-encodings/base64url"));
9
- const node_crypto = require_chunk.__toESM(require("node:crypto"));
10
- const pkijs = require_chunk.__toESM(require("pkijs"));
11
-
1
+ require("./chunk-Do9eywBl.cjs");
2
+ const require_multicodec = require("./multicodec-DeYop8xg.cjs");
3
+ const require_multibase = require("./multibase-CgYqpk4Z.cjs");
4
+ let node_assert = require("node:assert");
5
+ let node_test = require("node:test");
6
+ let asn1js = require("asn1js");
7
+ let byte_encodings_base64 = require("byte-encodings/base64");
8
+ let byte_encodings_base64url = require("byte-encodings/base64url");
9
+ let node_crypto = require("node:crypto");
10
+ let pkijs = require("pkijs");
12
11
  //#region src/jwk.ts
13
12
  function validateCryptoKey(key, type) {
14
13
  if (type != null && key.type !== type) throw new TypeError(`The key is not a ${type} key.`);
15
14
  if (!key.extractable) throw new TypeError("The key is not extractable.");
16
15
  if (key.algorithm.name !== "RSASSA-PKCS1-v1_5" && key.algorithm.name !== "Ed25519") throw new TypeError("Currently only RSASSA-PKCS1-v1_5 and Ed25519 keys are supported. More algorithms will be added in the future!");
17
16
  if (key.algorithm.name === "RSASSA-PKCS1-v1_5") {
18
- const algorithm = key.algorithm;
19
- if (algorithm.hash.name !== "SHA-256") throw new TypeError("For compatibility with the existing Fediverse software (e.g., Mastodon), hash algorithm for RSASSA-PKCS1-v1_5 keys must be SHA-256.");
17
+ if (key.algorithm.hash.name !== "SHA-256") throw new TypeError("For compatibility with the existing Fediverse software (e.g., Mastodon), hash algorithm for RSASSA-PKCS1-v1_5 keys must be SHA-256.");
20
18
  }
21
19
  }
22
20
  async function exportJwk(key) {
@@ -41,7 +39,6 @@ async function importJwk(jwk, type) {
41
39
  validateCryptoKey(key, type);
42
40
  return key;
43
41
  }
44
-
45
42
  //#endregion
46
43
  //#region src/key.ts
47
44
  const algorithms = {
@@ -66,8 +63,7 @@ async function importSpki(pem) {
66
63
  } catch (_) {
67
64
  throw new TypeError("Invalid PEM-SPKI format.");
68
65
  }
69
- const pki = pkijs.PublicKeyInfo.fromBER(spki);
70
- const oid = pki.algorithm.algorithmId;
66
+ const oid = pkijs.PublicKeyInfo.fromBER(spki).algorithm.algorithmId;
71
67
  const algorithm = algorithms[oid];
72
68
  if (algorithm == null) throw new TypeError("Unsupported algorithm: " + oid);
73
69
  return await crypto.subtle.importKey("spki", spki, algorithm, true, ["verify"]);
@@ -81,8 +77,7 @@ async function importSpki(pem) {
81
77
  */
82
78
  async function exportSpki(key) {
83
79
  validateCryptoKey(key);
84
- const spki = await crypto.subtle.exportKey("spki", key);
85
- let pem = (0, byte_encodings_base64.encodeBase64)(spki);
80
+ let pem = (0, byte_encodings_base64.encodeBase64)(await crypto.subtle.exportKey("spki", key));
86
81
  pem = (pem.match(/.{1,64}/g) || []).join("\n");
87
82
  return `-----BEGIN PUBLIC KEY-----\n${pem}\n-----END PUBLIC KEY-----\n`;
88
83
  }
@@ -94,16 +89,14 @@ async function exportSpki(key) {
94
89
  * @since 1.5.0
95
90
  */
96
91
  function importPkcs1(pem) {
97
- const key = (0, node_crypto.createPublicKey)({
92
+ return importSpki((0, node_crypto.createPublicKey)({
98
93
  key: pem,
99
94
  format: "pem",
100
95
  type: "pkcs1"
101
- });
102
- const spki = key.export({
96
+ }).export({
103
97
  type: "spki",
104
98
  format: "pem"
105
- });
106
- return importSpki(spki);
99
+ }));
107
100
  }
108
101
  const PKCS1_HEADER = /^\s*-----BEGIN\s+RSA\s+PUBLIC\s+KEY-----\s*\n/;
109
102
  /**
@@ -130,12 +123,11 @@ async function importMultibaseKey(key) {
130
123
  const { code } = require_multicodec.getMulticodecPrefix(decoded);
131
124
  const content = require_multicodec.removeMulticodecPrefix(decoded);
132
125
  if (code === 4613) {
133
- const keyObject = (0, node_crypto.createPublicKey)({
126
+ const exported = (0, node_crypto.createPublicKey)({
134
127
  key: content,
135
128
  format: "der",
136
129
  type: "pkcs1"
137
- });
138
- const exported = keyObject.export({
130
+ }).export({
139
131
  type: "spki",
140
132
  format: "der"
141
133
  });
@@ -167,21 +159,18 @@ async function exportMultibaseKey(key) {
167
159
  const decodedN = (0, byte_encodings_base64url.decodeBase64Url)(jwk.n);
168
160
  const n = new Uint8Array(decodedN.length + 1);
169
161
  n.set(decodedN, 1);
170
- const sequence = new asn1js.Sequence({ value: [new asn1js.Integer({
162
+ content = new asn1js.Sequence({ value: [new asn1js.Integer({
171
163
  isHexOnly: true,
172
164
  valueHex: n
173
165
  }), new asn1js.Integer({
174
166
  isHexOnly: true,
175
167
  valueHex: (0, byte_encodings_base64url.decodeBase64Url)(jwk.e)
176
- })] });
177
- content = sequence.toBER(false);
168
+ })] }).toBER(false);
178
169
  code = 4613;
179
170
  } else throw new TypeError("Unsupported key type: " + JSON.stringify(key.algorithm));
180
- const prefixed = require_multicodec.addMulticodecPrefix(code, new Uint8Array(content));
181
- const encoded = require_multibase.encodeMultibase("base58btc", prefixed);
171
+ const encoded = require_multibase.encodeMultibase("base58btc", require_multicodec.addMulticodecPrefix(code, new Uint8Array(content)));
182
172
  return new TextDecoder().decode(encoded);
183
173
  }
184
-
185
174
  //#endregion
186
175
  //#region src/key.test.ts
187
176
  const rsaSpki = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxsRuvCkgJtflBTl4OVsm\nnt/J1mQfZasfJtN33dcZ3d1lJroxmgmMu69zjGEAwkNbMQaWNLqC4eogkJaeJ4RR\n5MHYXkL9nNilVoTkjX5BVit3puzs7XJ7WQnKQgQMI+ezn24GHsZ/v1JIo77lerX5\nk4HNwTNVt+yaZVQWaOMR3+6FwziQR6kd0VuG9/a9dgAnz2cEoORRC1i4W7IZaB1s\nZnh1WbHbevlGd72HSXll5rocPIHn8gq6xpBgpHwRphlRsgn4KHaJ6brXDIJjrnQh\nIe/YUBOGj/ImSEXhRwlFerKsoAVnZ0Hwbfa46qk44TAt8CyoPMWmpK6pt0ng4pQ2\nuwIDAQAB\n-----END PUBLIC KEY-----\n";
@@ -206,36 +195,25 @@ const ed25519Jwk = {
206
195
  };
207
196
  const ed25519Multibase = "z6MksHj1MJnidCtDiyYW9ugNFftoX9fLK4bornTxmMZ6X7vq";
208
197
  (0, node_test.test)("importSpki()", async () => {
209
- const rsaKey = await importSpki(rsaSpki);
210
- (0, node_assert.deepStrictEqual)(await exportJwk(rsaKey), rsaJwk);
211
- const ed25519Key = await importSpki(ed25519Pem);
212
- (0, node_assert.deepStrictEqual)(await exportJwk(ed25519Key), ed25519Jwk);
198
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importSpki(rsaSpki)), rsaJwk);
199
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importSpki(ed25519Pem)), ed25519Jwk);
213
200
  });
214
201
  (0, node_test.test)("exportSpki()", async () => {
215
- const rsaKey = await importJwk(rsaJwk, "public");
216
- const rsaSpki$1 = await exportSpki(rsaKey);
217
- (0, node_assert.deepStrictEqual)(rsaSpki$1, rsaSpki$1);
218
- const ed25519Key = await importJwk(ed25519Jwk, "public");
219
- const ed25519Spki = await exportSpki(ed25519Key);
220
- (0, node_assert.deepStrictEqual)(ed25519Spki, ed25519Pem);
202
+ const rsaSpki = await exportSpki(await importJwk(rsaJwk, "public"));
203
+ (0, node_assert.deepStrictEqual)(rsaSpki, rsaSpki);
204
+ (0, node_assert.deepStrictEqual)(await exportSpki(await importJwk(ed25519Jwk, "public")), ed25519Pem);
221
205
  });
222
206
  (0, node_test.test)("importPkcs1()", async () => {
223
- const rsaKey = await importPkcs1(rsaPkcs1);
224
- (0, node_assert.deepStrictEqual)(await exportJwk(rsaKey), rsaJwk);
207
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importPkcs1(rsaPkcs1)), rsaJwk);
225
208
  });
226
209
  (0, node_test.test)("importPem()", async () => {
227
- const rsaPkcs1Key = await importPem(rsaPkcs1);
228
- (0, node_assert.deepStrictEqual)(await exportJwk(rsaPkcs1Key), rsaJwk);
229
- const rsaSpkiKey = await importPem(rsaSpki);
230
- (0, node_assert.deepStrictEqual)(await exportJwk(rsaSpkiKey), rsaJwk);
231
- const ed25519Key = await importPem(ed25519Pem);
232
- (0, node_assert.deepStrictEqual)(await exportJwk(ed25519Key), ed25519Jwk);
210
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importPem(rsaPkcs1)), rsaJwk);
211
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importPem(rsaSpki)), rsaJwk);
212
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importPem(ed25519Pem)), ed25519Jwk);
233
213
  });
234
214
  (0, node_test.test)("importMultibase()", async () => {
235
- const rsaKey = await importMultibaseKey(rsaMultibase);
236
- (0, node_assert.deepStrictEqual)(await exportJwk(rsaKey), rsaJwk);
237
- const ed25519Key = await importMultibaseKey(ed25519Multibase);
238
- (0, node_assert.deepStrictEqual)(await exportJwk(ed25519Key), ed25519Jwk);
215
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importMultibaseKey(rsaMultibase)), rsaJwk);
216
+ (0, node_assert.deepStrictEqual)(await exportJwk(await importMultibaseKey(ed25519Multibase)), ed25519Jwk);
239
217
  });
240
218
  (0, node_test.test)("importMultibase() rejects malformed multicodec prefixes", async () => {
241
219
  const decoder = new TextDecoder();
@@ -243,32 +221,23 @@ const ed25519Multibase = "z6MksHj1MJnidCtDiyYW9ugNFftoX9fLK4bornTxmMZ6X7vq";
243
221
  await (0, node_assert.rejects)(() => importMultibaseKey(decoder.decode(require_multibase.encodeMultibase("base58btc", Uint8Array.from([128])))), /* @__PURE__ */ new TypeError("Invalid multicodec prefix."));
244
222
  });
245
223
  (0, node_test.test)("exportMultibaseKey()", async () => {
246
- const rsaKey = await importJwk(rsaJwk, "public");
247
- const rsaMb = await exportMultibaseKey(rsaKey);
248
- (0, node_assert.deepStrictEqual)(rsaMb, rsaMultibase);
249
- const ed25519Key = await importJwk(ed25519Jwk, "public");
250
- const ed25519Mb = await exportMultibaseKey(ed25519Key);
251
- (0, node_assert.deepStrictEqual)(ed25519Mb, ed25519Multibase);
252
- const rsaKey2 = await importJwk({
224
+ (0, node_assert.deepStrictEqual)(await exportMultibaseKey(await importJwk(rsaJwk, "public")), rsaMultibase);
225
+ (0, node_assert.deepStrictEqual)(await exportMultibaseKey(await importJwk(ed25519Jwk, "public")), ed25519Multibase);
226
+ (0, node_assert.deepStrictEqual)(await exportMultibaseKey(await importJwk({
253
227
  alg: "RS256",
254
228
  ext: true,
255
229
  key_ops: ["verify"],
256
230
  e: "AQAB",
257
231
  kty: "RSA",
258
232
  n: "sbX82NTV6IylxCh7MfV4hlyvaniCajuP97GyOqSvTmoEdBOflFvZ06kR_9D6ctt45Fk6hskfnag2GG69NALVH2o4RCR6tQiLRpKcMRtDYE_thEmfBvDzm_VVkOIYfxu-Ipuo9J_S5XDNDjczx2v-3oDh5-CIHkU46hvFeCvpUS-L8TJSbgX0kjVk_m4eIb9wh63rtmD6Uz_KBtCo5mmR4TEtcLZKYdqMp3wCjN-TlgHiz_4oVXWbHUefCEe8rFnX1iQnpDHU49_SaXQoud1jCaexFn25n-Aa8f8bc5Vm-5SeRwidHa6ErvEhTvf1dz6GoNPp2iRvm-wJ1gxwWJEYPQ"
259
- }, "public");
260
- const rsaMb2 = await exportMultibaseKey(rsaKey2);
261
- (0, node_assert.deepStrictEqual)(rsaMb2, "z4MXj1wBzi9jUstyPMS4jQqB6KdJaiatPkAtVtGc6bQEQEEsKTic4G7Rou3iBf9vPmT5dbkm9qsZsuVNjq8HCuW1w24nhBFGkRE4cd2Uf2tfrB3N7h4mnyPp1BF3ZttHTYv3DLUPi1zMdkULiow3M1GfXkoC6DoxDUm1jmN6GBj22SjVsr6dxezRVQc7aj9TxE7JLbMH1wh5X3kA58H3DFW8rnYMakFGbca5CB2Jf6CnGQZmL7o5uJAdTwXfy2iiiyPxXEGerMhHwhjTA1mKYobyk2CpeEcmvynADfNZ5MBvcCS7m3XkFCMNUYBS9NQ3fze6vMSUPsNa6GVYmKx2x6JrdEjCk3qRMMmyjnjCMfR4pXbRMZa3i");
262
- const ed25519Key2 = await importJwk({
233
+ }, "public")), "z4MXj1wBzi9jUstyPMS4jQqB6KdJaiatPkAtVtGc6bQEQEEsKTic4G7Rou3iBf9vPmT5dbkm9qsZsuVNjq8HCuW1w24nhBFGkRE4cd2Uf2tfrB3N7h4mnyPp1BF3ZttHTYv3DLUPi1zMdkULiow3M1GfXkoC6DoxDUm1jmN6GBj22SjVsr6dxezRVQc7aj9TxE7JLbMH1wh5X3kA58H3DFW8rnYMakFGbca5CB2Jf6CnGQZmL7o5uJAdTwXfy2iiiyPxXEGerMhHwhjTA1mKYobyk2CpeEcmvynADfNZ5MBvcCS7m3XkFCMNUYBS9NQ3fze6vMSUPsNa6GVYmKx2x6JrdEjCk3qRMMmyjnjCMfR4pXbRMZa3i");
234
+ (0, node_assert.deepStrictEqual)(await exportMultibaseKey(await importJwk({
263
235
  alg: "Ed25519",
264
236
  crv: "Ed25519",
265
237
  ext: true,
266
238
  key_ops: ["verify"],
267
239
  kty: "OKP",
268
240
  x: "Lm_M42cB3HkUiODQsXRcweM6TByfzEHGO9ND274JcOY"
269
- }, "public");
270
- const ed25519Mb2 = await exportMultibaseKey(ed25519Key2);
271
- (0, node_assert.deepStrictEqual)(ed25519Mb2, "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK");
241
+ }, "public")), "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK");
272
242
  });
273
-
274
- //#endregion
243
+ //#endregion
@@ -1,5 +1,5 @@
1
- import { addMulticodecPrefix, getMulticodecPrefix, removeMulticodecPrefix } from "./multicodec-DvC5xnX2.js";
2
- import { decodeMultibase, encodeMultibase } from "./multibase-BdHCGO4H.js";
1
+ import { n as getMulticodecPrefix, r as removeMulticodecPrefix, t as addMulticodecPrefix } from "./multicodec-aqbZnrNi.mjs";
2
+ import { n as encodeMultibase, t as decodeMultibase } from "./multibase-jcKrOpuU.mjs";
3
3
  import { deepStrictEqual, rejects } from "node:assert";
4
4
  import { test } from "node:test";
5
5
  import { Integer, Sequence } from "asn1js";
@@ -7,15 +7,13 @@ import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
7
7
  import { decodeBase64Url } from "byte-encodings/base64url";
8
8
  import { createPublicKey } from "node:crypto";
9
9
  import { PublicKeyInfo } from "pkijs";
10
-
11
10
  //#region src/jwk.ts
12
11
  function validateCryptoKey(key, type) {
13
12
  if (type != null && key.type !== type) throw new TypeError(`The key is not a ${type} key.`);
14
13
  if (!key.extractable) throw new TypeError("The key is not extractable.");
15
14
  if (key.algorithm.name !== "RSASSA-PKCS1-v1_5" && key.algorithm.name !== "Ed25519") throw new TypeError("Currently only RSASSA-PKCS1-v1_5 and Ed25519 keys are supported. More algorithms will be added in the future!");
16
15
  if (key.algorithm.name === "RSASSA-PKCS1-v1_5") {
17
- const algorithm = key.algorithm;
18
- if (algorithm.hash.name !== "SHA-256") throw new TypeError("For compatibility with the existing Fediverse software (e.g., Mastodon), hash algorithm for RSASSA-PKCS1-v1_5 keys must be SHA-256.");
16
+ if (key.algorithm.hash.name !== "SHA-256") throw new TypeError("For compatibility with the existing Fediverse software (e.g., Mastodon), hash algorithm for RSASSA-PKCS1-v1_5 keys must be SHA-256.");
19
17
  }
20
18
  }
21
19
  async function exportJwk(key) {
@@ -40,7 +38,6 @@ async function importJwk(jwk, type) {
40
38
  validateCryptoKey(key, type);
41
39
  return key;
42
40
  }
43
-
44
41
  //#endregion
45
42
  //#region src/key.ts
46
43
  const algorithms = {
@@ -65,8 +62,7 @@ async function importSpki(pem) {
65
62
  } catch (_) {
66
63
  throw new TypeError("Invalid PEM-SPKI format.");
67
64
  }
68
- const pki = PublicKeyInfo.fromBER(spki);
69
- const oid = pki.algorithm.algorithmId;
65
+ const oid = PublicKeyInfo.fromBER(spki).algorithm.algorithmId;
70
66
  const algorithm = algorithms[oid];
71
67
  if (algorithm == null) throw new TypeError("Unsupported algorithm: " + oid);
72
68
  return await crypto.subtle.importKey("spki", spki, algorithm, true, ["verify"]);
@@ -80,8 +76,7 @@ async function importSpki(pem) {
80
76
  */
81
77
  async function exportSpki(key) {
82
78
  validateCryptoKey(key);
83
- const spki = await crypto.subtle.exportKey("spki", key);
84
- let pem = encodeBase64(spki);
79
+ let pem = encodeBase64(await crypto.subtle.exportKey("spki", key));
85
80
  pem = (pem.match(/.{1,64}/g) || []).join("\n");
86
81
  return `-----BEGIN PUBLIC KEY-----\n${pem}\n-----END PUBLIC KEY-----\n`;
87
82
  }
@@ -93,16 +88,14 @@ async function exportSpki(key) {
93
88
  * @since 1.5.0
94
89
  */
95
90
  function importPkcs1(pem) {
96
- const key = createPublicKey({
91
+ return importSpki(createPublicKey({
97
92
  key: pem,
98
93
  format: "pem",
99
94
  type: "pkcs1"
100
- });
101
- const spki = key.export({
95
+ }).export({
102
96
  type: "spki",
103
97
  format: "pem"
104
- });
105
- return importSpki(spki);
98
+ }));
106
99
  }
107
100
  const PKCS1_HEADER = /^\s*-----BEGIN\s+RSA\s+PUBLIC\s+KEY-----\s*\n/;
108
101
  /**
@@ -129,12 +122,11 @@ async function importMultibaseKey(key) {
129
122
  const { code } = getMulticodecPrefix(decoded);
130
123
  const content = removeMulticodecPrefix(decoded);
131
124
  if (code === 4613) {
132
- const keyObject = createPublicKey({
125
+ const exported = createPublicKey({
133
126
  key: content,
134
127
  format: "der",
135
128
  type: "pkcs1"
136
- });
137
- const exported = keyObject.export({
129
+ }).export({
138
130
  type: "spki",
139
131
  format: "der"
140
132
  });
@@ -166,21 +158,18 @@ async function exportMultibaseKey(key) {
166
158
  const decodedN = decodeBase64Url(jwk.n);
167
159
  const n = new Uint8Array(decodedN.length + 1);
168
160
  n.set(decodedN, 1);
169
- const sequence = new Sequence({ value: [new Integer({
161
+ content = new Sequence({ value: [new Integer({
170
162
  isHexOnly: true,
171
163
  valueHex: n
172
164
  }), new Integer({
173
165
  isHexOnly: true,
174
166
  valueHex: decodeBase64Url(jwk.e)
175
- })] });
176
- content = sequence.toBER(false);
167
+ })] }).toBER(false);
177
168
  code = 4613;
178
169
  } else throw new TypeError("Unsupported key type: " + JSON.stringify(key.algorithm));
179
- const prefixed = addMulticodecPrefix(code, new Uint8Array(content));
180
- const encoded = encodeMultibase("base58btc", prefixed);
170
+ const encoded = encodeMultibase("base58btc", addMulticodecPrefix(code, new Uint8Array(content)));
181
171
  return new TextDecoder().decode(encoded);
182
172
  }
183
-
184
173
  //#endregion
185
174
  //#region src/key.test.ts
186
175
  const rsaSpki = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxsRuvCkgJtflBTl4OVsm\nnt/J1mQfZasfJtN33dcZ3d1lJroxmgmMu69zjGEAwkNbMQaWNLqC4eogkJaeJ4RR\n5MHYXkL9nNilVoTkjX5BVit3puzs7XJ7WQnKQgQMI+ezn24GHsZ/v1JIo77lerX5\nk4HNwTNVt+yaZVQWaOMR3+6FwziQR6kd0VuG9/a9dgAnz2cEoORRC1i4W7IZaB1s\nZnh1WbHbevlGd72HSXll5rocPIHn8gq6xpBgpHwRphlRsgn4KHaJ6brXDIJjrnQh\nIe/YUBOGj/ImSEXhRwlFerKsoAVnZ0Hwbfa46qk44TAt8CyoPMWmpK6pt0ng4pQ2\nuwIDAQAB\n-----END PUBLIC KEY-----\n";
@@ -205,36 +194,25 @@ const ed25519Jwk = {
205
194
  };
206
195
  const ed25519Multibase = "z6MksHj1MJnidCtDiyYW9ugNFftoX9fLK4bornTxmMZ6X7vq";
207
196
  test("importSpki()", async () => {
208
- const rsaKey = await importSpki(rsaSpki);
209
- deepStrictEqual(await exportJwk(rsaKey), rsaJwk);
210
- const ed25519Key = await importSpki(ed25519Pem);
211
- deepStrictEqual(await exportJwk(ed25519Key), ed25519Jwk);
197
+ deepStrictEqual(await exportJwk(await importSpki(rsaSpki)), rsaJwk);
198
+ deepStrictEqual(await exportJwk(await importSpki(ed25519Pem)), ed25519Jwk);
212
199
  });
213
200
  test("exportSpki()", async () => {
214
- const rsaKey = await importJwk(rsaJwk, "public");
215
- const rsaSpki$1 = await exportSpki(rsaKey);
216
- deepStrictEqual(rsaSpki$1, rsaSpki$1);
217
- const ed25519Key = await importJwk(ed25519Jwk, "public");
218
- const ed25519Spki = await exportSpki(ed25519Key);
219
- deepStrictEqual(ed25519Spki, ed25519Pem);
201
+ const rsaSpki = await exportSpki(await importJwk(rsaJwk, "public"));
202
+ deepStrictEqual(rsaSpki, rsaSpki);
203
+ deepStrictEqual(await exportSpki(await importJwk(ed25519Jwk, "public")), ed25519Pem);
220
204
  });
221
205
  test("importPkcs1()", async () => {
222
- const rsaKey = await importPkcs1(rsaPkcs1);
223
- deepStrictEqual(await exportJwk(rsaKey), rsaJwk);
206
+ deepStrictEqual(await exportJwk(await importPkcs1(rsaPkcs1)), rsaJwk);
224
207
  });
225
208
  test("importPem()", async () => {
226
- const rsaPkcs1Key = await importPem(rsaPkcs1);
227
- deepStrictEqual(await exportJwk(rsaPkcs1Key), rsaJwk);
228
- const rsaSpkiKey = await importPem(rsaSpki);
229
- deepStrictEqual(await exportJwk(rsaSpkiKey), rsaJwk);
230
- const ed25519Key = await importPem(ed25519Pem);
231
- deepStrictEqual(await exportJwk(ed25519Key), ed25519Jwk);
209
+ deepStrictEqual(await exportJwk(await importPem(rsaPkcs1)), rsaJwk);
210
+ deepStrictEqual(await exportJwk(await importPem(rsaSpki)), rsaJwk);
211
+ deepStrictEqual(await exportJwk(await importPem(ed25519Pem)), ed25519Jwk);
232
212
  });
233
213
  test("importMultibase()", async () => {
234
- const rsaKey = await importMultibaseKey(rsaMultibase);
235
- deepStrictEqual(await exportJwk(rsaKey), rsaJwk);
236
- const ed25519Key = await importMultibaseKey(ed25519Multibase);
237
- deepStrictEqual(await exportJwk(ed25519Key), ed25519Jwk);
214
+ deepStrictEqual(await exportJwk(await importMultibaseKey(rsaMultibase)), rsaJwk);
215
+ deepStrictEqual(await exportJwk(await importMultibaseKey(ed25519Multibase)), ed25519Jwk);
238
216
  });
239
217
  test("importMultibase() rejects malformed multicodec prefixes", async () => {
240
218
  const decoder = new TextDecoder();
@@ -242,32 +220,24 @@ test("importMultibase() rejects malformed multicodec prefixes", async () => {
242
220
  await rejects(() => importMultibaseKey(decoder.decode(encodeMultibase("base58btc", Uint8Array.from([128])))), /* @__PURE__ */ new TypeError("Invalid multicodec prefix."));
243
221
  });
244
222
  test("exportMultibaseKey()", async () => {
245
- const rsaKey = await importJwk(rsaJwk, "public");
246
- const rsaMb = await exportMultibaseKey(rsaKey);
247
- deepStrictEqual(rsaMb, rsaMultibase);
248
- const ed25519Key = await importJwk(ed25519Jwk, "public");
249
- const ed25519Mb = await exportMultibaseKey(ed25519Key);
250
- deepStrictEqual(ed25519Mb, ed25519Multibase);
251
- const rsaKey2 = await importJwk({
223
+ deepStrictEqual(await exportMultibaseKey(await importJwk(rsaJwk, "public")), rsaMultibase);
224
+ deepStrictEqual(await exportMultibaseKey(await importJwk(ed25519Jwk, "public")), ed25519Multibase);
225
+ deepStrictEqual(await exportMultibaseKey(await importJwk({
252
226
  alg: "RS256",
253
227
  ext: true,
254
228
  key_ops: ["verify"],
255
229
  e: "AQAB",
256
230
  kty: "RSA",
257
231
  n: "sbX82NTV6IylxCh7MfV4hlyvaniCajuP97GyOqSvTmoEdBOflFvZ06kR_9D6ctt45Fk6hskfnag2GG69NALVH2o4RCR6tQiLRpKcMRtDYE_thEmfBvDzm_VVkOIYfxu-Ipuo9J_S5XDNDjczx2v-3oDh5-CIHkU46hvFeCvpUS-L8TJSbgX0kjVk_m4eIb9wh63rtmD6Uz_KBtCo5mmR4TEtcLZKYdqMp3wCjN-TlgHiz_4oVXWbHUefCEe8rFnX1iQnpDHU49_SaXQoud1jCaexFn25n-Aa8f8bc5Vm-5SeRwidHa6ErvEhTvf1dz6GoNPp2iRvm-wJ1gxwWJEYPQ"
258
- }, "public");
259
- const rsaMb2 = await exportMultibaseKey(rsaKey2);
260
- deepStrictEqual(rsaMb2, "z4MXj1wBzi9jUstyPMS4jQqB6KdJaiatPkAtVtGc6bQEQEEsKTic4G7Rou3iBf9vPmT5dbkm9qsZsuVNjq8HCuW1w24nhBFGkRE4cd2Uf2tfrB3N7h4mnyPp1BF3ZttHTYv3DLUPi1zMdkULiow3M1GfXkoC6DoxDUm1jmN6GBj22SjVsr6dxezRVQc7aj9TxE7JLbMH1wh5X3kA58H3DFW8rnYMakFGbca5CB2Jf6CnGQZmL7o5uJAdTwXfy2iiiyPxXEGerMhHwhjTA1mKYobyk2CpeEcmvynADfNZ5MBvcCS7m3XkFCMNUYBS9NQ3fze6vMSUPsNa6GVYmKx2x6JrdEjCk3qRMMmyjnjCMfR4pXbRMZa3i");
261
- const ed25519Key2 = await importJwk({
232
+ }, "public")), "z4MXj1wBzi9jUstyPMS4jQqB6KdJaiatPkAtVtGc6bQEQEEsKTic4G7Rou3iBf9vPmT5dbkm9qsZsuVNjq8HCuW1w24nhBFGkRE4cd2Uf2tfrB3N7h4mnyPp1BF3ZttHTYv3DLUPi1zMdkULiow3M1GfXkoC6DoxDUm1jmN6GBj22SjVsr6dxezRVQc7aj9TxE7JLbMH1wh5X3kA58H3DFW8rnYMakFGbca5CB2Jf6CnGQZmL7o5uJAdTwXfy2iiiyPxXEGerMhHwhjTA1mKYobyk2CpeEcmvynADfNZ5MBvcCS7m3XkFCMNUYBS9NQ3fze6vMSUPsNa6GVYmKx2x6JrdEjCk3qRMMmyjnjCMfR4pXbRMZa3i");
233
+ deepStrictEqual(await exportMultibaseKey(await importJwk({
262
234
  alg: "Ed25519",
263
235
  crv: "Ed25519",
264
236
  ext: true,
265
237
  key_ops: ["verify"],
266
238
  kty: "OKP",
267
239
  x: "Lm_M42cB3HkUiODQsXRcweM6TByfzEHGO9ND274JcOY"
268
- }, "public");
269
- const ed25519Mb2 = await exportMultibaseKey(ed25519Key2);
270
- deepStrictEqual(ed25519Mb2, "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK");
240
+ }, "public")), "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK");
271
241
  });
272
-
273
- //#endregion
242
+ //#endregion
243
+ export {};
@@ -1,8 +1,8 @@
1
- const require_chunk = require('./chunk-DWy1uDak.cjs');
2
- const node_assert = require_chunk.__toESM(require("node:assert"));
3
- const node_test = require_chunk.__toESM(require("node:test"));
4
- const node_util = require_chunk.__toESM(require("node:util"));
5
-
1
+ const require_chunk = require("./chunk-Do9eywBl.cjs");
2
+ let node_assert = require("node:assert");
3
+ let node_test = require("node:test");
4
+ let node_util = require("node:util");
5
+ node_util = require_chunk.__toESM(node_util);
6
6
  //#region src/langstr.ts
7
7
  /**
8
8
  * A language-tagged string which corresponds to the `rdf:langString` type.
@@ -30,7 +30,6 @@ LanguageString.prototype[Symbol.for("Deno.customInspect")] = function(inspect, o
30
30
  LanguageString.prototype[Symbol.for("nodejs.util.inspect.custom")] = function(_depth, options, inspect) {
31
31
  return `<${this.locale.baseName}> ${inspect(this.toString(), options)}`;
32
32
  };
33
-
34
33
  //#endregion
35
34
  //#region src/langstr.test.ts
36
35
  (0, node_test.test)("new LanguageString()", () => {
@@ -47,5 +46,4 @@ LanguageString.prototype[Symbol.for("nodejs.util.inspect.custom")] = function(_d
47
46
  const langStr = new LanguageString("Hello, 'world'", "en");
48
47
  (0, node_assert.deepStrictEqual)(node_util.default.inspect(langStr, { colors: false }), "<en> \"Hello, 'world'\"");
49
48
  });
50
-
51
- //#endregion
49
+ //#endregion
@@ -1,7 +1,6 @@
1
1
  import { deepStrictEqual } from "node:assert";
2
2
  import { test } from "node:test";
3
3
  import util from "node:util";
4
-
5
4
  //#region src/langstr.ts
6
5
  /**
7
6
  * A language-tagged string which corresponds to the `rdf:langString` type.
@@ -29,7 +28,6 @@ LanguageString.prototype[Symbol.for("Deno.customInspect")] = function(inspect, o
29
28
  LanguageString.prototype[Symbol.for("nodejs.util.inspect.custom")] = function(_depth, options, inspect) {
30
29
  return `<${this.locale.baseName}> ${inspect(this.toString(), options)}`;
31
30
  };
32
-
33
31
  //#endregion
34
32
  //#region src/langstr.test.ts
35
33
  test("new LanguageString()", () => {
@@ -46,5 +44,5 @@ test("util.inspect(LanguageString)", () => {
46
44
  const langStr = new LanguageString("Hello, 'world'", "en");
47
45
  deepStrictEqual(util.inspect(langStr, { colors: false }), "<en> \"Hello, 'world'\"");
48
46
  });
49
-
50
- //#endregion
47
+ //#endregion
48
+ export {};
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/link.ts
3
2
  const parametersNeedLowerCase = ["rel", "type"];
4
3
  const regexpLinkWhitespace = /[\n\r\s\t]/;
@@ -179,11 +178,10 @@ var HttpHeaderLink = class HttpHeaderLink {
179
178
  return new this(...inputs).toString();
180
179
  }
181
180
  };
182
-
183
181
  //#endregion
184
- Object.defineProperty(exports, 'HttpHeaderLink', {
185
- enumerable: true,
186
- get: function () {
187
- return HttpHeaderLink;
188
- }
189
- });
182
+ Object.defineProperty(exports, "HttpHeaderLink", {
183
+ enumerable: true,
184
+ get: function() {
185
+ return HttpHeaderLink;
186
+ }
187
+ });
@@ -178,6 +178,5 @@ var HttpHeaderLink = class HttpHeaderLink {
178
178
  return new this(...inputs).toString();
179
179
  }
180
180
  };
181
-
182
181
  //#endregion
183
- export { HttpHeaderLink };
182
+ export { HttpHeaderLink as t };
@@ -1,8 +1,7 @@
1
- const require_chunk = require('./chunk-DWy1uDak.cjs');
2
- const require_link = require('./link-CdFPEo9O.cjs');
3
- const node_assert = require_chunk.__toESM(require("node:assert"));
4
- const node_test = require_chunk.__toESM(require("node:test"));
5
-
1
+ require("./chunk-Do9eywBl.cjs");
2
+ const require_link = require("./link-B6ZWBZhf.cjs");
3
+ let node_assert = require("node:assert");
4
+ let node_test = require("node:test");
6
5
  //#region src/link.test.ts
7
6
  (0, node_test.test)("String Good 1", () => {
8
7
  const instance = new require_link.HttpHeaderLink(`<https://example.com>; rel="preconnect"`);
@@ -52,5 +51,4 @@ const node_test = require_chunk.__toESM(require("node:test"));
52
51
  new require_link.HttpHeaderLink(`https://bad.example; rel="preconnect"`);
53
52
  });
54
53
  });
55
-
56
- //#endregion
54
+ //#endregion
@@ -1,7 +1,6 @@
1
- import { HttpHeaderLink } from "./link-Ck2yj4dH.js";
1
+ import { t as HttpHeaderLink } from "./link-B8JGXSS2.mjs";
2
2
  import { deepStrictEqual, throws } from "node:assert";
3
3
  import { test } from "node:test";
4
-
5
4
  //#region src/link.test.ts
6
5
  test("String Good 1", () => {
7
6
  const instance = new HttpHeaderLink(`<https://example.com>; rel="preconnect"`);
@@ -51,5 +50,5 @@ test("String Bad 1", () => {
51
50
  new HttpHeaderLink(`https://bad.example; rel="preconnect"`);
52
51
  });
53
52
  });
54
-
55
- //#endregion
53
+ //#endregion
54
+ export {};
@@ -1,8 +1,7 @@
1
- const require_chunk = require('../chunk-DWy1uDak.cjs');
2
- const require_multibase = require('../multibase-B2D6B0V4.cjs');
3
- const node_assert = require_chunk.__toESM(require("node:assert"));
4
- const node_test = require_chunk.__toESM(require("node:test"));
5
-
1
+ require("../chunk-Do9eywBl.cjs");
2
+ const require_multibase = require("../multibase-CgYqpk4Z.cjs");
3
+ let node_assert = require("node:assert");
4
+ let node_test = require("node:test");
6
5
  //#region src/multibase/multibase.test.ts
7
6
  (0, node_test.test)("multibase.encode and decode", async (t) => {
8
7
  const testCases = [
@@ -318,18 +317,13 @@ const node_test = require_chunk.__toESM(require("node:test"));
318
317
  ]
319
318
  ];
320
319
  for (const [name, input, expectedOutput] of testCases) await t.test(`Encoding/Decoding ${name} with ${input}`, () => {
321
- const encoded = require_multibase.encodeMultibase(name, require_multibase.encodeText(input));
322
- (0, node_assert.deepStrictEqual)(require_multibase.decodeText(encoded), expectedOutput, `Encoding ${name} failed`);
323
- const decoded = require_multibase.decodeMultibase(expectedOutput);
324
- (0, node_assert.deepStrictEqual)(decoded, require_multibase.encodeText(input), `Decoding ${name} failed`);
325
- const decodedFromBuffer = require_multibase.decodeMultibase(require_multibase.encodeText(expectedOutput));
326
- (0, node_assert.deepStrictEqual)(decodedFromBuffer, require_multibase.encodeText(input), `Decoding buffer of ${name} failed`);
320
+ (0, node_assert.deepStrictEqual)(require_multibase.decodeText(require_multibase.encodeMultibase(name, require_multibase.encodeText(input))), expectedOutput, `Encoding ${name} failed`);
321
+ (0, node_assert.deepStrictEqual)(require_multibase.decodeMultibase(expectedOutput), require_multibase.encodeText(input), `Decoding ${name} failed`);
322
+ (0, node_assert.deepStrictEqual)(require_multibase.decodeMultibase(require_multibase.encodeText(expectedOutput)), require_multibase.encodeText(input), `Decoding buffer of ${name} failed`);
327
323
  });
328
324
  await t.test("should allow base32pad full alphabet", () => {
329
- const encodedStr = "ctimaq4ygg2iegci7";
330
- const decoded = require_multibase.decodeMultibase(encodedStr);
331
- const encoded = require_multibase.encodeMultibase("c", decoded);
332
- (0, node_assert.deepStrictEqual)(require_multibase.decodeMultibase(encoded), decoded);
325
+ const decoded = require_multibase.decodeMultibase("ctimaq4ygg2iegci7");
326
+ (0, node_assert.deepStrictEqual)(require_multibase.decodeMultibase(require_multibase.encodeMultibase("c", decoded)), decoded);
333
327
  });
334
328
  });
335
329
  (0, node_test.test)("constants", async (t) => {
@@ -342,5 +336,4 @@ const node_test = require_chunk.__toESM(require("node:test"));
342
336
  (0, node_assert.deepStrictEqual)(Object.keys(codes$1).length, 23);
343
337
  });
344
338
  });
345
-
346
- //#endregion
339
+ //#endregion
@@ -1,7 +1,6 @@
1
- import { codes, decodeMultibase, decodeText, encodeMultibase, encodeText, names } from "../multibase-BdHCGO4H.js";
1
+ import { a as decodeText, i as names, n as encodeMultibase, o as encodeText, r as codes, t as decodeMultibase } from "../multibase-jcKrOpuU.mjs";
2
2
  import { deepStrictEqual } from "node:assert";
3
3
  import { test } from "node:test";
4
-
5
4
  //#region src/multibase/multibase.test.ts
6
5
  test("multibase.encode and decode", async (t) => {
7
6
  const testCases = [
@@ -317,29 +316,22 @@ test("multibase.encode and decode", async (t) => {
317
316
  ]
318
317
  ];
319
318
  for (const [name, input, expectedOutput] of testCases) await t.test(`Encoding/Decoding ${name} with ${input}`, () => {
320
- const encoded = encodeMultibase(name, encodeText(input));
321
- deepStrictEqual(decodeText(encoded), expectedOutput, `Encoding ${name} failed`);
322
- const decoded = decodeMultibase(expectedOutput);
323
- deepStrictEqual(decoded, encodeText(input), `Decoding ${name} failed`);
324
- const decodedFromBuffer = decodeMultibase(encodeText(expectedOutput));
325
- deepStrictEqual(decodedFromBuffer, encodeText(input), `Decoding buffer of ${name} failed`);
319
+ deepStrictEqual(decodeText(encodeMultibase(name, encodeText(input))), expectedOutput, `Encoding ${name} failed`);
320
+ deepStrictEqual(decodeMultibase(expectedOutput), encodeText(input), `Decoding ${name} failed`);
321
+ deepStrictEqual(decodeMultibase(encodeText(expectedOutput)), encodeText(input), `Decoding buffer of ${name} failed`);
326
322
  });
327
323
  await t.test("should allow base32pad full alphabet", () => {
328
- const encodedStr = "ctimaq4ygg2iegci7";
329
- const decoded = decodeMultibase(encodedStr);
330
- const encoded = encodeMultibase("c", decoded);
331
- deepStrictEqual(decodeMultibase(encoded), decoded);
324
+ const decoded = decodeMultibase("ctimaq4ygg2iegci7");
325
+ deepStrictEqual(decodeMultibase(encodeMultibase("c", decoded)), decoded);
332
326
  });
333
327
  });
334
328
  test("constants", async (t) => {
335
329
  await t.test("constants indexed by name", () => {
336
- const names$1 = names;
337
- deepStrictEqual(Object.keys(names$1).length, 23);
330
+ deepStrictEqual(Object.keys(names).length, 23);
338
331
  });
339
332
  await t.test("constants indexed by code", () => {
340
- const codes$1 = codes;
341
- deepStrictEqual(Object.keys(codes$1).length, 23);
333
+ deepStrictEqual(Object.keys(codes).length, 23);
342
334
  });
343
335
  });
344
-
345
- //#endregion
336
+ //#endregion
337
+ export {};