@fedify/fedify 1.6.8 → 1.6.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 (114) hide show
  1. package/dist/{actor-XtK-8B6i.js → actor-DIUXw3Jf.js} +3 -3
  2. package/dist/{actor-Bcs0hYb1.js → actor-zJITiLGT.js} +179 -179
  3. package/dist/{authdocloader-BfXhfGGN.js → authdocloader-BcwoX8r4.js} +3 -3
  4. package/dist/{authdocloader-BOsOB7nI.js → authdocloader-r__VtsYF.js} +3 -3
  5. package/dist/{builder-BtoNoWx4.js → builder-ec-rmcfn.js} +3 -3
  6. package/dist/{client-DfiRfarn.js → client-Ct6EJXY4.js} +1 -1
  7. package/dist/compat/transformers.test.d.ts +2 -1
  8. package/dist/compat/transformers.test.js +19 -18
  9. package/dist/{context-CTOs7_nl.js → context-B51aFJ33.js} +2 -2
  10. package/dist/{docloader-DHsnjtrB.js → docloader-Bk8yyKtx.js} +2 -2
  11. package/dist/{docloader-DT61GYEC.js → docloader-D4xNpZfb.js} +2 -2
  12. package/dist/federation/builder.test.d.ts +2 -1
  13. package/dist/federation/builder.test.js +6 -5
  14. package/dist/federation/collection.test.d.ts +2 -1
  15. package/dist/federation/collection.test.js +2 -1
  16. package/dist/federation/handler.test.d.ts +2 -1
  17. package/dist/federation/handler.test.js +21 -20
  18. package/dist/federation/inbox.test.d.ts +2 -1
  19. package/dist/federation/inbox.test.js +5 -4
  20. package/dist/federation/keycache.test.d.ts +2 -1
  21. package/dist/federation/keycache.test.js +5 -4
  22. package/dist/federation/kv.test.d.ts +2 -1
  23. package/dist/federation/kv.test.js +2 -1
  24. package/dist/federation/middleware.test.d.ts +2 -1
  25. package/dist/federation/middleware.test.js +20 -19
  26. package/dist/federation/mod.js +10 -10
  27. package/dist/federation/mq.test.d.ts +2 -1
  28. package/dist/federation/mq.test.js +2 -1
  29. package/dist/federation/retry.test.d.ts +2 -1
  30. package/dist/federation/retry.test.js +2 -1
  31. package/dist/federation/router.test.d.ts +2 -1
  32. package/dist/federation/router.test.js +2 -1
  33. package/dist/federation/send.test.d.ts +2 -1
  34. package/dist/federation/send.test.js +11 -10
  35. package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +24 -0
  36. package/dist/{http-DY7ABMxV.js → http-BjXvFars.js} +51 -5
  37. package/dist/{http-CsOXrx1b.js → http-BqI8l_zq.js} +51 -5
  38. package/dist/{inbox-G8JVL5Ne.js → inbox-BVf3oh4Y.js} +2 -2
  39. package/dist/{key-Bppy9mNu.js → key-C0_lA6sj.js} +5 -5
  40. package/dist/{key-DS_OEdsO.js → key-C_PfBuZC.js} +4 -4
  41. package/dist/{key-Btb5k4lR.js → key-D_WrdfTP.js} +3 -3
  42. package/dist/{key-DbchE9Xs.js → key-avTzmEfO.js} +2 -2
  43. package/dist/{keycache-CounYPCT.js → keycache-GLblHhov.js} +1 -1
  44. package/dist/{keys-CCsGIHDm.js → keys-DDHFsLa-.js} +1 -1
  45. package/dist/{ld-C5QomCTt.js → ld-yhnqjt2k.js} +3 -3
  46. package/dist/{lookup-D-6fPBCB.js → lookup-CCdJ24ZP.js} +1 -1
  47. package/dist/{lookup-2j31uvvW.js → lookup-CIYoashs.js} +3 -3
  48. package/dist/{lookup-DRz3cQ2q.js → lookup-Czw5r0oM.js} +1 -1
  49. package/dist/middleware-BZY7OuAu.js +17 -0
  50. package/dist/{middleware-BSWZF2bY.js → middleware-C69vl3qG.js} +10 -10
  51. package/dist/{middleware-EA-BBVH-.js → middleware-C9Y127V3.js} +15 -15
  52. package/dist/middleware-CcsOhLqv.js +33 -0
  53. package/dist/mod.js +10 -10
  54. package/dist/nodeinfo/client.test.d.ts +2 -1
  55. package/dist/nodeinfo/client.test.js +4 -3
  56. package/dist/nodeinfo/handler.test.d.ts +2 -1
  57. package/dist/nodeinfo/handler.test.js +20 -19
  58. package/dist/nodeinfo/mod.js +2 -2
  59. package/dist/nodeinfo/semver.test.d.ts +2 -1
  60. package/dist/nodeinfo/semver.test.js +2 -1
  61. package/dist/nodeinfo/types.test.d.ts +2 -1
  62. package/dist/nodeinfo/types.test.js +2 -1
  63. package/dist/{owner-BID7Mczj.js → owner-CqOZVri-.js} +3 -3
  64. package/dist/{proof-DUknICkM.js → proof-BYiV2_yo.js} +3 -3
  65. package/dist/{proof-Cxepv82U.js → proof-BpBPpfw4.js} +3 -3
  66. package/dist/runtime/authdocloader.test.d.ts +2 -1
  67. package/dist/runtime/authdocloader.test.js +10 -9
  68. package/dist/runtime/docloader.test.d.ts +2 -1
  69. package/dist/runtime/docloader.test.js +27 -2
  70. package/dist/runtime/key.test.d.ts +2 -1
  71. package/dist/runtime/key.test.js +7 -6
  72. package/dist/runtime/langstr.test.d.ts +2 -1
  73. package/dist/runtime/langstr.test.js +2 -1
  74. package/dist/runtime/mod.js +6 -6
  75. package/dist/runtime/multibase/multibase.test.d.ts +2 -1
  76. package/dist/runtime/multibase/multibase.test.js +2 -1
  77. package/dist/runtime/url.test.d.ts +2 -1
  78. package/dist/runtime/url.test.js +2 -1
  79. package/dist/{send-F3m8PbtH.js → send-B7cv9i7f.js} +2 -2
  80. package/dist/sig/http.test.d.ts +2 -1
  81. package/dist/sig/http.test.js +25 -8
  82. package/dist/sig/key.test.d.ts +2 -1
  83. package/dist/sig/key.test.js +8 -7
  84. package/dist/sig/ld.test.d.ts +2 -1
  85. package/dist/sig/ld.test.js +9 -8
  86. package/dist/sig/mod.js +6 -6
  87. package/dist/sig/owner.test.d.ts +2 -1
  88. package/dist/sig/owner.test.js +10 -9
  89. package/dist/sig/proof.test.d.ts +2 -1
  90. package/dist/sig/proof.test.js +9 -8
  91. package/dist/testing/docloader.test.d.ts +2 -1
  92. package/dist/testing/docloader.test.js +2 -1
  93. package/dist/{types-BU3u-EMH.js → types-sw4Fdy78.js} +1 -1
  94. package/dist/vocab/actor.test.d.ts +2 -1
  95. package/dist/vocab/actor.test.js +6 -6
  96. package/dist/vocab/lookup.test.d.ts +2 -1
  97. package/dist/vocab/lookup.test.js +6 -5
  98. package/dist/vocab/mod.js +4 -4
  99. package/dist/vocab/type.test.d.ts +2 -1
  100. package/dist/vocab/type.test.js +4 -3
  101. package/dist/vocab/vocab.test.d.ts +2 -1
  102. package/dist/vocab/vocab.test.js +19 -18
  103. package/dist/{vocab-1dVqjZTk.js → vocab-BT10fLiU.js} +3 -3
  104. package/dist/{vocab-BOEOrr72.js → vocab-CcGSU3Wf.js} +178 -178
  105. package/dist/webfinger/handler.test.d.ts +2 -1
  106. package/dist/webfinger/handler.test.js +20 -19
  107. package/dist/webfinger/lookup.test.d.ts +2 -1
  108. package/dist/webfinger/lookup.test.js +4 -3
  109. package/dist/webfinger/mod.js +2 -2
  110. package/dist/x/cfworkers.test.d.ts +2 -1
  111. package/dist/x/cfworkers.test.js +2 -1
  112. package/package.json +1 -1
  113. package/dist/middleware-C_O2JGGb.js +0 -33
  114. package/dist/middleware-eyNnQzz_.js +0 -17
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-DHsnjtrB.js";
7
- import { CryptographicKey } from "./vocab-BOEOrr72.js";
8
- import { fetchKey, validateCryptoKey } from "./key-Btb5k4lR.js";
6
+ import { deno_default } from "./docloader-Bk8yyKtx.js";
7
+ import { CryptographicKey } from "./vocab-CcGSU3Wf.js";
8
+ import { fetchKey, validateCryptoKey } from "./key-D_WrdfTP.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanStatusCode, trace } from "@opentelemetry/api";
11
11
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
@@ -367,7 +367,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
367
367
  return null;
