@fedify/fedify 1.8.1-pr.315.1089 → 1.8.1-pr.315.1090

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 (90) hide show
  1. package/dist/{actor-B4TBtqRP.d.ts → actor-1rvS-py8.d.ts} +2 -2
  2. package/dist/{actor-6ZGdUyTU.js → actor-BX-pKSuT.js} +3 -3
  3. package/dist/{actor-wseKMw85.js → actor-C02Getjh.js} +179 -179
  4. package/dist/{authdocloader-EijwIgU-.js → authdocloader-BZs3nvC8.js} +4 -4
  5. package/dist/{authdocloader-BTCPL7WR.js → authdocloader-BbVFhkcz.js} +4 -4
  6. package/dist/{builder-CzxIh2TM.js → builder-DuW8p2S3.js} +3 -3
  7. package/dist/{client-BZRXX1tQ.js → client-BD0mI7gk.js} +1 -1
  8. package/dist/{client-BQ4AQGKo.d.ts → client-DK4qnXK0.d.ts} +1 -1
  9. package/dist/compat/mod.d.ts +10 -10
  10. package/dist/compat/transformers.test.js +17 -17
  11. package/dist/{context-CBKX7mkt.d.ts → context-BhO5LP_t.d.ts} +8 -8
  12. package/dist/{context-DRua680B.js → context-V7yd31ov.js} +3 -3
  13. package/dist/{docloader-09nVWLAZ.js → docloader-Bh-sDknx.js} +1 -1
  14. package/dist/{docloader-pPwozoYc.js → docloader-D5BOqs-9.js} +13 -25
  15. package/dist/{docloader-BeCtcTOJ.d.ts → docloader-DtGccyuM.d.ts} +10 -1
  16. package/dist/{docloader-Ci2ZqlAC.js → docloader-umQd797n.js} +13 -25
  17. package/dist/federation/builder.test.js +4 -4
  18. package/dist/federation/handler.test.js +20 -20
  19. package/dist/federation/inbox.test.js +3 -3
  20. package/dist/federation/keycache.test.js +3 -3
  21. package/dist/federation/middleware.test.js +19 -19
  22. package/dist/federation/mod.d.ts +9 -9
  23. package/dist/federation/mod.js +10 -10
  24. package/dist/federation/send.test.js +10 -10
  25. package/dist/{http-BjEe2e-1.js → http-CkS9JLmm.js} +3 -3
  26. package/dist/{http-D1uoUH4N.d.ts → http-Cp-0z2Ja.d.ts} +2 -2
  27. package/dist/{http-CTYSNs13.js → http-D59x3pzl.js} +3 -3
  28. package/dist/{inbox-BEJ1jCuJ.js → inbox-BjyNe-HL.js} +2 -2
  29. package/dist/{key-C0LADV6I.js → key-Btkh3AwY.js} +2 -2
  30. package/dist/{key-Bx1xBj1K.js → key-Cf8lNopw.js} +4 -4
  31. package/dist/{key-CZcP6KS0.js → key-DqZKjPjH.js} +5 -5
  32. package/dist/{key-BV6GQBrd.js → key-jxin-rRq.js} +3 -3
  33. package/dist/{keycache-C6JVPcU_.js → keycache-BC5bL06g.js} +1 -1
  34. package/dist/{keys-DRsPG_Da.js → keys-Dfntfi5m.js} +1 -1
  35. package/dist/{ld-CdLqdZ_9.js → ld-DwoZFwEd.js} +3 -3
  36. package/dist/{lookup-y8VJVm2c.js → lookup-CAXRxPZ3.js} +5 -5
  37. package/dist/{lookup-BoY0Ke_l.js → lookup-DvfZUKur.js} +1 -1
  38. package/dist/{lookup-CR8wX97f.js → lookup-gQIU9tXW.js} +1 -1
  39. package/dist/{lookup-C4hWkBxk.d.ts → lookup-m3U6KA0u.d.ts} +1 -1
  40. package/dist/middleware-31SyXabg.js +33 -0
  41. package/dist/{middleware-QeZ8G8s9.js → middleware-BOHju0mN.js} +10 -10
  42. package/dist/middleware-CGl-YyTa.js +17 -0
  43. package/dist/{middleware-DCOs6R7U.js → middleware-cN6r9o1m.js} +15 -15
  44. package/dist/{mod-cB3yFF_7.d.ts → mod-BqCBztub.d.ts} +2 -2
  45. package/dist/{mod-0L5jhGYM.d.ts → mod-c1I-Ydch.d.ts} +2 -2
  46. package/dist/{mod-C6GBqqWQ.d.ts → mod-nlVEnYuj.d.ts} +2 -2
  47. package/dist/{mod-BCl7t-Ka.d.ts → mod-yPzXIjJX.d.ts} +3 -3
  48. package/dist/mod.d.ts +12 -12
  49. package/dist/mod.js +10 -10
  50. package/dist/nodeinfo/client.test.js +2 -2
  51. package/dist/nodeinfo/handler.test.js +19 -19
  52. package/dist/nodeinfo/mod.d.ts +2 -2
  53. package/dist/nodeinfo/mod.js +2 -2
  54. package/dist/{owner-CEv_PfyK.d.ts → owner-BK4eWKBp.d.ts} +3 -3
  55. package/dist/{owner-C0gFlCL_.js → owner-BrSLT3By.js} +3 -3
  56. package/dist/{proof-DAAMAukc.js → proof-BDYegzwN.js} +3 -3
  57. package/dist/{proof-Dz8KixnY.js → proof-u4rhYX_R.js} +3 -3
  58. package/dist/runtime/authdocloader.test.js +9 -9
  59. package/dist/runtime/docloader.test.js +2 -2
  60. package/dist/runtime/key.test.js +5 -5
  61. package/dist/runtime/mod.d.ts +4 -4
  62. package/dist/runtime/mod.js +6 -6
  63. package/dist/{send-DsNrziEt.js → send-DRDKgORs.js} +2 -2
  64. package/dist/sig/http.test.js +8 -8
  65. package/dist/sig/key.test.js +7 -7
  66. package/dist/sig/ld.test.js +8 -8
  67. package/dist/sig/mod.d.ts +6 -6
  68. package/dist/sig/mod.js +6 -6
  69. package/dist/sig/owner.test.js +9 -9
  70. package/dist/sig/proof.test.js +8 -8
  71. package/dist/testing/docloader.test.js +1 -1
  72. package/dist/{types-D-EdCGcO.js → types-D1lhruqy.js} +1 -1
  73. package/dist/vocab/actor.test.js +4 -4
  74. package/dist/vocab/lookup.test.js +5 -5
  75. package/dist/vocab/mod.d.ts +4 -4
  76. package/dist/vocab/mod.js +4 -4
  77. package/dist/vocab/type.test.js +2 -2
  78. package/dist/vocab/vocab.test.js +4 -4
  79. package/dist/{vocab-By6mpzr-.d.ts → vocab-B52eQhpN.d.ts} +1 -1
  80. package/dist/{vocab-DaAuYKqm.js → vocab-BaWeqg9y.js} +5 -5
  81. package/dist/{vocab-CJA9Q_w4.js → vocab-C4cyrUaT.js} +178 -178
  82. package/dist/webfinger/handler.test.js +19 -19
  83. package/dist/webfinger/lookup.test.js +2 -2
  84. package/dist/webfinger/mod.d.ts +2 -2
  85. package/dist/webfinger/mod.js +2 -2
  86. package/dist/x/hono.d.ts +9 -9
  87. package/dist/x/sveltekit.d.ts +9 -9
  88. package/package.json +1 -1
  89. package/dist/middleware-BLu0AXhf.js +0 -17
  90. package/dist/middleware-DB11lEoH.js +0 -33
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { createRequest, getRemoteDocument, logRequest } from "./docloader-pPwozoYc.js";
6
+ import { createRequest, getRemoteDocument, logRequest } from "./docloader-D5BOqs-9.js";
7
7
  import { UrlError, validatePublicUrl } from "./url-kTAI6_KP.js";
