@fedify/fedify 2.4.0-dev.1881 → 2.4.0-dev.1890

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 (59) hide show
  1. package/dist/{builder-5fuOq20e.mjs → builder-BnmSdOnI.mjs} +2 -2
  2. package/dist/{codec-peqOdBaE.mjs → codec-C6rTrpIp.mjs} +26 -3
  3. package/dist/compat/transformers.test.mjs +1 -1
  4. package/dist/{context-Dt36KFEJ.mjs → context-CbS35fLr.mjs} +2 -60
  5. package/dist/{deno--os6x8xr.mjs → deno-DRdfpFZq.mjs} +1 -1
  6. package/dist/dist-BQvArojP.mjs +188 -0
  7. package/dist/{docloader-CvFxfQuF.mjs → docloader-CzVxPVAF.mjs} +2 -2
  8. package/dist/federation/builder.test.mjs +1 -1
  9. package/dist/federation/handler.test.mjs +4 -4
  10. package/dist/federation/idempotency.test.mjs +2 -2
  11. package/dist/federation/metrics.test.mjs +1 -1
  12. package/dist/federation/middleware.test.mjs +9 -9
  13. package/dist/federation/mod.cjs +1 -1
  14. package/dist/federation/mod.js +1 -1
  15. package/dist/federation/send.test.mjs +3 -3
  16. package/dist/federation/tasks/codec.test.mjs +1 -1
  17. package/dist/federation/tasks/enqueue.test.mjs +2 -2
  18. package/dist/federation/tasks/tasks.test.mjs +4 -4
  19. package/dist/federation/temporal.test.mjs +1 -1
  20. package/dist/federation/webfinger.test.mjs +2 -2
  21. package/dist/{federation-BJOTDQut.cjs → federation-_7qLFT2i.cjs} +99 -76
  22. package/dist/{http-BpAW8jTQ.cjs → http-BWzXKlhd.cjs} +1 -1
  23. package/dist/{http-Dz0Z-6xu.js → http-C32iqKS-.js} +1 -1
  24. package/dist/{http-DnrWDuU5.mjs → http-CLi1208s.mjs} +3 -3
  25. package/dist/{key-Bgtfl2M_.mjs → key-DauglCmL.mjs} +2 -2
  26. package/dist/{kv-cache-DGAWgk8Y.mjs → kv-cache-B7bYpdkg.mjs} +1 -1
  27. package/dist/{kv-cache-B_SLuy19.cjs → kv-cache-BKwJLP1E.cjs} +1 -1
  28. package/dist/{kv-cache-BkAI6gNw.js → kv-cache-Djz6tpep.js} +1 -1
  29. package/dist/{ld-DeYOcSft.mjs → ld-C1LVivv5.mjs} +3 -3
  30. package/dist/{metrics-CBYbeDaO.mjs → metrics-CIRevdM1.mjs} +1 -1
  31. package/dist/{middleware-DCtJ8EwC.mjs → middleware-CZkLnuR-.mjs} +1 -1
  32. package/dist/{middleware-ChsBNezF.mjs → middleware-LSJ8lKdH.mjs} +13 -13
  33. package/dist/{middleware-DnFpjPz7.js → middleware-bhJRkmux.js} +28 -5
  34. package/dist/mod.cjs +4 -4
  35. package/dist/mod.js +4 -4
  36. package/dist/nodeinfo/handler.test.mjs +2 -2
  37. package/dist/{owner-DXN--VPl.mjs → owner-Cq2XnhH0.mjs} +2 -2
  38. package/dist/{proof-4SSJ2EAZ.js → proof-CFvowk0J.js} +1 -1
  39. package/dist/{proof-0gTlNlB2.mjs → proof-DE77t-0I.mjs} +4 -4
  40. package/dist/{proof-CvJ1aar0.cjs → proof-d0M6n154.cjs} +1 -1
  41. package/dist/{send-DBfVSKXE.mjs → send-WgXSEnsL.mjs} +3 -3
  42. package/dist/sig/http.test.mjs +2 -2
  43. package/dist/sig/key.test.mjs +1 -1
  44. package/dist/sig/ld.test.mjs +2 -2
  45. package/dist/sig/mod.cjs +2 -2
  46. package/dist/sig/mod.js +2 -2
  47. package/dist/sig/owner.test.mjs +1 -1
  48. package/dist/sig/proof.test.mjs +1 -1
  49. package/dist/{temporal-BK-FNcey.mjs → temporal-DKWMN_-H.mjs} +1 -1
  50. package/dist/testing/context.test.d.mts +2 -0
  51. package/dist/testing/context.test.mjs +19 -0
  52. package/dist/testing/mod.d.mts +27 -1
  53. package/dist/testing/mod.mjs +3 -2
  54. package/dist/{testing-BX0Nicyq.mjs → testing-D13ymFKy.mjs} +2 -1
  55. package/dist/utils/docloader.test.mjs +2 -2
  56. package/dist/utils/kv-cache.test.mjs +1 -1
  57. package/dist/utils/mod.cjs +1 -1
  58. package/dist/utils/mod.js +1 -1
  59. package/package.json +7 -7
@@ -1,10 +1,10 @@
1
1
  const { URLPattern } = require("urlpattern-polyfill");
2
2
  const require_rolldown_runtime = require("./rolldown-runtime-Dmm3t92W.cjs");
3
3
  const require_transformers = require("./transformers-BalCrSsr.cjs");
4
- const require_http = require("./http-BpAW8jTQ.cjs");
5
- const require_proof = require("./proof-CvJ1aar0.cjs");
4
+ const require_http = require("./http-BWzXKlhd.cjs");
5
+ const require_proof = require("./proof-d0M6n154.cjs");
6
6
  const require_types = require("./types-RXm5YxpC.cjs");
7
- const require_kv_cache = require("./kv-cache-B_SLuy19.cjs");
7
+ const require_kv_cache = require("./kv-cache-BKwJLP1E.cjs");
8
8
  let _logtape_logtape = require("@logtape/logtape");
9
9
  let _fedify_uri_template = require("@fedify/uri-template");
10
10
  let _fedify_vocab = require("@fedify/vocab");
@@ -724,13 +724,13 @@ function createFederationBuilder() {
724
724
  }
725
725
  //#endregion
726
726
  //#region src/federation/circuit-breaker.ts
727
- const Temporal$9 = require_http.Temporal;
727
+ const Temporal$10 = require_http.Temporal;
728
728
  const LEGACY_SWEEP_MARKER = ["__fedify_meta", "circuit_breaker_state_ttl_sweep_v2"];
729
729
  const LEGACY_SWEEP_DELETING_MARKER = { __fedifyDeletingCircuitBreakerLegacyState: true };
730
730
  const CIRCUIT_BREAKER_STATE_VERSION = 1;
731
- const LEGACY_SWEEP_LOCK_TTL = Temporal$9.Duration.from({ minutes: 5 });
732
- const LEGACY_SWEEP_RENEW_INTERVAL = Temporal$9.Duration.from({ minutes: 1 });
733
- const LEGACY_SWEEP_RETRY_WINDOW = Temporal$9.Duration.from({ hours: 168 });
731
+ const LEGACY_SWEEP_LOCK_TTL = Temporal$10.Duration.from({ minutes: 5 });
732
+ const LEGACY_SWEEP_RENEW_INTERVAL = Temporal$10.Duration.from({ minutes: 1 });
733
+ const LEGACY_SWEEP_RETRY_WINDOW = Temporal$10.Duration.from({ hours: 168 });
734
734
  const LEGACY_SWEEP_WAIT_INTERVAL = 10;
735
735
  const LEGACY_SWEEP_CAS_ATTEMPTS = 3;
736
736
  /**
@@ -749,7 +749,7 @@ var CircuitBreaker = class {
749
749
  this.#kv = options.kv;
750
750
  this.#prefix = options.prefix;
751
751
  this.#options = normalizeCircuitBreakerOptions(options.options ?? {});
752
- this.#now = options.now ?? (() => Temporal$9.Now.instant());
752
+ this.#now = options.now ?? (() => Temporal$10.Now.instant());
753
753
  this.#stateChangeObserver = options.stateChangeObserver;
754
754
  }
755
755
  get options() {
@@ -763,7 +763,7 @@ var CircuitBreaker = class {
763
763
  this.#sweepLegacyStates();
764
764
  const heldSince = parseHeldSince(message.circuitHeldSince);
765
765
  const now = this.#now();
766
- if (heldSince != null && Temporal$9.Instant.compare(heldSince.add(this.#options.heldActivityTtl), now) <= 0) return {
766
+ if (heldSince != null && Temporal$10.Instant.compare(heldSince.add(this.#options.heldActivityTtl), now) <= 0) return {
767
767
  type: "drop",
768
768
  heldSince
769
769
  };
@@ -775,12 +775,12 @@ var CircuitBreaker = class {
775
775
  probe: false
776
776
  };
777
777
  if (oldState.state === "half-open") {
778
- const halfOpened = oldState.halfOpened == null ? void 0 : Temporal$9.Instant.from(oldState.halfOpened);
778
+ const halfOpened = oldState.halfOpened == null ? void 0 : Temporal$10.Instant.from(oldState.halfOpened);
779
779
  if (halfOpened != null) {
780
780
  const staleAt = halfOpened.add(this.#options.recoveryDelay);
781
- if (Temporal$9.Instant.compare(now, staleAt) < 0) {
781
+ if (Temporal$10.Instant.compare(now, staleAt) < 0) {
782
782
  const releaseAt = now.add(this.#options.releaseInterval);
783
- const retryAt = Temporal$9.Instant.compare(releaseAt, staleAt) < 0 ? releaseAt : staleAt;
783
+ const retryAt = Temporal$10.Instant.compare(releaseAt, staleAt) < 0 ? releaseAt : staleAt;
784
784
  const cappedRetryAt = this.#capHeldRetryAt(now, heldSince, retryAt);
785
785
  return {
786
786
  type: "hold",
@@ -802,8 +802,8 @@ var CircuitBreaker = class {
802
802
  lastConflictingState = "half-open";
803
803
  continue;
804
804
  }
805
- const probeAt = (oldState.opened == null ? now : Temporal$9.Instant.from(oldState.opened)).add(this.#options.recoveryDelay);
806
- if (Temporal$9.Instant.compare(now, probeAt) < 0) {
805
+ const probeAt = (oldState.opened == null ? now : Temporal$10.Instant.from(oldState.opened)).add(this.#options.recoveryDelay);
806
+ if (Temporal$10.Instant.compare(now, probeAt) < 0) {
807
807
  const retryAt = this.#capHeldRetryAt(now, heldSince, probeAt);
808
808
  return {
809
809
  type: "hold",
@@ -868,7 +868,7 @@ var CircuitBreaker = class {
868
868
  for (let attempt = 0; attempt < 10; attempt++) {
869
869
  const oldState = await this.#get(remoteHost);
870
870
  if (oldState?.state === "open") return void 0;
871
- const oldFailures = oldState?.failures.map(Temporal$9.Instant.from) ?? [];
871
+ const oldFailures = oldState?.failures.map(Temporal$10.Instant.from) ?? [];
872
872
  const failures = this.#options.pruneFailures([...oldFailures, now], now);
873
873
  let newState;
874
874
  let transition;
@@ -952,7 +952,7 @@ var CircuitBreaker = class {
952
952
  for await (const { key, value } of this.#kv.list(this.#prefix)) {
953
953
  if (key.length !== this.#prefix.length + 1) continue;
954
954
  await this.#migrateLegacyState(key, value);
955
- if (Temporal$9.Instant.compare(this.#now(), leaseRenewedAt.add(LEGACY_SWEEP_RENEW_INTERVAL)) >= 0) {
955
+ if (Temporal$10.Instant.compare(this.#now(), leaseRenewedAt.add(LEGACY_SWEEP_RENEW_INTERVAL)) >= 0) {
956
956
  const renewed = await this.#renewLegacySweep(markerKey, marker);
957
957
  if (renewed == null) return;
958
958
  marker = renewed;
@@ -976,7 +976,7 @@ var CircuitBreaker = class {
976
976
  }
977
977
  #finishLegacySweepMarker(marker) {
978
978
  const retryUntil = getLegacySweepRetryUntil(marker);
979
- if (retryUntil != null && Temporal$9.Instant.compare(this.#now(), Temporal$9.Instant.from(retryUntil)) < 0) return {
979
+ if (retryUntil != null && Temporal$10.Instant.compare(this.#now(), Temporal$10.Instant.from(retryUntil)) < 0) return {
980
980
  state: "done",
981
981
  retryUntil
982
982
  };
@@ -1019,7 +1019,7 @@ var CircuitBreaker = class {
1019
1019
  #isLegacySweepDone() {
1020
1020
  if (this.#legacySweepDone === "final") return true;
1021
1021
  if (this.#legacySweepDone == null) return false;
1022
- if (Temporal$9.Instant.compare(this.#now(), this.#legacySweepDone) < 0) return true;
1022
+ if (Temporal$10.Instant.compare(this.#now(), this.#legacySweepDone) < 0) return true;
1023
1023
  this.#legacySweepDone = void 0;
1024
1024
  return false;
1025
1025
  }
@@ -1029,7 +1029,7 @@ var CircuitBreaker = class {
1029
1029
  }
1030
1030
  #capHeldRetryAt(now, heldSince, retryAt) {
1031
1031
  const expiresAt = (heldSince ?? now).add(this.#options.heldActivityTtl);
1032
- return Temporal$9.Instant.compare(expiresAt, retryAt) < 0 ? expiresAt : retryAt;
1032
+ return Temporal$10.Instant.compare(expiresAt, retryAt) < 0 ? expiresAt : retryAt;
1033
1033
  }
1034
1034
  async #get(remoteHost) {
1035
1035
  return parseStoredCircuitBreakerKvState(await this.#kv.get(this.#key(remoteHost)));
@@ -1099,7 +1099,7 @@ function normalizeCircuitBreakerOptions(options) {
1099
1099
  assertPositiveDuration(releaseInterval, "releaseInterval");
1100
1100
  if (configuredStateTtl != null) {
1101
1101
  assertPositiveDuration(configuredStateTtl, "stateTtl");
1102
- if (Temporal$9.Duration.compare(configuredStateTtl, recoveryDelay) < 0) throw new RangeError("stateTtl must be at least recoveryDelay.");
1102
+ if (Temporal$10.Duration.compare(configuredStateTtl, recoveryDelay) < 0) throw new RangeError("stateTtl must be at least recoveryDelay.");
1103
1103
  }
1104
1104
  let failure;
1105
1105
  let pruneFailures;
@@ -1111,13 +1111,13 @@ function normalizeCircuitBreakerOptions(options) {
1111
1111
  assertPositiveDuration(failureWindow, "failureWindow");
1112
1112
  pruneFailures = (timestamps, now) => {
1113
1113
  const earliest = now.subtract(failureWindow);
1114
- return timestamps.filter((timestamp) => Temporal$9.Instant.compare(timestamp, earliest) >= 0).slice(-failureThreshold);
1114
+ return timestamps.filter((timestamp) => Temporal$10.Instant.compare(timestamp, earliest) >= 0).slice(-failureThreshold);
1115
1115
  };
1116
1116
  failure = (timestamps) => {
1117
1117
  if (timestamps.length < failureThreshold) return false;
1118
1118
  const first = timestamps[timestamps.length - failureThreshold];
1119
1119
  const last = timestamps[timestamps.length - 1];
1120
- return Temporal$9.Duration.compare(first.until(last), failureWindow) <= 0;
1120
+ return Temporal$10.Duration.compare(first.until(last), failureWindow) <= 0;
1121
1121
  };
1122
1122
  stateTtl = configuredStateTtl ?? maxDuration(recoveryDelay.add(failureWindow), recoveryDelay.add(heldActivityTtl));
1123
1123
  } else {
@@ -1137,7 +1137,7 @@ function normalizeCircuitBreakerOptions(options) {
1137
1137
  };
1138
1138
  }
1139
1139
  function maxDuration(duration, ...durations) {
1140
- return durations.reduce((max, candidate) => Temporal$9.Duration.compare(candidate, max) > 0 ? candidate : max, duration);
1140
+ return durations.reduce((max, candidate) => Temporal$10.Duration.compare(candidate, max) > 0 ? candidate : max, duration);
1141
1141
  }
1142
1142
  function isLegacySweepDone(value, now) {
1143
1143
  return getLegacySweepDoneUntil(value, now) != null;
@@ -1146,8 +1146,8 @@ function getLegacySweepDoneUntil(value, now) {
1146
1146
  if (typeof value !== "object" || value == null || !("state" in value)) return;
1147
1147
  if (value.state === "final") return "final";
1148
1148
  if (value.state === "done" && "retryUntil" in value && typeof value.retryUntil === "string") try {
1149
- const retryUntil = Temporal$9.Instant.from(value.retryUntil);
1150
- return Temporal$9.Instant.compare(now, retryUntil) < 0 ? retryUntil : void 0;
1149
+ const retryUntil = Temporal$10.Instant.from(value.retryUntil);
1150
+ return Temporal$10.Instant.compare(now, retryUntil) < 0 ? retryUntil : void 0;
1151
1151
  } catch {
1152
1152
  return;
1153
1153
  }
@@ -1155,7 +1155,7 @@ function getLegacySweepDoneUntil(value, now) {
1155
1155
  function isLegacySweepRetryDue(value, now) {
1156
1156
  if (typeof value !== "object" || value == null || !("state" in value) || value.state !== "done" || !("retryUntil" in value) || typeof value.retryUntil !== "string") return false;
1157
1157
  try {
1158
- return Temporal$9.Instant.compare(now, Temporal$9.Instant.from(value.retryUntil)) >= 0;
1158
+ return Temporal$10.Instant.compare(now, Temporal$10.Instant.from(value.retryUntil)) >= 0;
1159
1159
  } catch {
1160
1160
  return false;
1161
1161
  }
@@ -1166,7 +1166,7 @@ function isLegacySweepActive(value, now) {
1166
1166
  function isLegacySweepInProgress(value, now) {
1167
1167
  if (typeof value !== "object" || value == null || !("state" in value) || value.state !== "sweeping" || !("started" in value) || typeof value.started !== "string") return false;
1168
1168
  try {
1169
- return Temporal$9.Instant.compare(now, Temporal$9.Instant.from(value.started).add(LEGACY_SWEEP_LOCK_TTL)) < 0;
1169
+ return Temporal$10.Instant.compare(now, Temporal$10.Instant.from(value.started).add(LEGACY_SWEEP_LOCK_TTL)) < 0;
1170
1170
  } catch {
1171
1171
  return false;
1172
1172
  }
@@ -1174,7 +1174,7 @@ function isLegacySweepInProgress(value, now) {
1174
1174
  function getLegacySweepRetryUntil(value) {
1175
1175
  if (typeof value !== "object" || value == null || !("retryUntil" in value) || typeof value.retryUntil !== "string") return;
1176
1176
  try {
1177
- Temporal$9.Instant.from(value.retryUntil);
1177
+ Temporal$10.Instant.from(value.retryUntil);
1178
1178
  return value.retryUntil;
1179
1179
  } catch {
1180
1180
  return;
@@ -1198,19 +1198,19 @@ function delay(milliseconds) {
1198
1198
  return new Promise((resolve) => setTimeout(resolve, milliseconds));
1199
1199
  }
1200
1200
  function toInstantDuration(duration) {
1201
- const parsed = Temporal$9.Duration.from(duration);
1202
- return Temporal$9.Duration.from({ milliseconds: Math.trunc(parsed.total({
1201
+ const parsed = Temporal$10.Duration.from(duration);
1202
+ return Temporal$10.Duration.from({ milliseconds: Math.trunc(parsed.total({
1203
1203
  unit: "millisecond",
1204
- relativeTo: Temporal$9.PlainDateTime.from("2026-01-01T00:00:00")
1204
+ relativeTo: Temporal$10.PlainDateTime.from("2026-01-01T00:00:00")
1205
1205
  })) });
1206
1206
  }
1207
1207
  function assertPositiveDuration(duration, name) {
1208
- if (Temporal$9.Duration.compare(duration, { seconds: 0 }) <= 0) throw new RangeError(`${name} must be a positive duration.`);
1208
+ if (Temporal$10.Duration.compare(duration, { seconds: 0 }) <= 0) throw new RangeError(`${name} must be a positive duration.`);
1209
1209
  }
1210
1210
  function parseHeldSince(value) {
1211
1211
  if (value == null) return void 0;
1212
1212
  try {
1213
- return Temporal$9.Instant.from(value);
1213
+ return Temporal$10.Instant.from(value);
1214
1214
  } catch (error) {
1215
1215
  (0, _logtape_logtape.getLogger)([
1216
1216
  "fedify",
@@ -1237,7 +1237,7 @@ function parseStoredCircuitBreakerKvState(value) {
1237
1237
  const isInstantString = (v) => {
1238
1238
  if (typeof v !== "string") return false;
1239
1239
  try {
1240
- Temporal$9.Instant.from(v);
1240
+ Temporal$10.Instant.from(v);
1241
1241
  return true;
1242
1242
  } catch {
1243
1243
  return false;
@@ -1298,7 +1298,7 @@ async function buildCollectionSynchronizationHeader(collectionId, actorIds) {
1298
1298
  }
1299
1299
  //#endregion
1300
1300
  //#region src/federation/inbox.ts
1301
- const Temporal$8 = require_http.Temporal;
1301
+ const Temporal$9 = require_http.Temporal;
1302
1302
  async function routeActivity({ context: ctx, json, originalJson, normalizedActivity, ldSignatureVerified, activity, recipient, inboxListeners, inboxContextFactory, listenerInboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, meterProvider, tracerProvider, idempotencyStrategy }) {
1303
1303
  const logger = (0, _logtape_logtape.getLogger)([
1304
1304
  "fedify",
@@ -1445,7 +1445,7 @@ async function routeActivity({ context: ctx, json, originalJson, normalizedActiv
1445
1445
  return "error";
1446
1446
  }
1447
1447
  require_http.recordInboxActivity(meterProvider, "processed", (0, _fedify_vocab.getTypeId)(activity).href);
1448
- if (cacheKey != null) await kv.set(cacheKey, true, { ttl: Temporal$8.Duration.from({ days: 1 }) });
1448
+ if (cacheKey != null) await kv.set(cacheKey, true, { ttl: Temporal$9.Duration.from({ days: 1 }) });
1449
1449
  logger.info("Activity {activityId} has been processed.", {
1450
1450
  activityId: activity.id?.href,
1451
1451
  activity: json,
@@ -1457,7 +1457,7 @@ async function routeActivity({ context: ctx, json, originalJson, normalizedActiv
1457
1457
  }
1458
1458
  //#endregion
1459
1459
  //#region src/federation/keycache.ts
1460
- const Temporal$7 = require_http.Temporal;
1460
+ const Temporal$8 = require_http.Temporal;
1461
1461
  var KvKeyCache = class {
1462
1462
  kv;
1463
1463
  prefix;
@@ -1468,7 +1468,7 @@ var KvKeyCache = class {
1468
1468
  this.kv = kv;
1469
1469
  this.prefix = prefix;
1470
1470
  this.options = options;
1471
- this.unavailableKeyTtl = options.unavailableKeyTtl ?? Temporal$7.Duration.from({ minutes: 10 });
1471
+ this.unavailableKeyTtl = options.unavailableKeyTtl ?? Temporal$8.Duration.from({ minutes: 10 });
1472
1472
  this.nullKeys = /* @__PURE__ */ new Map();
1473
1473
  }
1474
1474
  #getFetchErrorKey(keyId) {
@@ -1481,13 +1481,13 @@ var KvKeyCache = class {
1481
1481
  async get(keyId) {
1482
1482
  const negativeExpiration = this.nullKeys.get(keyId.href);
1483
1483
  if (negativeExpiration != null) {
1484
- if (Temporal$7.Now.instant().until(negativeExpiration).sign >= 0) return null;
1484
+ if (Temporal$8.Now.instant().until(negativeExpiration).sign >= 0) return null;
1485
1485
  this.nullKeys.delete(keyId.href);
1486
1486
  }
1487
1487
  const serialized = await this.kv.get([...this.prefix, keyId.href]);
1488
1488
  if (serialized === void 0) return void 0;
1489
1489
  if (serialized === null) {
1490
- this.nullKeys.set(keyId.href, Temporal$7.Now.instant().add(this.unavailableKeyTtl));
1490
+ this.nullKeys.set(keyId.href, Temporal$8.Now.instant().add(this.unavailableKeyTtl));
1491
1491
  return null;
1492
1492
  }
1493
1493
  try {
@@ -1503,7 +1503,7 @@ var KvKeyCache = class {
1503
1503
  }
1504
1504
  async set(keyId, key) {
1505
1505
  if (key == null) {
1506
- this.nullKeys.set(keyId.href, Temporal$7.Now.instant().add(this.unavailableKeyTtl));
1506
+ this.nullKeys.set(keyId.href, Temporal$8.Now.instant().add(this.unavailableKeyTtl));
1507
1507
  await this.kv.set([...this.prefix, keyId.href], null, { ttl: this.unavailableKeyTtl });
1508
1508
  return;
1509
1509
  }
@@ -1642,7 +1642,7 @@ function acceptsJsonLd(request) {
1642
1642
  }
1643
1643
  //#endregion
1644
1644
  //#region src/federation/temporal.ts
1645
- const Temporal$6 = require_http.Temporal;
1645
+ const Temporal$7 = require_http.Temporal;
1646
1646
  function isPlainObject$1(value) {
1647
1647
  return typeof value === "object" && value != null && !Array.isArray(value);
1648
1648
  }
@@ -1652,7 +1652,7 @@ function normalizeDateTimeLiteral(value) {
1652
1652
  function isMalformedDateTimeLiteral(value) {
1653
1653
  if (typeof value !== "string") return false;
1654
1654
  try {
1655
- Temporal$6.Instant.from(normalizeDateTimeLiteral(value));
1655
+ Temporal$7.Instant.from(normalizeDateTimeLiteral(value));
1656
1656
  return false;
1657
1657
  } catch {
1658
1658
  return true;
@@ -1661,7 +1661,7 @@ function isMalformedDateTimeLiteral(value) {
1661
1661
  function isMalformedDurationLiteral(value) {
1662
1662
  if (typeof value !== "string") return false;
1663
1663
  try {
1664
- Temporal$6.Duration.from(value);
1664
+ Temporal$7.Duration.from(value);
1665
1665
  return false;
1666
1666
  } catch {
1667
1667
  return true;
@@ -1732,7 +1732,7 @@ async function hasMalformedKnownTemporalLiteral(value, contextLoader) {
1732
1732
  }
1733
1733
  //#endregion
1734
1734
  //#region src/federation/handler.ts
1735
- const Temporal$5 = require_http.Temporal;
1735
+ const Temporal$6 = require_http.Temporal;
1736
1736
  const rawInboxContextFactorySymbol = Symbol("fedify.rawInboxContextFactory");
1737
1737
  function isRemoteContextLoadingFailure$1(error) {
1738
1738
  return error instanceof Error && typeof error.details === "object" && error.details != null && error.details.code === "loading remote context failed";
@@ -3487,7 +3487,7 @@ async function buildAcceptSignatureHeader(policy, kv, noncePrefix) {
3487
3487
  }
3488
3488
  async function setKey(kv, key, policy) {
3489
3489
  const seconds = policy.nonceTtlSeconds ?? 300;
3490
- const ttl = Temporal$5.Duration.from({ seconds });
3490
+ const ttl = Temporal$6.Duration.from({ seconds });
3491
3491
  await kv.set(key, true, { ttl });
3492
3492
  }
3493
3493
  const DEF_COMPONENTS = [
@@ -3503,7 +3503,7 @@ const MIN_COMPONENTS = [
3503
3503
  ];
3504
3504
  //#endregion
3505
3505
  //#region src/federation/kv.ts
3506
- const Temporal$4 = require_http.Temporal;
3506
+ const Temporal$5 = require_http.Temporal;
3507
3507
  /**
3508
3508
  * A key–value store that stores values in memory.
3509
3509
  * Do not use this in production as it does not persist values.
@@ -3523,7 +3523,7 @@ var MemoryKvStore = class {
3523
3523
  const entry = this.#values[encodedKey];
3524
3524
  if (entry == null) return Promise.resolve(void 0);
3525
3525
  const [value, expiration] = entry;
3526
- if (expiration != null && Temporal$4.Now.instant().until(expiration).sign < 0) {
3526
+ if (expiration != null && Temporal$5.Now.instant().until(expiration).sign < 0) {
3527
3527
  delete this.#values[encodedKey];
3528
3528
  return Promise.resolve(void 0);
3529
3529
  }
@@ -3534,7 +3534,7 @@ var MemoryKvStore = class {
3534
3534
  */
3535
3535
  set(key, value, options) {
3536
3536
  const encodedKey = this.#encodeKey(key);
3537
- const expiration = options?.ttl == null ? null : Temporal$4.Now.instant().add(options.ttl.round({ largestUnit: "hour" }));
3537
+ const expiration = options?.ttl == null ? null : Temporal$5.Now.instant().add(options.ttl.round({ largestUnit: "hour" }));
3538
3538
  this.#values[encodedKey] = [value, expiration];
3539
3539
  return Promise.resolve();
3540
3540
  }
@@ -3556,13 +3556,13 @@ var MemoryKvStore = class {
3556
3556
  if (entry == null) currentValue = void 0;
3557
3557
  else {
3558
3558
  const [value, expiration] = entry;
3559
- if (expiration != null && Temporal$4.Now.instant().until(expiration).sign < 0) {
3559
+ if (expiration != null && Temporal$5.Now.instant().until(expiration).sign < 0) {
3560
3560
  delete this.#values[encodedKey];
3561
3561
  currentValue = void 0;
3562
3562
  } else currentValue = value;
3563
3563
  }
3564
3564
  if (!(0, es_toolkit.isEqual)(currentValue, expectedValue)) return Promise.resolve(false);
3565
- const expiration = options?.ttl == null ? null : Temporal$4.Now.instant().add(options.ttl.round({ largestUnit: "hour" }));
3565
+ const expiration = options?.ttl == null ? null : Temporal$5.Now.instant().add(options.ttl.round({ largestUnit: "hour" }));
3566
3566
  this.#values[encodedKey] = [newValue, expiration];
3567
3567
  return Promise.resolve(true);
3568
3568
  }
@@ -3570,7 +3570,7 @@ var MemoryKvStore = class {
3570
3570
  * {@inheritDoc KvStore.list}
3571
3571
  */
3572
3572
  async *list(prefix) {
3573
- const now = Temporal$4.Now.instant();
3573
+ const now = Temporal$5.Now.instant();
3574
3574
  for (const [encodedKey, entry] of Object.entries(this.#values)) {
3575
3575
  const key = JSON.parse(encodedKey);
3576
3576
  if (prefix != null) {
@@ -4050,7 +4050,7 @@ function serializeDataPointType(dataPointType) {
4050
4050
  }
4051
4051
  //#endregion
4052
4052
  //#region src/federation/retry.ts
4053
- const Temporal$3 = require_http.Temporal;
4053
+ const Temporal$4 = require_http.Temporal;
4054
4054
  /**
4055
4055
  * Creates an exponential backoff retry policy. The delay between retries
4056
4056
  * starts at the `initialDelay` and is multiplied by the `factor` for each
@@ -4062,8 +4062,8 @@ const Temporal$3 = require_http.Temporal;
4062
4062
  * @since 0.12.0
4063
4063
  */
4064
4064
  function createExponentialBackoffPolicy(options = {}) {
4065
- const initialDelay = Temporal$3.Duration.from(options.initialDelay ?? { seconds: 1 });
4066
- const maxDelay = Temporal$3.Duration.from(options.maxDelay ?? { hours: 12 });
4065
+ const initialDelay = Temporal$4.Duration.from(options.initialDelay ?? { seconds: 1 });
4066
+ const maxDelay = Temporal$4.Duration.from(options.maxDelay ?? { hours: 12 });
4067
4067
  const maxAttempts = options.maxAttempts ?? 10;
4068
4068
  const factor = options.factor ?? 2;
4069
4069
  const jitter = options.jitter ?? true;
@@ -4075,8 +4075,8 @@ function createExponentialBackoffPolicy(options = {}) {
4075
4075
  milliseconds *= 1 + Math.random();
4076
4076
  milliseconds = Math.round(milliseconds);
4077
4077
  }
4078
- const delay = Temporal$3.Duration.from({ milliseconds });
4079
- return Temporal$3.Duration.compare(delay, maxDelay) > 0 ? maxDelay : delay;
4078
+ const delay = Temporal$4.Duration.from({ milliseconds });
4079
+ return Temporal$4.Duration.compare(delay, maxDelay) > 0 ? maxDelay : delay;
4080
4080
  };
4081
4081
  }
4082
4082
  //#endregion
@@ -4093,8 +4093,14 @@ var TaskCodec = class TaskCodec {
4093
4093
  this.options = options;
4094
4094
  }
4095
4095
  /** Serializes `data`, encoding any vocabulary object as its JSON-LD. */
4096
- serialize = (data) => (0, devalue.stringifyAsync)(data, { Vocab: this.#stringifyVocab });
4097
- deserialize = async (raw) => await this.#revive(/* @__PURE__ */ new Map())((0, devalue.parse)(raw, { Vocab: VocabHolder.from }));
4096
+ serialize = (data) => (0, devalue.stringifyAsync)(data, {
4097
+ Vocab: this.#stringifyVocab,
4098
+ FedifyTemporal: stringifyTemporal
4099
+ });
4100
+ deserialize = async (raw) => await this.#revive(/* @__PURE__ */ new Map())((0, devalue.parse)(raw, {
4101
+ Vocab: VocabHolder.from,
4102
+ FedifyTemporal: parseTemporal
4103
+ }));
4098
4104
  /** Validates `data` against `schema`, then serializes it. */
4099
4105
  encode = async (schema, data) => this.serialize(await TaskCodec.validate(schema, data));
4100
4106
  /** Deserializes `raw`, then validates the result against `schema`. */
@@ -4160,6 +4166,23 @@ var TaskCodec = class TaskCodec {
4160
4166
  ];
4161
4167
  };
4162
4168
  const isVocab = (value) => value instanceof _fedify_vocab.Object || value instanceof _fedify_vocab.Link;
4169
+ const temporalTypeNames = [
4170
+ "Duration",
4171
+ "Instant",
4172
+ "PlainDate",
4173
+ "PlainTime",
4174
+ "PlainDateTime",
4175
+ "PlainMonthDay",
4176
+ "PlainYearMonth",
4177
+ "ZonedDateTime"
4178
+ ];
4179
+ function stringifyTemporal(value) {
4180
+ for (const name of temporalTypeNames) if (value instanceof Temporal[name]) return [name, value.toString()];
4181
+ return false;
4182
+ }
4183
+ function parseTemporal([name, value]) {
4184
+ return Temporal[name].from(value);
4185
+ }
4163
4186
  const isPlainObject = (value) => value === null || typeof value !== "object" ? false : isObjectPrototype(globalThis.Object.getPrototypeOf(value));
4164
4187
  const isObjectPrototype = (proto) => proto === null || proto === globalThis.Object.prototype;
4165
4188
  const isInstanceOf = (cls) => (v) => v instanceof cls;
@@ -4207,7 +4230,7 @@ const classReviver = (filter, init, set) => (seen, revive, node) => {
4207
4230
  *
4208
4231
  * @module
4209
4232
  */
4210
- const Temporal$2 = require_http.Temporal;
4233
+ const Temporal$3 = require_http.Temporal;
4211
4234
  /**
4212
4235
  * Validates the task handle, plans deduplication, encodes every payload, then
4213
4236
  * dispatches the resulting messages to the queue. A single item flows through
@@ -4253,7 +4276,7 @@ const enqueueTasks = (ctx) => async function(task, items, options) {
4253
4276
  throw error;
4254
4277
  }
4255
4278
  };
4256
- const getDurationIfDefined = (item) => item == null ? void 0 : Temporal$2.Duration.from(item);
4279
+ const getDurationIfDefined = (item) => item == null ? void 0 : Temporal$3.Duration.from(item);
4257
4280
  /**
4258
4281
  * Decides how a `deduplicationKey` (if any) is honored: forwarded to a native
4259
4282
  * queue, claimed via `cas`, or—when neither is available—dropped or rejected
@@ -4359,7 +4382,7 @@ const encodeTaskMessage = (codec, origin, task, options) => async (data) => {
4359
4382
  baseUrl: origin,
4360
4383
  taskName: task.name,
4361
4384
  data: encoded,
4362
- started: Temporal$2.Now.instant().toString(),
4385
+ started: Temporal$3.Now.instant().toString(),
4363
4386
  attempt: 0,
4364
4387
  orderingKey: options.orderingKey,
4365
4388
  traceContext: carrier
@@ -4604,11 +4627,11 @@ var middleware_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
4604
4627
  OutboxContextImpl: () => OutboxContextImpl,
4605
4628
  createFederation: () => createFederation
4606
4629
  });
4607
- const Temporal$1 = require_http.Temporal;
4630
+ const Temporal$2 = require_http.Temporal;
4608
4631
  const circuitBreakerCasWarningKvStores = /* @__PURE__ */ new WeakSet();
4609
4632
  let nextQueueDepthGaugeSourceId = 0;
4610
4633
  const retryAfterHttpDate = /* @__PURE__ */ new RegExp("^(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} GMT|(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), \\d{2}-(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\\d{2} \\d{2}:\\d{2}:\\d{2} GMT|(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (?: \\d|\\d{2}) \\d{2}:\\d{2}:\\d{2} \\d{4})$");
4611
- function parseRetryAfter(headers, now = Temporal$1.Now.instant()) {
4634
+ function parseRetryAfter(headers, now = Temporal$2.Now.instant()) {
4612
4635
  const value = headers.get("Retry-After");
4613
4636
  if (value == null) return void 0;
4614
4637
  const trimmed = value.trim();
@@ -4626,14 +4649,14 @@ function parseRetryAfter(headers, now = Temporal$1.Now.instant()) {
4626
4649
  }
4627
4650
  function parseRetryAfterDuration(durationLike) {
4628
4651
  try {
4629
- return Temporal$1.Duration.from(durationLike);
4652
+ return Temporal$2.Duration.from(durationLike);
4630
4653
  } catch (error) {
4631
4654
  if (error instanceof RangeError) return void 0;
4632
4655
  throw error;
4633
4656
  }
4634
4657
  }
4635
4658
  function clampNegativeDelay(delay) {
4636
- return delay.sign < 0 ? Temporal$1.Duration.from({ seconds: 0 }) : delay;
4659
+ return delay.sign < 0 ? Temporal$2.Duration.from({ seconds: 0 }) : delay;
4637
4660
  }
4638
4661
  function getBenchmarkRelaxations(allowPrivateAddress, signatureTimeWindow) {
4639
4662
  const relaxations = [];
@@ -4649,7 +4672,7 @@ function getBenchmarkRelaxations(allowPrivateAddress, signatureTimeWindow) {
4649
4672
  secureDefaultSeconds: 3600
4650
4673
  });
4651
4674
  else try {
4652
- const seconds = Temporal$1.Duration.from(signatureTimeWindow).total({ unit: "seconds" });
4675
+ const seconds = Temporal$2.Duration.from(signatureTimeWindow).total({ unit: "seconds" });
4653
4676
  if (seconds !== 3600) relaxations.push({
4654
4677
  protection: "http_signature_time_window",
4655
4678
  effect: "changed",
@@ -4684,7 +4707,7 @@ function getBenchmarkTriggerOptions(benchmarkOptions) {
4684
4707
  };
4685
4708
  }
4686
4709
  function maxDelay(first, second) {
4687
- return Temporal$1.Duration.compare(first, second) >= 0 ? first : second;
4710
+ return Temporal$2.Duration.compare(first, second) >= 0 ? first : second;
4688
4711
  }
4689
4712
  function isTransportDeliveryError(error) {
4690
4713
  return error instanceof _fedify_vocab_runtime.FetchError || require_http.isAbortError(error);
@@ -4924,7 +4947,7 @@ var FederationImpl = class extends FederationBuilderImpl {
4924
4947
  this.inboxRetryPolicy = options.inboxRetryPolicy ?? createExponentialBackoffPolicy();
4925
4948
  this.taskRetryPolicy = options.taskRetryPolicy ?? createExponentialBackoffPolicy();
4926
4949
  this.taskQueueResolution = options.taskQueueResolution ?? "fallback";
4927
- this.taskDeduplicationTtl = Temporal$1.Duration.from(options.taskDeduplicationTtl ?? { hours: 1 });
4950
+ this.taskDeduplicationTtl = Temporal$2.Duration.from(options.taskDeduplicationTtl ?? { hours: 1 });
4928
4951
  this.taskDeduplicationFallback = options.taskDeduplicationFallback ?? "open";
4929
4952
  this.activityTransformers = options.activityTransformers ?? require_transformers.getDefaultActivityTransformers();
4930
4953
  this._tracerProvider = options.tracerProvider;
@@ -5322,7 +5345,7 @@ var FederationImpl = class extends FederationBuilderImpl {
5322
5345
  const getPolicyDelay = () => {
5323
5346
  if (!policyDelayCalculated) {
5324
5347
  retryPolicyDelay = this.outboxRetryPolicy({
5325
- elapsedTime: Temporal$1.Instant.from(message.started).until(Temporal$1.Now.instant()),
5348
+ elapsedTime: Temporal$2.Instant.from(message.started).until(Temporal$2.Now.instant()),
5326
5349
  attempts: message.attempt
5327
5350
  });
5328
5351
  policyDelayCalculated = true;
@@ -5511,7 +5534,7 @@ var FederationImpl = class extends FederationBuilderImpl {
5511
5534
  throw error;
5512
5535
  }
5513
5536
  const delay = this.inboxRetryPolicy({
5514
- elapsedTime: Temporal$1.Instant.from(message.started).until(Temporal$1.Now.instant()),
5537
+ elapsedTime: Temporal$2.Instant.from(message.started).until(Temporal$2.Now.instant()),
5515
5538
  attempts: message.attempt
5516
5539
  });
5517
5540
  if (delay != null) {
@@ -5670,7 +5693,7 @@ var FederationImpl = class extends FederationBuilderImpl {
5670
5693
  await handleRetriableFailure(error);
5671
5694
  return;
5672
5695
  }
5673
- if (cacheKey != null) await this.kv.set(cacheKey, true, { ttl: Temporal$1.Duration.from({ days: 1 }) });
5696
+ if (cacheKey != null) await this.kv.set(cacheKey, true, { ttl: Temporal$2.Duration.from({ days: 1 }) });
5674
5697
  logger.info("Activity {activityId} has been processed.", {
5675
5698
  activityId: activity?.id?.href,
5676
5699
  activity: message.activity,
@@ -5724,9 +5747,9 @@ var FederationImpl = class extends FederationBuilderImpl {
5724
5747
  const queue = this.resolveTaskQueue(def.name);
5725
5748
  if (queue?.nativeRetrial) throw error;
5726
5749
  const retryPolicy = def.retryPolicy ?? this.taskRetryPolicy;
5727
- let elapsedTime = Temporal$1.Duration.from({ seconds: 0 });
5750
+ let elapsedTime = Temporal$2.Duration.from({ seconds: 0 });
5728
5751
  try {
5729
- elapsedTime = Temporal$1.Instant.from(message.started).until(Temporal$1.Now.instant());
5752
+ elapsedTime = Temporal$2.Instant.from(message.started).until(Temporal$2.Now.instant());
5730
5753
  } catch (parseError) {
5731
5754
  logger.error("Custom task {taskName} has an unparsable started time {started}; treating elapsedTime as zero:\n{error}", {
5732
5755
  taskName: message.taskName,
@@ -7450,7 +7473,7 @@ function getRequestId(request) {
7450
7473
  }
7451
7474
  //#endregion
7452
7475
  //#region src/federation/mq.ts
7453
- const Temporal = require_http.Temporal;
7476
+ const Temporal$1 = require_http.Temporal;
7454
7477
  /**
7455
7478
  * A message queue that processes messages in the same process.
7456
7479
  * Do not use this in production as it does neither persist messages nor
@@ -7485,7 +7508,7 @@ var InProcessMessageQueue = class {
7485
7508
  constructor(options = {}) {
7486
7509
  this.#messages = [];
7487
7510
  this.#monitors = {};
7488
- this.#pollIntervalMs = Temporal.Duration.from(options.pollInterval ?? { seconds: 5 }).total("millisecond");
7511
+ this.#pollIntervalMs = Temporal$1.Duration.from(options.pollInterval ?? { seconds: 5 }).total("millisecond");
7489
7512
  this.#delayedMessages = 0;
7490
7513
  this.#processingKeys = /* @__PURE__ */ new Set();
7491
7514
  }
@@ -9,7 +9,7 @@ let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conve
9
9
  let byte_encodings_base64 = require("byte-encodings/base64");
10
10
  //#region deno.json
11
11
  var name = "@fedify/fedify";
12
- var version = "2.4.0-dev.1881+17358f2e";
12
+ var version = "2.4.0-dev.1890+11d6efa2";
13
13
  //#endregion
14
14
  //#region ../../node_modules/.pnpm/temporal-polyfill@1.0.1/node_modules/temporal-polyfill/chunks/root.js
15
15
  const NativeTemporal = globalThis.Temporal;
@@ -10,7 +10,7 @@ import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } fro
10
10
  import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "2.4.0-dev.1881+17358f2e";
13
+ var version = "2.4.0-dev.1890+11d6efa2";
14
14
  //#endregion
15
15
  //#region src/sig/accept.ts
16
16
  /**
@@ -1,10 +1,10 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno--os6x8xr.mjs";
5
- import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-CBYbeDaO.mjs";
4
+ import { n as version, t as name } from "./deno-DRdfpFZq.mjs";
5
+ import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-CIRevdM1.mjs";
6
6
  import { i as validateAcceptSignature, n as fulfillAcceptSignature, r as parseAcceptSignature } from "./accept-CPVqki78.mjs";
7
- import { o as validateCryptoKey, r as fetchKeyDetailed } from "./key-Bgtfl2M_.mjs";
7
+ import { o as validateCryptoKey, r as fetchKeyDetailed } from "./key-DauglCmL.mjs";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { CryptographicKey } from "@fedify/vocab";
10
10
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,8 +1,8 @@
1
1
  import "temporal-polyfill";
2
2
  import "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { n as version, t as name } from "./deno--os6x8xr.mjs";
5
- import { _ as recordKeyLookup, n as getDurationMs, t as classifyFetchError } from "./metrics-CBYbeDaO.mjs";
4
+ import { n as version, t as name } from "./deno-DRdfpFZq.mjs";
5
+ import { _ as recordKeyLookup, n as getDurationMs, t as classifyFetchError } from "./metrics-CIRevdM1.mjs";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { CryptographicKey, Multikey, Object as Object$1, isActor } from "@fedify/vocab";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -1,7 +1,7 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  globalThis.addEventListener = () => {};
4
- import { p as recordDocumentCache } from "./metrics-CBYbeDaO.mjs";
4
+ import { p as recordDocumentCache } from "./metrics-CIRevdM1.mjs";
5
5
  import { getLogger } from "@logtape/logtape";
6
6
  import { preloadedContexts } from "@fedify/vocab-runtime";
7
7
  //#region src/utils/kv-cache.ts
@@ -1,5 +1,5 @@
1
1
  const { URLPattern } = require("urlpattern-polyfill");
2
- const require_http = require("./http-BpAW8jTQ.cjs");
2
+ const require_http = require("./http-BWzXKlhd.cjs");
3
3
  let _logtape_logtape = require("@logtape/logtape");
4
4
  let es_toolkit = require("es-toolkit");
5
5
  let _fedify_vocab_runtime = require("@fedify/vocab-runtime");
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { C as recordDocumentCache, d as validateCryptoKey, t as doubleKnock } from "./http-Dz0Z-6xu.js";
3
+ import { C as recordDocumentCache, d as validateCryptoKey, t as doubleKnock } from "./http-C32iqKS-.js";
4
4
  import { getLogger } from "@logtape/logtape";
5
5
  import { curry } from "es-toolkit";
6
6
  import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";