368
368
  }
369
369
  }
370
- const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)="([^"]*)"\s*$/)).filter((m) => m != null).map((m) => m.slice(1, 3)));
370
+ const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)=(?:"([^"]*)"|(\d+))\s*$/)).filter((m) => m != null).map((m) => [m[1], m[2] ?? m[3]]));
371
371
  if (!("keyId" in sigValues)) {
372
372
  logger.debug("Failed to verify; no keyId field found in the Signature header.", { signature: sigHeader });
373
373
  return null;
@@ -378,6 +378,52 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
378
378
  logger.debug("Failed to verify; no signature field found in the Signature header.", { signature: sigHeader });
379
379
  return null;
380
380
  }
381
+ if ("expires" in sigValues) {
382
+ const expiresSeconds = parseInt(sigValues.expires);
383
+ if (!Number.isInteger(expiresSeconds)) {
384
+ logger.debug("Failed to verify; invalid expires field in the Signature header: {expires}.", {
385
+ expires: sigValues.expires,
386
+ signature: sigHeader
387
+ });
388
+ return null;
389
+ }
390
+ const expires = Temporal.Instant.fromEpochMilliseconds(expiresSeconds * 1e3);
391
+ if (Temporal.Instant.compare(now, expires) > 0) {
392
+ logger.debug("Failed to verify; signature expired at {expires} (now: {now}).", {
393
+ expires: expires.toString(),
394
+ now: now.toString(),
395
+ signature: sigHeader
396
+ });
397
+ return null;
398
+ }
399
+ }
400
+ if ("created" in sigValues) {
401
+ const createdSeconds = parseInt(sigValues.created);
402
+ if (!Number.isInteger(createdSeconds)) {
403
+ logger.debug("Failed to verify; invalid created field in the Signature header: {created}.", {
404
+ created: sigValues.created,
405
+ signature: sigHeader
406
+ });
407
+ return null;
408
+ }
409
+ if (timeWindow !== false) {
410
+ const created = Temporal.Instant.fromEpochMilliseconds(createdSeconds * 1e3);
411
+ const tw = timeWindow ?? { minutes: 1 };
412
+ if (Temporal.Instant.compare(created, now.add(tw)) > 0) {
413
+ logger.debug("Failed to verify; created is too far in the future.", {
414
+ created: created.toString(),
415
+ now: now.toString()
416
+ });
417
+ return null;
418
+ } else if (Temporal.Instant.compare(created, now.subtract(tw)) < 0) {
419
+ logger.debug("Failed to verify; created is too far in the past.", {
420
+ created: created.toString(),
421
+ now: now.toString()
422
+ });
423
+ return null;
424
+ }
425
+ }
426
+ }
381
427
  const { keyId, headers, signature } = sigValues;
