@fedify/express 0.2.1 → 1.8.0-dev.936

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright 2024 Hong Minhee
3
+ Copyright 2024–2025 Hong Minhee
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
+ <!-- deno-fmt-ignore-file -->
2
+
1
3
  @fedify/express: Integrate Fedify with Express
2
4
  ==============================================
3
5
 
4
6
  [![npm][npm badge]][npm]
5
7
  [![Matrix][Matrix badge]][Matrix]
6
- [![Discord][Discord badge]][Discord]
7
8
  [![Follow @fedify@hollo.social][@fedify@hollo.social badge]][@fedify@hollo.social]
8
9
 
9
10
  This package provides a simple way to integrate [Fedify] with [Express].
@@ -13,7 +14,7 @@ The integration code looks like this:
13
14
  ~~~~ typescript
14
15
  import express from "express";
15
16
  import { integrateFederation } from "@fedify/express";
16
- import { federation } from "./federation"; // Your `Federation` instance
17
+ import { federation } from "./federation.ts"; // Your `Federation` instance
17
18
 
18
19
  export const app = express();
19
20
 
@@ -25,62 +26,8 @@ app.use(integrateFederation(federation, (req) => "context data goes here"));
25
26
  [npm]: https://www.npmjs.com/package/@fedify/express
26
27
  [npm badge]: https://img.shields.io/npm/v/@fedify/express?logo=npm
27
28
  [Matrix]: https://matrix.to/#/#fedify:matrix.org
28
- [Matrix badge]: https://img.shields.io/matrix/fedify%3Amatrix.org?logo=matrix
29
- [Discord]: https://discord.gg/bhtwpzURwd
30
- [Discord badge]: https://img.shields.io/discord/1295652627505217647?logo=discord&cacheSeconds=60
29
+ [Matrix badge]: https://img.shields.io/matrix/fedify%3Amatrix.org
31
30
  [@fedify@hollo.social badge]: https://fedi-badge.deno.dev/@fedify@hollo.social/followers.svg
32
31
  [@fedify@hollo.social]: https://hollo.social/@fedify
33
32
  [Fedify]: https://fedify.dev/
34
33
  [Express]: https://expressjs.com/
35
-
36
-
37
- Changelog
38
- ---------
39
-
40
- ### Version 0.2.1
41
-
42
- Released on May 11, 2025.
43
-
44
- - Fixed an invalid version constraint in the `peerDependencies`.
45
- [[#3] by Emelia Smith]
46
-
47
- [#3]: https://github.com/fedify-dev/express/pull/3
48
-
49
- ### Version 0.2.0
50
-
51
- Released on September 30, 2024.
52
-
53
- - Relaxed the requirement for the peer dependency `@fedify/fedify` to allow
54
- any version under 2.0.0.
55
-
56
- ### Version 0.1.4
57
-
58
- Released on August 31, 2024.
59
-
60
- - Fixed a bug where it throws `TypeError` with message <q>RequestInit: duplex
61
- option is required when sending a body.</q>
62
-
63
- ### Version 0.1.3
64
-
65
- Released on August 5, 2024.
66
-
67
- - Fixed the middleware to not fill `Request.body` when the request method is
68
- `GET` or `HEAD`.
69
- - Fixed the middleware to content-negotiate the response based on
70
- the `Accept` header.
71
-
72
- ### Version 0.1.2
73
-
74
- Released on August 5, 2024.
75
-
76
- - Fixed incorrectly configured export targets in *package.json*.
77
-
78
- ### Version 0.1.1
79
-
80
- Released on August 5, 2024.
81
-
82
- - Added missing entry points to the *package.json*.
83
-
84
- ### Version 0.1.0
85
-
86
- Initial release. Released on August 5, 2024.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { Federation } from '@fedify/fedify';
2
- import { Request, Response, NextFunction } from 'express';
1
+ import { Federation } from "@fedify/fedify";
2
+ import { NextFunction, Request, Response } from "express";
3
3
 
4
+ //#region index.d.ts
4
5
  type Middleware = (req: Request, res: Response, next: NextFunction) => void;
5
6
  type ContextDataFactory<TContextData> = (req: Request) => TContextData | Promise<TContextData>;
6
7
  declare function integrateFederation<TContextData>(federation: Federation<TContextData>, contextDataFactory: ContextDataFactory<TContextData>): Middleware;
7
-
8
- export { type ContextDataFactory, integrateFederation };
8
+ //#endregion
9
+ export { ContextDataFactory, integrateFederation };
package/dist/index.js CHANGED
@@ -1,80 +1,76 @@
1
- // src/index.ts
1
+ import { Buffer } from "node:buffer";
2
2
  import { Readable } from "node:stream";
3
+
4
+ //#region index.ts
3
5
  function integrateFederation(federation, contextDataFactory) {
4
- return (req, res, next) => {
5
- const request = fromERequest(req);
6
- const contextData = contextDataFactory(req);
7
- const contextDataPromise = contextData instanceof Promise ? contextData : Promise.resolve(contextData);
8
- contextDataPromise.then(async (contextData2) => {
9
- let notFound = false;
10
- let notAcceptable = false;
11
- const response = await federation.fetch(request, {
12
- contextData: contextData2,
13
- onNotFound: () => {
14
- notFound = true;
15
- next();
16
- return new Response("Not found", { status: 404 });
17
- },
18
- onNotAcceptable: () => {
19
- notAcceptable = true;
20
- next();
21
- return new Response("Not acceptable", {
22
- status: 406,
23
- headers: {
24
- "Content-Type": "text/plain",
25
- Vary: "Accept"
26
- }
27
- });
28
- }
29
- });
30
- if (notFound || notAcceptable && req.route != null) return;
31
- await setEResponse(res, response);
32
- res.end();
33
- res.status = () => res;
34
- res.send = () => res;
35
- res.end = () => res;
36
- res.json = () => res;
37
- res.removeHeader = () => res;
38
- res.setHeader = () => res;
39
- });
40
- };
6
+ return (req, res, next) => {
7
+ const request = fromERequest(req);
8
+ const contextData = contextDataFactory(req);
9
+ const contextDataPromise = contextData instanceof Promise ? contextData : Promise.resolve(contextData);
10
+ contextDataPromise.then(async (contextData$1) => {
11
+ let notFound = false;
12
+ let notAcceptable = false;
13
+ const response = await federation.fetch(request, {
14
+ contextData: contextData$1,
15
+ onNotFound: () => {
16
+ notFound = true;
17
+ next();
18
+ return new Response("Not found", { status: 404 });
19
+ },
20
+ onNotAcceptable: () => {
21
+ notAcceptable = true;
22
+ next();
23
+ return new Response("Not acceptable", {
24
+ status: 406,
25
+ headers: {
26
+ "Content-Type": "text/plain",
27
+ Vary: "Accept"
28
+ }
29
+ });
30
+ }
31
+ });
32
+ if (notFound || notAcceptable && req.route != null) return;
33
+ await setEResponse(res, response);
34
+ res.end();
35
+ res.status = () => res;
36
+ res.send = () => res;
37
+ res.end = () => res;
38
+ res.json = () => res;
39
+ res.removeHeader = () => res;
40
+ res.setHeader = () => res;
41
+ });
42
+ };
41
43
  }
42
44
  function fromERequest(req) {
43
- const url = `${req.protocol}://${req.header("Host") ?? req.hostname}${req.url}`;
44
- const headers = new Headers();
45
- for (const [key, value] of Object.entries(req.headers)) {
46
- if (Array.isArray(value)) {
47
- for (const v of value) headers.append(key, v);
48
- } else if (typeof value === "string") {
49
- headers.append(key, value);
50
- }
51
- }
52
- return new Request(url, {
53
- method: req.method,
54
- headers,
55
- duplex: "half",
56
- body: req.method === "GET" || req.method === "HEAD" ? void 0 : Readable.toWeb(req)
57
- });
45
+ const url = `${req.protocol}://${req.header("Host") ?? req.hostname}${req.url}`;
46
+ const headers = new Headers();
47
+ for (const [key, value] of Object.entries(req.headers)) if (Array.isArray(value)) for (const v of value) headers.append(key, v);
48
+ else if (typeof value === "string") headers.append(key, value);
49
+ return new Request(url, {
50
+ method: req.method,
51
+ headers,
52
+ duplex: "half",
53
+ body: req.method === "GET" || req.method === "HEAD" ? void 0 : Readable.toWeb(req)
54
+ });
58
55
  }
59
56
  function setEResponse(res, response) {
60
- res.status(response.status);
61
- response.headers.forEach((value, key) => res.setHeader(key, value));
62
- if (response.body == null) return Promise.resolve();
63
- const body = response.body;
64
- return new Promise((resolve) => {
65
- const reader = body.getReader();
66
- reader.read().then(function read({ done, value }) {
67
- if (done) {
68
- reader.releaseLock();
69
- resolve();
70
- return;
71
- }
72
- res.write(Buffer.from(value));
73
- reader.read().then(read);
74
- });
75
- });
57
+ res.status(response.status);
58
+ response.headers.forEach((value, key) => res.setHeader(key, value));
59
+ if (response.body == null) return Promise.resolve();
60
+ const body = response.body;
61
+ return new Promise((resolve) => {
62
+ const reader = body.getReader();
63
+ reader.read().then(function read({ done, value }) {
64
+ if (done) {
65
+ reader.releaseLock();
66
+ resolve();
67
+ return;
68
+ }
69
+ res.write(Buffer.from(value));
70
+ reader.read().then(read);
71
+ });
72
+ });
76
73
  }
77
- export {
78
- integrateFederation
79
- };
80
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gXCJub2RlOnN0cmVhbVwiO1xuaW1wb3J0IHR5cGUgeyBGZWRlcmF0aW9uIH0gZnJvbSBcIkBmZWRpZnkvZmVkaWZ5XCI7XG5pbXBvcnQgdHlwZSB7XG4gIFJlcXVlc3QgYXMgRVJlcXVlc3QsXG4gIFJlc3BvbnNlIGFzIEVSZXNwb25zZSxcbiAgTmV4dEZ1bmN0aW9uLFxufSBmcm9tIFwiZXhwcmVzc1wiO1xuXG50eXBlIE1pZGRsZXdhcmUgPSAocmVxOiBFUmVxdWVzdCwgcmVzOiBFUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgQ29udGV4dERhdGFGYWN0b3J5PFRDb250ZXh0RGF0YT4gPSAoXG4gIHJlcTogRVJlcXVlc3QsXG4pID0+IFRDb250ZXh0RGF0YSB8IFByb21pc2U8VENvbnRleHREYXRhPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGludGVncmF0ZUZlZGVyYXRpb248VENvbnRleHREYXRhPihcbiAgZmVkZXJhdGlvbjogRmVkZXJhdGlvbjxUQ29udGV4dERhdGE+LFxuICBjb250ZXh0RGF0YUZhY3Rvcnk6IENvbnRleHREYXRhRmFjdG9yeTxUQ29udGV4dERhdGE+LFxuKTogTWlkZGxld2FyZSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gZnJvbUVSZXF1ZXN0KHJlcSk7XG4gICAgY29uc3QgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YUZhY3RvcnkocmVxKTtcbiAgICBjb25zdCBjb250ZXh0RGF0YVByb21pc2UgPVxuICAgICAgY29udGV4dERhdGEgaW5zdGFuY2VvZiBQcm9taXNlXG4gICAgICAgID8gY29udGV4dERhdGFcbiAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoY29udGV4dERhdGEpO1xuICAgIGNvbnRleHREYXRhUHJvbWlzZS50aGVuKGFzeW5jIChjb250ZXh0RGF0YSkgPT4ge1xuICAgICAgbGV0IG5vdEZvdW5kID0gZmFsc2U7XG4gICAgICBsZXQgbm90QWNjZXB0YWJsZSA9IGZhbHNlO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZWRlcmF0aW9uLmZldGNoKHJlcXVlc3QsIHtcbiAgICAgICAgY29udGV4dERhdGEsXG4gICAgICAgIG9uTm90Rm91bmQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBJZiB0aGUgYGZlZGVyYXRpb25gIG9iamVjdCBmaW5kcyBhIHJlcXVlc3Qgbm90IHJlc3BvbnNpYmxlIGZvciBpdFxuICAgICAgICAgIC8vIChpLmUuLCBub3QgYSBmZWRlcmF0aW9uLXJlbGF0ZWQgcmVxdWVzdCksIGl0IHdpbGwgY2FsbCB0aGUgYG5leHRgXG4gICAgICAgICAgLy8gZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIEV4cHJlc3MgZnJhbWV3b3JrIHRvIGNvbnRpbnVlIHRoZSByZXF1ZXN0XG4gICAgICAgICAgLy8gaGFuZGxpbmcgYnkgdGhlIEV4cHJlc3M6XG4gICAgICAgICAgbm90Rm91bmQgPSB0cnVlO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiTm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDQgfSk7IC8vIHVudXNlZFxuICAgICAgICB9LFxuICAgICAgICBvbk5vdEFjY2VwdGFibGU6ICgpID0+IHtcbiAgICAgICAgICAvLyBTaW1pbGFyIHRvIGBvbk5vdEZvdW5kYCwgYnV0IHNsaWdodGx5IG1vcmUgdHJpY2t5LlxuICAgICAgICAgIC8vIFdoZW4gdGhlIGBmZWRlcmF0aW9uYCBvYmplY3QgZmluZHMgYSByZXF1ZXN0IG5vdCBhY2NlcHRhYmxlXG4gICAgICAgICAgLy8gdHlwZS13aXNlIChpLmUuLCBhIHVzZXItYWdlbnQgZG9lc24ndCB3YW50IEpTT04tTEQpLCBpdCB3aWxsIGNhbGxcbiAgICAgICAgICAvLyB0aGUgYG5leHRgIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBFeHByZXNzIGZyYW1ld29yayB0byBjb250aW51ZVxuICAgICAgICAgIC8vIGlmIGFueSByb3V0ZSBpcyBtYXRjaGVkLCBhbmQgb3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiBhIDQwNiBOb3RcbiAgICAgICAgICAvLyBBY2NlcHRhYmxlIHJlc3BvbnNlOlxuICAgICAgICAgIG5vdEFjY2VwdGFibGUgPSB0cnVlO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiTm90IGFjY2VwdGFibGVcIiwge1xuICAgICAgICAgICAgc3RhdHVzOiA0MDYsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiLFxuICAgICAgICAgICAgICBWYXJ5OiBcIkFjY2VwdFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgaWYgKG5vdEZvdW5kIHx8IChub3RBY2NlcHRhYmxlICYmIHJlcS5yb3V0ZSAhPSBudWxsKSkgcmV0dXJuO1xuICAgICAgYXdhaXQgc2V0RVJlc3BvbnNlKHJlcywgcmVzcG9uc2UpO1xuICAgICAgLy8gUHJldmVudCB0aGUgRXhwcmVzcyBmcmFtZXdvcmsgZnJvbSBzZW5kaW5nIHRoZSByZXNwb25zZSBhZ2FpbjpcbiAgICAgIHJlcy5lbmQoKTtcbiAgICAgIHJlcy5zdGF0dXMgPSAoKSA9PiByZXM7XG4gICAgICByZXMuc2VuZCA9ICgpID0+IHJlcztcbiAgICAgIHJlcy5lbmQgPSAoKSA9PiByZXM7XG4gICAgICByZXMuanNvbiA9ICgpID0+IHJlcztcbiAgICAgIHJlcy5yZW1vdmVIZWFkZXIgPSAoKSA9PiByZXM7XG4gICAgICByZXMuc2V0SGVhZGVyID0gKCkgPT4gcmVzO1xuICAgIH0pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBmcm9tRVJlcXVlc3QocmVxOiBFUmVxdWVzdCk6IFJlcXVlc3Qge1xuICBjb25zdCB1cmwgPSBgJHtyZXEucHJvdG9jb2x9Oi8vJHtyZXEuaGVhZGVyKFwiSG9zdFwiKSA/PyByZXEuaG9zdG5hbWV9JHtyZXEudXJsfWA7XG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXEuaGVhZGVycykpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgdiBvZiB2YWx1ZSkgaGVhZGVycy5hcHBlbmQoa2V5LCB2KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdCh1cmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVycyxcbiAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICAgIGJvZHk6XG4gICAgICByZXEubWV0aG9kID09PSBcIkdFVFwiIHx8IHJlcS5tZXRob2QgPT09IFwiSEVBRFwiXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogKFJlYWRhYmxlLnRvV2ViKHJlcSkpLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0RVJlc3BvbnNlKHJlczogRVJlc3BvbnNlLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmVzLnN0YXR1cyhyZXNwb25zZS5zdGF0dXMpO1xuICByZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHJlcy5zZXRIZWFkZXIoa2V5LCB2YWx1ZSkpO1xuICBpZiAocmVzcG9uc2UuYm9keSA9PSBudWxsKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIGNvbnN0IGJvZHkgPSByZXNwb25zZS5ib2R5O1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBib2R5LmdldFJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbiByZWFkKHsgZG9uZSwgdmFsdWUgfSkge1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzLndyaXRlKEJ1ZmZlci5mcm9tKHZhbHVlKSk7XG4gICAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVhZCk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVMsZ0JBQWdCO0FBY2xCLFNBQVMsb0JBQ2QsWUFDQSxvQkFDWTtBQUNaLFNBQU8sQ0FBQyxLQUFLLEtBQUssU0FBUztBQUN6QixVQUFNLFVBQVUsYUFBYSxHQUFHO0FBQ2hDLFVBQU0sY0FBYyxtQkFBbUIsR0FBRztBQUMxQyxVQUFNLHFCQUNKLHVCQUF1QixVQUNuQixjQUNBLFFBQVEsUUFBUSxXQUFXO0FBQ2pDLHVCQUFtQixLQUFLLE9BQU9BLGlCQUFnQjtBQUM3QyxVQUFJLFdBQVc7QUFDZixVQUFJLGdCQUFnQjtBQUNwQixZQUFNLFdBQVcsTUFBTSxXQUFXLE1BQU0sU0FBUztBQUFBLFFBQy9DLGFBQUFBO0FBQUEsUUFDQSxZQUFZLE1BQU07QUFLaEIscUJBQVc7QUFDWCxlQUFLO0FBQ0wsaUJBQU8sSUFBSSxTQUFTLGFBQWEsRUFBRSxRQUFRLElBQUksQ0FBQztBQUFBLFFBQ2xEO0FBQUEsUUFDQSxpQkFBaUIsTUFBTTtBQU9yQiwwQkFBZ0I7QUFDaEIsZUFBSztBQUNMLGlCQUFPLElBQUksU0FBUyxrQkFBa0I7QUFBQSxZQUNwQyxRQUFRO0FBQUEsWUFDUixTQUFTO0FBQUEsY0FDUCxnQkFBZ0I7QUFBQSxjQUNoQixNQUFNO0FBQUEsWUFDUjtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGLENBQUM7QUFDRCxVQUFJLFlBQWEsaUJBQWlCLElBQUksU0FBUyxLQUFPO0FBQ3RELFlBQU0sYUFBYSxLQUFLLFFBQVE7QUFFaEMsVUFBSSxJQUFJO0FBQ1IsVUFBSSxTQUFTLE1BQU07QUFDbkIsVUFBSSxPQUFPLE1BQU07QUFDakIsVUFBSSxNQUFNLE1BQU07QUFDaEIsVUFBSSxPQUFPLE1BQU07QUFDakIsVUFBSSxlQUFlLE1BQU07QUFDekIsVUFBSSxZQUFZLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyxhQUFhLEtBQXdCO0FBQzVDLFFBQU0sTUFBTSxHQUFHLElBQUksUUFBUSxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHO0FBQzdFLFFBQU0sVUFBVSxJQUFJLFFBQVE7QUFDNUIsYUFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxJQUFJLE9BQU8sR0FBRztBQUN0RCxRQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsaUJBQVcsS0FBSyxNQUFPLFNBQVEsT0FBTyxLQUFLLENBQUM7QUFBQSxJQUM5QyxXQUFXLE9BQU8sVUFBVSxVQUFVO0FBQ3BDLGNBQVEsT0FBTyxLQUFLLEtBQUs7QUFBQSxJQUMzQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLElBQUksUUFBUSxLQUFLO0FBQUEsSUFDdEIsUUFBUSxJQUFJO0FBQUEsSUFDWjtBQUFBLElBQ0EsUUFBUTtBQUFBLElBQ1IsTUFDRSxJQUFJLFdBQVcsU0FBUyxJQUFJLFdBQVcsU0FDbkMsU0FDQyxTQUFTLE1BQU0sR0FBRztBQUFBLEVBQzNCLENBQUM7QUFDSDtBQUVBLFNBQVMsYUFBYSxLQUFnQixVQUFtQztBQUN2RSxNQUFJLE9BQU8sU0FBUyxNQUFNO0FBQzFCLFdBQVMsUUFBUSxRQUFRLENBQUMsT0FBTyxRQUFRLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQztBQUNsRSxNQUFJLFNBQVMsUUFBUSxLQUFNLFFBQU8sUUFBUSxRQUFRO0FBQ2xELFFBQU0sT0FBTyxTQUFTO0FBQ3RCLFNBQU8sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM5QixVQUFNLFNBQVMsS0FBSyxVQUFVO0FBQzlCLFdBQU8sS0FBSyxFQUFFLEtBQUssU0FBUyxLQUFLLEVBQUUsTUFBTSxNQUFNLEdBQUc7QUFDaEQsVUFBSSxNQUFNO0FBQ1IsZUFBTyxZQUFZO0FBQ25CLGdCQUFRO0FBQ1I7QUFBQSxNQUNGO0FBQ0EsVUFBSSxNQUFNLE9BQU8sS0FBSyxLQUFLLENBQUM7QUFDNUIsYUFBTyxLQUFLLEVBQUUsS0FBSyxJQUFJO0FBQUEsSUFDekIsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJjb250ZXh0RGF0YSJdCn0K
74
+
75
+ //#endregion
76
+ export { integrateFederation };
package/package.json CHANGED
@@ -1,23 +1,29 @@
1
1
  {
2
2
  "name": "@fedify/express",
3
- "version": "0.2.1",
3
+ "version": "1.8.0-dev.936+bb1d6663",
4
4
  "description": "Integrate Fedify with Express",
5
- "keywords": ["Fedify", "Express", "Express.js"],
5
+ "keywords": [
6
+ "Fedify",
7
+ "Express",
8
+ "Express.js"
9
+ ],
6
10
  "author": {
7
11
  "name": "Hong Minhee",
8
12
  "email": "hong@minhee.org",
9
13
  "url": "https://hongminhee.org/"
10
14
  },
11
- "homepage": "https://github.com/fedify-dev/express",
15
+ "homepage": "https://fedify.dev/",
12
16
  "repository": {
13
17
  "type": "git",
14
- "url": "git+https://github.com/fedify-dev/express.git"
18
+ "url": "git+https://github.com/fedify-dev/fedify.git",
19
+ "directory": "express"
15
20
  },
16
21
  "license": "MIT",
17
22
  "bugs": {
18
- "url": "https://github.com/fedify-dev/express/issues"
23
+ "url": "https://github.com/fedify-dev/fedify/issues"
19
24
  },
20
25
  "funding": [
26
+ "https://opencollective.com/fedify",
21
27
  "https://github.com/sponsors/dahlia"
22
28
  ],
23
29
  "type": "module",
@@ -29,22 +35,25 @@
29
35
  "types": "./dist/index.d.ts",
30
36
  "default": "./dist/index.js"
31
37
  }
32
- }
33
- },
34
- "files": ["dist/"],
35
- "devDependencies": {
36
- "@biomejs/biome": "1.8.3",
37
- "@types/express": ">=4.0.0 <5",
38
- "@types/node": "^20.14.10",
39
- "express": ">= 4.0.0 < 5",
40
- "tsup": "^8.1.0",
41
- "typescript": "^5.0.0"
38
+ },
39
+ "./package.json": "./package.json"
42
40
  },
41
+ "files": [
42
+ "dist/",
43
+ "package.json"
44
+ ],
43
45
  "peerDependencies": {
44
- "@fedify/fedify": ">=0.12.0 <2"
46
+ "express": "^4.0.0",
47
+ "@fedify/fedify": "1.8.0-dev.936+bb1d6663"
48
+ },
49
+ "devDependencies": {
50
+ "@types/express": "^4.0.0",
51
+ "@types/node": "^22.16.0",
52
+ "tsdown": "^0.12.9",
53
+ "typescript": "^5.8.3"
45
54
  },
46
55
  "scripts": {
47
- "build": "tsup",
48
- "prepack": "tsup"
56
+ "build": "tsdown",
57
+ "prepublish": "tsdown"
49
58
  }
50
- }
59
+ }