@fedify/fedify 1.7.13 → 1.7.15

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 (138) hide show
  1. package/dist/{actor-CPpvuBKU.d.ts → actor.d.ts} +3 -3
  2. package/dist/{actor-BVilnhZ3.js → actor.js} +6 -6
  3. package/dist/{assert-LOEeCUK5.js → assert.js} +2 -2
  4. package/dist/{assert_equals-B44MxcIj.js → assert_equals.js} +16 -16
  5. package/dist/{assert_instance_of-XtuFevV_.js → assert_instance_of.js} +2 -2
  6. package/dist/{assert_is_error-BTlryvT0.js → assert_is_error.js} +2 -2
  7. package/dist/{assert_not_equals-C685gKx6.js → assert_not_equals.js} +3 -6
  8. package/dist/{assert_rejects-DWQ4jaf9.js → assert_rejects.js} +3 -3
  9. package/dist/{assert_throws-YetpVSc-.js → assert_throws.js} +3 -3
  10. package/dist/{authdocloader-DqCINL6u.js → authdocloader.js} +8 -8
  11. package/dist/{builder-CKUAOfcL.js → builder.js} +7 -7
  12. package/dist/{chunk-Cx8LTkjm.js → chunk.js} +22 -15
  13. package/dist/{client-DvtwXO7t.d.ts → client.d.ts} +2 -2
  14. package/dist/{client-C5xUY491.js → client.js} +3 -3
  15. package/dist/{collection-Dfb0TPno.js → collection.js} +2 -3
  16. package/dist/compat/mod.d.ts +79 -12
  17. package/dist/compat/mod.js +1 -2
  18. package/dist/compat/transformers.test.js +34 -38
  19. package/dist/{context-OBWjptjU.d.ts → context.d.ts} +11 -11
  20. package/dist/{context-aglzx1Ww.js → context.js} +5 -5
  21. package/dist/{docloader-Q42SMRIB.d.ts → docloader.d.ts} +2 -2
  22. package/dist/{docloader-Qfs9nPiy.js → docloader.js} +32 -152
  23. package/dist/{docloader-09nVWLAZ.js → docloader2.js} +1 -1
  24. package/dist/{esm-DO9PrujO.js → esm.js} +36 -22
  25. package/dist/federation/builder.test.js +20 -26
  26. package/dist/federation/collection.test.js +11 -16
  27. package/dist/federation/handler.test.js +41 -48
  28. package/dist/federation/inbox.test.js +11 -11
  29. package/dist/federation/keycache.test.js +12 -11
  30. package/dist/federation/kv.test.js +8 -10
  31. package/dist/federation/middleware.test.js +105 -134
  32. package/dist/federation/mod.d.ts +4 -13
  33. package/dist/federation/mod.js +206 -12
  34. package/dist/federation/mq.test.js +12 -17
  35. package/dist/federation/retry.test.js +5 -4
  36. package/dist/federation/router.test.js +9 -10
  37. package/dist/federation/send.test.js +23 -24
  38. package/dist/{http-DMTrO3Ye.d.ts → http.d.ts} +3 -3
  39. package/dist/{http-CjDwMreH.js → http.js} +25 -31
  40. package/dist/{inbox-ApPO50Ma.js → inbox.js} +5 -5
  41. package/dist/key.js +16 -0
  42. package/dist/{key-BPUM0v_S.js → key2.js} +5 -5
  43. package/dist/{keycache-B7Urghlu.js → keycache.js} +2 -2
  44. package/dist/{keys-DGJec4-R.js → keys.js} +2 -2
  45. package/dist/{kv-DRaeSXco.d.ts → kv.d.ts} +1 -1
  46. package/dist/{kv-BMY6Qf_A.js → kv.js} +1 -1
  47. package/dist/{langstr-DbWheeIS.js → langstr.js} +1 -1
  48. package/dist/{ld-DJTavNY3.js → ld.js} +9 -12
  49. package/dist/{lookup-Bf-K85bV.d.ts → lookup.d.ts} +2 -2
  50. package/dist/{lookup-CkOdKyYR.js → lookup.js} +4 -4
  51. package/dist/{lookup-CnkkF4Rf.js → lookup2.js} +6 -6
  52. package/dist/{middleware-BxHcZC4p.js → middleware.js} +35 -39
  53. package/dist/middleware2.js +32 -0
  54. package/dist/mod.d.ts +17 -17
  55. package/dist/mod.js +17 -17
  56. package/dist/{mod-CDzlVCUF.d.ts → mod2.d.ts} +3 -3
  57. package/dist/{mod-CCL2cvnI.d.ts → mod3.d.ts} +4 -4
  58. package/dist/{mq-DYKDDJmp.d.ts → mq.d.ts} +1 -1
  59. package/dist/{multibase-CnLHszip.js → multibase.js} +1 -1
  60. package/dist/nodeinfo/client.test.js +19 -28
  61. package/dist/nodeinfo/handler.test.js +37 -44
  62. package/dist/nodeinfo/mod.d.ts +2 -5
  63. package/dist/nodeinfo/mod.js +2 -3
  64. package/dist/nodeinfo/semver.test.js +13 -21
  65. package/dist/nodeinfo/types.test.js +9 -11
  66. package/dist/{owner-D0cOz8R5.d.ts → owner.d.ts} +4 -4
  67. package/dist/{owner-qKULzrkx.js → owner.js} +4 -4
  68. package/dist/{proof-d5P09-xk.js → proof.js} +11 -13
  69. package/dist/{retry-BiIhZWgD.js → retry.js} +1 -1
  70. package/dist/{router-D_aVZZUc.js → router.js} +1 -1
  71. package/dist/runtime/authdocloader.test.js +22 -26
  72. package/dist/runtime/docloader.test.js +56 -56
  73. package/dist/runtime/key.test.js +31 -53
  74. package/dist/runtime/langstr.test.js +8 -10
  75. package/dist/runtime/mod.d.ts +103 -6
  76. package/dist/runtime/mod.js +6 -7
  77. package/dist/runtime/multibase/multibase.test.js +12 -18
  78. package/dist/runtime/url.test.js +7 -6
  79. package/dist/{semver-BNrOOAs9.js → semver.js} +7 -17
  80. package/dist/{send-BnMY3Qxa.js → send.js} +4 -4
  81. package/dist/sig/http.test.js +104 -168
  82. package/dist/sig/key.test.js +17 -20
  83. package/dist/sig/ld.test.js +28 -35
  84. package/dist/sig/mod.d.ts +3 -7
  85. package/dist/sig/mod.js +6 -7
  86. package/dist/sig/owner.test.js +24 -30
  87. package/dist/sig/proof.test.js +24 -29
  88. package/dist/{std__assert-o_r9vqm1.js → std__assert.js} +7 -13
  89. package/dist/testing/docloader.test.js +9 -12
  90. package/dist/testing/mod.js +2 -1
  91. package/dist/{testing-DLyvtiiW.js → testing.js} +2 -2
  92. package/dist/{transformers-ghwJuzGY.js → transformers.js} +1 -1
  93. package/dist/{type-CFuiGLz9.js → type.js} +1 -1
  94. package/dist/{types-CJHS5pXl.js → types.js} +2 -2
  95. package/dist/{url-C2xuoQD1.js → url.js} +1 -1
  96. package/dist/vocab/actor.test.js +76 -128
  97. package/dist/vocab/lookup.test.js +19 -23
  98. package/dist/vocab/mod.d.ts +3 -5
  99. package/dist/vocab/mod.js +4 -4
  100. package/dist/vocab/type.test.js +10 -10
  101. package/dist/vocab/vocab.test.js +90 -109
  102. package/dist/{vocab-CzEfWQk2.d.ts → vocab.d.ts} +2 -2
  103. package/dist/{vocab-S7fEn6XO.js → vocab.js} +318 -454
  104. package/dist/webfinger/handler.test.js +40 -48
  105. package/dist/webfinger/lookup.test.js +12 -15
  106. package/dist/webfinger/mod.d.ts +1 -4
  107. package/dist/webfinger/mod.js +2 -3
  108. package/dist/x/cfworkers.d.ts +2 -2
  109. package/dist/x/cfworkers.test.js +7 -9
  110. package/dist/x/hono.d.ts +2 -11
  111. package/dist/x/sveltekit.d.ts +2 -11
  112. package/package.json +1 -1
  113. package/dist/actor-CsmPeeHG.js +0 -34925
  114. package/dist/authdocloader-9g6RkEcR.js +0 -53
  115. package/dist/compat-Bb5myD13.js +0 -4
  116. package/dist/docloader-CchlnLWb.js +0 -4598
  117. package/dist/federation-B0aljx0V.js +0 -203
  118. package/dist/http-CP3h1SLi.js +0 -796
  119. package/dist/key--l6NVKdl.js +0 -257
  120. package/dist/key-1Fv7reaM.js +0 -16
  121. package/dist/key-DD37RpoD.js +0 -10
  122. package/dist/lookup-CN-LpF5e.js +0 -127
  123. package/dist/middleware-BQHe0X6Y.js +0 -17
  124. package/dist/middleware-C3TZ3P-v.js +0 -33
  125. package/dist/middleware-CEpilAEY.js +0 -3524
  126. package/dist/mod-1pDWKvUL.d.ts +0 -2
  127. package/dist/mod-DFncUgcE.d.ts +0 -82
  128. package/dist/mod-GIh5OYxW.d.ts +0 -2
  129. package/dist/mod-g0xFzAP9.d.ts +0 -2
  130. package/dist/mod-qFMzZ3iF.d.ts +0 -104
  131. package/dist/nodeinfo-CyEbLjHs.js +0 -4
  132. package/dist/proof-BfeWBNrY.js +0 -582
  133. package/dist/runtime-BSkOVUWM.js +0 -4
  134. package/dist/sig-BXJO--F9.js +0 -4
  135. package/dist/types-BZUzjGS0.js +0 -455
  136. package/dist/vocab-C_pE4SvE.js +0 -168
  137. package/dist/webfinger-C3GIyXIg.js +0 -4
  138. /package/dist/{denokv-CvROlGYX.js → denokv.js} +0 -0
@@ -3,16 +3,14 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { assertEquals } from "../assert_equals-B44MxcIj.js";
7
- import "../assert-LOEeCUK5.js";
8
- import "../assert_instance_of-XtuFevV_.js";
9
- import { formatSemVer, parseSemVer } from "../semver-BNrOOAs9.js";
10
- import { test } from "../testing-DLyvtiiW.js";
11
- import "../std__assert-o_r9vqm1.js";
12
- import "../assert_rejects-DWQ4jaf9.js";
13
- import "../assert_is_error-BTlryvT0.js";
14
- import "../assert_not_equals-C685gKx6.js";
15
- import { assertThrows } from "../assert_throws-YetpVSc-.js";
6
+ import "../chunk.js";
7
+ import { t as assertEquals } from "../assert_equals.js";
8
+ import { n as parseSemVer, t as formatSemVer } from "../semver.js";
9
+ import { t as test } from "../testing.js";
10
+ import "../std__assert.js";
11
+ import "../assert_rejects.js";
12
+ import "../assert_is_error.js";
13
+ import { t as assertThrows } from "../assert_throws.js";
16
14
 
17
15
  //#region nodeinfo/semver.test.ts
18
16
  test("parseSemVer() handles major", async (t) => {
@@ -25,8 +23,7 @@ test("parseSemVer() handles major", async (t) => {
25
23
  [" v8.2.3 ", 8],
26
24
  [" 13.2.3", 13]
27
25
  ]) await t.step(v, () => {
28
- const version = parseSemVer(v);
29
- assertEquals(version.major, expected);
26
+ assertEquals(parseSemVer(v).major, expected);
30
27
  });
31
28
  });
32
29
  test("parseSemVer() handles minor", async (t) => {
@@ -39,8 +36,7 @@ test("parseSemVer() handles minor", async (t) => {
39
36
  [" v1.8.3 ", 8],
40
37
  [" 1.13.3", 13]
41
38
  ]) await t.step(v, () => {
42
- const version = parseSemVer(v);
43
- assertEquals(version.minor, expected);
39
+ assertEquals(parseSemVer(v).minor, expected);
44
40
  });
45
41
  });
46
42
  test("parseSemVer() handles patch", async (t) => {
@@ -68,8 +64,7 @@ test("parseSemVer() handles prerelease", async (t) => {
68
64
  ["1.2.0-3.6-pre2", [3, "6-pre2"]],
69
65
  ["2.0.0", []]
70
66
  ]) await t.step(`${v} : ${JSON.stringify(expected)}`, () => {
71
- const semver = parseSemVer(v);
72
- assertEquals(semver.prerelease, expected);
67
+ assertEquals(parseSemVer(v).prerelease, expected);
73
68
  });
74
69
  });
75
70
  test({
@@ -109,8 +104,7 @@ test("parseSemVer() throws on invalid versions", async (t) => {
109
104
  });
110
105
  });
111
106
  test("parseSemVer() handles big numeric prerelease", function() {
112
- const r = parseSemVer(`1.2.3-beta.${Number.MAX_SAFE_INTEGER}0`);
113
- assertEquals(r.prerelease, ["beta", "90071992547409910"]);
107
+ assertEquals(parseSemVer(`1.2.3-beta.${Number.MAX_SAFE_INTEGER}0`).prerelease, ["beta", "90071992547409910"]);
114
108
  });
115
109
  test("formatSemVer()", async (t) => {
116
110
  for (const [version, expected] of [
@@ -124,9 +118,7 @@ test("formatSemVer()", async (t) => {
124
118
  ]) await t.step({
125
119
  name: version,
126
120
  fn: () => {
127
- const v = parseSemVer(version);
128
- const actual = formatSemVer(v);
129
- assertEquals(actual, expected);
121
+ assertEquals(formatSemVer(parseSemVer(version)), expected);
130
122
  }
131
123
  });
132
124
  });
@@ -3,17 +3,15 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { assertEquals } from "../assert_equals-B44MxcIj.js";
7
- import "../assert-LOEeCUK5.js";
8
- import "../assert_instance_of-XtuFevV_.js";
9
- import "../semver-BNrOOAs9.js";
10
- import { nodeInfoToJson } from "../types-CJHS5pXl.js";
11
- import { test } from "../testing-DLyvtiiW.js";
12
- import "../std__assert-o_r9vqm1.js";
13
- import "../assert_rejects-DWQ4jaf9.js";
14
- import "../assert_is_error-BTlryvT0.js";
15
- import "../assert_not_equals-C685gKx6.js";
16
- import { assertThrows } from "../assert_throws-YetpVSc-.js";
6
+ import "../chunk.js";
7
+ import { t as assertEquals } from "../assert_equals.js";
8
+ import "../semver.js";
9
+ import { t as nodeInfoToJson } from "../types.js";
10
+ import { t as test } from "../testing.js";
11
+ import "../std__assert.js";
12
+ import "../assert_rejects.js";
13
+ import "../assert_is_error.js";
14
+ import { t as assertThrows } from "../assert_throws.js";
17
15
 
18
16
  //#region nodeinfo/types.test.ts
19
17
  test("nodeInfoToJson()", () => {
@@ -1,8 +1,8 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { DocumentLoader } from "./docloader-Q42SMRIB.js";
4
- import { Activity, CryptographicKey } from "./vocab-CzEfWQk2.js";
5
- import { Actor } from "./actor-CPpvuBKU.js";
3
+ import { n as DocumentLoader } from "./docloader.js";
4
+ import { m as CryptographicKey, n as Activity } from "./vocab.js";
5
+ import { t as Actor } from "./actor.js";
6
6
  import { TracerProvider } from "@opentelemetry/api";
7
7
 
8
8
  //#region sig/owner.d.ts
@@ -66,4 +66,4 @@ interface GetKeyOwnerOptions {
66
66
  */
67
67
  declare function getKeyOwner(keyId: URL | CryptographicKey, options: GetKeyOwnerOptions): Promise<Actor | null>;
68
68
  //#endregion
69
- export { DoesActorOwnKeyOptions, GetKeyOwnerOptions, doesActorOwnKey, getKeyOwner };
69
+ export { getKeyOwner as i, GetKeyOwnerOptions as n, doesActorOwnKey as r, DoesActorOwnKeyOptions as t };
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { getDocumentLoader } from "./docloader-Qfs9nPiy.js";
7
- import { CryptographicKey, Object as Object$1 } from "./vocab-S7fEn6XO.js";
8
- import { isActor } from "./actor-BVilnhZ3.js";
6
+ import { i as getDocumentLoader } from "./docloader.js";
7
+ import { _ as Object$1, o as CryptographicKey } from "./vocab.js";
8
+ import { i as isActor } from "./actor.js";
9
9
  import { trace } from "@opentelemetry/api";
10
10
 
11
11
  //#region sig/owner.ts
@@ -86,4 +86,4 @@ async function getKeyOwner(keyId, options) {
86
86
  }
87
87
 
88
88
  //#endregion
89
- export { doesActorOwnKey, getKeyOwner };
89
+ export { getKeyOwner as n, doesActorOwnKey as t };
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-Qfs9nPiy.js";
7
- import { Activity, DataIntegrityProof, Multikey } from "./vocab-S7fEn6XO.js";
8
- import { getTypeId } from "./type-CFuiGLz9.js";
9
- import { fetchKey, validateCryptoKey } from "./key-BPUM0v_S.js";
6
+ import { d as version, u as name } from "./docloader.js";
7
+ import { h as Multikey, s as DataIntegrityProof, t as Activity } from "./vocab.js";
8
+ import { t as getTypeId } from "./type.js";
9
+ import { a as validateCryptoKey, n as fetchKey } from "./key2.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanStatusCode, trace } from "@opentelemetry/api";
12
12
  import { encodeHex } from "byte-encodings/hex";
@@ -41,15 +41,14 @@ async function createProof(object, privateKey, keyId, { contextLoader, context:
41
41
  const msgBytes = encoder.encode(msgCanon);
42
42
  const msgDigest = await crypto.subtle.digest("SHA-256", msgBytes);
43
43
  created ??= Temporal.Now.instant();
44
- const proofConfig = {
44
+ const proofCanon = serialize({
45
45
  "@context": compactMsg["@context"],
46
46
  type: "DataIntegrityProof",
47
47
  cryptosuite: "eddsa-jcs-2022",
48
48
  verificationMethod: keyId.href,
49
49
  proofPurpose: "assertionMethod",
50
50
  created: created.toString()
51
- };
52
- const proofCanon = serialize(proofConfig);
51
+ });
53
52
  const proofBytes = encoder.encode(proofCanon);
54
53
  const proofDigest = await crypto.subtle.digest("SHA-256", proofBytes);
55
54
  const digest = new Uint8Array(proofDigest.byteLength + msgDigest.byteLength);
@@ -75,7 +74,7 @@ async function createProof(object, privateKey, keyId, { contextLoader, context:
75
74
  * @since 0.10.0
76
75
  */
77
76
  async function signObject(object, privateKey, keyId, options = {}) {
78
- return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(deno_default.name, deno_default.version).startActiveSpan("object_integrity_proofs.sign", { attributes: { "activitypub.object.type": getTypeId(object).href } }, async (span) => {
77
+ return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("object_integrity_proofs.sign", { attributes: { "activitypub.object.type": getTypeId(object).href } }, async (span) => {
79
78
  try {
80
79
  if (object.id != null) span.setAttribute("activitypub.object.id", object.id.href);
81
80
  const existingProofs = [];
@@ -109,7 +108,7 @@ async function signObject(object, privateKey, keyId, options = {}) {
109
108
  * @since 0.10.0
110
109
  */
111
110
  async function verifyProof(jsonLd, proof, options = {}) {
112
- return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(deno_default.name, deno_default.version).startActiveSpan("object_integrity_proofs.verify", async (span) => {
111
+ return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("object_integrity_proofs.verify", async (span) => {
113
112
  if (span.isRecording()) {
114
113
  if (proof.cryptosuite != null) span.setAttribute("object_integrity_proofs.cryptosuite", proof.cryptosuite);
115
114
  if (proof.verificationMethodId != null) span.setAttribute("object_integrity_proofs.key_id", proof.verificationMethodId.href);
@@ -133,15 +132,14 @@ async function verifyProof(jsonLd, proof, options = {}) {
133
132
  async function verifyProofInternal(jsonLd, proof, options) {
134
133
  if (typeof jsonLd !== "object" || proof.cryptosuite !== "eddsa-jcs-2022" || proof.verificationMethodId == null || proof.proofPurpose !== "assertionMethod" || proof.proofValue == null || proof.created == null) return null;
135
134
  const publicKeyPromise = fetchKey(proof.verificationMethodId, Multikey, options);
136
- const proofConfig = {
135
+ const proofCanon = serialize({
137
136
  "@context": jsonLd["@context"],
138
137
  type: "DataIntegrityProof",
139
138
  cryptosuite: proof.cryptosuite,
140
139
  verificationMethod: proof.verificationMethodId.href,
141
140
  proofPurpose: proof.proofPurpose,
142
141
  created: proof.created.toString()
143
- };
144
- const proofCanon = serialize(proofConfig);
142
+ });
145
143
  const encoder = new TextEncoder();
146
144
  const proofBytes = encoder.encode(proofCanon);
147
145
  const proofDigest = await crypto.subtle.digest("SHA-256", proofBytes);
@@ -254,4 +252,4 @@ async function verifyObject(cls, jsonLd, options = {}) {
254
252
  }
255
253
 
256
254
  //#endregion
257
- export { createProof, signObject, verifyObject, verifyProof };
255
+ export { verifyProof as i, signObject as n, verifyObject as r, createProof as t };
@@ -34,4 +34,4 @@ function createExponentialBackoffPolicy(options = {}) {
34
34
  }
35
35
 
36
36
  //#endregion
37
- export { createExponentialBackoffPolicy };
37
+ export { createExponentialBackoffPolicy as t };
@@ -115,4 +115,4 @@ var RouterError = class extends Error {
115
115
  };
116
116
 
117
117
  //#endregion
118
- export { Router$1 as Router, RouterError };
118
+ export { RouterError as n, Router$1 as t };
@@ -3,29 +3,26 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { assertEquals } from "../assert_equals-B44MxcIj.js";
7
- import "../assert-LOEeCUK5.js";
8
- import "../assert_instance_of-XtuFevV_.js";
9
- import "../docloader-Qfs9nPiy.js";
10
- import { UrlError } from "../url-C2xuoQD1.js";
11
- import "../multibase-CnLHszip.js";
12
- import "../vocab-S7fEn6XO.js";
13
- import "../langstr-DbWheeIS.js";
14
- import "../lookup-CkOdKyYR.js";
15
- import "../type-CFuiGLz9.js";
16
- import "../actor-BVilnhZ3.js";
17
- import "../key-BPUM0v_S.js";
18
- import { verifyRequest } from "../http-CP3h1SLi.js";
19
- import { getAuthenticatedDocumentLoader } from "../authdocloader-9g6RkEcR.js";
20
- import { test } from "../testing-DLyvtiiW.js";
21
- import "../std__assert-o_r9vqm1.js";
22
- import { assertRejects } from "../assert_rejects-DWQ4jaf9.js";
23
- import "../assert_is_error-BTlryvT0.js";
24
- import "../assert_not_equals-C685gKx6.js";
25
- import "../assert_throws-YetpVSc-.js";
26
- import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
27
- import { rsaPrivateKey2 } from "../keys-DGJec4-R.js";
28
- import { esm_default } from "../esm-DO9PrujO.js";
6
+ import "../chunk.js";
7
+ import { t as assertEquals } from "../assert_equals.js";
8
+ import "../docloader.js";
9
+ import { t as UrlError } from "../url.js";
10
+ import "../multibase.js";
11
+ import "../vocab.js";
12
+ import "../langstr.js";
13
+ import "../lookup.js";
14
+ import "../actor.js";
15
+ import "../key2.js";
16
+ import { l as verifyRequest } from "../http.js";
17
+ import { t as getAuthenticatedDocumentLoader } from "../authdocloader.js";
18
+ import { t as test } from "../testing.js";
19
+ import "../std__assert.js";
20
+ import { t as assertRejects } from "../assert_rejects.js";
21
+ import "../assert_is_error.js";
22
+ import "../assert_throws.js";
23
+ import { t as mockDocumentLoader } from "../docloader2.js";
24
+ import { i as rsaPrivateKey2 } from "../keys.js";
25
+ import { t as esm_default } from "../esm.js";
29
26
 
30
27
  //#region runtime/authdocloader.test.ts
31
28
  test("getAuthenticatedDocumentLoader()", async (t) => {
@@ -39,11 +36,10 @@ test("getAuthenticatedDocumentLoader()", async (t) => {
39
36
  return new Response(JSON.stringify(v != null), { headers: { "Content-Type": "application/json" } });
40
37
  });
41
38
  await t.step("test", async () => {
42
- const loader = await getAuthenticatedDocumentLoader({
39
+ assertEquals(await (await getAuthenticatedDocumentLoader({
43
40
  keyId: new URL("https://example.com/key2"),
44
41
  privateKey: rsaPrivateKey2
45
- });
46
- assertEquals(await loader("https://example.com/object"), {
42
+ }))("https://example.com/object"), {
47
43
  contextUrl: null,
48
44
  documentUrl: "https://example.com/object",
49
45
  document: true
@@ -3,20 +3,19 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { assertEquals } from "../assert_equals-B44MxcIj.js";
7
- import "../assert-LOEeCUK5.js";
8
- import "../assert_instance_of-XtuFevV_.js";
9
- import { MemoryKvStore } from "../kv-BMY6Qf_A.js";
10
- import { FetchError, contexts_default, deno_default, getDocumentLoader, getUserAgent, kvCache } from "../docloader-Qfs9nPiy.js";
11
- import { UrlError } from "../url-C2xuoQD1.js";
12
- import { test } from "../testing-DLyvtiiW.js";
13
- import "../std__assert-o_r9vqm1.js";
14
- import { assertRejects } from "../assert_rejects-DWQ4jaf9.js";
15
- import "../assert_is_error-BTlryvT0.js";
16
- import "../assert_not_equals-C685gKx6.js";
17
- import { assertThrows } from "../assert_throws-YetpVSc-.js";
18
- import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
19
- import { esm_default } from "../esm-DO9PrujO.js";
6
+ import "../chunk.js";
7
+ import { t as assertEquals } from "../assert_equals.js";
8
+ import { t as assert } from "../assert.js";
9
+ import { t as MemoryKvStore } from "../kv.js";
10
+ import { d as version, i as getDocumentLoader, l as contexts_default, o as getUserAgent, s as kvCache, t as FetchError } from "../docloader.js";
11
+ import { t as UrlError } from "../url.js";
12
+ import { t as test } from "../testing.js";
13
+ import "../std__assert.js";
14
+ import { t as assertRejects } from "../assert_rejects.js";
15
+ import "../assert_is_error.js";
16
+ import { t as assertThrows } from "../assert_throws.js";
17
+ import { t as mockDocumentLoader } from "../docloader2.js";
18
+ import { t as esm_default } from "../esm.js";
20
19
  import process from "node:process";
21
20
 
22
21
  //#region runtime/docloader.test.ts
@@ -287,6 +286,17 @@ test("getDocumentLoader()", async (t) => {
287
286
  assertEquals(await fetchDocumentLoader2("https://example.com/localhost-redirect"), expected);
288
287
  assertEquals(await fetchDocumentLoader2("https://example.com/localhost-link"), expected);
289
288
  });
289
+ const maliciousPayload = "<a" + " a=\"b\"".repeat(30) + " ";
290
+ esm_default.get("https://example.com/redos", {
291
+ body: maliciousPayload,
292
+ headers: { "Content-Type": "text/html; charset=utf-8" }
293
+ });
294
+ await t.step("ReDoS resistance (CVE-2025-68475)", async () => {
295
+ const start = performance.now();
296
+ await assertRejects(() => fetchDocumentLoader("https://example.com/redos"), SyntaxError);
297
+ const elapsed = performance.now() - start;
298
+ assert(elapsed < 1e3, `Potential ReDoS vulnerability detected: ${elapsed}ms (expected < 1000ms)`);
299
+ });
290
300
  esm_default.hardReset();
291
301
  });
292
302
  test("kvCache()", async (t) => {
@@ -313,12 +323,11 @@ test("kvCache()", async (t) => {
313
323
  type: "Object"
314
324
  }
315
325
  });
316
- const cache = await kv.get([
326
+ assertEquals(await kv.get([
317
327
  "_test",
318
328
  "cached",
319
329
  "https://example.com/object"
320
- ]);
321
- assertEquals(cache, result);
330
+ ]), result);
322
331
  await kv.set([
323
332
  "_test",
324
333
  "cached",
@@ -328,8 +337,7 @@ test("kvCache()", async (t) => {
328
337
  documentUrl: "https://example.org/",
329
338
  document: { "id": "https://example.org/" }
330
339
  });
331
- const result2 = await loader("https://example.org/");
332
- assertEquals(result2, {
340
+ assertEquals(await loader("https://example.org/"), {
333
341
  contextUrl: null,
334
342
  documentUrl: "https://example.org/",
335
343
  document: { "id": "https://example.org/" }
@@ -343,21 +351,19 @@ test("kvCache()", async (t) => {
343
351
  documentUrl: "https://example.net/",
344
352
  document: { "id": "https://example.net/" }
345
353
  });
346
- const result3 = await loader("https://example.net/");
347
- assertEquals(result3, {
354
+ assertEquals(await loader("https://example.net/"), {
348
355
  contextUrl: null,
349
356
  documentUrl: "https://example.net/",
350
357
  document: { "id": "https://example.net/" }
351
358
  });
352
359
  });
353
360
  await t.step("not cached", async () => {
354
- const result = await kvCache({
361
+ assertEquals(await kvCache({
355
362
  kv,
356
363
  loader: mockDocumentLoader,
357
364
  rules: [],
358
365
  prefix: ["_test", "not cached"]
359
- })("https://example.com/object");
360
- assertEquals(result, {
366
+ })("https://example.com/object"), {
361
367
  contextUrl: null,
362
368
  documentUrl: "https://example.com/object",
363
369
  document: {
@@ -367,12 +373,11 @@ test("kvCache()", async (t) => {
367
373
  type: "Object"
368
374
  }
369
375
  });
370
- const cache = await kv.get([
376
+ assertEquals(await kv.get([
371
377
  "test2",
372
378
  "not cached",
373
379
  "https://example.com/object"
374
- ]);
375
- assertEquals(cache, void 0);
380
+ ]), void 0);
376
381
  });
377
382
  await t.step("maximum cache duration", () => {
378
383
  assertThrows(() => kvCache({
@@ -404,7 +409,7 @@ test("kvCache()", async (t) => {
404
409
  throw new Error("Failed to delete key");
405
410
  }
406
411
  }
407
- const result = await kvCache({
412
+ assertEquals(await kvCache({
408
413
  kv: new KvStoreThrowsException(),
409
414
  loader: mockDocumentLoader,
410
415
  rules: [
@@ -413,8 +418,7 @@ test("kvCache()", async (t) => {
413
418
  [new URLPattern("https://example.com/*"), Temporal.Duration.from({ days: 30 })]
414
419
  ],
415
420
  prefix: ["_test", "not cached"]
416
- })("https://example.com/object");
417
- assertEquals(result, {
421
+ })("https://example.com/object"), {
418
422
  contextUrl: null,
419
423
  documentUrl: "https://example.com/object",
420
424
  document: {
@@ -443,23 +447,20 @@ test("kvCache()", async (t) => {
443
447
  });
444
448
  const activityStreamsUrl = "https://www.w3.org/ns/activitystreams";
445
449
  loaderCalled = false;
446
- const result = await loader(activityStreamsUrl);
447
- assertEquals(result, {
450
+ assertEquals(await loader(activityStreamsUrl), {
448
451
  contextUrl: null,
449
452
  documentUrl: activityStreamsUrl,
450
453
  document: contexts_default[activityStreamsUrl]
451
454
  });
452
455
  assertEquals(loaderCalled, false, "Loader should not be called for preloaded contexts");
453
- const cachedValue = await kv$1.get([
456
+ assertEquals(await kv$1.get([
454
457
  "_test",
455
458
  "preloaded",
456
459
  activityStreamsUrl
457
- ]);
458
- assertEquals(cachedValue, void 0, "Preloaded contexts should not be cached in KV store");
460
+ ]), void 0, "Preloaded contexts should not be cached in KV store");
459
461
  const securityUrl = "https://w3id.org/security/v1";
460
462
  loaderCalled = false;
461
- const result2 = await loader(securityUrl);
462
- assertEquals(result2, {
463
+ assertEquals(await loader(securityUrl), {
463
464
  contextUrl: null,
464
465
  documentUrl: securityUrl,
465
466
  document: contexts_default[securityUrl]
@@ -474,47 +475,46 @@ test("kvCache()", async (t) => {
474
475
  document: { "mock": "document" }
475
476
  });
476
477
  assertEquals(loaderCalled, true, "Loader should be called for non-preloaded URLs");
477
- const cachedValue2 = await kv$1.get([
478
+ assertEquals(await kv$1.get([
478
479
  "_test",
479
480
  "preloaded",
480
481
  nonPreloadedUrl
481
- ]);
482
- assertEquals(cachedValue2, result3, "Non-preloaded URLs should be cached");
482
+ ]), result3, "Non-preloaded URLs should be cached");
483
483
  });
484
484
  });
485
485
  test("getUserAgent()", () => {
486
486
  if ("Deno" in globalThis) {
487
- assertEquals(getUserAgent(), `Fedify/${deno_default.version} (Deno/${Deno.version.deno})`);
488
- assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Deno/${Deno.version.deno})`);
489
- assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${deno_default.version} (Deno/${Deno.version.deno}; +https://example.com/)`);
487
+ assertEquals(getUserAgent(), `Fedify/${version} (Deno/${Deno.version.deno})`);
488
+ assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${version}; Deno/${Deno.version.deno})`);
489
+ assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${version} (Deno/${Deno.version.deno}; +https://example.com/)`);
490
490
  assertEquals(getUserAgent({
491
491
  software: "MyApp/1.0.0",
492
492
  url: new URL("https://example.com/")
493
- }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Deno/${Deno.version.deno}; +https://example.com/)`);
493
+ }), `MyApp/1.0.0 (Fedify/${version}; Deno/${Deno.version.deno}; +https://example.com/)`);
494
494
  } else if ("Bun" in globalThis) {
495
- assertEquals(getUserAgent(), `Fedify/${deno_default.version} (Bun/${Bun.version})`);
496
- assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Bun/${Bun.version})`);
497
- assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${deno_default.version} (Bun/${Bun.version}; +https://example.com/)`);
495
+ assertEquals(getUserAgent(), `Fedify/${version} (Bun/${Bun.version})`);
496
+ assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${version}; Bun/${Bun.version})`);
497
+ assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${version} (Bun/${Bun.version}; +https://example.com/)`);
498
498
  assertEquals(getUserAgent({
499
499
  software: "MyApp/1.0.0",
500
500
  url: new URL("https://example.com/")
501
- }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Bun/${Bun.version}; +https://example.com/)`);
501
+ }), `MyApp/1.0.0 (Fedify/${version}; Bun/${Bun.version}; +https://example.com/)`);
502
502
  } else if (navigator.userAgent === "Cloudflare-Workers") {
503
- assertEquals(getUserAgent(), `Fedify/${deno_default.version} (Cloudflare-Workers)`);
504
- assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Cloudflare-Workers)`);
505
- assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${deno_default.version} (Cloudflare-Workers; +https://example.com/)`);
503
+ assertEquals(getUserAgent(), `Fedify/${version} (Cloudflare-Workers)`);
504
+ assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${version}; Cloudflare-Workers)`);
505
+ assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${version} (Cloudflare-Workers; +https://example.com/)`);
506
506
  assertEquals(getUserAgent({
507
507
  software: "MyApp/1.0.0",
508
508
  url: new URL("https://example.com/")
509
- }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Cloudflare-Workers; +https://example.com/)`);
509
+ }), `MyApp/1.0.0 (Fedify/${version}; Cloudflare-Workers; +https://example.com/)`);
510
510
  } else {
511
- assertEquals(getUserAgent(), `Fedify/${deno_default.version} (Node.js/${process.versions.node})`);
512
- assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Node.js/${process.versions.node})`);
513
- assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${deno_default.version} (Node.js/${process.versions.node}; +https://example.com/)`);
511
+ assertEquals(getUserAgent(), `Fedify/${version} (Node.js/${process.versions.node})`);
512
+ assertEquals(getUserAgent({ software: "MyApp/1.0.0" }), `MyApp/1.0.0 (Fedify/${version}; Node.js/${process.versions.node})`);
513
+ assertEquals(getUserAgent({ url: "https://example.com/" }), `Fedify/${version} (Node.js/${process.versions.node}; +https://example.com/)`);
514
514
  assertEquals(getUserAgent({
515
515
  software: "MyApp/1.0.0",
516
516
  url: new URL("https://example.com/")
517
- }), `MyApp/1.0.0 (Fedify/${deno_default.version}; Node.js/${process.versions.node}; +https://example.com/)`);
517
+ }), `MyApp/1.0.0 (Fedify/${version}; Node.js/${process.versions.node}; +https://example.com/)`);
518
518
  }
519
519
  });
520
520