382
428
  span?.setAttribute("http_signatures.key_id", keyId);
383
429
  if ("algorithm" in sigValues) span?.setAttribute("http_signatures.algorithm", sigValues.algorithm);
@@ -397,7 +443,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
397
443
  logger.debug("Failed to verify; required headers missing in the Signature header: {headers}.", { headers });
398
444
  return null;
399
445
  }
400
- const message = headerNames.map((name) => `${name}: ` + (name == "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name == "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
446
+ const message = headerNames.map((name) => `${name}: ` + (name === "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name === "(created)" ? sigValues.created ?? "" : name === "(expires)" ? sigValues.expires ?? "" : name === "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
401
447
  const sig = decodeBase64(signature);
402
448
  span?.setAttribute("http_signatures.signature", encodeHex(sig));
403
449
  const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { deno_default } from "./docloader-DT61GYEC.js";
6
- import { CryptographicKey } from "./actor-Bcs0hYb1.js";
7
- import { fetchKey, validateCryptoKey } from "./key-DbchE9Xs.js";
5
+ import { deno_default } from "./docloader-D4xNpZfb.js";
6
+ import { CryptographicKey } from "./actor-zJITiLGT.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-avTzmEfO.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanStatusCode, trace } from "@opentelemetry/api";
10
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
@@ -366,7 +366,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
366
366
  return null;
367
367
  }
368
368
  }
369
- const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)="([^"]*)"\s*$/)).filter((m) => m != null).map((m) => m.slice(1, 3)));
369
+ const sigValues = Object.fromEntries(sigHeader.split(",").map((pair) => pair.match(/^\s*([A-Za-z]+)=(?:"([^"]*)"|(\d+))\s*$/)).filter((m) => m != null).map((m) => [m[1], m[2] ?? m[3]]));
370
370
  if (!("keyId" in sigValues)) {
371
371
  logger.debug("Failed to verify; no keyId field found in the Signature header.", { signature: sigHeader });
372
372
  return null;
@@ -377,6 +377,52 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
377
377
  logger.debug("Failed to verify; no signature field found in the Signature header.", { signature: sigHeader });
378
378
  return null;
379
379
  }
380
+ if ("expires" in sigValues) {
381
+ const expiresSeconds = parseInt(sigValues.expires);
382
+ if (!Number.isInteger(expiresSeconds)) {
383
+ logger.debug("Failed to verify; invalid expires field in the Signature header: {expires}.", {
384
+ expires: sigValues.expires,
385
+ signature: sigHeader
386
+ });
387
+ return null;
388
+ }
389
+ const expires = Temporal.Instant.fromEpochMilliseconds(expiresSeconds * 1e3);
390
+ if (Temporal.Instant.compare(now, expires) > 0) {
391
+ logger.debug("Failed to verify; signature expired at {expires} (now: {now}).", {
392
+ expires: expires.toString(),
393
+ now: now.toString(),
394
+ signature: sigHeader
395
+ });
396
+ return null;
397
+ }
398
+ }
399
+ if ("created" in sigValues) {
400
+ const createdSeconds = parseInt(sigValues.created);
401
+ if (!Number.isInteger(createdSeconds)) {
402
+ logger.debug("Failed to verify; invalid created field in the Signature header: {created}.", {
403
+ created: sigValues.created,
404
+ signature: sigHeader
405
+ });
406
+ return null;
407
+ }
408
+ if (timeWindow !== false) {
409
+ const created = Temporal.Instant.fromEpochMilliseconds(createdSeconds * 1e3);
410
+ const tw = timeWindow ?? { minutes: 1 };
411
+ if (Temporal.Instant.compare(created, now.add(tw)) > 0) {
412
+ logger.debug("Failed to verify; created is too far in the future.", {
413
+ created: created.toString(),
414
+ now: now.toString()
415
+ });
416
+ return null;
417
+ } else if (Temporal.Instant.compare(created, now.subtract(tw)) < 0) {
418
+ logger.debug("Failed to verify; created is too far in the past.", {
419
+ created: created.toString(),
420
+ now: now.toString()
421
+ });
422
+ return null;
423
+ }
424
+ }
425
+ }
380
426
  const { keyId, headers, signature } = sigValues;
381
427
  span?.setAttribute("http_signatures.key_id", keyId);
382
428
  if ("algorithm" in sigValues) span?.setAttribute("http_signatures.algorithm", sigValues.algorithm);
@@ -396,7 +442,7 @@ async function verifyRequestDraft(request, span, { documentLoader, contextLoader
396
442
  logger.debug("Failed to verify; required headers missing in the Signature header: {headers}.", { headers });
397
443
  return null;
398
444
  }
399
- const message = headerNames.map((name) => `${name}: ` + (name == "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name == "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
445
+ const message = headerNames.map((name) => `${name}: ` + (name === "(request-target)" ? `${request.method.toLowerCase()} ${new URL(request.url).pathname}` : name === "(created)" ? sigValues.created ?? "" : name === "(expires)" ? sigValues.expires ?? "" : name === "host" ? request.headers.get("host") ?? new URL(request.url).host : request.headers.get(name))).join("\n");
400
446
  const sig = decodeBase64(signature);
401
447
  span?.setAttribute("http_signatures.signature", encodeHex(sig));
402
448
  const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, sig, new TextEncoder().encode(message));
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-DHsnjtrB.js";
7
- import { Activity } from "./vocab-BOEOrr72.js";
6
+ import { deno_default } from "./docloader-Bk8yyKtx.js";
7
+ import { Activity } from "./vocab-CcGSU3Wf.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -3,14 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import "./docloader-DHsnjtrB.js";
6
+ import "./docloader-Bk8yyKtx.js";
7
7
  import "./url-kTAI6_KP.js";
8
8
  import "./multibase-DeCHcK8L.js";
9
- import "./vocab-BOEOrr72.js";
9
+ import "./vocab-CcGSU3Wf.js";
10
10
  import "./langstr-DbWheeIS.js";
11
- import "./lookup-D-6fPBCB.js";
11
+ import "./lookup-CCdJ24ZP.js";
12
12
  import "./type-D2s5lmbZ.js";
13
- import "./actor-XtK-8B6i.js";
14
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-Btb5k4lR.js";
13
+ import "./actor-DIUXw3Jf.js";
14
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-D_WrdfTP.js";
15
15
 
16
16
  export { validateCryptoKey };
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "./docloader-DT61GYEC.js";
6
- import "./actor-Bcs0hYb1.js";
7
- import "./lookup-DRz3cQ2q.js";
8
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-DbchE9Xs.js";
5
+ import "./docloader-D4xNpZfb.js";
6
+ import "./actor-zJITiLGT.js";
7
+ import "./lookup-Czw5r0oM.js";
8
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey } from "./key-avTzmEfO.js";
9
9
 
10
10
  export { validateCryptoKey };
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader } from "./docloader-DHsnjtrB.js";
7
- import { CryptographicKey, Object as Object$1 } from "./vocab-BOEOrr72.js";
8
- import { isActor } from "./actor-XtK-8B6i.js";
6
+ import { deno_default, getDocumentLoader } from "./docloader-Bk8yyKtx.js";
7
+ import { CryptographicKey, Object as Object$1 } from "./vocab-CcGSU3Wf.js";
8
+ import { isActor } from "./actor-DIUXw3Jf.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
11
11
 
@@ -2,8 +2,8 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { deno_default, getDocumentLoader } from "./docloader-DT61GYEC.js";
6
- import { CryptographicKey, Object as Object$1, isActor } from "./actor-Bcs0hYb1.js";
5
+ import { deno_default, getDocumentLoader } from "./docloader-D4xNpZfb.js";
6
+ import { CryptographicKey, Object as Object$1, isActor } from "./actor-zJITiLGT.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
 
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey } from "./vocab-BOEOrr72.js";
6
+ import { CryptographicKey, Multikey } from "./vocab-CcGSU3Wf.js";
7
7
 
8
8
  //#region federation/keycache.ts
9
9
  var KvKeyCache = class {
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { CryptographicKey, Multikey, importSpki } from "./vocab-BOEOrr72.js";
6
+ import { CryptographicKey, Multikey, importSpki } from "./vocab-CcGSU3Wf.js";
7
7
 
8
8
  //#region testing/keys.ts
9
9
  const rsaPublicKey1 = new CryptographicKey({
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader } from "./docloader-DHsnjtrB.js";
7
- import { Activity, CryptographicKey, Object as Object$1 } from "./vocab-BOEOrr72.js";
6
+ import { deno_default, getDocumentLoader } from "./docloader-Bk8yyKtx.js";
7
+ import { Activity, CryptographicKey, Object as Object$1 } from "./vocab-CcGSU3Wf.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
- import { fetchKey, validateCryptoKey } from "./key-Btb5k4lR.js";
9
+ import { fetchKey, validateCryptoKey } from "./key-D_WrdfTP.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanStatusCode, trace } from "@opentelemetry/api";
12
12
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getUserAgent } from "./docloader-DHsnjtrB.js";
6
+ import { deno_default, getUserAgent } from "./docloader-Bk8yyKtx.js";
7
7
  import { UrlError, validatePublicUrl } from "./url-kTAI6_KP.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader } from "./docloader-DHsnjtrB.js";
7
- import { Object as Object$1 } from "./vocab-BOEOrr72.js";
8
- import { lookupWebFinger } from "./lookup-D-6fPBCB.js";
6
+ import { deno_default, getDocumentLoader } from "./docloader-Bk8yyKtx.js";
7
+ import { Object as Object$1 } from "./vocab-CcGSU3Wf.js";
8
+ import { lookupWebFinger } from "./lookup-CCdJ24ZP.js";
9
9
  import { getTypeId } from "./type-D2s5lmbZ.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -2,7 +2,7 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-DT61GYEC.js";
5
+ import { UrlError, deno_default, getUserAgent, validatePublicUrl } from "./docloader-D4xNpZfb.js";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
8
8
 
@@ -0,0 +1,17 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+
5
+ import "./transformers-ghwJuzGY.js";
6
+ import "./docloader-D4xNpZfb.js";
7
+ import "./actor-zJITiLGT.js";
8
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-C69vl3qG.js";
9
+ import "./lookup-Czw5r0oM.js";
10
+ import "./key-avTzmEfO.js";
11
+ import "./http-BqI8l_zq.js";
12
+ import "./proof-BpBPpfw4.js";
13
+ import "./types-sw4Fdy78.js";
14
+ import "./authdocloader-BcwoX8r4.js";
15
+ import "./vocab-BT10fLiU.js";
16
+
17
+ export { FederationImpl };
@@ -3,15 +3,15 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import { getDefaultActivityTransformers } from "./transformers-ghwJuzGY.js";
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-DT61GYEC.js";
7
- import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-Bcs0hYb1.js";
8
- import { lookupWebFinger } from "./lookup-DRz3cQ2q.js";
9
- import { exportJwk, importJwk, validateCryptoKey } from "./key-DbchE9Xs.js";
10
- import { doubleKnock, verifyRequest } from "./http-CsOXrx1b.js";
11
- import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-Cxepv82U.js";
12
- import { getNodeInfo, nodeInfoToJson } from "./types-BU3u-EMH.js";
13
- import { getAuthenticatedDocumentLoader } from "./authdocloader-BfXhfGGN.js";
14
- import { lookupObject, traverseCollection } from "./vocab-1dVqjZTk.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-D4xNpZfb.js";
7
+ import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId } from "./actor-zJITiLGT.js";
8
+ import { lookupWebFinger } from "./lookup-Czw5r0oM.js";
9
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-avTzmEfO.js";
10
+ import { doubleKnock, verifyRequest } from "./http-BqI8l_zq.js";
11
+ import { detachSignature, doesActorOwnKey, getKeyOwner, hasSignature, signJsonLd, signObject, verifyJsonLd, verifyObject } from "./proof-BpBPpfw4.js";
12
+ import { getNodeInfo, nodeInfoToJson } from "./types-sw4Fdy78.js";
13
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-BcwoX8r4.js";
14
+ import { lookupObject, traverseCollection } from "./vocab-BT10fLiU.js";
15
15
  import { getLogger, withContext } from "@logtape/logtape";
16
16
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
17
17
  import { encodeHex } from "byte-encodings/hex";
@@ -312,7 +312,7 @@ var FederationBuilderImpl = class {
312
312
  this.objectTypeIds = {};
313
313
  }
314
314
  async build(options) {
315
- const { FederationImpl: FederationImpl$1 } = await import("./middleware-eyNnQzz_.js");
315
+ const { FederationImpl: FederationImpl$1 } = await import("./middleware-BZY7OuAu.js");
316
316
  const f = new FederationImpl$1(options);
317
317
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
318
318
  f.router = this.router.clone();
@@ -3,26 +3,26 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default, getDocumentLoader, kvCache } from "./docloader-DHsnjtrB.js";
7
- import { getNodeInfo } from "./client-DfiRfarn.js";
6
+ import { deno_default, getDocumentLoader, kvCache } from "./docloader-Bk8yyKtx.js";
7
+ import { getNodeInfo } from "./client-Ct6EJXY4.js";
8
8
  import { RouterError } from "./router-D_aVZZUc.js";
9
9
  import { nodeInfoToJson } from "./types-C7C_l-jz.js";
10
- import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage } from "./vocab-BOEOrr72.js";
11
- import { lookupWebFinger } from "./lookup-D-6fPBCB.js";
10
+ import { Activity, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage } from "./vocab-CcGSU3Wf.js";
11
+ import { lookupWebFinger } from "./lookup-CCdJ24ZP.js";
12
12
  import { getTypeId } from "./type-D2s5lmbZ.js";
