@fedify/fedify 2.0.8 → 2.0.9

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 (203) hide show
  1. package/dist/{assert-MZs1qjMx.js → assert-ddO5KLpe.mjs} +5 -9
  2. package/dist/{assert_equals-DSbWqCm3.js → assert_equals-Ew3jOFa3.mjs} +55 -69
  3. package/dist/{assert_instance_of-DHz7EHNU.js → assert_instance_of-C4Ri6VuN.mjs} +5 -9
  4. package/dist/{assert_not_equals-C80BG-_5.js → assert_not_equals--wG9hV7u.mjs} +6 -13
  5. package/dist/{assert_rejects-Ce45JcFg.js → assert_rejects-B-qJtC9Z.mjs} +6 -11
  6. package/dist/{assert_throws-BNXdRGWP.js → assert_throws-4NwKEy2q.mjs} +5 -10
  7. package/dist/{builder-B5cKln9v.js → builder-DDoQaGOu.mjs} +32 -41
  8. package/dist/{chunk-CGaQZ11T.cjs → chunk-DDcVe30Y.cjs} +23 -24
  9. package/dist/{chunk-DJNbSFdH.js → chunk-nlSIicah.js} +8 -8
  10. package/dist/{client-CoCIaTNO.js → client-A1UrnX6I.mjs} +9 -13
  11. package/dist/{client-BxMZiQaD.d.ts → client-AtlibPOU.d.ts} +1 -1
  12. package/dist/{client-C97KOq3x.d.cts → client-z-8dc-e1.d.cts} +1 -1
  13. package/dist/{collection-CcnIw1qY.js → collection-ChgDTHLz.mjs} +7 -12
  14. package/dist/compat/mod.cjs +5 -8
  15. package/dist/compat/mod.d.cts +78 -6
  16. package/dist/compat/mod.d.ts +78 -6
  17. package/dist/compat/mod.js +4 -8
  18. package/dist/compat/transformers.test.mjs +62 -0
  19. package/dist/{context-D3QkEtZd.d.cts → context-CNIt-Qn7.d.cts} +9 -18
  20. package/dist/{context-DZJhUmzF.d.ts → context-Dyg7P1qW.d.ts} +9 -18
  21. package/dist/{context-pa9aIrwp.js → context-Juj6bdHC.mjs} +7 -11
  22. package/dist/deno-CuVDEdyj.mjs +8 -0
  23. package/dist/{docloader-CBHh0rC5.js → docloader-BPq9yzC_.mjs} +8 -14
  24. package/dist/{esm-nLm00z9V.js → esm-DVILvP5e.mjs} +50 -89
  25. package/dist/federation/builder.test.d.mts +2 -0
  26. package/dist/federation/{builder.test.js → builder.test.mjs} +19 -38
  27. package/dist/federation/collection.test.d.mts +2 -0
  28. package/dist/federation/collection.test.mjs +21 -0
  29. package/dist/federation/handler.test.d.mts +2 -0
  30. package/dist/federation/{handler.test.js → handler.test.mjs} +26 -56
  31. package/dist/federation/idempotency.test.d.mts +2 -0
  32. package/dist/federation/{idempotency.test.js → idempotency.test.mjs} +31 -62
  33. package/dist/federation/inbox.test.d.mts +2 -0
  34. package/dist/federation/{inbox.test.js → inbox.test.mjs} +8 -12
  35. package/dist/federation/keycache.test.d.mts +2 -0
  36. package/dist/federation/{keycache.test.js → keycache.test.mjs} +11 -15
  37. package/dist/federation/kv.test.d.mts +2 -0
  38. package/dist/federation/{kv.test.js → kv.test.mjs} +11 -22
  39. package/dist/federation/middleware.test.d.mts +2 -0
  40. package/dist/federation/{middleware.test.js → middleware.test.mjs} +146 -225
  41. package/dist/federation/mod.cjs +327 -16
  42. package/dist/federation/mod.d.cts +3 -6
  43. package/dist/federation/mod.d.ts +3 -6
  44. package/dist/federation/mod.js +322 -13
  45. package/dist/federation/mq.test.d.mts +2 -0
  46. package/dist/federation/{mq.test.js → mq.test.mjs} +21 -35
  47. package/dist/federation/negotiation.test.d.mts +2 -0
  48. package/dist/federation/{negotiation.test.js → negotiation.test.mjs} +9 -16
  49. package/dist/federation/retry.test.d.mts +2 -0
  50. package/dist/federation/{retry.test.js → retry.test.mjs} +8 -11
  51. package/dist/federation/router.test.d.mts +2 -0
  52. package/dist/federation/{router.test.js → router.test.mjs} +11 -16
  53. package/dist/federation/send.test.d.mts +2 -0
  54. package/dist/federation/{send.test.js → send.test.mjs} +22 -29
  55. package/dist/federation/webfinger.test.d.mts +2 -0
  56. package/dist/federation/{webfinger.test.js → webfinger.test.mjs} +22 -55
  57. package/dist/{http-DkHdFfrc.d.ts → http-B2wiNmSo.d.ts} +1 -6
  58. package/dist/{http-C_RwU_oN.js → http-Bz7avX57.js} +25 -156
  59. package/dist/{http-Cz3MlXAZ.d.cts → http-C_tEAiZj.d.cts} +1 -6
  60. package/dist/{http-Br3-1dRf.js → http-DI213UHg.mjs} +17 -33
  61. package/dist/{http-DGs_78tx.cjs → http-DKBDoudA.cjs} +110 -235
  62. package/dist/{inbox-3bZUqDLE.js → inbox-Bdn-CSRd.mjs} +18 -26
  63. package/dist/{key-D7Y_J9kt.js → key-DzJf84o7.mjs} +12 -19
  64. package/dist/{keycache-BASM0rrX.js → keycache-DaQ3ndaJ.mjs} +5 -9
  65. package/dist/{keys-ZbcByPg9.js → keys-CtZLJq76.mjs} +5 -9
  66. package/dist/{kv-QzKcOQgP.js → kv-BrZHNugx.mjs} +6 -10
  67. package/dist/{kv-BL4nlICN.d.cts → kv-CbLNp3zQ.d.cts} +1 -1
  68. package/dist/{kv-DXEUEP6z.d.ts → kv-GFYnFoOl.d.ts} +1 -1
  69. package/dist/{kv-cache-CMM5VJsc.js → kv-cache-DBd7BezJ.js} +6 -13
  70. package/dist/{kv-cache-9PANi4tA.cjs → kv-cache-Dj1Q7TiW.cjs} +27 -34
  71. package/dist/{kv-cache-El7We5sy.js → kv-cache-OWmRLHir.mjs} +4 -8
  72. package/dist/{ld-Bjq9Z4St.js → ld-DczS1fLK.mjs} +17 -31
  73. package/dist/middleware-B5CiOImA.mjs +5 -0
  74. package/dist/{middleware-Bj30TZll.js → middleware-BKNu57ZI.js} +320 -363
  75. package/dist/middleware-C36TOX-2.cjs +4 -0
  76. package/dist/{middleware-CQeA5yF7.cjs → middleware-CyjmpK70.cjs} +513 -564
  77. package/dist/{middleware-DozhKfB6.js → middleware-DoHz9oIo.mjs} +260 -292
  78. package/dist/{mod-DPkRU3EK.d.cts → mod-1xhgsHef.d.cts} +2 -2
  79. package/dist/{mod-DUWcVv49.d.ts → mod-BGtYJZKu.d.ts} +2 -2
  80. package/dist/{mod-DXsQakeS.d.cts → mod-Bld7oeqf.d.cts} +3 -3
  81. package/dist/{mod-DnSsduJF.d.ts → mod-BnAKGh2w.d.ts} +2 -2
  82. package/dist/{mod-CwZXZJ9d.d.ts → mod-DTOUyCce.d.ts} +3 -3
  83. package/dist/{mod-Di3W5OdP.d.cts → mod-DWoQffTD.d.cts} +2 -2
  84. package/dist/mod.cjs +29 -68
  85. package/dist/mod.d.cts +11 -14
  86. package/dist/mod.d.ts +11 -15
  87. package/dist/mod.js +17 -65
  88. package/dist/{negotiation-5NPJL6zp.js → negotiation-BehA2uul.mjs} +7 -11
  89. package/dist/nodeinfo/client.test.d.mts +2 -0
  90. package/dist/nodeinfo/{client.test.js → client.test.mjs} +22 -40
  91. package/dist/nodeinfo/handler.test.d.mts +2 -0
  92. package/dist/nodeinfo/{handler.test.js → handler.test.mjs} +13 -42
  93. package/dist/nodeinfo/mod.cjs +5 -8
  94. package/dist/nodeinfo/mod.d.cts +2 -3
  95. package/dist/nodeinfo/mod.d.ts +2 -3
  96. package/dist/nodeinfo/mod.js +4 -8
  97. package/dist/nodeinfo/types.test.d.mts +2 -0
  98. package/dist/nodeinfo/{types.test.js → types.test.mjs} +9 -16
  99. package/dist/otel/exporter.test.d.mts +2 -0
  100. package/dist/otel/{exporter.test.js → exporter.test.mjs} +117 -169
  101. package/dist/otel/mod.cjs +15 -20
  102. package/dist/otel/mod.d.cts +2 -2
  103. package/dist/otel/mod.d.ts +2 -2
  104. package/dist/otel/mod.js +8 -14
  105. package/dist/{owner-gd0Q9FuU.d.ts → owner-74ARJ5TL.d.ts} +1 -1
  106. package/dist/{owner-1AbPBOOZ.d.cts → owner-CptqhsOy.d.cts} +1 -1
  107. package/dist/{owner-CImU2dKz.js → owner-DXMGUEOr.mjs} +11 -16
  108. package/dist/{proof-BygvN4r5.js → proof-C-7NljBU.js} +32 -58
  109. package/dist/{proof-DLL0MLmV.js → proof-CEOujj0L.mjs} +21 -33
  110. package/dist/{proof-UhA5do8k.cjs → proof-DMu-6A_w.cjs} +133 -157
  111. package/dist/{retry-D4GJ670a.js → retry-Ddbq3AcK.mjs} +4 -7
  112. package/dist/{router-D9eI0s4b.js → router-CrMLXoOr.mjs} +4 -8
  113. package/dist/runtime/mod.cjs +11 -13
  114. package/dist/runtime/mod.d.cts +6 -2
  115. package/dist/runtime/mod.d.ts +0 -1
  116. package/dist/runtime/mod.js +4 -7
  117. package/dist/{send-DbW03azY.js → send-DIfrLTB_.mjs} +8 -13
  118. package/dist/sig/http.test.d.mts +2 -0
  119. package/dist/sig/{http.test.js → http.test.mjs} +117 -199
  120. package/dist/sig/key.test.d.mts +2 -0
  121. package/dist/sig/{key.test.js → key.test.mjs} +11 -18
  122. package/dist/sig/ld.test.d.mts +2 -0
  123. package/dist/sig/{ld.test.js → ld.test.mjs} +22 -35
  124. package/dist/sig/mod.cjs +6 -9
  125. package/dist/sig/mod.d.cts +3 -3
  126. package/dist/sig/mod.d.ts +3 -3
  127. package/dist/sig/mod.js +5 -9
  128. package/dist/sig/owner.test.d.mts +2 -0
  129. package/dist/sig/{owner.test.js → owner.test.mjs} +19 -34
  130. package/dist/sig/proof.test.d.mts +2 -0
  131. package/dist/sig/{proof.test.js → proof.test.mjs} +16 -27
  132. package/dist/{std__assert-DWivtrGR.js → std__assert-Duiq_YC9.mjs} +12 -24
  133. package/dist/testing/{mod.d.ts → mod.d.mts} +26 -78
  134. package/dist/testing/mod.mjs +6 -0
  135. package/dist/{transformers-3g8GZwkZ.cjs → transformers-NeAONrAq.cjs} +20 -25
  136. package/dist/{transformers-C3FLHUd6.js → transformers-ve6e2xcg.js} +3 -7
  137. package/dist/{types-CPz01LGH.js → types-C37hquWI.mjs} +4 -7
  138. package/dist/{types-Cd_hszr_.cjs → types-KC4QAoxe.cjs} +29 -34
  139. package/dist/{types-C93Ob9cU.js → types-hvL8ElAs.js} +8 -13
  140. package/dist/utils/docloader.test.d.mts +2 -0
  141. package/dist/utils/{docloader.test.js → docloader.test.mjs} +14 -24
  142. package/dist/utils/kv-cache.test.d.mts +2 -0
  143. package/dist/utils/{kv-cache.test.js → kv-cache.test.mjs} +25 -40
  144. package/dist/utils/mod.cjs +5 -9
  145. package/dist/utils/mod.d.cts +1 -3
  146. package/dist/utils/mod.d.ts +1 -3
  147. package/dist/utils/mod.js +4 -9
  148. package/dist/vocab/cjs.test.d.mts +2 -0
  149. package/dist/vocab/cjs.test.mjs +14 -0
  150. package/dist/vocab/mod.cjs +10 -12
  151. package/dist/vocab/mod.js +3 -5
  152. package/package.json +7 -7
  153. package/dist/compat/transformers.test.d.ts +0 -3
  154. package/dist/compat/transformers.test.js +0 -87
  155. package/dist/compat-Bb4NuTUO.js +0 -4
  156. package/dist/compat-DmDDELst.cjs +0 -4
  157. package/dist/deno-4w047OFk.js +0 -121
  158. package/dist/federation/builder.test.d.ts +0 -3
  159. package/dist/federation/collection.test.d.ts +0 -3
  160. package/dist/federation/collection.test.js +0 -32
  161. package/dist/federation/handler.test.d.ts +0 -3
  162. package/dist/federation/idempotency.test.d.ts +0 -3
  163. package/dist/federation/inbox.test.d.ts +0 -3
  164. package/dist/federation/keycache.test.d.ts +0 -3
  165. package/dist/federation/kv.test.d.ts +0 -3
  166. package/dist/federation/middleware.test.d.ts +0 -3
  167. package/dist/federation/mq.test.d.ts +0 -3
  168. package/dist/federation/negotiation.test.d.ts +0 -3
  169. package/dist/federation/retry.test.d.ts +0 -3
  170. package/dist/federation/router.test.d.ts +0 -3
  171. package/dist/federation/send.test.d.ts +0 -3
  172. package/dist/federation/webfinger.test.d.ts +0 -3
  173. package/dist/federation-Bp3HI26G.cjs +0 -350
  174. package/dist/federation-DaMfqRm4.js +0 -332
  175. package/dist/middleware-B73ZyDmk.js +0 -12
  176. package/dist/middleware-Dr61i4Jo.cjs +0 -12
  177. package/dist/middleware-_1PYruC5.js +0 -26
  178. package/dist/mod-Bh8mqlYw.d.cts +0 -9
  179. package/dist/mod-D6HodEq7.d.ts +0 -7
  180. package/dist/mod-DVwHUI_x.d.cts +0 -80
  181. package/dist/mod-DosD6NsG.d.ts +0 -82
  182. package/dist/mod-gq_Xfdz8.d.cts +0 -1
  183. package/dist/nodeinfo/client.test.d.ts +0 -3
  184. package/dist/nodeinfo/handler.test.d.ts +0 -3
  185. package/dist/nodeinfo/types.test.d.ts +0 -3
  186. package/dist/nodeinfo-DoESQxq5.js +0 -4
  187. package/dist/nodeinfo-DuMYTpbZ.cjs +0 -4
  188. package/dist/otel/exporter.test.d.ts +0 -3
  189. package/dist/runtime-c2Njxsry.cjs +0 -17
  190. package/dist/runtime-poamPCMb.js +0 -13
  191. package/dist/sig/http.test.d.ts +0 -3
  192. package/dist/sig/key.test.d.ts +0 -3
  193. package/dist/sig/ld.test.d.ts +0 -3
  194. package/dist/sig/owner.test.d.ts +0 -3
  195. package/dist/sig/proof.test.d.ts +0 -3
  196. package/dist/sig-BNhspNOf.js +0 -4
  197. package/dist/sig-vX39WyWI.cjs +0 -4
  198. package/dist/testing/mod.js +0 -10
  199. package/dist/utils/docloader.test.d.ts +0 -3
  200. package/dist/utils/kv-cache.test.d.ts +0 -3
  201. package/dist/utils-BQ9KqEK9.cjs +0 -4
  202. package/dist/utils-Dn5OPdSW.js +0 -4
  203. /package/dist/{mod-AGjRfPjT.d.ts → compat/transformers.test.d.mts} +0 -0
@@ -1,13 +1,10 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- import { deno_default } from "./deno-4w047OFk.js";
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { n as version, t as name } from "./deno-CuVDEdyj.mjs";
7
5
  import { Activity, getTypeId } from "@fedify/vocab";
8
- import { getLogger } from "@logtape/logtape";
9
6
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
10
-
7
+ import { getLogger } from "@logtape/logtape";
11
8
  //#region src/federation/inbox.ts
12
9
  var InboxListenerSet = class InboxListenerSet {
13
10
  #listeners;
@@ -53,10 +50,8 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
53
50
  const inboxContext = inboxContextFactory(recipient, json, activity.id?.href, getTypeId(activity).href);
54
51
  const strategy = idempotencyStrategy ?? "per-inbox";
55
52
  let keyString;
56
- if (typeof strategy === "function") {
57
- const result = await strategy(inboxContext, activity);
58
- keyString = result;
59
- } else switch (strategy) {
53
+ if (typeof strategy === "function") keyString = await strategy(inboxContext, activity);
54
+ else switch (strategy) {
60
55
  case "global":
61
56
  keyString = activity.id.href;
62
57
  break;
@@ -71,8 +66,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
71
66
  if (keyString != null) cacheKey = [...kvPrefixes.activityIdempotence, keyString];
72
67
  }
73
68
  if (cacheKey != null) {
74
- const cached = await kv.get(cacheKey);
75
- if (cached === true) {
69
+ if (await kv.get(cacheKey) === true) {
76
70
  logger.debug("Activity {activityId} has already been processed.", {
77
71
  activityId: activity.id?.href,
78
72
  activity: json,
@@ -129,31 +123,30 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
129
123
  return "enqueued";
130
124
  }
131
125
  tracerProvider = tracerProvider ?? trace.getTracerProvider();
132
- const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
133
- return await tracer.startActiveSpan("activitypub.dispatch_inbox_listener", { kind: SpanKind.INTERNAL }, async (span$1) => {
126
+ return await tracerProvider.getTracer(name, version).startActiveSpan("activitypub.dispatch_inbox_listener", { kind: SpanKind.INTERNAL }, async (span) => {
134
127
  const dispatched = inboxListeners?.dispatchWithClass(activity);
135
128
  if (dispatched == null) {
136
129
  logger.error("Unsupported activity type:\n{activity}", {
137
130
  activity: json,
138
131
  recipient
139
132
  });
140
- span$1.setStatus({
133
+ span.setStatus({
141
134
  code: SpanStatusCode.UNSET,
142
135
  message: `Unsupported activity type: ${getTypeId(activity).href}`
143
136
  });
144
- span$1.end();
137
+ span.end();
145
138
  return "unsupportedActivity";
146
139
  }
147
140
  const { class: cls, listener } = dispatched;
148
- span$1.updateName(`activitypub.dispatch_inbox_listener ${cls.name}`);
141
+ span.updateName(`activitypub.dispatch_inbox_listener ${cls.name}`);
149
142
  try {
150
143
  await listener(inboxContextFactory(recipient, json, activity?.id?.href, getTypeId(activity).href), activity);
151
144
  } catch (error) {
152
145
  try {
153
146
  await inboxErrorHandler?.(ctx, error);
154
- } catch (error$1) {
147
+ } catch (error) {
155
148
  logger.error("An unexpected error occurred in inbox error handler:\n{error}", {
156
- error: error$1,
149
+ error,
157
150
  activityId: activity.id?.href,
158
151
  activity: json,
159
152
  recipient
@@ -165,11 +158,11 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
165
158
  activity: json,
166
159
  recipient
167
160
  });
168
- span$1.setStatus({
161
+ span.setStatus({
169
162
  code: SpanStatusCode.ERROR,
170
163
  message: String(error)
171
164
  });
172
- span$1.end();
165
+ span.end();
173
166
  return "error";
174
167
  }
175
168
  if (cacheKey != null) await kv.set(cacheKey, true, { ttl: Temporal.Duration.from({ days: 1 }) });
@@ -178,10 +171,9 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
178
171
  activity: json,
179
172
  recipient
180
173
  });
181
- span$1.end();
174
+ span.end();
182
175
  return "success";
183
176
  });
184
177
  }
185
-
186
178
  //#endregion
187
- export { InboxListenerSet, routeActivity };
179
+ export { routeActivity as n, InboxListenerSet as t };
@@ -1,14 +1,11 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- import { deno_default } from "./deno-4w047OFk.js";
1
+ import "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { n as version, t as name } from "./deno-CuVDEdyj.mjs";
7
5
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
6
+ import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
8
7
  import { getDocumentLoader } from "@fedify/vocab-runtime";
9
8
  import { getLogger } from "@logtape/logtape";
10
- import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
11
-
12
9
  //#region src/sig/key.ts
13
10
  /**
14
11
  * Checks if the given key is valid and supported. No-op if the key is valid,
@@ -23,8 +20,7 @@ function validateCryptoKey(key, type) {
23
20
  if (!key.extractable) throw new TypeError("The key is not extractable.");
24
21
  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!");
25
22
  if (key.algorithm.name === "RSASSA-PKCS1-v1_5") {
26
- const algorithm = key.algorithm;
27
- 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.");
23
+ 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.");
28
24
  }
29
25
  }
30
26
  /**
@@ -103,8 +99,7 @@ async function importJwk(jwk, type) {
103
99
  * @since 1.3.0
104
100
  */
105
101
  function fetchKey(keyId, cls, options = {}) {
106
- const tracerProvider = options.tracerProvider ?? trace.getTracerProvider();
107
- const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
102
+ const tracer = (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version);
108
103
  keyId = typeof keyId === "string" ? new URL(keyId) : keyId;
109
104
  return tracer.startActiveSpan("activitypub.fetch_key", {
110
105
  kind: SpanKind.CLIENT,
@@ -160,8 +155,7 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
160
155
  logger.debug("Fetching key {keyId} to verify signature...", { keyId });
161
156
  let document;
162
157
  try {
163
- const remoteDocument = await (documentLoader ?? getDocumentLoader())(keyId);
164
- document = remoteDocument.document;
158
+ document = (await (documentLoader ?? getDocumentLoader())(keyId)).document;
165
159
  } catch (_) {
166
160
  logger.debug("Failed to fetch key {keyId}.", { keyId });
167
161
  await keyCache?.set(cacheKey, null);
@@ -185,8 +179,8 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
185
179
  contextLoader,
186
180
  tracerProvider
187
181
  });
188
- } catch (e$1) {
189
- if (e$1 instanceof TypeError) {
182
+ } catch (e) {
183
+ if (e instanceof TypeError) {
190
184
  logger.debug("Failed to verify; key {keyId} returned an invalid object.", { keyId });
191
185
  await keyCache?.set(cacheKey, null);
192
186
  return {
@@ -194,7 +188,7 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
194
188
  cached: false
195
189
  };
196
190
  }
197
- throw e$1;
191
+ throw e;
198
192
  }
199
193
  }
200
194
  let key = null;
@@ -257,6 +251,5 @@ async function fetchKeyInternal(keyId, cls, { documentLoader, contextLoader, key
257
251
  cached: false
258
252
  };
259
253
  }
260
-
261
254
  //#endregion
262
- export { exportJwk, fetchKey, generateCryptoKeyPair, importJwk, validateCryptoKey };
255
+ export { validateCryptoKey as a, importJwk as i, fetchKey as n, generateCryptoKeyPair as r, exportJwk as t };
@@ -1,10 +1,7 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
6
4
  import { CryptographicKey, Multikey } from "@fedify/vocab";
7
-
8
5
  //#region src/federation/keycache.ts
9
6
  const NULL_KEY_CACHE_VALUE = { _fedify: "key-unavailable" };
10
7
  const NULL_KEY_CACHE_TTL = Temporal.Duration.from({ minutes: 5 });
@@ -37,7 +34,7 @@ var KvKeyCache = class {
37
34
  return await Multikey.fromJsonLd(serialized, this.options);
38
35
  } catch {
39
36
  await this.kv.delete([...this.prefix, keyId.href]);
40
- return void 0;
37
+ return;
41
38
  }
42
39
  }
43
40
  }
@@ -52,6 +49,5 @@ var KvKeyCache = class {
52
49
  await this.kv.set([...this.prefix, keyId.href], serialized);
53
50
  }
54
51
  };
55
-
56
52
  //#endregion
57
- export { KvKeyCache };
53
+ export { KvKeyCache as t };
@@ -1,11 +1,8 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
1
+ import "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
6
4
  import { CryptographicKey, Multikey } from "@fedify/vocab";
7
5
  import { importSpki } from "@fedify/vocab-runtime";
8
-
9
6
  //#region src/testing/keys.ts
10
7
  const rsaPublicKey1 = new CryptographicKey({
11
8
  id: new URL("https://example.com/key"),
@@ -85,7 +82,7 @@ const rsaPublicKey3 = new CryptographicKey({
85
82
  "hash": "SHA-256"
86
83
  }, true, ["verify"])
87
84
  });
88
- const rsaMultikey4 = new Multikey({
85
+ new Multikey({
89
86
  id: new URL("https://example.com/person2#key3"),
90
87
  controller: new URL("https://example.com/person2"),
91
88
  publicKey: rsaPublicKey3.publicKey
@@ -119,6 +116,5 @@ const ed25519Multikey = new Multikey({
119
116
  controller: new URL("https://example.com/person2"),
120
117
  publicKey: ed25519PublicKey.publicKey
121
118
  });
122
-
123
119
  //#endregion
124
- export { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey1, rsaPublicKey2, rsaPublicKey3, rsaPublicKey5 };
120
+ export { rsaPrivateKey3 as a, rsaPublicKey3 as c, rsaPrivateKey2 as i, rsaPublicKey5 as l, ed25519PrivateKey as n, rsaPublicKey1 as o, ed25519PublicKey as r, rsaPublicKey2 as s, ed25519Multikey as t };
@@ -1,10 +1,7 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
6
4
  import { isEqual } from "es-toolkit";
7
-
8
5
  //#region src/federation/kv.ts
9
6
  /**
10
7
  * A key–value store that stores values in memory.
@@ -57,8 +54,8 @@ var MemoryKvStore = class {
57
54
  let currentValue;
58
55
  if (entry == null) currentValue = void 0;
59
56
  else {
60
- const [value, expiration$1] = entry;
61
- if (expiration$1 != null && Temporal.Now.instant().until(expiration$1).sign < 0) {
57
+ const [value, expiration] = entry;
58
+ if (expiration != null && Temporal.Now.instant().until(expiration).sign < 0) {
62
59
  delete this.#values[encodedKey];
63
60
  currentValue = void 0;
64
61
  } else currentValue = value;
@@ -91,6 +88,5 @@ var MemoryKvStore = class {
91
88
  }
92
89
  }
93
90
  };
94
-
95
91
  //#endregion
96
- export { MemoryKvStore };
92
+ export { MemoryKvStore as t };
@@ -107,4 +107,4 @@ declare class MemoryKvStore implements KvStore {
107
107
  list(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
108
108
  }
109
109
  //#endregion
110
- export { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore };
110
+ export { MemoryKvStore as a, KvStoreSetOptions as i, KvStore as n, KvStoreListEntry as r, KvKey as t };
@@ -110,4 +110,4 @@ declare class MemoryKvStore implements KvStore {
110
110
  list(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
111
111
  }
112
112
  //#endregion
113
- export { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore };
113
+ export { MemoryKvStore as a, KvStoreSetOptions as i, KvStore as n, KvStoreListEntry as r, KvKey as t };
@@ -1,12 +1,9 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
-
5
- import { doubleKnock, validateCryptoKey } from "./http-C_RwU_oN.js";
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { URLPattern } from "urlpattern-polyfill";
3
+ import { c as validateCryptoKey, t as doubleKnock } from "./http-Bz7avX57.js";
6
4
  import { getLogger } from "@logtape/logtape";
7
5
  import { curry } from "es-toolkit";
8
6
  import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
9
-
10
7
  //#region src/utils/docloader.ts
11
8
  const logger$1 = getLogger([
12
9
  "fedify",
@@ -36,18 +33,15 @@ function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAge
36
33
  });
37
34
  throw error;
38
35
  }
39
- const originalRequest = createActivityPubRequest(url, { userAgent });
40
- const response = await doubleKnock(originalRequest, identity, {
36
+ return getRemoteDocument(url, await doubleKnock(createActivityPubRequest(url, { userAgent }), identity, {
41
37
  specDeterminer,
42
38
  log: curry(logRequest)(logger$1),
43
39
  tracerProvider,
44
40
  signal: options?.signal
45
- });
46
- return getRemoteDocument(url, response, load);
41
+ }), load);
47
42
  }
48
43
  return load;
49
44
  }
50
-
51
45
  //#endregion
52
46
  //#region src/utils/kv-cache.ts
53
47
  const logger = getLogger([
@@ -115,6 +109,5 @@ function matchRule(url, rules) {
115
109
  }
116
110
  return null;
117
111
  }
118
-
119
112
  //#endregion
120
- export { getAuthenticatedDocumentLoader, kvCache };
113
+ export { getAuthenticatedDocumentLoader as n, kvCache as t };
@@ -1,15 +1,12 @@
1
-
2
- const { Temporal } = require("@js-temporal/polyfill");
3
- const { URLPattern } = require("urlpattern-polyfill");
4
-
5
- const require_chunk = require('./chunk-CGaQZ11T.cjs');
6
- const require_http = require('./http-DGs_78tx.cjs');
7
- const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
8
- const es_toolkit = require_chunk.__toESM(require("es-toolkit"));
9
- const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
10
-
1
+ const { Temporal } = require("@js-temporal/polyfill");
2
+ const { URLPattern } = require("urlpattern-polyfill");
3
+ require("./chunk-DDcVe30Y.cjs");
4
+ const require_http = require("./http-DKBDoudA.cjs");
5
+ let _logtape_logtape = require("@logtape/logtape");
6
+ let es_toolkit = require("es-toolkit");
7
+ let _fedify_vocab_runtime = require("@fedify/vocab-runtime");
11
8
  //#region src/utils/docloader.ts
12
- const logger$1 = (0, __logtape_logtape.getLogger)([
9
+ const logger$1 = (0, _logtape_logtape.getLogger)([
13
10
  "fedify",
14
11
  "utils",
15
12
  "docloader"
@@ -29,29 +26,26 @@ function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAge
29
26
  require_http.validateCryptoKey(identity.privateKey);
30
27
  async function load(url, options) {
31
28
  if (!allowPrivateAddress) try {
32
- await (0, __fedify_vocab_runtime.validatePublicUrl)(url);
29
+ await (0, _fedify_vocab_runtime.validatePublicUrl)(url);
33
30
  } catch (error) {
34
- if (error instanceof __fedify_vocab_runtime.UrlError) logger$1.error("Disallowed private URL: {url}", {
31
+ if (error instanceof _fedify_vocab_runtime.UrlError) logger$1.error("Disallowed private URL: {url}", {
35
32
  url,
36
33
  error
37
34
  });
38
35
  throw error;
39
36
  }
40
- const originalRequest = (0, __fedify_vocab_runtime.createActivityPubRequest)(url, { userAgent });
41
- const response = await require_http.doubleKnock(originalRequest, identity, {
37
+ return (0, _fedify_vocab_runtime.getRemoteDocument)(url, await require_http.doubleKnock((0, _fedify_vocab_runtime.createActivityPubRequest)(url, { userAgent }), identity, {
42
38
  specDeterminer,
43
- log: (0, es_toolkit.curry)(__fedify_vocab_runtime.logRequest)(logger$1),
39
+ log: (0, es_toolkit.curry)(_fedify_vocab_runtime.logRequest)(logger$1),
44
40
  tracerProvider,
45
41
  signal: options?.signal
46
- });
47
- return (0, __fedify_vocab_runtime.getRemoteDocument)(url, response, load);
42
+ }), load);
48
43
  }
49
44
  return load;
50
45
  }
51
-
52
46
  //#endregion
53
47
  //#region src/utils/kv-cache.ts
54
- const logger = (0, __logtape_logtape.getLogger)([
48
+ const logger = (0, _logtape_logtape.getLogger)([
55
49
  "fedify",
56
50
  "utils",
57
51
  "kv-cache"
@@ -66,11 +60,11 @@ function kvCache({ loader, kv, prefix, rules }) {
66
60
  rules ??= [[new URLPattern({}), Temporal.Duration.from({ minutes: 5 })]];
67
61
  for (const [p, duration] of rules) if (Temporal.Duration.compare(duration, { days: 30 }) > 0) throw new TypeError("The maximum cache duration is 30 days: " + (p instanceof URLPattern ? `${p.protocol}://${p.username}:${p.password}@${p.hostname}:${p.port}/${p.pathname}?${p.search}#${p.hash}` : p.toString()));
68
62
  return async (url, options) => {
69
- if (url in __fedify_vocab_runtime.preloadedContexts) {
63
+ if (url in _fedify_vocab_runtime.preloadedContexts) {
70
64
  logger.debug("Using preloaded context: {url}.", { url });
71
65
  return {
72
66
  contextUrl: null,
73
- document: __fedify_vocab_runtime.preloadedContexts[url],
67
+ document: _fedify_vocab_runtime.preloadedContexts[url],
74
68
  documentUrl: url
75
69
  };
76
70
  }
@@ -116,17 +110,16 @@ function matchRule(url, rules) {
116
110
  }
117
111
  return null;
118
112
  }
119
-
120
113
  //#endregion
121
- Object.defineProperty(exports, 'getAuthenticatedDocumentLoader', {
122
- enumerable: true,
123
- get: function () {
124
- return getAuthenticatedDocumentLoader;
125
- }
114
+ Object.defineProperty(exports, "getAuthenticatedDocumentLoader", {
115
+ enumerable: true,
116
+ get: function() {
117
+ return getAuthenticatedDocumentLoader;
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "kvCache", {
121
+ enumerable: true,
122
+ get: function() {
123
+ return kvCache;
124
+ }
126
125
  });
127
- Object.defineProperty(exports, 'kvCache', {
128
- enumerable: true,
129
- get: function () {
130
- return kvCache;
131
- }
132
- });
@@ -1,11 +1,8 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { URLPattern } from "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
6
4
  import { preloadedContexts } from "@fedify/vocab-runtime";
7
5
  import { getLogger } from "@logtape/logtape";
8
-
9
6
  //#region src/utils/kv-cache.ts
10
7
  const logger = getLogger([
11
8
  "fedify",
@@ -102,6 +99,5 @@ function matchRule(url, rules) {
102
99
  }
103
100
  return null;
104
101
  }
105
-
106
102
  //#endregion
107
- export { MockKvStore, kvCache };
103
+ export { kvCache as n, MockKvStore as t };
@@ -1,18 +1,15 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- import { deno_default } from "./deno-4w047OFk.js";
7
- import { fetchKey, validateCryptoKey } from "./key-D7Y_J9kt.js";
1
+ import "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { n as version, t as name } from "./deno-CuVDEdyj.mjs";
5
+ import { a as validateCryptoKey, n as fetchKey } from "./key-DzJf84o7.mjs";
8
6
  import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
7
+ import { SpanStatusCode, trace } from "@opentelemetry/api";
9
8
  import { getDocumentLoader } from "@fedify/vocab-runtime";
10
9
  import { getLogger } from "@logtape/logtape";
11
- import { SpanStatusCode, trace } from "@opentelemetry/api";
12
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
13
11
  import { encodeHex } from "byte-encodings/hex";
14
12
  import jsonld from "@fedify/vocab-runtime/jsonld";
15
-
16
13
  //#region src/sig/ld.ts
17
14
  const logger = getLogger([
18
15
  "fedify",
@@ -54,11 +51,8 @@ async function createSignature(jsonLd, privateKey, keyId, { contextLoader, creat
54
51
  creator: keyId.href,
55
52
  created: created?.toString() ?? (/* @__PURE__ */ new Date()).toISOString()
56
53
  };
57
- const optionsHash = await hashJsonLd(options, contextLoader);
58
- const docHash = await hashJsonLd(jsonLd, contextLoader);
59
- const message = optionsHash + docHash;
60
- const encoder = new TextEncoder();
61
- const messageBytes = encoder.encode(message);
54
+ const message = await hashJsonLd(options, contextLoader) + await hashJsonLd(jsonLd, contextLoader);
55
+ const messageBytes = new TextEncoder().encode(message);
62
56
  const signature = await crypto.subtle.sign("RSASSA-PKCS1-v1_5", privateKey, messageBytes);
63
57
  return {
64
58
  ...options,
@@ -80,9 +74,7 @@ async function createSignature(jsonLd, privateKey, keyId, { contextLoader, creat
80
74
  * @since 1.0.0
81
75
  */
82
76
  async function signJsonLd(jsonLd, privateKey, keyId, options) {
83
- const tracerProvider = options.tracerProvider ?? trace.getTracerProvider();
84
- const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
85
- return await tracer.startActiveSpan("ld_signatures.sign", { attributes: { "ld_signatures.key_id": keyId.href } }, async (span) => {
77
+ return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("ld_signatures.sign", { attributes: { "ld_signatures.key_id": keyId.href } }, async (span) => {
86
78
  try {
87
79
  const signature = await createSignature(jsonLd, privateKey, keyId, options);
88
80
  if (span.isRecording()) {
@@ -184,23 +176,21 @@ async function verifySignature(jsonLd, options = {}) {
184
176
  const encoder = new TextEncoder();
185
177
  const message = sigOptsHash + docHash;
186
178
  const messageBytes = encoder.encode(message);
187
- const verified = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes);
188
- if (verified) return key;
179
+ if (await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes)) return key;
189
180
  if (cached) {
190
181
  logger.debug("Failed to verify with the cached key {keyId}; signature {signatureValue} is invalid. Retrying with the freshly fetched key...", {
191
182
  keyId: sig.creator,
192
183
  ...sig
193
184
  });
194
- const { key: key$1 } = await fetchKey(new URL(sig.creator), CryptographicKey, {
185
+ const { key } = await fetchKey(new URL(sig.creator), CryptographicKey, {
195
186
  ...options,
196
187
  keyCache: {
197
188
  get: () => Promise.resolve(void 0),
198
- set: async (keyId, key$2) => await options.keyCache?.set(keyId, key$2)
189
+ set: async (keyId, key) => await options.keyCache?.set(keyId, key)
199
190
  }
200
191
  });
201
- if (key$1 == null) return null;
202
- const verified$1 = await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key$1.publicKey, signature.slice(), messageBytes);
203
- return verified$1 ? key$1 : null;
192
+ if (key == null) return null;
193
+ return await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes) ? key : null;
204
194
  }
205
195
  logger.debug("Failed to verify with the fetched key {keyId}; signature {signatureValue} is invalid. Check if the key is correct or if the signed message is correct. The message to sign is:\n{message}", {
206
196
  keyId: sig.creator,
@@ -219,9 +209,7 @@ async function verifySignature(jsonLd, options = {}) {
219
209
  * @returns `true` if the document is authentic; `false` otherwise.
220
210
  */
221
211
  async function verifyJsonLd(jsonLd, options = {}) {
222
- const tracerProvider = options.tracerProvider ?? trace.getTracerProvider();
223
- const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
224
- return await tracer.startActiveSpan("ld_signatures.verify", async (span) => {
212
+ return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("ld_signatures.verify", async (span) => {
225
213
  try {
226
214
  const object = await Object$1.fromJsonLd(jsonLd, options);
227
215
  if (object.id != null) span.setAttribute("activitypub.object.id", object.id.href);
@@ -262,9 +250,7 @@ async function hashJsonLd(jsonLd, contextLoader) {
262
250
  documentLoader: contextLoader ?? getDocumentLoader()
263
251
  });
264
252
  const encoder = new TextEncoder();
265
- const hash = await crypto.subtle.digest("SHA-256", encoder.encode(canon));
266
- return encodeHex(hash);
253
+ return encodeHex(await crypto.subtle.digest("SHA-256", encoder.encode(canon)));
267
254
  }
268
-
269
255
  //#endregion
270
- export { attachSignature, createSignature, detachSignature, hasSignature, signJsonLd, verifyJsonLd, verifySignature };
256
+ export { signJsonLd as a, hasSignature as i, createSignature as n, verifyJsonLd as o, detachSignature as r, verifySignature as s, attachSignature as t };
@@ -0,0 +1,5 @@
1
+ import "@js-temporal/polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { n as FederationImpl } from "./middleware-DoHz9oIo.mjs";
5
+ export { FederationImpl };