@fedify/fedify 0.12.0-dev.307 → 0.12.0
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 +1 -10
- package/package.json +1 -7
- package/esm/x/astro.js +0 -86
- package/types/x/astro.d.ts +0 -90
- package/types/x/astro.d.ts.map +0 -1
package/CHANGES.md
CHANGED
@@ -6,7 +6,7 @@ Fedify changelog
|
|
6
6
|
Version 0.12.0
|
7
7
|
--------------
|
8
8
|
|
9
|
-
|
9
|
+
Released on July 24, 2024.
|
10
10
|
|
11
11
|
- The `fedify` command is now [available on npm][@fedify/cli]. [[#104]]
|
12
12
|
|
@@ -131,13 +131,6 @@ To be released.
|
|
131
131
|
the `getAuthenticatedDocumentLoader()` function, which can be used to
|
132
132
|
allow fetching private network addresses.
|
133
133
|
|
134
|
-
- Added `@fedify/fedify/x/astro` module for integrating with [Astro]
|
135
|
-
middleware. [[#50]]
|
136
|
-
|
137
|
-
- Added `createMiddleware()` function.
|
138
|
-
- Added `createFetchOptions()` function.
|
139
|
-
- Added `ContextDataFactory` type.
|
140
|
-
|
141
134
|
- Added `fedify init` subcommand. [[#105]]
|
142
135
|
|
143
136
|
- Added more log messages using the [LogTape] library. Currently the below
|
@@ -147,7 +140,6 @@ To be released.
|
|
147
140
|
|
148
141
|
[@fedify/cli]: https://www.npmjs.com/package/@fedify/cli
|
149
142
|
[#6]: https://github.com/dahlia/fedify/issues/6
|
150
|
-
[#50]: https://github.com/dahlia/fedify/issues/50
|
151
143
|
[#53]: https://github.com/dahlia/fedify/issues/53
|
152
144
|
[#66]: https://github.com/dahlia/fedify/issues/66
|
153
145
|
[#70]: https://github.com/dahlia/fedify/issues/70
|
@@ -157,7 +149,6 @@ To be released.
|
|
157
149
|
[#104]: https://github.com/dahlia/fedify/issues/104
|
158
150
|
[#105]: https://github.com/dahlia/fedify/issues/105
|
159
151
|
[#107]: https://github.com/dahlia/fedify/issues/107
|
160
|
-
[Astro]: https://astro.build/
|
161
152
|
|
162
153
|
|
163
154
|
Version 0.11.3
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fedify/fedify",
|
3
|
-
"version": "0.12.0
|
3
|
+
"version": "0.12.0",
|
4
4
|
"description": "An ActivityPub server framework",
|
5
5
|
"keywords": [
|
6
6
|
"ActivityPub",
|
@@ -65,12 +65,6 @@
|
|
65
65
|
"default": "./esm/webfinger/mod.js"
|
66
66
|
}
|
67
67
|
},
|
68
|
-
"./x/astro": {
|
69
|
-
"import": {
|
70
|
-
"types": "./types/x/astro.d.ts",
|
71
|
-
"default": "./esm/x/astro.js"
|
72
|
-
}
|
73
|
-
},
|
74
68
|
"./x/hono": {
|
75
69
|
"import": {
|
76
70
|
"types": "./types/x/hono.d.ts",
|
package/esm/x/astro.js
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Create options for the {@link Federation.fetch} method to integrate with
|
3
|
-
* Astro.
|
4
|
-
*
|
5
|
-
* @example src/middleware.ts
|
6
|
-
* ``` typescript
|
7
|
-
* import { defineMiddleware } from "astro:middleware";
|
8
|
-
* import { createFetchOptions } from "@fedify/fedify/x/astro";
|
9
|
-
* import { federation } from "./federation"; // Import the `Federation` object
|
10
|
-
*
|
11
|
-
* export const onRequest = defineMiddleware((context, next) => {
|
12
|
-
* return federation.fetch(context.request, {
|
13
|
-
* contextData: undefined,
|
14
|
-
* ...createFetchOptions(context, next),
|
15
|
-
* });
|
16
|
-
* });
|
17
|
-
* ```
|
18
|
-
*
|
19
|
-
* @typeParam TAstroContext A type of the Astro context.
|
20
|
-
* @param context An Astro context.
|
21
|
-
* @param next A function to call the next middleware.
|
22
|
-
* @returns Options for the {@link Federation.fetch} method.
|
23
|
-
* @since 0.12.0
|
24
|
-
*/
|
25
|
-
export function createFetchOptions(_context, next) {
|
26
|
-
return {
|
27
|
-
// If the `federation` object finds a request not responsible for it
|
28
|
-
// (i.e., not a federation-related request), it will call the `next`
|
29
|
-
// provided by the Astro framework to continue the request handling
|
30
|
-
// by Astro:
|
31
|
-
onNotFound: next,
|
32
|
-
// Similar to `onNotFound`, but slightly more tricky one.
|
33
|
-
// When the `federation` object finds a request not acceptable type-wise
|
34
|
-
// (i.e., a user-agent doesn't want JSON-LD), it will call the `next`
|
35
|
-
// provided by the Astro framework so that it renders HTML if there's some
|
36
|
-
// page. Otherwise, it will simply return a 406 Not Acceptable response.
|
37
|
-
// This kind of trick enables the Fedify and Astro to share the same routes
|
38
|
-
// and they do content negotiation depending on `Accept` header:
|
39
|
-
async onNotAcceptable(_request) {
|
40
|
-
const response = await next();
|
41
|
-
if (response.status !== 404)
|
42
|
-
return response;
|
43
|
-
return new Response("Not acceptable", {
|
44
|
-
status: 406,
|
45
|
-
headers: {
|
46
|
-
"Content-Type": "text/plain",
|
47
|
-
Vary: "Accept",
|
48
|
-
},
|
49
|
-
});
|
50
|
-
},
|
51
|
-
};
|
52
|
-
}
|
53
|
-
/**
|
54
|
-
* Create an Astro middleware handler to integrate with the {@link Federation}
|
55
|
-
* object.
|
56
|
-
*
|
57
|
-
* @example src/middleware.ts
|
58
|
-
* ``` typescript
|
59
|
-
* import type { MiddlewareHandler } from "astro";
|
60
|
-
* import { createMiddleware } from "@fedify/fedify/x/astro";
|
61
|
-
* import { federation } from "./federation"; // Import the `Federation` object
|
62
|
-
*
|
63
|
-
* export const onRequest: MiddlewareHandler = createMiddleware(
|
64
|
-
* federation,
|
65
|
-
* (astroContext) => "context data",
|
66
|
-
* );
|
67
|
-
* ```
|
68
|
-
*
|
69
|
-
* @typeParam TContextData A type of the context data for the {@link Federation}
|
70
|
-
* object.
|
71
|
-
* @typeParam TAstroContext A type of the Astro context.
|
72
|
-
* @param federation A {@link Federation} object to integrate with Astro.
|
73
|
-
* @param contextDataFactory A factory function to create a context data for the
|
74
|
-
* {@link Federation} object.
|
75
|
-
* @returns An Astro middleware handler.
|
76
|
-
* @since 0.12.0
|
77
|
-
*/
|
78
|
-
export function createMiddleware(federation, contextDataFactory) {
|
79
|
-
return async (context, next) => {
|
80
|
-
const contextData = await contextDataFactory(context);
|
81
|
-
return await federation.fetch(context.request, {
|
82
|
-
contextData,
|
83
|
-
...createFetchOptions(context, next),
|
84
|
-
});
|
85
|
-
};
|
86
|
-
}
|
package/types/x/astro.d.ts
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
/// <reference types="node" />
|
2
|
-
/// <reference types="node" />
|
3
|
-
/**
|
4
|
-
* Fedify with Astro
|
5
|
-
* =================
|
6
|
-
*
|
7
|
-
* This module contains some utilities for integrating Fedify with
|
8
|
-
* the [Astro] framework.
|
9
|
-
*
|
10
|
-
* > [!NOTE]
|
11
|
-
* >
|
12
|
-
* > Astro integration requires [on-demand server rendering][1].
|
13
|
-
*
|
14
|
-
* [Astro]: https://astro.build/
|
15
|
-
* [1]: https://docs.astro.build/en/guides/server-side-rendering/
|
16
|
-
*
|
17
|
-
* @module
|
18
|
-
* @since 0.12.0
|
19
|
-
*/
|
20
|
-
import type { Federation, FederationFetchOptions } from "../federation/middleware.js";
|
21
|
-
interface AstroContext {
|
22
|
-
request: Request;
|
23
|
-
}
|
24
|
-
type RewritePayload = string | URL | Request;
|
25
|
-
type MiddlewareNext = (rewritePayload?: RewritePayload) => Promise<Response>;
|
26
|
-
type MiddlewareHandler<TAstroContext extends AstroContext> = (context: TAstroContext, next: MiddlewareNext) => Promise<Response> | Response | Promise<void> | void;
|
27
|
-
/**
|
28
|
-
* Create options for the {@link Federation.fetch} method to integrate with
|
29
|
-
* Astro.
|
30
|
-
*
|
31
|
-
* @example src/middleware.ts
|
32
|
-
* ``` typescript
|
33
|
-
* import { defineMiddleware } from "astro:middleware";
|
34
|
-
* import { createFetchOptions } from "@fedify/fedify/x/astro";
|
35
|
-
* import { federation } from "./federation"; // Import the `Federation` object
|
36
|
-
*
|
37
|
-
* export const onRequest = defineMiddleware((context, next) => {
|
38
|
-
* return federation.fetch(context.request, {
|
39
|
-
* contextData: undefined,
|
40
|
-
* ...createFetchOptions(context, next),
|
41
|
-
* });
|
42
|
-
* });
|
43
|
-
* ```
|
44
|
-
*
|
45
|
-
* @typeParam TAstroContext A type of the Astro context.
|
46
|
-
* @param context An Astro context.
|
47
|
-
* @param next A function to call the next middleware.
|
48
|
-
* @returns Options for the {@link Federation.fetch} method.
|
49
|
-
* @since 0.12.0
|
50
|
-
*/
|
51
|
-
export declare function createFetchOptions<TAstroContext extends AstroContext>(_context: TAstroContext, next: MiddlewareNext): Omit<FederationFetchOptions<void>, "contextData">;
|
52
|
-
/**
|
53
|
-
* The factory function to create a context data for
|
54
|
-
* the {@link Federation.fetch}.
|
55
|
-
*
|
56
|
-
* @typeParam TContextData A type of the context data.
|
57
|
-
* @typeParam TAstroContext A type of the Astro context.
|
58
|
-
* @param context An Astro context.
|
59
|
-
* @returns The context data for the {@link Federation.fetch}.
|
60
|
-
* @since 0.12.0
|
61
|
-
*/
|
62
|
-
export type ContextDataFactory<TContextData, TAstroContext extends AstroContext> = (context: TAstroContext) => TContextData | Promise<TContextData>;
|
63
|
-
/**
|
64
|
-
* Create an Astro middleware handler to integrate with the {@link Federation}
|
65
|
-
* object.
|
66
|
-
*
|
67
|
-
* @example src/middleware.ts
|
68
|
-
* ``` typescript
|
69
|
-
* import type { MiddlewareHandler } from "astro";
|
70
|
-
* import { createMiddleware } from "@fedify/fedify/x/astro";
|
71
|
-
* import { federation } from "./federation"; // Import the `Federation` object
|
72
|
-
*
|
73
|
-
* export const onRequest: MiddlewareHandler = createMiddleware(
|
74
|
-
* federation,
|
75
|
-
* (astroContext) => "context data",
|
76
|
-
* );
|
77
|
-
* ```
|
78
|
-
*
|
79
|
-
* @typeParam TContextData A type of the context data for the {@link Federation}
|
80
|
-
* object.
|
81
|
-
* @typeParam TAstroContext A type of the Astro context.
|
82
|
-
* @param federation A {@link Federation} object to integrate with Astro.
|
83
|
-
* @param contextDataFactory A factory function to create a context data for the
|
84
|
-
* {@link Federation} object.
|
85
|
-
* @returns An Astro middleware handler.
|
86
|
-
* @since 0.12.0
|
87
|
-
*/
|
88
|
-
export declare function createMiddleware<TContextData, TAstroContext extends AstroContext>(federation: Federation<TContextData>, contextDataFactory: ContextDataFactory<TContextData, TAstroContext>): MiddlewareHandler<TAstroContext>;
|
89
|
-
export {};
|
90
|
-
//# sourceMappingURL=astro.d.ts.map
|
package/types/x/astro.d.ts.map
DELETED
@@ -1 +0,0 @@
|
|
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"}
|