13
- import { exportJwk, importJwk, validateCryptoKey } from "./key-Btb5k4lR.js";
14
- import { verifyRequest } from "./http-DY7ABMxV.js";
15
- import { getAuthenticatedDocumentLoader } from "./authdocloader-BOsOB7nI.js";
16
- import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-C5QomCTt.js";
17
- import { doesActorOwnKey, getKeyOwner } from "./owner-BID7Mczj.js";
18
- import { signObject, verifyObject } from "./proof-DUknICkM.js";
19
- import { lookupObject, traverseCollection } from "./lookup-2j31uvvW.js";
20
- import { routeActivity } from "./inbox-G8JVL5Ne.js";
21
- import { FederationBuilderImpl } from "./builder-BtoNoWx4.js";
13
+ import { exportJwk, importJwk, validateCryptoKey } from "./key-D_WrdfTP.js";
14
+ import { verifyRequest } from "./http-BjXvFars.js";
15
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-r__VtsYF.js";
16
+ import { detachSignature, hasSignature, signJsonLd, verifyJsonLd } from "./ld-yhnqjt2k.js";
17
+ import { doesActorOwnKey, getKeyOwner } from "./owner-CqOZVri-.js";
18
+ import { signObject, verifyObject } from "./proof-BYiV2_yo.js";
19
+ import { lookupObject, traverseCollection } from "./lookup-CIYoashs.js";
20
+ import { routeActivity } from "./inbox-BVf3oh4Y.js";
21
+ import { FederationBuilderImpl } from "./builder-ec-rmcfn.js";
22
22
  import { buildCollectionSynchronizationHeader } from "./collection-Dfb0TPno.js";
23
- import { KvKeyCache } from "./keycache-CounYPCT.js";
23
+ import { KvKeyCache } from "./keycache-GLblHhov.js";
24
24
  import { createExponentialBackoffPolicy } from "./retry-BiIhZWgD.js";
25
- import { extractInboxes, sendActivity } from "./send-F3m8PbtH.js";
25
+ import { extractInboxes, sendActivity } from "./send-B7cv9i7f.js";
26
26
  import { getLogger, withContext } from "@logtape/logtape";
27
27
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
28
28
  import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_RESPONSE_HEADER, ATTR_HTTP_RESPONSE_STATUS_CODE, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
@@ -0,0 +1,33 @@
1
+
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ import { URLPattern } from "urlpattern-polyfill";
4
+ globalThis.addEventListener = () => {};
5
+
6
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-C9Y127V3.js";
7
+ import "./docloader-Bk8yyKtx.js";
8
+ import "./url-kTAI6_KP.js";
9
+ import "./semver-DWClQt_5.js";
10
+ import "./client-Ct6EJXY4.js";
11
+ import "./router-D_aVZZUc.js";
12
+ import "./types-C7C_l-jz.js";
13
+ import "./multibase-DeCHcK8L.js";
14
+ import "./vocab-CcGSU3Wf.js";
15
+ import "./langstr-DbWheeIS.js";
16
+ import "./lookup-CCdJ24ZP.js";
17
+ import "./type-D2s5lmbZ.js";
18
+ import "./actor-DIUXw3Jf.js";
19
+ import "./key-D_WrdfTP.js";
20
+ import "./http-BjXvFars.js";
21
+ import "./authdocloader-r__VtsYF.js";
22
+ import "./ld-yhnqjt2k.js";
23
+ import "./owner-CqOZVri-.js";
24
+ import "./proof-BYiV2_yo.js";
25
+ import "./lookup-CIYoashs.js";
26
+ import "./inbox-BVf3oh4Y.js";
27
+ import "./builder-ec-rmcfn.js";
28
+ import "./collection-Dfb0TPno.js";
29
+ import "./keycache-GLblHhov.js";
30
+ import "./retry-BiIhZWgD.js";
31
+ import "./send-B7cv9i7f.js";
32
+
33
+ export { FederationImpl };
package/dist/mod.js CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "./transformers-ghwJuzGY.js";
6
6
  import "./compat-Bb5myD13.js";
7
- import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-DT61GYEC.js";
8
- import { Accept, Activity, Add, Announce, Application, Arrive, Article, Audio, Block, ChatMessage, Collection, CollectionPage, Create, CryptographicKey, DataIntegrityProof, Delete, DidService, Dislike, Document, Emoji, EmojiReact, Endpoints, Event, Export, Flag, Follow, Group, Hashtag, Ignore, Image, IntransitiveActivity, Invite, Join, LanguageString, Leave, Like, Link, Listen, Mention, Move, Multikey, Note, Object as Object$1, Offer, OrderedCollection, OrderedCollectionPage, Organization, Page, Person, Place, Profile, PropertyValue, Question, Read, Reject, Relationship, Remove, Service, Source, TentativeAccept, TentativeReject, Tombstone, Travel, Undo, Update, Video, View, exportMultibaseKey, exportSpki, getActorClassByTypeName, getActorHandle, getActorTypeName, getTypeId, importMultibaseKey, importPem, importPkcs1, importSpki, isActor, normalizeActorHandle } from "./actor-Bcs0hYb1.js";
9
- import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-BSWZF2bY.js";
10
- import { lookupWebFinger } from "./lookup-DRz3cQ2q.js";
11
- import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-DbchE9Xs.js";
12
- import { signRequest, verifyRequest } from "./http-CsOXrx1b.js";
13
- import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-Cxepv82U.js";
7
+ import { FetchError, fetchDocumentLoader, getDocumentLoader, getUserAgent, kvCache } from "./docloader-D4xNpZfb.js";
8
+ import { Accept, Activity, Add, Announce, Application, Arrive, Article, Audio, Block, ChatMessage, Collection, CollectionPage, Create, CryptographicKey, DataIntegrityProof, Delete, DidService, Dislike, Document, Emoji, EmojiReact, Endpoints, Event, Export, Flag, Follow, Group, Hashtag, Ignore, Image, IntransitiveActivity, Invite, Join, LanguageString, Leave, Like, Link, Listen, Mention, Move, Multikey, Note, Object as Object$1, Offer, OrderedCollection, OrderedCollectionPage, Organization, Page, Person, Place, Profile, PropertyValue, Question, Read, Reject, Relationship, Remove, Service, Source, TentativeAccept, TentativeReject, Tombstone, Travel, Undo, Update, Video, View, exportMultibaseKey, exportSpki, getActorClassByTypeName, getActorHandle, getActorTypeName, getTypeId, importMultibaseKey, importPem, importPkcs1, importSpki, isActor, normalizeActorHandle } from "./actor-zJITiLGT.js";
9
+ import { Router, RouterError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "./middleware-C69vl3qG.js";
10
+ import { lookupWebFinger } from "./lookup-Czw5r0oM.js";
11
+ import { exportJwk, fetchKey, generateCryptoKeyPair, importJwk } from "./key-avTzmEfO.js";
12
+ import { signRequest, verifyRequest } from "./http-BqI8l_zq.js";
13
+ import { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, getKeyOwner, signJsonLd, signObject, verifyJsonLd, verifyObject, verifyProof, verifySignature } from "./proof-BpBPpfw4.js";
14
14
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation-3B6BDKCK.js";
15
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-BU3u-EMH.js";
16
- import { getAuthenticatedDocumentLoader } from "./authdocloader-BfXhfGGN.js";
17
- import { PUBLIC_COLLECTION, lookupObject, traverseCollection } from "./vocab-1dVqjZTk.js";
15
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "./types-sw4Fdy78.js";
16
+ import { getAuthenticatedDocumentLoader } from "./authdocloader-BcwoX8r4.js";
17
+ import { PUBLIC_COLLECTION, lookupObject, traverseCollection } from "./vocab-BT10fLiU.js";
18
18
  import "./nodeinfo-CyEbLjHs.js";
19
19
  import "./runtime-BSkOVUWM.js";
20
20
  import "./sig-BXJO--F9.js";
@@ -1,3 +1,4 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- globalThis.addEventListener = () => {};
3
+ globalThis.addEventListener = () => {};
4
+ export {};
@@ -6,10 +6,10 @@
6
6
  import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import "../assert-DmFG7ppO.js";
8
8
  import "../assert_instance_of-CF09JHYM.js";
9
- import "../docloader-DHsnjtrB.js";
9
+ import "../docloader-Bk8yyKtx.js";
10
10
  import "../url-kTAI6_KP.js";
11
11
  import "../semver-DWClQt_5.js";
12
- import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-DfiRfarn.js";
12
+ import { getNodeInfo, parseInboundService, parseNodeInfo, parseOutboundService, parseProtocol, parseServices, parseSoftware, parseUsage } from "../client-Ct6EJXY4.js";
13
13
  import { test } from "../testing-BZ0dJ4qn.js";
14
14
  import "../std__assert-vp0TKMS1.js";
15
15
  import "../assert_rejects-C-sxEMM5.js";
@@ -963,4 +963,5 @@ test("parseUsage()", () => {
963
963
  });
964
964
  });