8
- import { validateCryptoKey } from "./key-BV6GQBrd.js";
9
- import { doubleKnock } from "./http-CTYSNs13.js";
8
+ import { validateCryptoKey } from "./key-jxin-rRq.js";
9
+ import { doubleKnock } from "./http-D59x3pzl.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
 
12
12
  //#region runtime/authdocloader.ts
@@ -28,7 +28,7 @@ const logger = getLogger([
28
28
  */
29
29
  function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAgent, specDeterminer, tracerProvider } = {}) {
30
30
  validateCryptoKey(identity.privateKey);
31
- async function load(url) {
31
+ async function load(url, _options) {
32
32
  if (!allowPrivateAddress) try {
33
33
  await validatePublicUrl(url);
34
34
  } catch (error) {
@@ -2,9 +2,9 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-Ci2ZqlAC.js";
6
- import { validateCryptoKey } from "./key-C0LADV6I.js";
7
- import { doubleKnock } from "./http-BjEe2e-1.js";
5
+ import { UrlError, createRequest, getRemoteDocument, logRequest, validatePublicUrl } from "./docloader-umQd797n.js";
6
+ import { validateCryptoKey } from "./key-Btkh3AwY.js";
7
+ import { doubleKnock } from "./http-CkS9JLmm.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
10
10
  //#region runtime/authdocloader.ts
@@ -26,7 +26,7 @@ const logger = getLogger([
26
26
  */
27
27
  function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAgent, specDeterminer, tracerProvider } = {}) {
28
28
  validateCryptoKey(identity.privateKey);
29
- async function load(url) {
29
+ async function load(url, _options) {
30
30
  if (!allowPrivateAddress) try {
31
31
  await validatePublicUrl(url);
32
32
  } catch (error) {
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./docloader-pPwozoYc.js";
6
+ import { deno_default } from "./docloader-D5BOqs-9.js";
7
7
  import { Router, RouterError } from "./router-D3UybECj.js";
8
8
  import { getTypeId } from "./type-D2s5lmbZ.js";
9
- import { InboxListenerSet } from "./inbox-BEJ1jCuJ.js";
9
+ import { InboxListenerSet } from "./inbox-BjyNe-HL.js";
10
10
  import { getLogger } from "@logtape/logtape";
11
11
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
12
12
 
@@ -34,7 +34,7 @@ var FederationBuilderImpl = class {
34
34
  this.objectTypeIds = {};
35
35
  }
36
36
  async build(options) {
37
- const { FederationImpl } = await import("./middleware-DB11lEoH.js");
37
+ const { FederationImpl } = await import("./middleware-31SyXabg.js");
38
38
  const f = new FederationImpl(options);
39
39
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
40
40
  f.router = this.router.clone();
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { getUserAgent } from "./docloader-pPwozoYc.js";
6
+ import { getUserAgent } from "./docloader-D5BOqs-9.js";
7
7
  import { parseSemVer } from "./semver-DWClQt_5.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
 
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
- import { GetUserAgentOptions } from "./docloader-BeCtcTOJ.js";
3
+ import { GetUserAgentOptions } from "./docloader-DtGccyuM.js";
4
4
 
5
5
  //#region nodeinfo/semver.d.ts
6
6
  /**
@@ -1,15 +1,15 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import "../kv-DDdb1hMa.js";
4
- import "../docloader-BeCtcTOJ.js";
5
- import "../client-BQ4AQGKo.js";
6
- import "../vocab-By6mpzr-.js";
7
- import "../actor-B4TBtqRP.js";
8
- import "../http-D1uoUH4N.js";
9
- import "../owner-CEv_PfyK.js";
10
- import "../mod-cB3yFF_7.js";
11
- import "../lookup-C4hWkBxk.js";
12
- import { ActivityTransformer } from "../context-CBKX7mkt.js";
4
+ import "../docloader-DtGccyuM.js";
5
+ import "../client-DK4qnXK0.js";
6
+ import "../vocab-B52eQhpN.js";
7
+ import "../actor-1rvS-py8.js";
8
+ import "../http-Cp-0z2Ja.js";
9
+ import "../owner-BK4eWKBp.js";
10
+ import "../mod-BqCBztub.js";
11
+ import "../lookup-m3U6KA0u.js";
12
+ import { ActivityTransformer } from "../context-BhO5LP_t.js";
13
13
  import "../mq-DYKDDJmp.js";
14
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-C6GBqqWQ.js";
14
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-nlVEnYuj.js";
15
15
  export { ActivityTransformer, actorDehydrator, autoIdAssigner, getDefaultActivityTransformers };
@@ -7,32 +7,32 @@ import { assertEquals } from "../assert_equals-C5gKCm6A.js";
7
7
  import { assert } from "../assert-DwEa6glZ.js";
8
8
  import { assertInstanceOf } from "../assert_instance_of-C9QtN-X9.js";
9
9
  import { MemoryKvStore } from "../kv-D7Yt6pnB.js";
10
- import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-DCOs6R7U.js";
11
- import "../docloader-pPwozoYc.js";
10
+ import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-cN6r9o1m.js";
11
+ import "../docloader-D5BOqs-9.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import "../semver-DWClQt_5.js";
14
- import "../client-BZRXX1tQ.js";
14
+ import "../client-BD0mI7gk.js";
15
15
  import "../router-D3UybECj.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import { Follow, Person } from "../vocab-CJA9Q_w4.js";
18
+ import { Follow, Person } from "../vocab-C4cyrUaT.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-BoY0Ke_l.js";
20
+ import "../lookup-DvfZUKur.js";
21
21
  import "../type-D2s5lmbZ.js";
22
- import "../actor-6ZGdUyTU.js";
23
- import "../key-BV6GQBrd.js";
24
- import "../http-CTYSNs13.js";
25
- import "../authdocloader-EijwIgU-.js";
26
- import "../ld-CdLqdZ_9.js";
27
- import "../owner-C0gFlCL_.js";
28
- import "../proof-Dz8KixnY.js";
29
- import "../lookup-y8VJVm2c.js";
30
- import "../inbox-BEJ1jCuJ.js";
31
- import "../builder-CzxIh2TM.js";
22
+ import "../actor-BX-pKSuT.js";
23
+ import "../key-jxin-rRq.js";
24
+ import "../http-D59x3pzl.js";
25
+ import "../authdocloader-BZs3nvC8.js";
26
+ import "../ld-DwoZFwEd.js";
27
+ import "../owner-BrSLT3By.js";
28
+ import "../proof-u4rhYX_R.js";
29
+ import "../lookup-CAXRxPZ3.js";
30
+ import "../inbox-BjyNe-HL.js";
31
+ import "../builder-DuW8p2S3.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-C6JVPcU_.js";
33
+ import "../keycache-BC5bL06g.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-DsNrziEt.js";
35
+ import "../send-DRDKgORs.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
 
38
38
  //#region compat/transformers.test.ts
@@ -1,14 +1,14 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { KvKey, KvStore } from "./kv-DDdb1hMa.js";
4
- import { AuthenticatedDocumentLoaderFactory, DocumentLoader, DocumentLoaderFactory, GetUserAgentOptions } from "./docloader-BeCtcTOJ.js";
5
- import { GetNodeInfoOptions, JsonValue, NodeInfo } from "./client-BQ4AQGKo.js";
6
- import { Activity, Collection, CryptographicKey, Hashtag, Link, Multikey, Object as Object$1 } from "./vocab-By6mpzr-.js";
7
- import { Actor, Recipient } from "./actor-B4TBtqRP.js";
8
- import { HttpMessageSignaturesSpec } from "./http-D1uoUH4N.js";
9
- import { GetKeyOwnerOptions } from "./owner-CEv_PfyK.js";
10
- import { LookupObjectOptions, TraverseCollectionOptions } from "./mod-cB3yFF_7.js";
11
- import { LookupWebFingerOptions, ResourceDescriptor } from "./lookup-C4hWkBxk.js";
4
+ import { AuthenticatedDocumentLoaderFactory, DocumentLoader, DocumentLoaderFactory, GetUserAgentOptions } from "./docloader-DtGccyuM.js";
5
+ import { GetNodeInfoOptions, JsonValue, NodeInfo } from "./client-DK4qnXK0.js";
6
+ import { Activity, Collection, CryptographicKey, Hashtag, Link, Multikey, Object as Object$1 } from "./vocab-B52eQhpN.js";
7
+ import { Actor, Recipient } from "./actor-1rvS-py8.js";
8
+ import { HttpMessageSignaturesSpec } from "./http-Cp-0z2Ja.js";
9
+ import { GetKeyOwnerOptions } from "./owner-BK4eWKBp.js";
10
+ import { LookupObjectOptions, TraverseCollectionOptions } from "./mod-BqCBztub.js";
11
+ import { LookupWebFingerOptions, ResourceDescriptor } from "./lookup-m3U6KA0u.js";
12
12
  import { MessageQueue } from "./mq-DYKDDJmp.js";
13
13
  import { Span, TracerProvider } from "@opentelemetry/api";
14
14
 
@@ -4,9 +4,9 @@
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
6
  import { RouterError } from "./router-D3UybECj.js";
7
- import { lookupWebFinger } from "./lookup-BoY0Ke_l.js";
8
- import { lookupObject, traverseCollection } from "./lookup-y8VJVm2c.js";
9
- import { mockDocumentLoader } from "./docloader-09nVWLAZ.js";
7
+ import { lookupWebFinger } from "./lookup-DvfZUKur.js";
8
+ import { lookupObject, traverseCollection } from "./lookup-CAXRxPZ3.js";
9
+ import { mockDocumentLoader } from "./docloader-Bh-sDknx.js";
10
10
  import { trace } from "@opentelemetry/api";
11
11
 
12
12
  //#region testing/context.ts
@@ -19,7 +19,7 @@ const logger = getLogger([
19
19
  * the file `testing/fixtures/http/example.com/foo/bar` (no suffix) and return
20
20
  * its content as the response.
21
21
  */
22
- async function mockDocumentLoader(resource) {
22
+ async function mockDocumentLoader(resource, _options) {
23
23
  const url = new URL(resource);
24
24
  if ("navigator" in globalThis && navigator.userAgent === "Cloudflare-Workers") {
25
25
  const testUrl = new URL(url);
@@ -10,7 +10,7 @@ import process from "node:process";
10
10
 
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "1.8.1-pr.315.1089+c94587fa";
13
+ var version = "1.8.1-pr.315.1090+6f24368e";
14
14
  var license = "MIT";
15
15
  var exports = {
16
16
  ".": "./mod.ts",
@@ -4405,7 +4405,8 @@ async function getRemoteDocument(url, response, fetch$1) {
4405
4405
  * @since 1.3.0
4406
4406
  */
4407
4407
  function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
4408
- async function load(url) {
4408
+ async function load(url, _options) {
4409
+ if (_options?.signal?.aborted) throw new DOMException("Aborted", "AbortError");
4409
4410
  if (!skipPreloadedContexts && url in contexts_default) {
4410
4411
  logger.debug("Using preloaded context: {url}.", { url });
4411
4412
  return {
@@ -4425,35 +4426,22 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
4425
4426
  }
4426
4427
  const request = createRequest(url, { userAgent });
4427
4428
  logRequest(request);
4428
- const response = await fetch(request, { redirect: "manual" });
4429
- if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) return load(response.headers.get("Location"));
4429
+ const response = await fetch(request, {
4430
+ redirect: "manual",
4431
+ signal: _options?.signal
4432
+ });
4433
+ if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) return load(response.headers.get("Location"), _options);
4430
4434
  return getRemoteDocument(url, response, load);
4431
4435
  }
4432
4436
  return load;
4433
4437
  }
4434
4438
  const _fetchDocumentLoader = getDocumentLoader();
4435
4439
  const _fetchDocumentLoader_allowPrivateAddress = getDocumentLoader({ allowPrivateAddress: true });
4436
- /**
4437
- * A JSON-LD document loader that utilizes the browser's `fetch` API.
4438
- *
4439
- * This loader preloads the below frequently used contexts:
4440
- *
4441
- * - <https://www.w3.org/ns/activitystreams>
4442
- * - <https://w3id.org/security/v1>
4443
- * - <https://w3id.org/security/data-integrity/v1>
4444
- * - <https://www.w3.org/ns/did/v1>
4445
- * - <https://w3id.org/security/multikey/v1>
4446
- * - <https://purl.archive.org/socialweb/webfinger>
4447
- * - <http://schema.org/>
4448
- * @param url The URL of the document to load.
4449
- * @param allowPrivateAddress Whether to allow fetching private network
4450
- * addresses. Turned off by default.
4451
- * @returns The remote document.
4452
- * @deprecated Use {@link getDocumentLoader} instead.
4453
- */
4454
- function fetchDocumentLoader(url, allowPrivateAddress = false) {
4440
+ function fetchDocumentLoader(url, arg = false) {
4441
+ const allowPrivateAddress = typeof arg === "boolean" ? arg : false;
4455
4442
  logger.warn("fetchDocumentLoader() function is deprecated. Use getDocumentLoader() function instead.");
4456
- return (allowPrivateAddress ? _fetchDocumentLoader_allowPrivateAddress : _fetchDocumentLoader)(url);
4443
+ const loader = allowPrivateAddress ? _fetchDocumentLoader_allowPrivateAddress : _fetchDocumentLoader;
4444
+ return loader(url);
4457
4445
  }
4458
4446
  /**
4459
4447
  * Decorates a {@link DocumentLoader} with a cache backed by a {@link Deno.Kv}.
@@ -4478,7 +4466,7 @@ function kvCache({ loader, kv, prefix, rules }) {
4478
4466
  }
4479
4467
  return null;
4480
4468
  }
4481
- return async (url) => {
4469
+ return async (url, _options) => {
4482
4470
  const match = matchRule(url);
4483
4471
  if (match == null) return await loader(url);
4484
4472
  const key = [...keyPrefix, url];
@@ -21,12 +21,20 @@ interface RemoteDocument {
21
21
  */
22
22
  documentUrl: string;
23
23
  }
24
+ /**
25
+ * Options for {@link DocumentLoader}.
26
+ * @since 1.8.0
27
+ */
28
+ interface DocumentLoaderOptions {
29
+ signal?: AbortSignal;
30
+ }
24
31
  /**
25
32
  * A JSON-LD document loader that fetches documents from the Web.
26
33
  * @param url The URL of the document to load.
34
+ * @param options The options for the document loader.
27
35
  * @returns The loaded remote document.
28
36
  */
29
- type DocumentLoader = (url: string) => Promise<RemoteDocument>;
37
+ type DocumentLoader = (url: string, options?: DocumentLoaderOptions) => Promise<RemoteDocument>;
30
38
  /**
31
39
  * A factory function that creates a {@link DocumentLoader} with options.
32
40
  * @param options The options for the document loader.
@@ -140,6 +148,7 @@ declare function getDocumentLoader({
140
148
  * @deprecated Use {@link getDocumentLoader} instead.
141
149
  */
142
150
  declare function fetchDocumentLoader(url: string, allowPrivateAddress?: boolean): Promise<RemoteDocument>;
151
+ declare function fetchDocumentLoader(url: string, options?: DocumentLoaderOptions): Promise<RemoteDocument>;
143
152
  /**
144
153
  * The parameters for {@link kvCache} function.
145
154
  */
@@ -10,7 +10,7 @@ import { isIP } from "node:net";
10
10
 
11
11
  //#region deno.json
12
12
  var name = "@fedify/fedify";
13
- var version = "1.8.1-pr.315.1089+c94587fa";
13
+ var version = "1.8.1-pr.315.1090+6f24368e";
14
14
  var license = "MIT";
15
15
  var exports = {
16
16
  ".": "./mod.ts",
@@ -4464,7 +4464,8 @@ async function getRemoteDocument(url, response, fetch$1) {
4464
4464
  * @since 1.3.0
4465
4465
  */
4466
4466
  function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
4467
- async function load(url) {
4467
+ async function load(url, _options) {
4468
+ if (_options?.signal?.aborted) throw new DOMException("Aborted", "AbortError");
4468
4469
  if (!skipPreloadedContexts && url in contexts_default) {
4469
4470
  logger.debug("Using preloaded context: {url}.", { url });
4470
4471
  return {
@@ -4484,35 +4485,22 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
4484
4485
  }
4485
4486
  const request = createRequest(url, { userAgent });
4486
4487
  logRequest(request);
4487
- const response = await fetch(request, { redirect: "manual" });
4488
- if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) return load(response.headers.get("Location"));
4488
+ const response = await fetch(request, {
4489
+ redirect: "manual",
4490
+ signal: _options?.signal
4491
+ });
4492
+ if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) return load(response.headers.get("Location"), _options);
4489
4493
  return getRemoteDocument(url, response, load);
4490
4494
  }
4491
4495
  return load;
4492
4496
  }
4493
4497
  const _fetchDocumentLoader = getDocumentLoader();
4494
4498
  const _fetchDocumentLoader_allowPrivateAddress = getDocumentLoader({ allowPrivateAddress: true });
4495
- /**
4496
- * A JSON-LD document loader that utilizes the browser's `fetch` API.
4497
- *
4498
- * This loader preloads the below frequently used contexts:
4499
- *
4500
- * - <https://www.w3.org/ns/activitystreams>
4501
- * - <https://w3id.org/security/v1>
4502
- * - <https://w3id.org/security/data-integrity/v1>
4503
- * - <https://www.w3.org/ns/did/v1>
4504
- * - <https://w3id.org/security/multikey/v1>
4505
- * - <https://purl.archive.org/socialweb/webfinger>
4506
- * - <http://schema.org/>
4507
- * @param url The URL of the document to load.
4508
- * @param allowPrivateAddress Whether to allow fetching private network
4509
- * addresses. Turned off by default.
4510
- * @returns The remote document.
4511
- * @deprecated Use {@link getDocumentLoader} instead.
4512
- */
4513
- function fetchDocumentLoader(url, allowPrivateAddress = false) {
4499
+ function fetchDocumentLoader(url, arg = false) {
4500
+ const allowPrivateAddress = typeof arg === "boolean" ? arg : false;
4514
4501
  logger.warn("fetchDocumentLoader() function is deprecated. Use getDocumentLoader() function instead.");
4515
- return (allowPrivateAddress ? _fetchDocumentLoader_allowPrivateAddress : _fetchDocumentLoader)(url);
4502
+ const loader = allowPrivateAddress ? _fetchDocumentLoader_allowPrivateAddress : _fetchDocumentLoader;
4503
+ return loader(url);
4516
4504
  }
4517
4505
  /**
4518
4506
  * Decorates a {@link DocumentLoader} with a cache backed by a {@link Deno.Kv}.
@@ -4537,7 +4525,7 @@ function kvCache({ loader, kv, prefix, rules }) {
4537
4525
  }
4538
4526
  return null;
4539
4527
  }
4540
- return async (url) => {
4528
+ return async (url, _options) => {
4541
4529
  const match = matchRule(url);
4542
4530
  if (match == null) return await loader(url);
4543
4531
  const key = [...keyPrefix, url];
@@ -7,16 +7,16 @@ import { assertEquals } from "../assert_equals-C5gKCm6A.js";
7
7
  import "../assert-DwEa6glZ.js";
8
8
  import "../assert_instance_of-C9QtN-X9.js";
9
9
  import { MemoryKvStore } from "../kv-D7Yt6pnB.js";
10
- import "../docloader-pPwozoYc.js";
10
+ import "../docloader-D5BOqs-9.js";
11
11
  import "../url-kTAI6_KP.js";
12
12
  import { parseSemVer } from "../semver-DWClQt_5.js";
13
13
  import "../router-D3UybECj.js";
14
14
  import "../multibase-DeCHcK8L.js";
15
- import { Activity, Note, Person } from "../vocab-CJA9Q_w4.js";
15
+ import { Activity, Note, Person } from "../vocab-C4cyrUaT.js";
16
16
  import "../langstr-DbWheeIS.js";
17
17
  import "../type-D2s5lmbZ.js";
18
- import "../inbox-BEJ1jCuJ.js";
19
- import { createFederationBuilder } from "../builder-CzxIh2TM.js";
18
+ import "../inbox-BjyNe-HL.js";
19
+ import { createFederationBuilder } from "../builder-DuW8p2S3.js";
20
20
  import { test } from "../testing-BZ0dJ4qn.js";
21
21
  import { assertExists } from "../std__assert-B3iAixc-.js";
22
22
  import "../assert_rejects-DceVjUlD.js";
@@ -7,41 +7,41 @@ import { assertEquals } from "../assert_equals-C5gKCm6A.js";
7
7
  import { assert } from "../assert-DwEa6glZ.js";
8
8
  import "../assert_instance_of-C9QtN-X9.js";
9
9
  import { MemoryKvStore } from "../kv-D7Yt6pnB.js";
10
- import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-DCOs6R7U.js";
11
- import "../docloader-pPwozoYc.js";
10
+ import { acceptsJsonLd, createFederation, handleActor, handleCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-cN6r9o1m.js";
11
+ import "../docloader-D5BOqs-9.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import "../semver-DWClQt_5.js";
14
- import "../client-BZRXX1tQ.js";
14
+ import "../client-BD0mI7gk.js";
15
15
  import "../router-D3UybECj.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import { Create, Note, Person } from "../vocab-CJA9Q_w4.js";
18
+ import { Create, Note, Person } from "../vocab-C4cyrUaT.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-BoY0Ke_l.js";
20
+ import "../lookup-DvfZUKur.js";
21
21
  import "../type-D2s5lmbZ.js";
22
- import "../actor-6ZGdUyTU.js";
23
- import "../key-BV6GQBrd.js";
24
- import { signRequest } from "../http-CTYSNs13.js";
25
- import "../authdocloader-EijwIgU-.js";
26
- import "../ld-CdLqdZ_9.js";
27
- import "../owner-C0gFlCL_.js";
28
- import "../proof-Dz8KixnY.js";
29
- import "../lookup-y8VJVm2c.js";
30
- import "../inbox-BEJ1jCuJ.js";
31
- import "../builder-CzxIh2TM.js";
22
+ import "../actor-BX-pKSuT.js";
23
+ import "../key-jxin-rRq.js";
24
+ import { signRequest } from "../http-D59x3pzl.js";
25
+ import "../authdocloader-BZs3nvC8.js";
26
+ import "../ld-DwoZFwEd.js";
27
+ import "../owner-BrSLT3By.js";
28
+ import "../proof-u4rhYX_R.js";
29
+ import "../lookup-CAXRxPZ3.js";
30
+ import "../inbox-BjyNe-HL.js";
31
+ import "../builder-DuW8p2S3.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-C6JVPcU_.js";
33
+ import "../keycache-BC5bL06g.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-DsNrziEt.js";
35
+ import "../send-DRDKgORs.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
  import "../std__assert-B3iAixc-.js";
38
38
  import { assertFalse } from "../assert_rejects-DceVjUlD.js";
39
39
  import "../assert_is_error-DQdKoRgb.js";
40
40
  import "../assert_not_equals-7pyUM3Ib.js";
41
41
  import "../assert_throws-DTDC_gwN.js";
42
- import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
43
- import { createInboxContext, createRequestContext } from "../context-DRua680B.js";
44
- import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-DRsPG_Da.js";
42
+ import { mockDocumentLoader } from "../docloader-Bh-sDknx.js";
43
+ import { createInboxContext, createRequestContext } from "../context-V7yd31ov.js";
44
+ import { rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-Dfntfi5m.js";
45
45
 
46
46
  //#region federation/handler.test.ts
47
47
  test("acceptsJsonLd()", () => {
@@ -4,13 +4,13 @@
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
6
  import { assertEquals } from "../assert_equals-C5gKCm6A.js";
7
- import "../docloader-pPwozoYc.js";
7
+ import "../docloader-D5BOqs-9.js";
8
8
  import "../url-kTAI6_KP.js";
9
9
  import "../multibase-DeCHcK8L.js";
10
- import { Activity, Create, Invite, Offer, Update } from "../vocab-CJA9Q_w4.js";
10
+ import { Activity, Create, Invite, Offer, Update } from "../vocab-C4cyrUaT.js";
11
11
  import "../langstr-DbWheeIS.js";
12
12
  import "../type-D2s5lmbZ.js";
13
- import { InboxListenerSet } from "../inbox-BEJ1jCuJ.js";
13
+ import { InboxListenerSet } from "../inbox-BjyNe-HL.js";
14
14
  import { test } from "../testing-BZ0dJ4qn.js";
15
15
  import "../assert_is_error-DQdKoRgb.js";
16
16
  import { assertThrows } from "../assert_throws-DTDC_gwN.js";
@@ -7,12 +7,12 @@ import { assertEquals } from "../assert_equals-C5gKCm6A.js";
7
7
  import { assert } from "../assert-DwEa6glZ.js";
8
8
  import { assertInstanceOf } from "../assert_instance_of-C9QtN-X9.js";
9
9
  import { MemoryKvStore } from "../kv-D7Yt6pnB.js";
10
- import "../docloader-pPwozoYc.js";
10
+ import "../docloader-D5BOqs-9.js";
11
11
  import "../url-kTAI6_KP.js";
12
12
  import "../multibase-DeCHcK8L.js";
13
- import { CryptographicKey, Multikey } from "../vocab-CJA9Q_w4.js";
13
+ import { CryptographicKey, Multikey } from "../vocab-C4cyrUaT.js";
14
14
  import "../langstr-DbWheeIS.js";
15
- import { KvKeyCache } from "../keycache-C6JVPcU_.js";
15
+ import { KvKeyCache } from "../keycache-BC5bL06g.js";
16
16
  import { test } from "../testing-BZ0dJ4qn.js";
17
17
 
18
18
  //#region federation/keycache.test.ts
@@ -7,40 +7,40 @@ import { assertEquals } from "../assert_equals-C5gKCm6A.js";
7
7
  import { assert } from "../assert-DwEa6glZ.js";
8
8
  import { assertInstanceOf } from "../assert_instance_of-C9QtN-X9.js";
9
9
  import { MemoryKvStore } from "../kv-D7Yt6pnB.js";
10
- import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-DCOs6R7U.js";
11
- import { FetchError, fetchDocumentLoader } from "../docloader-pPwozoYc.js";
10
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-cN6r9o1m.js";
11
+ import { FetchError, fetchDocumentLoader } from "../docloader-D5BOqs-9.js";
12
12
  import "../url-kTAI6_KP.js";
13
13
  import "../semver-DWClQt_5.js";
14
- import "../client-BZRXX1tQ.js";
14
+ import "../client-BD0mI7gk.js";
15
15
  import { RouterError } from "../router-D3UybECj.js";
16
16
  import "../types-C7C_l-jz.js";
17
17
  import "../multibase-DeCHcK8L.js";
18
- import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-CJA9Q_w4.js";
18
+ import { Activity, Announce, Create, Invite, Multikey, Note, Object as Object$1, Offer, Person } from "../vocab-C4cyrUaT.js";
19
19
  import "../langstr-DbWheeIS.js";
20
- import "../lookup-BoY0Ke_l.js";
20
+ import "../lookup-DvfZUKur.js";
21
21
  import { getTypeId } from "../type-D2s5lmbZ.js";
22
- import "../actor-6ZGdUyTU.js";
23
- import "../key-BV6GQBrd.js";
24
- import { signRequest, verifyRequest } from "../http-CTYSNs13.js";
25
- import { getAuthenticatedDocumentLoader } from "../authdocloader-EijwIgU-.js";
26
- import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-CdLqdZ_9.js";
27
- import { doesActorOwnKey } from "../owner-C0gFlCL_.js";
28
- import { signObject, verifyObject } from "../proof-Dz8KixnY.js";
29
- import { lookupObject } from "../lookup-y8VJVm2c.js";
30
- import "../inbox-BEJ1jCuJ.js";
31
- import "../builder-CzxIh2TM.js";
22
+ import "../actor-BX-pKSuT.js";
23
+ import "../key-jxin-rRq.js";
24
+ import { signRequest, verifyRequest } from "../http-D59x3pzl.js";
25
+ import { getAuthenticatedDocumentLoader } from "../authdocloader-BZs3nvC8.js";
26
+ import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-DwoZFwEd.js";
27
+ import { doesActorOwnKey } from "../owner-BrSLT3By.js";
28
+ import { signObject, verifyObject } from "../proof-u4rhYX_R.js";
29
+ import { lookupObject } from "../lookup-CAXRxPZ3.js";
30
+ import "../inbox-BjyNe-HL.js";
31
+ import "../builder-DuW8p2S3.js";
32
32
  import "../collection-Dfb0TPno.js";
33
- import "../keycache-C6JVPcU_.js";
33
+ import "../keycache-BC5bL06g.js";
34
34
  import "../retry-BiIhZWgD.js";
35
- import "../send-DsNrziEt.js";
35
+ import "../send-DRDKgORs.js";
36
36
  import { test } from "../testing-BZ0dJ4qn.js";
37
37
  import { assertStrictEquals } from "../std__assert-B3iAixc-.js";
38
38
  import { assertFalse, assertRejects } from "../assert_rejects-DceVjUlD.js";
39
39
  import "../assert_is_error-DQdKoRgb.js";
40
40
  import { assertNotEquals } from "../assert_not_equals-7pyUM3Ib.js";
41
41
  import { assertThrows } from "../assert_throws-DTDC_gwN.js";
42
- import { mockDocumentLoader } from "../docloader-09nVWLAZ.js";
43
- import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-DRsPG_Da.js";
42
+ import { mockDocumentLoader } from "../docloader-Bh-sDknx.js";
43
+ import { ed25519Multikey, ed25519PrivateKey, ed25519PublicKey, rsaPrivateKey2, rsaPrivateKey3, rsaPublicKey2, rsaPublicKey3 } from "../keys-Dfntfi5m.js";
44
44
  import { esm_default } from "../esm-d-9EVGaP.js";
45
45
 
46
46
  //#region testing/fixtures/example.com/person.json
@@ -1,15 +1,15 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { URLPattern } from "urlpattern-polyfill";
3
3
  import { KvKey, KvStore, KvStoreSetOptions, MemoryKvStore } from "../kv-DDdb1hMa.js";
4
- import "../docloader-BeCtcTOJ.js";
5
- import "../client-BQ4AQGKo.js";
6
- import "../vocab-By6mpzr-.js";
7
- import "../actor-B4TBtqRP.js";
8
- import "../http-D1uoUH4N.js";
9
- import "../owner-CEv_PfyK.js";
10
- import "../mod-cB3yFF_7.js";
11
- import "../lookup-C4hWkBxk.js";
12
- import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-CBKX7mkt.js";
4
+ import "../docloader-DtGccyuM.js";
5
+ import "../client-DK4qnXK0.js";
6
+ import "../vocab-B52eQhpN.js";
7
+ import "../actor-1rvS-py8.js";
8
+ import "../http-Cp-0z2Ja.js";
9
+ import "../owner-BK4eWKBp.js";
10
+ import "../mod-BqCBztub.js";
11
+ import "../lookup-m3U6KA0u.js";
12
+ import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-BhO5LP_t.js";
13
13
  import { InProcessMessageQueue, InProcessMessageQueueOptions, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, ParallelMessageQueue } from "../mq-DYKDDJmp.js";
14
14
  import "../mod-g0xFzAP9.js";
15
15
  export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, Context, CreateExponentialBackoffPolicyOptions, CreateFederationOptions, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable };