express-fastify-runtime 0.1.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.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +326 -0
  3. package/changelog/README.md +5 -0
  4. package/changelog/log-2025-02-07.md +10 -0
  5. package/changelog/log-2026-06-25.md +151 -0
  6. package/dist/app/ExpressLikeApp.d.ts +9 -0
  7. package/dist/app/ExpressLikeApp.d.ts.map +1 -0
  8. package/dist/app/ExpressLikeApp.js +64 -0
  9. package/dist/app/ExpressLikeApp.js.map +1 -0
  10. package/dist/app/RouteStore.d.ts +17 -0
  11. package/dist/app/RouteStore.d.ts.map +1 -0
  12. package/dist/app/RouteStore.js +43 -0
  13. package/dist/app/RouteStore.js.map +1 -0
  14. package/dist/app/classify.d.ts +8 -0
  15. package/dist/app/classify.d.ts.map +1 -0
  16. package/dist/app/classify.js +25 -0
  17. package/dist/app/classify.js.map +1 -0
  18. package/dist/app/compile.d.ts +25 -0
  19. package/dist/app/compile.d.ts.map +1 -0
  20. package/dist/app/compile.js +195 -0
  21. package/dist/app/compile.js.map +1 -0
  22. package/dist/app/flattenRouter.d.ts +51 -0
  23. package/dist/app/flattenRouter.d.ts.map +1 -0
  24. package/dist/app/flattenRouter.js +126 -0
  25. package/dist/app/flattenRouter.js.map +1 -0
  26. package/dist/app/introspectExpress.d.ts +29 -0
  27. package/dist/app/introspectExpress.d.ts.map +1 -0
  28. package/dist/app/introspectExpress.js +60 -0
  29. package/dist/app/introspectExpress.js.map +1 -0
  30. package/dist/examples/auth.d.ts +6 -0
  31. package/dist/examples/auth.d.ts.map +1 -0
  32. package/dist/examples/auth.js +26 -0
  33. package/dist/examples/auth.js.map +1 -0
  34. package/dist/examples/logging.d.ts +6 -0
  35. package/dist/examples/logging.d.ts.map +1 -0
  36. package/dist/examples/logging.js +25 -0
  37. package/dist/examples/logging.js.map +1 -0
  38. package/dist/examples/uploads.d.ts +6 -0
  39. package/dist/examples/uploads.d.ts.map +1 -0
  40. package/dist/examples/uploads.js +21 -0
  41. package/dist/examples/uploads.js.map +1 -0
  42. package/dist/express/engine.d.ts +6 -0
  43. package/dist/express/engine.d.ts.map +1 -0
  44. package/dist/express/engine.js +14 -0
  45. package/dist/express/engine.js.map +1 -0
  46. package/dist/express/middleware.d.ts +15 -0
  47. package/dist/express/middleware.d.ts.map +1 -0
  48. package/dist/express/middleware.js +32 -0
  49. package/dist/express/middleware.js.map +1 -0
  50. package/dist/express/mount.d.ts +35 -0
  51. package/dist/express/mount.d.ts.map +1 -0
  52. package/dist/express/mount.js +78 -0
  53. package/dist/express/mount.js.map +1 -0
  54. package/dist/fastify/adapters/middleware.d.ts +8 -0
  55. package/dist/fastify/adapters/middleware.d.ts.map +1 -0
  56. package/dist/fastify/adapters/middleware.js +29 -0
  57. package/dist/fastify/adapters/middleware.js.map +1 -0
  58. package/dist/fastify/adapters/request.d.ts +19 -0
  59. package/dist/fastify/adapters/request.d.ts.map +1 -0
  60. package/dist/fastify/adapters/request.js +258 -0
  61. package/dist/fastify/adapters/request.js.map +1 -0
  62. package/dist/fastify/adapters/response.d.ts +19 -0
  63. package/dist/fastify/adapters/response.d.ts.map +1 -0
  64. package/dist/fastify/adapters/response.js +667 -0
  65. package/dist/fastify/adapters/response.js.map +1 -0
  66. package/dist/fastify/register.d.ts +12 -0
  67. package/dist/fastify/register.d.ts.map +1 -0
  68. package/dist/fastify/register.js +15 -0
  69. package/dist/fastify/register.js.map +1 -0
  70. package/dist/index.d.ts +13 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +18 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/runtime/decorators.d.ts +7 -0
  75. package/dist/runtime/decorators.d.ts.map +1 -0
  76. package/dist/runtime/decorators.js +17 -0
  77. package/dist/runtime/decorators.js.map +1 -0
  78. package/dist/runtime/errorHandler.d.ts +13 -0
  79. package/dist/runtime/errorHandler.d.ts.map +1 -0
  80. package/dist/runtime/errorHandler.js +95 -0
  81. package/dist/runtime/errorHandler.js.map +1 -0
  82. package/dist/runtime/expressLane.d.ts +40 -0
  83. package/dist/runtime/expressLane.d.ts.map +1 -0
  84. package/dist/runtime/expressLane.js +71 -0
  85. package/dist/runtime/expressLane.js.map +1 -0
  86. package/dist/runtime/fast.d.ts +43 -0
  87. package/dist/runtime/fast.d.ts.map +1 -0
  88. package/dist/runtime/fast.js +150 -0
  89. package/dist/runtime/fast.js.map +1 -0
  90. package/dist/runtime/lifecycle.d.ts +10 -0
  91. package/dist/runtime/lifecycle.d.ts.map +1 -0
  92. package/dist/runtime/lifecycle.js +152 -0
  93. package/dist/runtime/lifecycle.js.map +1 -0
  94. package/dist/runtime/populateExpress.d.ts +7 -0
  95. package/dist/runtime/populateExpress.d.ts.map +1 -0
  96. package/dist/runtime/populateExpress.js +27 -0
  97. package/dist/runtime/populateExpress.js.map +1 -0
  98. package/dist/types/express.d.ts +97 -0
  99. package/dist/types/express.d.ts.map +1 -0
  100. package/dist/types/express.js +12 -0
  101. package/dist/types/express.js.map +1 -0
  102. package/dist/types/internal.d.ts +60 -0
  103. package/dist/types/internal.d.ts.map +1 -0
  104. package/dist/types/internal.js +7 -0
  105. package/dist/types/internal.js.map +1 -0
  106. package/dist/utils/assert.d.ts +6 -0
  107. package/dist/utils/assert.d.ts.map +1 -0
  108. package/dist/utils/assert.js +17 -0
  109. package/dist/utils/assert.js.map +1 -0
  110. package/dist/utils/detect.d.ts +14 -0
  111. package/dist/utils/detect.d.ts.map +1 -0
  112. package/dist/utils/detect.js +64 -0
  113. package/dist/utils/detect.js.map +1 -0
  114. package/dist/utils/maxListeners.d.ts +28 -0
  115. package/dist/utils/maxListeners.d.ts.map +1 -0
  116. package/dist/utils/maxListeners.js +50 -0
  117. package/dist/utils/maxListeners.js.map +1 -0
  118. package/dist/utils/patchRouterLayer.d.ts +12 -0
  119. package/dist/utils/patchRouterLayer.d.ts.map +1 -0
  120. package/dist/utils/patchRouterLayer.js +96 -0
  121. package/dist/utils/patchRouterLayer.js.map +1 -0
  122. package/dist/utils/path.d.ts +6 -0
  123. package/dist/utils/path.d.ts.map +1 -0
  124. package/dist/utils/path.js +23 -0
  125. package/dist/utils/path.js.map +1 -0
  126. package/dist/utils/runtimeLogger.d.ts +15 -0
  127. package/dist/utils/runtimeLogger.d.ts.map +1 -0
  128. package/dist/utils/runtimeLogger.js +28 -0
  129. package/dist/utils/runtimeLogger.js.map +1 -0
  130. package/dist/utils/unwrap.d.ts +12 -0
  131. package/dist/utils/unwrap.d.ts.map +1 -0
  132. package/dist/utils/unwrap.js +24 -0
  133. package/dist/utils/unwrap.js.map +1 -0
  134. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/fastify/adapters/response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Registers the Fastify instance with compiled routes and Express fallback.