965
965
 
966
- //#endregion
966
+ //#endregion
967
+ export { };
@@ -1,3 +1,4 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- globalThis.addEventListener = () => {};
3
+ globalThis.addEventListener = () => {};
4
+ export {};
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-CTYbeopb.js";
7
7
  import "../assert-DmFG7ppO.js";
8
8
  import "../assert_instance_of-CF09JHYM.js";
9
9
  import { MemoryKvStore } from "../kv-DohFOP2C.js";
10
- import { createFederation, handleNodeInfo, handleNodeInfoJrd } from "../middleware-EA-BBVH-.js";
11
- import "../docloader-DHsnjtrB.js";
10
+ import { createFederation, handleNodeInfo, handleNodeInfoJrd } from "../middleware-C9Y127V3.js";
11
+ import "../docloader-Bk8yyKtx.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import { parseSemVer } from "../semver-DWClQt_5.js";
14
- import "../client-DfiRfarn.js";
14
+ import "../client-Ct6EJXY4.js";
15
15
  import "../router-D_aVZZUc.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import "../vocab-BOEOrr72.js";
18
+ import "../vocab-CcGSU3Wf.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-D-6fPBCB.js";
20
+ import "../lookup-CCdJ24ZP.js";
21
21
  import "../type-D2s5lmbZ.js";
