@fedify/fedify 0.12.0-dev.284 → 0.12.0-dev.286

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.
package/CHANGES.md CHANGED
@@ -71,6 +71,15 @@ To be released.
71
71
  - The type of `ActorKeyPairsDispatcher<TContextData>`'s first parameter
72
72
  became `Context` (was `TContextData`).
73
73
 
74
+ - The built-in document loaders now recognize JSON-LD context provided in
75
+ an HTTP `Link` header. [[#6]]
76
+
77
+ - The `fetchDocumentLoader()` function now recognizes the `Link` header
78
+ with the `http://www.w3.org/ns/json-ld#context` link relation.
79
+ - The `getAuthenticatedDocumentLoader()` function now returns a document
80
+ loader that recognizes the `Link` header with
81
+ the `http://www.w3.org/ns/json-ld#context` link relation.
82
+
74
83
  - Deprecated `Federation.sendActivity()` method. Use `Context.sendActivity()`
75
84
  method instead.
76
85
 
@@ -108,6 +117,7 @@ To be released.
108
117
 
109
118
  - `["fedify", "federation", "queue"]`
110
119
 
120
+ [#6]: https://github.com/dahlia/fedify/issues/6
111
121
  [#50]: https://github.com/dahlia/fedify/issues/50
112
122
  [#53]: https://github.com/dahlia/fedify/issues/53
113
123
  [#66]: https://github.com/dahlia/fedify/issues/66
package/README.md CHANGED
@@ -30,6 +30,7 @@ Currently, Fedify provides the following features out of the box:
30
30
  - [NodeInfo] protocol
31
31
  - Special touch for interoperability with Mastodon and few other popular
32
32
  fediverse software
33
+ - Integration with various web frameworks
33
34
  - CLI toolchain for testing and debugging
34
35
 
35
36
  If you want to know more about the project, please take a look at the following
package/esm/mod.js CHANGED
@@ -19,6 +19,7 @@
19
19
  * - [NodeInfo] protocol
20
20
  * - Special touch for interoperability with Mastodon and few other popular
21
21
  * fediverse software
22
+ * - Integration with various web frameworks
22
23
  * - CLI toolchain for testing and debugging
23
24
  *
24
25
  * If you want to know more about the project, please take a look at the
@@ -1,4 +1,5 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
+ import { HTTPHeaderLink } from "@hugoalh/http-header-link";
2
3
  import { getLogger } from "@logtape/logtape";
3
4
  import { signRequest } from "../sig/http.js";
4
5
  import { validateCryptoKey } from "../sig/key.js";
@@ -50,13 +51,25 @@ async function getRemoteDocument(url, response) {
50
51
  });
51
52
  throw new FetchError(documentUrl, `HTTP ${response.status}: ${documentUrl}`);
52
53
  }
54
+ const linkHeader = response.headers.get("Link");
55
+ let contextUrl = null;
56
+ if (linkHeader != null) {
57
+ const link = new HTTPHeaderLink(linkHeader);
58
+ const entries = link.getByRel("http://www.w3.org/ns/json-ld#context");
59
+ for (const [uri, params] of entries) {
60
+ if ("type" in params && params.type === "application/ld+json") {
61
+ contextUrl = uri;
62
+ break;
63
+ }
64
+ }
65
+ }
53
66
  logger.debug("Fetched document: {status} {url} {headers}", {
54
67
  status: response.status,
55
68
  url: documentUrl,
56
69
  headers: Object.fromEntries(response.headers.entries()),
57
70
  });
58
71
  return {
59
- contextUrl: null,
72
+ contextUrl,
60
73
  document: await response.json(),
61
74
  documentUrl,
62
75
  };
package/esm/x/astro.js CHANGED
@@ -5,6 +5,7 @@
5
5
  * @example src/middleware.ts
6
6
  * ``` typescript
7
7
  * import { defineMiddleware } from "astro:middleware";
8
+ * import { createFetchOptions } from "@fedify/fedify/x/astro";
8
9
  * import { federation } from "./federation"; // Import the `Federation` object
9
10
  *
10
11
  * export const onRequest = defineMiddleware((context, next) => {
@@ -56,6 +57,7 @@ export function createFetchOptions(_context, next) {
56
57
  * @example src/middleware.ts
57
58
  * ``` typescript
58
59
  * import type { MiddlewareHandler } from "astro";
60
+ * import { createMiddleware } from "@fedify/fedify/x/astro";
59
61
  * import { federation } from "./federation"; // Import the `Federation` object
60
62
  *
61
63
  * export const onRequest: MiddlewareHandler = createMiddleware(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/fedify",
3
- "version": "0.12.0-dev.284+5b347b26",
3
+ "version": "0.12.0-dev.286+6a3479e5",
4
4
  "description": "An ActivityPub server framework",
5
5
  "keywords": [
6
6
  "ActivityPub",
@@ -82,6 +82,7 @@
82
82
  "test": "node test_runner.js"
83
83
  },
84
84
  "dependencies": {
85
+ "@hugoalh/http-header-link": "^1.0.2",
85
86
  "@logtape/logtape": "^0.4.0",
86
87
  "@phensley/language-tag": "^1.8.1",
87
88
  "asn1js": "^3.0.5",
package/types/mod.d.ts CHANGED
@@ -19,6 +19,7 @@
19
19
  * - [NodeInfo] protocol
20
20
  * - Special touch for interoperability with Mastodon and few other popular
21
21
  * fediverse software
22
+ * - Integration with various web frameworks
22
23
  * - CLI toolchain for testing and debugging
23
24
  *
24
25
  * If you want to know more about the project, please take a look at the
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -6,8 +6,17 @@ import type { KvKey, KvStore } from "../federation/kv.js";
6
6
  * a {@link DocumentLoader}.
7
7
  */
8
8
  export interface RemoteDocument {
9
+ /**
10
+ * The URL of the context document.
11
+ */
9
12
  contextUrl: string | null;
13
+ /**
14
+ * The fetched JSON-LD document.
15
+ */
10
16
  document: unknown;
17
+ /**
18
+ * The URL of the fetched document.
19
+ */
11
20
  documentUrl: string;
12
21
  }
13
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"docloader.d.ts","sourceRoot":"","sources":["../../src/runtime/docloader.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ1D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,MAAM,kCAAkC,GAAG,CAC/C,QAAQ,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;CAAE,KACpD,cAAc,CAAC;AAEpB;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IAET;;;;;OAKG;gBACS,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAKhD;AAwDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;CAAE,GACtD,cAAc,CAuBhB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC1E;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,iBAAiB,GAC/C,cAAc,CA2ChB"}
1
+ {"version":3,"file":"docloader.d.ts","sourceRoot":"","sources":["../../src/runtime/docloader.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAG5C,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ1D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,MAAM,kCAAkC,GAAG,CAC/C,QAAQ,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;CAAE,KACpD,cAAc,CAAC;AAEpB;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IAET;;;;;OAKG;gBACS,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAKhD;AAoED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAA;CAAE,GACtD,cAAc,CAuBhB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC1E;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,iBAAiB,GAC/C,cAAc,CA2ChB"}
@@ -7,7 +7,12 @@
7
7
  * This module contains some utilities for integrating Fedify with
8
8
  * the [Astro] framework.
9
9
  *
10
+ * > [!NOTE]
11
+ * >
12
+ * > Astro integration requires [on-demand server rendering][1].
13
+ *
10
14
  * [Astro]: https://astro.build/
15
+ * [1]: https://docs.astro.build/en/guides/server-side-rendering/
11
16
  *
12
17
  * @module
13
18
  * @since 0.12.0
@@ -26,6 +31,7 @@ type MiddlewareHandler<TAstroContext extends AstroContext> = (context: TAstroCon
26
31
  * @example src/middleware.ts
27
32
  * ``` typescript
28
33
  * import { defineMiddleware } from "astro:middleware";
34
+ * import { createFetchOptions } from "@fedify/fedify/x/astro";
29
35
  * import { federation } from "./federation"; // Import the `Federation` object
30
36
  *
31
37
  * export const onRequest = defineMiddleware((context, next) => {
@@ -61,6 +67,7 @@ export type ContextDataFactory<TContextData, TAstroContext extends AstroContext>
61
67
  * @example src/middleware.ts
62
68
  * ``` typescript
63
69
  * import type { MiddlewareHandler } from "astro";
70
+ * import { createMiddleware } from "@fedify/fedify/x/astro";
64
71
  * import { federation } from "./federation"; // Import the `Federation` object
65
72
  *
66
73
  * export const onRequest: MiddlewareHandler = createMiddleware(
@@ -1 +1 @@
1
- {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../src/x/astro.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAErC,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,KAAK,cAAc,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;AAC7C,KAAK,cAAc,GAAG,CACpB,cAAc,CAAC,EAAE,cAAc,KAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvB,KAAK,iBAAiB,CAAC,aAAa,SAAS,YAAY,IAAI,CAC3D,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,cAAc,KACjB,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,SAAS,YAAY,EACnE,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,cAAc,GACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CA2BnD;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,CAC5B,YAAY,EACZ,aAAa,SAAS,YAAY,IAChC,CACF,OAAO,EAAE,aAAa,KACnB,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EACZ,aAAa,SAAS,YAAY,EAElC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EACpC,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,GAClE,iBAAiB,CAAC,aAAa,CAAC,CAQlC"}
1
+ {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../src/x/astro.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAErC,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,KAAK,cAAc,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;AAC7C,KAAK,cAAc,GAAG,CACpB,cAAc,CAAC,EAAE,cAAc,KAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvB,KAAK,iBAAiB,CAAC,aAAa,SAAS,YAAY,IAAI,CAC3D,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,cAAc,KACjB,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,SAAS,YAAY,EACnE,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,cAAc,GACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CA2BnD;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,CAC5B,YAAY,EACZ,aAAa,SAAS,YAAY,IAChC,CACF,OAAO,EAAE,aAAa,KACnB,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EACZ,aAAa,SAAS,YAAY,EAElC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EACpC,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,GAClE,iBAAiB,CAAC,aAAa,CAAC,CAQlC"}