3
+ */
4
+ import type { FastifyInstance } from 'fastify';
5
+ import type { ClassifiedRoute } from '../types/internal';
6
+ import type { ExpressRequest, ExpressResponse, NextFunction } from '../types/express';
7
+ export interface RegisterCompiledRoutesOptions {
8
+ /** When true, log that the request is handled on the Fastify lane. */
9
+ diagnostics?: boolean;
10
+ }
11
+ export declare function registerCompiledRoutes(fastify: FastifyInstance, classified: ClassifiedRoute[], runMiddleware: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void | Promise<void>, options?: RegisterCompiledRoutesOptions): void;
12
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKtF,MAAM,WAAW,6BAA6B;IAC5C,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,eAAe,EAAE,EAC7B,aAAa,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACtG,OAAO,CAAC,EAAE,6BAA6B,GACtC,IAAI,CAIN"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * Registers the Fastify instance with compiled routes and Express fallback.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerCompiledRoutes = registerCompiledRoutes;
7
+ const request_1 = require("./adapters/request");
8
+ const response_1 = require("./adapters/response");
9
+ const compile_1 = require("../app/compile");
10
+ function registerCompiledRoutes(fastify, classified, runMiddleware, options) {
11
+ const adaptRequest = (0, request_1.createRequestAdapter)();
12
+ const adaptResponse = (0, response_1.createResponseAdapter)();
13
+ (0, compile_1.registerFastifyRoutes)(fastify, classified, adaptRequest, adaptResponse, runMiddleware, options);
14
+ }
15
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAcH,wDASC;AAlBD,gDAA0D;AAC1D,kDAA4D;AAC5D,4CAAuD;AAOvD,SAAgB,sBAAsB,CACpC,OAAwB,EACxB,UAA6B,EAC7B,aAAsG,EACtG,OAAuC;IAEvC,MAAM,YAAY,GAAG,IAAA,8BAAoB,GAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAA,gCAAqB,GAAE,CAAC;IAC9C,IAAA,+BAAqB,EAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAClG,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * express-fastify-runtime
3
+ * Run existing Express apps on Fastify safely, faster, and without code changes.
4
+ */
5
+ import "./utils/patchRouterLayer";
6
+ export { createApp } from "./runtime/lifecycle";
7
+ export type { CreateAppOptions } from "./runtime/lifecycle";
8
+ export { fast } from "./runtime/fast";
9
+ export type { FastOps, FastOpsExperimental, ExpressApp } from "./runtime/fast";
10
+ export { expressLane, ExpressLane, EXPRESS_LANE, isExpressLaneHandler, } from "./runtime/expressLane";
11
+ export type { ServerLike, UseHandler } from "./types/internal";
12
+ export type { ExpressRequest, ExpressResponse, NextFunction, ExpressMiddleware, ExpressHandler, CookieOptions, } from "./types/express";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * express-fastify-runtime
4
+ * Run existing Express apps on Fastify safely, faster, and without code changes.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isExpressLaneHandler = exports.EXPRESS_LANE = exports.ExpressLane = exports.expressLane = exports.fast = exports.createApp = void 0;
8
+ require("./utils/patchRouterLayer");
9
+ var lifecycle_1 = require("./runtime/lifecycle");
10
+ Object.defineProperty(exports, "createApp", { enumerable: true, get: function () { return lifecycle_1.createApp; } });
11
+ var fast_1 = require("./runtime/fast");
12
+ Object.defineProperty(exports, "fast", { enumerable: true, get: function () { return fast_1.fast; } });
13
+ var expressLane_1 = require("./runtime/expressLane");
14
+ Object.defineProperty(exports, "expressLane", { enumerable: true, get: function () { return expressLane_1.expressLane; } });
15
+ Object.defineProperty(exports, "ExpressLane", { enumerable: true, get: function () { return expressLane_1.ExpressLane; } });
16
+ Object.defineProperty(exports, "EXPRESS_LANE", { enumerable: true, get: function () { return expressLane_1.EXPRESS_LANE; } });
17
+ Object.defineProperty(exports, "isExpressLaneHandler", { enumerable: true, get: function () { return expressLane_1.isExpressLaneHandler; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oCAAkC;AAElC,iDAAgD;AAAvC,sGAAA,SAAS,OAAA;AAElB,uCAAsC;AAA7B,4FAAA,IAAI,OAAA;AAEb,qDAK+B;AAJ7B,0GAAA,WAAW,OAAA;AACX,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AACZ,mHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * req/res decoration (e.g. ensure .query, .params, .body exist).
3
+ */
4
+ import type { ExpressRequest, ExpressResponse } from '../types/express';
5
+ export declare function decorateRequest(req: ExpressRequest): void;
6
+ export declare function decorateResponse(_res: ExpressResponse): void;
7
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/runtime/decorators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAGzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAE5D"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * req/res decoration (e.g. ensure .query, .params, .body exist).
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.decorateRequest = decorateRequest;
7
+ exports.decorateResponse = decorateResponse;
8
+ function decorateRequest(req) {
9
+ if (!req.query)
10
+ req.query = {};
11
+ if (!req.params)
12
+ req.params = {};
13
+ }
14
+ function decorateResponse(_res) {
15
+ // res.locals supported via adapter (per-request object)
16
+ }
17
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/runtime/decorators.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,0CAGC;AAED,4CAEC;AAPD,SAAgB,eAAe,CAAC,GAAmB;IACjD,IAAI,CAAC,GAAG,CAAC,KAAK;QAAG,GAAW,CAAC,KAAK,GAAG,EAAE,CAAC;IACxC,IAAI,CAAC,GAAG,CAAC,MAAM;QAAG,GAAW,CAAC,MAAM,GAAG,EAAE,CAAC;AAC5C,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAqB;IACpD,wDAAwD;AAC1D,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Express-style error bridge. Global error middleware → Fastify error handler.
3
+ */
4
+ import type { FastifyError, FastifyRequest, FastifyReply } from 'fastify';
5
+ import type { ExpressRequest, ExpressResponse, ExpressErrorMiddleware } from '../types/express';
6
+ import type { RouteEntry } from '../types/internal';
7
+ /**
8
+ * Find the first Express 4-arg error middleware among route-store entries (for createApp()).
9
+ * Mirrors getExpressErrorMiddleware() which does the same for an introspected Express app.
10
+ */
11
+ export declare function findErrorMiddleware(entries: readonly RouteEntry[]): ExpressErrorMiddleware | null;
12
+ export declare function wrapErrorHandler(errorMiddleware: ExpressErrorMiddleware, adaptRequest: (r: FastifyRequest) => ExpressRequest, _adaptResponse: (r: FastifyReply, req: FastifyRequest) => ExpressResponse): (err: FastifyError, request: FastifyRequest, reply: FastifyReply) => Promise<void>;
13
+ //# sourceMappingURL=errorHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/runtime/errorHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,UAAU,EAAE,GAC7B,sBAAsB,GAAG,IAAI,CAU/B;AAqCD,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,sBAAsB,EACvC,YAAY,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,cAAc,EACnD,cAAc,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,KAAK,eAAe,IAE3D,KAAK,YAAY,EAAE,SAAS,cAAc,EAAE,OAAO,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CA0B9F"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ /**
3
+ * Express-style error bridge. Global error middleware → Fastify error handler.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.findErrorMiddleware = findErrorMiddleware;
7
+ exports.wrapErrorHandler = wrapErrorHandler;
8
+ /**
9
+ * Find the first Express 4-arg error middleware among route-store entries (for createApp()).
10
+ * Mirrors getExpressErrorMiddleware() which does the same for an introspected Express app.
11
+ */
12
+ function findErrorMiddleware(entries) {
13
+ for (const e of entries) {
14
+ if (e.type !== 'middleware')
15
+ continue;
16
+ for (const h of e.handlers) {
17
+ if (typeof h === 'function' && h.length === 4) {
18
+ return h;
19
+ }
20
+ }
21
+ }
22
+ return null;
23
+ }
24
+ /** Build Express-like res for the error handler (status, send, json, set, setHeader, locals, headersSent). */
25
+ function errorHandlerRes(reply) {
26
+ const locals = {};
27
+ const res = {
28
+ locals,
29
+ get headersSent() {
30
+ return reply.raw.headersSent;
31
+ },
32
+ status(code) {
33
+ reply.raw.statusCode = code;
34
+ return res;
35
+ },
36
+ send(body) {
37
+ if (body !== undefined)
38
+ reply.send(body);
39
+ else
40
+ reply.raw.end();
41
+ return res;
42
+ },
43
+ json(body) {
44
+ reply.type('application/json').send(body);
45
+ return res;
46
+ },
47
+ set(field, value) {
48
+ const raw = reply.raw;
49
+ if (typeof field === 'string')
50
+ raw.setHeader(field, value);
51
+ else
52
+ for (const [k, v] of Object.entries(field))
53
+ raw.setHeader(k, v);
54
+ return res;
55
+ },
56
+ setHeader(name, value) {
57
+ reply.raw.setHeader(name, value);
58
+ return res;
59
+ },
60
+ };
61
+ return res;
62
+ }
63
+ function wrapErrorHandler(errorMiddleware, adaptRequest, _adaptResponse) {
64
+ return async (err, request, reply) => {
65
+ const originalErr = err;
66
+ const req = adaptRequest(request);
67
+ const res = errorHandlerRes(reply);
68
+ try {
69
+ await new Promise((resolve, reject) => {
70
+ const next = (e) => {
71
+ if (e)
72
+ reject(e);
73
+ else
74
+ resolve();
75
+ };
76
+ const result = errorMiddleware(err, req, res, next);
77
+ const p = result;
78
+ if (p != null && typeof p.then === 'function') {
79
+ p.then(() => resolve(), reject);
80
+ }
81
+ else {
82
+ resolve();
83
+ }
84
+ });
85
+ }
86
+ catch (_e) {
87
+ if (!reply.sent) {
88
+ reply.code(500).send({ error: originalErr.message });
89
+ }
90
+ // Do not rethrow: client already got the intended response; rethrowing would trigger
91
+ // Fastify to call us again with the thrown error (e.g. TypeError) and send that to the client.
92
+ }
93
+ };
94
+ }
95
+ //# sourceMappingURL=errorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/runtime/errorHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Explicit "Express lane" marker: routes or handlers wrapped with expressLane(fn)
3
+ * or decorated with @ExpressLane() are not compiled to the Fastify lane and
4
+ * always run on the Express lane (notFoundHandler → real Express app).
5
+ *
6
+ * Use when a handler needs Express-only APIs (e.g. res.render, res.sendFile)
7
+ * so you don't have to rely on RegExp paths.
8
+ */
9
+ import type { ExpressMiddleware, ExpressErrorMiddleware } from '../types/express';
10
+ /** Symbol attached to handlers that must run on the Express lane. */
11
+ export declare const EXPRESS_LANE: unique symbol;
12
+ /** Check if a handler was marked for the Express lane. */
13
+ export declare function isExpressLaneHandler(fn: unknown): boolean;
14
+ /**
15
+ * Wrap a handler so it runs on the Express lane only (not compiled to Fastify).
16
+ * Use for routes that need res.render, res.sendFile, app.set('view engine'), etc.
17
+ *
18
+ * @example
19
+ * app.get('/page', expressLane((req, res) => res.render('index', { title: 'Hello' })));
20
+ */
21
+ export declare function expressLane<T extends ExpressMiddleware | ExpressErrorMiddleware>(fn: T): T;
22
+ /**
23
+ * Class method decorator: mark the handler to run on the Express lane only.
24
+ * Use as @ExpressLane or @ExpressLane() (both work).
25
+ * Requires "experimentalDecorators": true (and optionally "emitDecoratorMetadata") in tsconfig.
26
+ *
27
+ * Note: Decorators are only valid on class members. For standalone functions, use
28
+ * expressLane(fn) when registering the route: router.get('/path', expressLane(myHandler)).
29
+ *
30
+ * @example
31
+ * class PageController {
32
+ * @ExpressLane
33
+ * page(req: Request, res: Response) {
34
+ * res.render('index', { title: 'Hello' });
35
+ * }
36
+ * }
37
+ * app.get('/page', (req, res, next) => new PageController().page(req, res, next));
38
+ */
39
+ export declare function ExpressLane(targetOrNil?: unknown, propertyKeyOrNil?: string, descriptorOrNil?: PropertyDescriptor): PropertyDescriptor | ((_t: unknown, _k: string, d: PropertyDescriptor) => PropertyDescriptor);
40
+ //# sourceMappingURL=expressLane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressLane.d.ts","sourceRoot":"","sources":["../../src/runtime/expressLane.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAElF,qEAAqE;AACrE,eAAO,MAAM,YAAY,eAAoD,CAAC;AAE9E,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,iBAAiB,GAAG,sBAAsB,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAM1F;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,WAAW,CAAC,EAAE,OAAO,EACrB,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,kBAAkB,GACnC,kBAAkB,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,KAAK,kBAAkB,CAAC,CAW/F"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Explicit "Express lane" marker: routes or handlers wrapped with expressLane(fn)
4
+ * or decorated with @ExpressLane() are not compiled to the Fastify lane and
5
+ * always run on the Express lane (notFoundHandler → real Express app).
6
+ *
7
+ * Use when a handler needs Express-only APIs (e.g. res.render, res.sendFile)
8
+ * so you don't have to rely on RegExp paths.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.EXPRESS_LANE = void 0;
12
+ exports.isExpressLaneHandler = isExpressLaneHandler;
13
+ exports.expressLane = expressLane;
14
+ exports.ExpressLane = ExpressLane;
15
+ /** Symbol attached to handlers that must run on the Express lane. */
16
+ exports.EXPRESS_LANE = Symbol.for('express-fastify-runtime.expressLane');
17
+ /** Check if a handler was marked for the Express lane. */
18
+ function isExpressLaneHandler(fn) {
19
+ return typeof fn === 'function' && fn[exports.EXPRESS_LANE] === true;
20
+ }
21
+ /**
22
+ * Wrap a handler so it runs on the Express lane only (not compiled to Fastify).
23
+ * Use for routes that need res.render, res.sendFile, app.set('view engine'), etc.
24
+ *
25
+ * @example
26
+ * app.get('/page', expressLane((req, res) => res.render('index', { title: 'Hello' })));
27
+ */
28
+ function expressLane(fn) {
29
+ const wrapped = function (...args) {
30
+ return fn.apply(this, args);
31
+ };
32
+ Object.defineProperty(wrapped, exports.EXPRESS_LANE, { value: true, enumerable: false });
33
+ return wrapped;
34
+ }
35
+ function wrapForExpressLane(fn) {
36
+ const wrapped = function (...args) {
37
+ return fn.apply(this, args);
38
+ };
39
+ Object.defineProperty(wrapped, exports.EXPRESS_LANE, { value: true, enumerable: false });
40
+ return wrapped;
41
+ }
42
+ /**
43
+ * Class method decorator: mark the handler to run on the Express lane only.
44
+ * Use as @ExpressLane or @ExpressLane() (both work).
45
+ * Requires "experimentalDecorators": true (and optionally "emitDecoratorMetadata") in tsconfig.
46
+ *
47
+ * Note: Decorators are only valid on class members. For standalone functions, use
48
+ * expressLane(fn) when registering the route: router.get('/path', expressLane(myHandler)).
49
+ *
50
+ * @example
51
+ * class PageController {
52
+ * @ExpressLane
53
+ * page(req: Request, res: Response) {
54
+ * res.render('index', { title: 'Hello' });
55
+ * }
56
+ * }
57
+ * app.get('/page', (req, res, next) => new PageController().page(req, res, next));
58
+ */
59
+ function ExpressLane(targetOrNil, propertyKeyOrNil, descriptorOrNil) {
60
+ if (descriptorOrNil !== undefined && typeof descriptorOrNil.value === 'function') {
61
+ descriptorOrNil.value = wrapForExpressLane(descriptorOrNil.value);
62
+ return descriptorOrNil;
63
+ }
64
+ return function (_target, _propertyKey, descriptor) {
65
+ if (typeof descriptor.value === 'function') {
66
+ descriptor.value = wrapForExpressLane(descriptor.value);
67
+ }
68
+ return descriptor;
69
+ };
70
+ }
71
+ //# sourceMappingURL=expressLane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressLane.js","sourceRoot":"","sources":["../../src/runtime/expressLane.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAQH,oDAEC;AASD,kCAMC;AA2BD,kCAeC;AA/DD,qEAAqE;AACxD,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AAE9E,0DAA0D;AAC1D,SAAgB,oBAAoB,CAAC,EAAW;IAC9C,OAAO,OAAO,EAAE,KAAK,UAAU,IAAK,EAAyC,CAAC,oBAAY,CAAC,KAAK,IAAI,CAAC;AACvG,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAuD,EAAK;IACrF,MAAM,OAAO,GAAG,UAAyB,GAAG,IAAe;QACzD,OAAQ,EAAmC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,oBAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,OAAO,OAAY,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAmC;IAC7D,MAAM,OAAO,GAAG,UAAyB,GAAG,IAAe;QACzD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,oBAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,WAAW,CACzB,WAAqB,EACrB,gBAAyB,EACzB,eAAoC;IAEpC,IAAI,eAAe,KAAK,SAAS,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACjF,eAAe,CAAC,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAwC,CAAC,CAAC;QACrG,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,UAAU,OAAgB,EAAE,YAAoB,EAAE,UAA8B;QACrF,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3C,UAAU,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,KAAwC,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * fast(app, ops) — Compile an existing Express app onto Fastify and return the Fastify instance.
3
+ * One-time compilation; no per-request Express router. Load express-fastify-runtime before
4
+ * creating the Express app so router Layer has _path (see patchRouterLayer) for middleware.
5
+ */
6
+ import { type FastifyInstance, type FastifyServerOptions } from "fastify";
7
+ /** Experimental options. May change or be removed. */
8
+ export interface FastOpsExperimental {
9
+ /** When true, log each request with which lane handled it (Fastify vs Express). */
10
+ diagnostics?: boolean;
11
+ }
12
+ /** Options for fast(app, ops). More keys can be added later. */
13
+ export interface FastOps {
14
+ fastify?: FastifyServerOptions;
15
+ /** Experimental options (e.g. diagnostics logging). */
16
+ experimental?: FastOpsExperimental;
17
+ }
18
+ /**
19
+ * The Express application accepted by fast().
20
+ *
21
+ * Typed structurally (a request-handler function that also exposes Express's methods) rather than
22
+ * importing `Application` from `@types/express`. This decouples fast()'s public signature from any
23
+ * specific Express / @types/express version, so `fast(express())` type-checks whether the host
24
+ * project is on Express 4 or 5 — avoiding the "'Express' is not assignable to 'Application'" error
25
+ * that appears when the host's @types/express differs from the one this package was built with.
26
+ */
27
+ export type ExpressApp = ((...args: any[]) => any) & {
28
+ use: (...args: any[]) => any;
29
+ [key: string]: any;
30
+ };
31
+ /**
32
+ * Compile the Express app onto Fastify and return the Fastify instance.
33
+ * - Safe routes and middleware run on the Fastify lane (compiled).
34
+ * - Unsafe or unflattenable parts fall back to Express (notFoundHandler proxies to app).
35
+ * Load express-fastify-runtime before creating the app so middleware paths can be introspected.
36
+ *
37
+ * You can use either fastApp.listen({ port }, cb) or fastApp.server.listen(port, cb).
38
+ * fastApp.server is the Node HTTP server so you can attach WebSockets, Socket.IO, etc.;
39
+ * server.listen() is wrapped to delegate to Fastify's listen() so 404 and internals work.
40
+ * When using Fastify plugins, await fastApp.ready() before listen so plugins are loaded.
41
+ */
42
+ export declare function fast(app: ExpressApp, ops?: FastOps | FastifyServerOptions): FastifyInstance;
43
+ //# sourceMappingURL=fast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fast.d.ts","sourceRoot":"","sources":["../../src/runtime/fast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAgB,EACd,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AA8BjB,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uDAAuD;IACvD,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;;;;;GAQG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG;IAEnD,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAE7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAqCF;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACnC,eAAe,CAiHjB"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /**
3
+ * fast(app, ops) — Compile an existing Express app onto Fastify and return the Fastify instance.
4
+ * One-time compilation; no per-request Express router. Load express-fastify-runtime before
5
+ * creating the Express app so router Layer has _path (see patchRouterLayer) for middleware.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.fast = fast;
12
+ const fastify_1 = __importDefault(require("fastify"));
13
+ const classify_1 = require("../app/classify");
14
+ const introspectExpress_1 = require("../app/introspectExpress");
15
+ const mount_1 = require("../express/mount");
16
+ const request_1 = require("../fastify/adapters/request");
17
+ const response_1 = require("../fastify/adapters/response");
18
+ const register_1 = require("../fastify/register");
19
+ const errorHandler_1 = require("./errorHandler");
20
+ const DEFAULT_OPTS = {
21
+ logger: false,
22
+ bodyLimit: 10 * 1024 * 1024, // 10MB; matches express.json({ limit: '10mb' })
23
+ };
24
+ /**
25
+ * Coerce a port to a number like Node/Express do. `process.env.PORT` is a STRING, so
26
+ * server.listen(process.env.PORT) passes "2015"; without coercion we'd fall back to 0 (a random
27
+ * port) and the server would be "running" but unreachable on the intended port. Invalid/empty
28
+ * values fall back to 0 (OS-assigned), matching server.listen() with no port.
29
+ */
30
+ function toPort(port) {
31
+ if (typeof port === "number" && Number.isFinite(port))
32
+ return port;
33
+ if (typeof port === "string" && port.trim() !== "") {
34
+ const n = Number(port);
35
+ if (Number.isFinite(n))
36
+ return n;
37
+ }
38
+ return 0;
39
+ }
40
+ function listenArgsToOptions(port, hostOrBacklogOrCb, cb) {
41
+ const options = {
42
+ port: toPort(port),
43
+ };
44
+ if (typeof hostOrBacklogOrCb === "string")
45
+ options.host = hostOrBacklogOrCb;
46
+ else if (typeof hostOrBacklogOrCb === "function")
47
+ options.cb = hostOrBacklogOrCb;
48
+ if (typeof cb === "function")
49
+ options.cb = cb;
50
+ return options;
51
+ }
52
+ /**
53
+ * Compile the Express app onto Fastify and return the Fastify instance.
54
+ * - Safe routes and middleware run on the Fastify lane (compiled).
55
+ * - Unsafe or unflattenable parts fall back to Express (notFoundHandler proxies to app).
56
+ * Load express-fastify-runtime before creating the app so middleware paths can be introspected.
57
+ *
58
+ * You can use either fastApp.listen({ port }, cb) or fastApp.server.listen(port, cb).
59
+ * fastApp.server is the Node HTTP server so you can attach WebSockets, Socket.IO, etc.;
60
+ * server.listen() is wrapped to delegate to Fastify's listen() so 404 and internals work.
61
+ * When using Fastify plugins, await fastApp.ready() before listen so plugins are loaded.
62
+ */
63
+ function fast(app, ops) {
64
+ const fastifyOpts = ops && "fastify" in ops
65
+ ? ops.fastify
66
+ : ops;
67
+ const fastify = (0, fastify_1.default)({ ...DEFAULT_OPTS, ...fastifyOpts });
68
+ const diagnostics = ops && "experimental" in ops && ops.experimental?.diagnostics === true;
69
+ const entries = (0, introspectExpress_1.introspectExpressApp)(app);
70
+ if (entries !== null && entries.length > 0) {
71
+ const classified = (0, classify_1.classifyAll)(entries);
72
+ const noop = (_req, _res, next) => next();
73
+ (0, register_1.registerCompiledRoutes)(fastify, classified, noop, { diagnostics });
74
+ }
75
+ else if (diagnostics) {
76
+ console.log("[express-fastify-runtime] No routes compiled to Fastify lane (all requests will use Express lane). See docs/FAST_PRODUCTION_CHECKLIST.md § Why is everything on the Express lane?");
77
+ }
78
+ (0, mount_1.mountExpress)(fastify, app, { diagnostics });
79
+ const expressErrorMiddleware = (0, introspectExpress_1.getExpressErrorMiddleware)(app);
80
+ if (expressErrorMiddleware) {
81
+ const adaptRequest = (0, request_1.createRequestAdapter)();
82
+ fastify.setErrorHandler((0, errorHandler_1.wrapErrorHandler)(expressErrorMiddleware, adaptRequest, response_1.adaptResponse));
83
+ }
84
+ // Wrap server.listen so Express-style server.listen(port, cb) runs Fastify's listen flow
85
+ // (fixes 404 / fourOhFourContext). When Fastify's listen() runs it calls server.listen(opts)
86
+ // again — we detect that re-entry and delegate to the real Node listen to avoid "already listening".
87
+ const server = fastify.server;
88
+ const originalListen = server.listen.bind(server);
89
+ let listenReentry = false;
90
+ function wrappedListen(port, hostOrBacklogOrCb, cb) {
91
+ if (listenReentry) {
92
+ listenReentry = false;
93
+ return originalListen.apply(this, arguments);
94
+ }
95
+ const fastifyCb = (err, address) => {
96
+ if (err) {
97
+ server.emit("error", err);
98
+ if (userCb && userCb.length > 0)
99
+ userCb(err, address);
100
+ if (err.code === "EADDRINUSE") {
101
+ throw err;
102
+ }
103
+ return;
104
+ }
105
+ if (userCb)
106
+ userCb(null, address);
107
+ };
108
+ let userCb;
109
+ if (typeof port === "object" && port !== null && "port" in port) {
110
+ const opts = port;
111
+ userCb =
112
+ typeof hostOrBacklogOrCb === "function"
113
+ ? hostOrBacklogOrCb
114
+ : undefined;
115
+ listenReentry = true;
116
+ const host = opts.host ?? "0.0.0.0";
117
+ const p = toPort(opts.port);
118
+ try {
119
+ if (userCb)
120
+ fastify.listen({ port: p, host }, fastifyCb);
121
+ else
122
+ fastify.listen({ port: p, host });
123
+ }
124
+ catch (e) {
125
+ listenReentry = false;
126
+ throw e;
127
+ }
128
+ return this;
129
+ }
130
+ const options = listenArgsToOptions(port, hostOrBacklogOrCb, cb);
131
+ userCb = options.cb;
132
+ listenReentry = true;
133
+ const host = options.host ?? "0.0.0.0";
134
+ try {
135
+ if (userCb)
136
+ fastify.listen({ port: options.port, host }, fastifyCb);
137
+ else
138
+ fastify.listen({ port: options.port, host });
139
+ }
140
+ catch (e) {
141
+ listenReentry = false;
142
+ throw e;
143
+ }
144
+ return this;
145
+ }
146
+ // Node's listen has many overloads; our wrapper is compatible at runtime
147
+ server.listen = wrappedListen;
148
+ return fastify;
149
+ }
150
+ //# sourceMappingURL=fast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fast.js","sourceRoot":"","sources":["../../src/runtime/fast.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAiHH,oBAoHC;AAjOD,sDAGiB;AAEjB,8CAA8C;AAC9C,gEAIkC;AAClC,4CAAgD;AAChD,yDAAmE;AACnE,2DAGsC;AACtC,kDAA6D;AAC7D,iDAAkD;AA6ClD,MAAM,YAAY,GAAyB;IACzC,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,gDAAgD;CAC9E,CAAC;AAEF;;;;;GAKG;AACH,SAAS,MAAM,CAAC,IAAsB;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAsB,EACtB,iBAAkD,EAClD,EAAe;IAEf,MAAM,OAAO,GAAwB;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;KACnB,CAAC;IACF,IAAI,OAAO,iBAAiB,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC;SACvE,IAAI,OAAO,iBAAiB,KAAK,UAAU;QAC9C,OAAO,CAAC,EAAE,GAAG,iBAAmC,CAAC;IACnD,IAAI,OAAO,EAAE,KAAK,UAAU;QAAE,OAAO,CAAC,EAAE,GAAG,EAAoB,CAAC;IAChE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,IAAI,CAClB,GAAe,EACf,GAAoC;IAEpC,MAAM,WAAW,GACf,GAAG,IAAI,SAAS,IAAI,GAAG;QACrB,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAE,GAAwC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,iBAAO,EAAC,EAAE,GAAG,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;IAE7D,MAAM,WAAW,GACf,GAAG,IAAI,cAAc,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IAEzE,MAAM,OAAO,GAAG,IAAA,wCAAoB,EAAC,GAAgC,CAAC,CAAC;IACvE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,GAIE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACzC,IAAA,iCAAsB,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CACT,mLAAmL,CACpL,CAAC;IACJ,CAAC;IAED,IAAA,oBAAY,EAAC,OAAO,EAAE,GAA6B,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtE,MAAM,sBAAsB,GAAG,IAAA,6CAAyB,EACtD,GAAgC,CACjC,CAAC;IACF,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAA,8BAAoB,GAAE,CAAC;QAC5C,OAAO,CAAC,eAAe,CACrB,IAAA,+BAAgB,EACd,sBAAsB,EACtB,YAAY,EACZ,wBAAoB,CACrB,CACF,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,6FAA6F;IAC7F,qGAAqG;IACrG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAgB,CAAC;IACxC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,SAAS,aAAa,CAEpB,IAAsC,EACtC,iBAAkD,EAClD,EAAe;QAEf,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,GAAG,KAAK,CAAC;YACtB,OAAQ,cAAiD,CAAC,KAAK,CAC7D,IAAI,EACJ,SAAiC,CACxB,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACjD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC1B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAK,GAA6B,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACzD,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,IAAI,MAAkC,CAAC;QACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,IAAiD,CAAC;YAC/D,MAAM;gBACJ,OAAO,iBAAiB,KAAK,UAAU;oBACrC,CAAC,CAAE,iBAAoC;oBACvC,CAAC,CAAC,SAAS,CAAC;YAChB,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;YACpC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC;gBACH,IAAI,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;;oBACpD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,aAAa,GAAG,KAAK,CAAC;gBACtB,MAAM,CAAC,CAAC;YACV,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,mBAAmB,CACjC,IAAmC,EACnC,iBAAiB,EACjB,EAAE,CACH,CAAC;QACF,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;QACpB,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;QACvC,IAAI,CAAC;YACH,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;;gBAC/D,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa,GAAG,KAAK,CAAC;YACtB,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACxE,MAA2C,CAAC,MAAM,GAAG,aAAa,CAAC;IAEpE,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Boot, lock, listen. Compile once; no dynamic routing.
3
+ */
4
+ import type { ExpressLikeApp } from '../types/internal';
5
+ export interface CreateAppOptions {
6
+ /** If true, log compile and lane info (dev). Enables fallback warnings when downgrading to Express lane. */
7
+ dev?: boolean;
8
+ }
9
+ export declare function createApp(options?: CreateAppOptions): ExpressLikeApp;
10
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,mBAAmB,CAAC;AAgBhF,MAAM,WAAW,gBAAgB;IAC/B,4GAA4G;IAC5G,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA4JpE"}