22
- import "../actor-XtK-8B6i.js";
23
- import "../key-Btb5k4lR.js";
24
- import "../http-DY7ABMxV.js";
25
- import "../authdocloader-BOsOB7nI.js";
26
- import "../ld-C5QomCTt.js";
27
- import "../owner-BID7Mczj.js";
28
- import "../proof-DUknICkM.js";
29
- import "../lookup-2j31uvvW.js";
30
- import "../inbox-G8JVL5Ne.js";
31
- import "../builder-BtoNoWx4.js";
22
+ import "../actor-DIUXw3Jf.js";
23
+ import "../key-D_WrdfTP.js";
24
+ import "../http-BjXvFars.js";
25
+ import "../authdocloader-r__VtsYF.js";
26
+ import "../ld-yhnqjt2k.js";
27
+ import "../owner-CqOZVri-.js";
28
+ import "../proof-BYiV2_yo.js";
29
+ import "../lookup-CIYoashs.js";
30
+ import "../inbox-BVf3oh4Y.js";
31
+ import "../builder-ec-rmcfn.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-CounYPCT.js";
33
+ import "../keycache-GLblHhov.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-F3m8PbtH.js";
35
+ import "../send-B7cv9i7f.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
  import "../std__assert-vp0TKMS1.js";
38
38
  import "../assert_rejects-C-sxEMM5.js";
@@ -40,7 +40,7 @@ import "../assert_is_error-nrwA1GeT.js";
40
40
  import "../assert_not_equals-Dc7y-V5Q.js";
41
41
  import "../assert_throws-Cn9C6Jur.js";
42
42
  import "../docloader-09nVWLAZ.js";
43
- import { createRequestContext } from "../context-CTOs7_nl.js";
43
+ import { createRequestContext } from "../context-B51aFJ33.js";
44
44
 
45
45
  //#region nodeinfo/handler.test.ts
46
46
  test("handleNodeInfo()", async () => {
@@ -129,4 +129,5 @@ test("handleNodeInfoJrd()", async () => {
129
129
  }] });
130
130
  });
131
131
 
132
- //#endregion
132
+ //#endregion
133
+ export { };
@@ -2,8 +2,8 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import "../docloader-DT61GYEC.js";
6
- import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "../types-BU3u-EMH.js";
5
+ import "../docloader-D4xNpZfb.js";
6
+ import { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer } from "../types-sw4Fdy78.js";
7
7
  import "../nodeinfo-CyEbLjHs.js";
8
8
 
9
9
  export { formatSemVer, getNodeInfo, nodeInfoToJson, parseNodeInfo, parseSemVer };
@@ -1,3 +1,4 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- globalThis.addEventListener = () => {};
3
+ globalThis.addEventListener = () => {};
4
+ export {};
@@ -138,4 +138,5 @@ test("formatSemVer()", async (t) => {
138
138
  });
139
139
  });
140
140
 
141
- //#endregion
141
+ //#endregion
142
+ export { };
@@ -1,3 +1,4 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- globalThis.addEventListener = () => {};
3
+ globalThis.addEventListener = () => {};
4
+ export {};
@@ -202,4 +202,5 @@ test("nodeInfoToJson()", () => {
202
202
  }), TypeError, "Invalid local comments");
203
203
  });
204
204
 
205
- //#endregion
205
+ //#endregion
206
+ export { };