express-fastify-runtime 0.1.2 → 0.1.3
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/changelog/log-2026-06-25.md +22 -0
- package/changelog/log-2026-06-26.md +54 -0
- package/dist/app/compile.d.ts +6 -0
- package/dist/app/compile.d.ts.map +1 -1
- package/dist/app/compile.js +51 -17
- package/dist/app/compile.js.map +1 -1
- package/dist/app/flattenRouter.d.ts +17 -1
- package/dist/app/flattenRouter.d.ts.map +1 -1
- package/dist/app/flattenRouter.js +41 -3
- package/dist/app/flattenRouter.js.map +1 -1
- package/dist/app/introspectExpress.d.ts +6 -0
- package/dist/app/introspectExpress.d.ts.map +1 -1
- package/dist/app/introspectExpress.js +13 -0
- package/dist/app/introspectExpress.js.map +1 -1
- package/dist/fastify/adapters/define.d.ts +24 -0
- package/dist/fastify/adapters/define.d.ts.map +1 -0
- package/dist/fastify/adapters/define.js +52 -0
- package/dist/fastify/adapters/define.js.map +1 -0
- package/dist/fastify/adapters/request.d.ts.map +1 -1
- package/dist/fastify/adapters/request.js +24 -44
- package/dist/fastify/adapters/request.js.map +1 -1
- package/dist/fastify/adapters/response.js +4 -4
- package/dist/fastify/adapters/response.js.map +1 -1
- package/dist/fastify/register.d.ts +2 -0
- package/dist/fastify/register.d.ts.map +1 -1
- package/dist/fastify/register.js.map +1 -1
- package/dist/runtime/fast.d.ts.map +1 -1
- package/dist/runtime/fast.js +8 -3
- package/dist/runtime/fast.js.map +1 -1
- package/dist/runtime/lifecycle.d.ts.map +1 -1
- package/dist/runtime/lifecycle.js +2 -0
- package/dist/runtime/lifecycle.js.map +1 -1
- package/dist/runtime/routingOptions.d.ts +16 -0
- package/dist/runtime/routingOptions.d.ts.map +1 -0
- package/dist/runtime/routingOptions.js +31 -0
- package/dist/runtime/routingOptions.js.map +1 -0
- package/dist/utils/detect.d.ts.map +1 -1
- package/dist/utils/detect.js +5 -0
- package/dist/utils/detect.js.map +1 -1
- package/dist/utils/expressPath.d.ts +24 -0
- package/dist/utils/expressPath.d.ts.map +1 -0
- package/dist/utils/expressPath.js +47 -0
- package/dist/utils/expressPath.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# 2026-06-25
|
|
2
2
|
|
|
3
|
+
## Stability: the Fastify-lane adapter is now a fully-mutable Express object
|
|
4
|
+
|
|
5
|
+
Root cause behind a recurring class of "middleware breaks on the Fastify lane" bugs (read-only
|
|
6
|
+
`req.body` 500, etc.): the adapter reimplements Express's `req`/`res`, and several Express
|
|
7
|
+
properties were **read-only getters**. When middleware assigns them — trust-proxy rewriting
|
|
8
|
+
`req.ip`/`req.protocol`/`req.hostname`, cookie-parser setting `req.cookies`, host rewriting,
|
|
9
|
+
caching middleware — the assignment **threw in strict mode or was silently dropped**.
|
|
10
|
+
|
|
11
|
+
- **Fix** (`src/fastify/adapters/define.ts` + `request.ts`): `defineWritable()` installs accessors
|
|
12
|
+
whose `set` shadows the getter with a per-instance own property (concurrency-safe). Applied to
|
|
13
|
+
`protocol`, `ip`, `ips`, `hostname`, `host`, `cookies`, `signedCookies` (memoized — also a small
|
|
14
|
+
speedup vs recomputing every read) and `method`, `headers`, `path`, `secure`, `fresh`, `stale`
|
|
15
|
+
(kept live, since they derive from other mutable props — `path`←`url`, `secure`←`protocol`).
|
|
16
|
+
Custom props (`req.user`) already worked (objects are extensible). `response.ts` was already
|
|
17
|
+
fine (`locals`/`statusCode` have setters; `headersSent`/`finished` correctly read-only).
|
|
18
|
+
- **Design**: deliberately kept on the **Fastify lane** (no "run real Express on the fast lane"
|
|
19
|
+
rewrite — that would have been slower). Property-mutating middleware now stay fast; only
|
|
20
|
+
body-stream middleware (multer, urlencoded/raw/text) remain the intentional Express-lane fallback.
|
|
21
|
+
- **Verified**: new `test/integration/req-mutation.test.js` (mutations stick, derived getters stay
|
|
22
|
+
live, per-request isolation under concurrency); full suite green on Express 4 (71) and 5 (69 + 2
|
|
23
|
+
skip); benchmark unchanged (Plain JSON 1.34× Express, middleware 1.21× Fastify).
|
|
24
|
+
|
|
3
25
|
## Fix: empty JSON body 400'd ("Body cannot be empty…") — now matches express.json()
|
|
4
26
|
|
|
5
27
|
Reported by a consumer: bodyless requests sent with `Content-Type: application/json` (common from
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# 2026-06-26
|
|
2
|
+
|
|
3
|
+
## Feature: full Express routing-paradigm coverage on fast()
|
|
4
|
+
|
|
5
|
+
Paths were previously passed to Fastify verbatim and several routing features were unhandled. A
|
|
6
|
+
survey (run on Express 4 and 5) found gaps; all are now addressed — high-value ones on the Fastify
|
|
7
|
+
lane, rarer/complex ones via a correct Express-lane fallback. None can crash startup anymore.
|
|
8
|
+
|
|
9
|
+
- **Wildcards (fast lane).** New `src/utils/expressPath.ts` translates Express wildcard paths to
|
|
10
|
+
Fastify's (`/files/*`, Express 5 `/files/*splat` → Fastify `/files/*`) and bridges the captured
|
|
11
|
+
value back to where Express handlers read it (`req.params[0]` on v4, `req.params.splat` on v5).
|
|
12
|
+
Fixes a **startup crash** on Express 5's named wildcards and a silent "wildcard value lost" bug.
|
|
13
|
+
- **Never crash (fast lane).** `fastify.route()` registration is wrapped in try/catch — any path
|
|
14
|
+
Fastify rejects is left on the Express lane instead of taking down boot.
|
|
15
|
+
- **`next('route')` / `next('router')` (Express lane).** Detected in handler source
|
|
16
|
+
(`utils/detect.ts`) → run on real Express, which implements the skip semantics (no more 500).
|
|
17
|
+
- **`app.param(name, fn)` (Express lane).** `introspectExpress.ts` reads registered param names;
|
|
18
|
+
routes using such a param run on real Express so the callbacks fire.
|
|
19
|
+
- **Mounted sub-apps (Express lane).** `app.use('/x', express())` is detected (`isExpressApp` in
|
|
20
|
+
`flattenRouter.ts`) and runs as a unit on real Express; siblings still compile.
|
|
21
|
+
- **`case sensitive routing` / `strict routing` (fast lane).** `runtime/routingOptions.ts` reads the
|
|
22
|
+
app's settings and sets Fastify's `routerOptions.caseSensitive` / `ignoreTrailingSlash`. Also fixes
|
|
23
|
+
a prior parity bug — fast() was case-SENSITIVE by default while Express is case-INSENSITIVE; now
|
|
24
|
+
`/Foo` matches `/foo` and trailing slashes are tolerated, matching Express defaults.
|
|
25
|
+
- **Test.** `test/integration/routing-paradigms.test.js` covers all of the above on Express 4 and 5;
|
|
26
|
+
verified end-to-end under bun. Full suite green: Express 4 (79) and 5 (77 + 2 skip).
|
|
27
|
+
|
|
28
|
+
## Fix: one un-flattenable router no longer sinks the whole app to the Express lane
|
|
29
|
+
|
|
30
|
+
Reported by a real consumer (Express 4, 49 routers, run under bun): `fast()` logged
|
|
31
|
+
`No routes compiled to Fastify lane (all requests will use Express lane)` and the entire app ran on
|
|
32
|
+
the embedded Express — no Fastify speedup, and every prior body bug was actually on the Express lane.
|
|
33
|
+
|
|
34
|
+
- **Cause.** `flattenRouter` (`src/app/flattenRouter.ts`) returned `null` for the whole app as soon
|
|
35
|
+
as **any** single layer couldn't be flattened, and that `null` propagated to the root, so
|
|
36
|
+
`introspectExpressApp` compiled **zero** routes. The trigger was a single sub-router using an
|
|
37
|
+
**array mount path** — `router.use(['/suppression','/watchlist'], …)` — which has no string
|
|
38
|
+
`_path`; that one router sank all 49.
|
|
39
|
+
- **Fix.** Localize the fallback: a sub-router that can't be flattened (array/RegExp mount, or one
|
|
40
|
+
containing such a middleware) is now left on the **Express lane as a unit** — its routes fall
|
|
41
|
+
through to the real Express app with their full middleware chain (auth/guards) intact — while every
|
|
42
|
+
sibling router still compiles onto the **Fastify lane**. We still bail (for the current router
|
|
43
|
+
only) on a middleware *function* whose path we can't read, since we can't know which routes it
|
|
44
|
+
guards — never risk silently dropping a guard.
|
|
45
|
+
- **Not a bun bug.** Verified the Layer patch lands correctly under bun (string mounts get `_path`);
|
|
46
|
+
the abort was purely the flatten logic. No patch change needed.
|
|
47
|
+
- **Test.** `test/integration/partial-flatten.test.js`: array- and RegExp-mount sub-routers fall back
|
|
48
|
+
while siblings serve on the Fastify lane, and the fallback router's guard middleware still runs
|
|
49
|
+
(401 without key / 200 with). Green on Express 4 and 5; verified end-to-end under bun.
|
|
50
|
+
- **Docs.** The `No routes compiled …` startup message and the `res.render` hints now link the full
|
|
51
|
+
`FAST_PRODUCTION_CHECKLIST.md` URL instead of a bare repo-relative path.
|
|
52
|
+
|
|
53
|
+
Immediate consumer workaround (no upgrade needed): split an array mount into separate string mounts —
|
|
54
|
+
`router.use('/suppression', …)` + `router.use('/watchlist', …)`.
|
package/dist/app/compile.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ import type { ResponseAdapter } from "../types/internal";
|
|
|
11
11
|
export type RunMiddleware = (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void | Promise<void>;
|
|
12
12
|
export interface RegisterFastifyRoutesOptions {
|
|
13
13
|
diagnostics?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Param names that have `app.param(name, fn)` callbacks registered. Routes whose path uses one of
|
|
16
|
+
* these params are left on the Express lane so the param callbacks actually run (we don't
|
|
17
|
+
* reimplement app.param on the Fastify lane). See runtime/fast.ts / introspectExpress.ts.
|
|
18
|
+
*/
|
|
19
|
+
paramNames?: ReadonlySet<string>;
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
16
22
|
* Register compiled Fastify routes (safe route entries only).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/app/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAEf,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/app/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAEf,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,KACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAyG1B,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC;AASD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,cAAc,EAC5B,aAAa,EAAE,eAAe,EAC9B,cAAc,EAAE,aAAa,EAC7B,OAAO,CAAC,EAAE,4BAA4B,GACrC,IAAI,CAwGN"}
|
package/dist/app/compile.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.registerFastifyRoutes = registerFastifyRoutes;
|
|
|
9
9
|
const path_1 = require("../utils/path");
|
|
10
10
|
const maxListeners_1 = require("../utils/maxListeners");
|
|
11
11
|
const middleware_1 = require("../express/middleware");
|
|
12
|
+
const expressPath_1 = require("../utils/expressPath");
|
|
12
13
|
/** Path prefix match: middleware at /api applies to /api, /api/users, etc. */
|
|
13
14
|
function pathMatches(middlewarePath, routePath) {
|
|
14
15
|
const m = (0, path_1.normalizePath)(middlewarePath);
|
|
@@ -112,6 +113,13 @@ function collectApplicableMiddleware(routePath, classified, routeIndex) {
|
|
|
112
113
|
}
|
|
113
114
|
return applicable;
|
|
114
115
|
}
|
|
116
|
+
/** Path segments like ":id" → "id"; used to skip routes that depend on app.param() callbacks. */
|
|
117
|
+
function routeParamNames(path) {
|
|
118
|
+
const out = [];
|
|
119
|
+
for (const m of path.matchAll(/:([A-Za-z_$][\w$]*)/g))
|
|
120
|
+
out.push(m[1]);
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
115
123
|
/**
|
|
116
124
|
* Register compiled Fastify routes (safe route entries only).
|
|
117
125
|
*
|
|
@@ -148,10 +156,20 @@ function registerFastifyRoutes(fastify, classified, adaptRequest, adaptResponse,
|
|
|
148
156
|
}
|
|
149
157
|
}
|
|
150
158
|
const routeEntries = classified.filter((c) => c.type === "route" && c.lane === "fastify");
|
|
159
|
+
const paramNames = options?.paramNames;
|
|
151
160
|
for (const entry of routeEntries) {
|
|
152
161
|
if (entry.type !== "route")
|
|
153
162
|
continue;
|
|
154
163
|
const path = (0, path_1.normalizePath)(entry.path);
|
|
164
|
+
// app.param(): a route using a param that has a registered callback runs on the Express lane.
|
|
165
|
+
if (paramNames && paramNames.size > 0 && routeParamNames(path).some((n) => paramNames.has(n))) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// Translate Express path syntax → Fastify (wildcards). null = untranslatable → Express lane.
|
|
169
|
+
const fastifyPath = (0, expressPath_1.toFastifyPath)(path);
|
|
170
|
+
if (fastifyPath === null)
|
|
171
|
+
continue;
|
|
172
|
+
const wildcardKey = fastifyPath.wildcard;
|
|
155
173
|
// baseUrl is constant per route — compute once at registration, not per request.
|
|
156
174
|
const baseUrlSegments = path.split("/").filter(Boolean);
|
|
157
175
|
const baseUrl = baseUrlSegments.length >= 1 ? "/" + baseUrlSegments[0] : "";
|
|
@@ -172,23 +190,39 @@ function registerFastifyRoutes(fastify, classified, adaptRequest, adaptResponse,
|
|
|
172
190
|
const logLane = diagnostics
|
|
173
191
|
? (request) => console.log(`[express-fastify-runtime] Fastify lane: ${m} ${request.url ?? path}`)
|
|
174
192
|
: null;
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
logLane
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
193
|
+
try {
|
|
194
|
+
fastify.route({
|
|
195
|
+
method: m,
|
|
196
|
+
url: fastifyPath.url,
|
|
197
|
+
handler: (request, reply) => {
|
|
198
|
+
if (logLane)
|
|
199
|
+
logLane(request);
|
|
200
|
+
(0, maxListeners_1.applyMaxListeners)(request.raw, reply.raw);
|
|
201
|
+
// Bridge a wildcard: Fastify stores it as params['*']; Express handlers read params[0]
|
|
202
|
+
// (v4) or params.<name> (v5). Set the Express key so handlers find the value.
|
|
203
|
+
if (wildcardKey !== null) {
|
|
204
|
+
const rp = request.params;
|
|
205
|
+
if (rp && rp["*"] !== undefined)
|
|
206
|
+
rp[wildcardKey] = rp["*"];
|
|
207
|
+
}
|
|
208
|
+
const req = adaptRequest(request);
|
|
209
|
+
const res = adaptResponse(reply, request);
|
|
210
|
+
res.req = req;
|
|
211
|
+
req.baseUrl = baseUrl;
|
|
212
|
+
if (fastSingle !== null) {
|
|
213
|
+
return fastSingle(req, res, noopNext);
|
|
214
|
+
}
|
|
215
|
+
return run(chain, req, res);
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
// Fastify rejected this path (exotic syntax we didn't translate). Never crash boot — leave
|
|
221
|
+
// the route on the Express lane (it falls through to the real Express app), and surface why.
|
|
222
|
+
if (diagnostics) {
|
|
223
|
+
console.log(`[express-fastify-runtime] Route ${m} ${path} left on the Express lane (Fastify rejected the path): ${err.message}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
192
226
|
}
|
|
193
227
|
}
|
|
194
228
|
}
|
package/dist/app/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/app/compile.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/app/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,12 +40,28 @@ export interface ExpressRouteLike {
|
|
|
40
40
|
* Returns true if the value looks like an Express Router (has stack array).
|
|
41
41
|
*/
|
|
42
42
|
export declare function isExpressRouter(value: unknown): value is ExpressRouterLike;
|
|
43
|
+
/**
|
|
44
|
+
* Returns true if the value looks like a mounted Express sub-app (`app.use('/x', express())`).
|
|
45
|
+
* A sub-app is a function with its own settings/router but no top-level `.stack` (its stack lives on
|
|
46
|
+
* `app._router`). We don't flatten sub-apps (they have their own settings/init); they run on the
|
|
47
|
+
* Express lane as a unit.
|
|
48
|
+
*/
|
|
49
|
+
export declare function isExpressApp(value: unknown): boolean;
|
|
43
50
|
/**
|
|
44
51
|
* Flatten a Router into RouteEntry[] when possible.
|
|
45
52
|
* - Route layers (router.get/post etc.) are always flattened when we have route.path.
|
|
46
53
|
* - Middleware layers (router.use) are flattened when we have the path (from Layer._path patch or slash).
|
|
47
54
|
* - Nested routers are flattened recursively.
|
|
48
|
-
*
|
|
55
|
+
*
|
|
56
|
+
* Resilient fallback (so ONE un-flattenable router never sinks the whole app):
|
|
57
|
+
* - A nested router we can't flatten (or one mounted with a RegExp/array path) is SKIPPED here and
|
|
58
|
+
* left on the Express lane as a unit — its routes fall through to the real Express app via the
|
|
59
|
+
* notFoundHandler, where the full middleware chain (auth, etc.) still runs. Sibling routers keep
|
|
60
|
+
* compiling onto the Fastify lane.
|
|
61
|
+
* - A *middleware function* whose path we can't read is the one case we still bail on (return null
|
|
62
|
+
* for the CURRENT router only): we can't tell which routes it guards, so we can't safely compile
|
|
63
|
+
* any of this router's routes without risking dropping that middleware. The caller (a parent
|
|
64
|
+
* router, or fast()) then keeps this whole router on the Express lane but continues with siblings.
|
|
49
65
|
*/
|
|
50
66
|
export declare function flattenRouter(router: ExpressRouterLike, mountPath: string): RouteEntry[] | null;
|
|
51
67
|
//# sourceMappingURL=flattenRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenRouter.d.ts","sourceRoot":"","sources":["../../src/app/flattenRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAoBvD,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,0GAA0G;AAC1G,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;wDAEoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,cAAc,GAAG,iBAAiB,CAAC;IAC3C,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CAC1E;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI1E;AAYD
|
|
1
|
+
{"version":3,"file":"flattenRouter.d.ts","sourceRoot":"","sources":["../../src/app/flattenRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAoBvD,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,0GAA0G;AAC1G,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;wDAEoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,cAAc,GAAG,iBAAiB,CAAC;IAC3C,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CAC1E;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD;AAYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAkF/F"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.isExpressRouter = isExpressRouter;
|
|
12
|
+
exports.isExpressApp = isExpressApp;
|
|
12
13
|
exports.flattenRouter = flattenRouter;
|
|
13
14
|
const expressLane_1 = require("../runtime/expressLane");
|
|
14
15
|
const middleware_1 = require("../express/middleware");
|
|
@@ -37,6 +38,20 @@ function isExpressRouter(value) {
|
|
|
37
38
|
const obj = value;
|
|
38
39
|
return Array.isArray(obj.stack);
|
|
39
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns true if the value looks like a mounted Express sub-app (`app.use('/x', express())`).
|
|
43
|
+
* A sub-app is a function with its own settings/router but no top-level `.stack` (its stack lives on
|
|
44
|
+
* `app._router`). We don't flatten sub-apps (they have their own settings/init); they run on the
|
|
45
|
+
* Express lane as a unit.
|
|
46
|
+
*/
|
|
47
|
+
function isExpressApp(value) {
|
|
48
|
+
if (value == null || typeof value !== 'function')
|
|
49
|
+
return false;
|
|
50
|
+
const obj = value;
|
|
51
|
+
if (Array.isArray(obj.stack))
|
|
52
|
+
return false; // that's a Router, handled separately
|
|
53
|
+
return typeof obj.handle === 'function' && (obj._router != null || typeof obj.set === 'function');
|
|
54
|
+
}
|
|
40
55
|
/**
|
|
41
56
|
* Get the path for a middleware layer. Uses _path (from our patch), or '/' when slash is true.
|
|
42
57
|
*/
|
|
@@ -53,7 +68,16 @@ function getMiddlewareLayerPath(layer) {
|
|
|
53
68
|
* - Route layers (router.get/post etc.) are always flattened when we have route.path.
|
|
54
69
|
* - Middleware layers (router.use) are flattened when we have the path (from Layer._path patch or slash).
|
|
55
70
|
* - Nested routers are flattened recursively.
|
|
56
|
-
*
|
|
71
|
+
*
|
|
72
|
+
* Resilient fallback (so ONE un-flattenable router never sinks the whole app):
|
|
73
|
+
* - A nested router we can't flatten (or one mounted with a RegExp/array path) is SKIPPED here and
|
|
74
|
+
* left on the Express lane as a unit — its routes fall through to the real Express app via the
|
|
75
|
+
* notFoundHandler, where the full middleware chain (auth, etc.) still runs. Sibling routers keep
|
|
76
|
+
* compiling onto the Fastify lane.
|
|
77
|
+
* - A *middleware function* whose path we can't read is the one case we still bail on (return null
|
|
78
|
+
* for the CURRENT router only): we can't tell which routes it guards, so we can't safely compile
|
|
79
|
+
* any of this router's routes without risking dropping that middleware. The caller (a parent
|
|
80
|
+
* router, or fast()) then keeps this whole router on the Express lane but continues with siblings.
|
|
57
81
|
*/
|
|
58
82
|
function flattenRouter(router, mountPath) {
|
|
59
83
|
const stack = router.stack;
|
|
@@ -101,16 +125,30 @@ function flattenRouter(router, mountPath) {
|
|
|
101
125
|
const builtinName = layer.name || (typeof handle === 'function' ? handle.name : '');
|
|
102
126
|
if (builtinName === 'query' || builtinName === 'expressInit')
|
|
103
127
|
continue;
|
|
128
|
+
// Mounted sub-app (app.use('/x', express())): it has its own settings/init — don't flatten it;
|
|
129
|
+
// leave it on the Express lane as a unit (its routes fall through to the real Express app).
|
|
130
|
+
if (isExpressApp(handle))
|
|
131
|
+
continue;
|
|
104
132
|
const middlewarePath = getMiddlewareLayerPath(layer);
|
|
105
|
-
if (middlewarePath === null)
|
|
133
|
+
if (middlewarePath === null) {
|
|
134
|
+
// Path unreadable: array/RegExp mount, or an unpatched Layer. If it's a router, leave just
|
|
135
|
+
// that router on the Express lane and keep compiling siblings. If it's a middleware function,
|
|
136
|
+
// we don't know which routes it guards — fall back the CURRENT router only (return null), so
|
|
137
|
+
// we never silently compile a route without a guard middleware that should apply to it.
|
|
138
|
+
if (isExpressRouter(handle))
|
|
139
|
+
continue;
|
|
106
140
|
return null;
|
|
141
|
+
}
|
|
107
142
|
if ((0, expressLane_1.isExpressLaneHandler)(handle))
|
|
108
143
|
continue;
|
|
109
144
|
const fullPath = (0, path_1.joinPath)(mountPath, middlewarePath);
|
|
110
145
|
if (isExpressRouter(handle)) {
|
|
111
146
|
const nested = flattenRouter(handle, fullPath);
|
|
147
|
+
// Can't flatten this sub-router (e.g. it contains an array/RegExp-mounted middleware): leave
|
|
148
|
+
// it on the Express lane as a unit and keep compiling the rest of THIS router. Its routes fall
|
|
149
|
+
// through to the real Express app (with their full middleware chain) via the notFoundHandler.
|
|
112
150
|
if (nested === null)
|
|
113
|
-
|
|
151
|
+
continue;
|
|
114
152
|
entries.push(...nested);
|
|
115
153
|
}
|
|
116
154
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenRouter.js","sourceRoot":"","sources":["../../src/app/flattenRouter.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAuDH,0CAIC;
|
|
1
|
+
{"version":3,"file":"flattenRouter.js","sourceRoot":"","sources":["../../src/app/flattenRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,12 @@ export interface ExpressAppLike {
|
|
|
18
18
|
* Returns null if the app has middleware layers we can't flatten (e.g. no _path).
|
|
19
19
|
*/
|
|
20
20
|
export declare function introspectExpressApp(app: ExpressAppLike): RouteEntry[] | null;
|
|
21
|
+
/**
|
|
22
|
+
* Names of params that have `app.param(name, fn)` callbacks registered. Both Express 4 (`router.params`
|
|
23
|
+
* on `app._router`) and the Express 5 `router` package store them as `{ [name]: fn[] }`. Routes using
|
|
24
|
+
* these params run on the Express lane so the callbacks actually fire (we don't reimplement app.param).
|
|
25
|
+
*/
|
|
26
|
+
export declare function getAppParamNames(app: ExpressAppLike): Set<string>;
|
|
21
27
|
/** Express 4-arg error middleware type. */
|
|
22
28
|
export type ExpressErrorMiddleware = (err: Error, req: import('../types/express').ExpressRequest, res: import('../types/express').ExpressResponse, next: import('../types/express').NextFunction) => void | Promise<void>;
|
|
23
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspectExpress.d.ts","sourceRoot":"","sources":["../../src/app/introspectExpress.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAiBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,EAAE,GAAG,IAAI,CAM7E;AAED,2CAA2C;AAC3C,MAAM,MAAM,sBAAsB,GAAG,CACnC,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,OAAO,kBAAkB,EAAE,cAAc,EAC9C,GAAG,EAAE,OAAO,kBAAkB,EAAE,eAAe,EAC/C,IAAI,EAAE,OAAO,kBAAkB,EAAE,YAAY,KAC1C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,sBAAsB,GAAG,IAAI,CAW5F"}
|
|
1
|
+
{"version":3,"file":"introspectExpress.d.ts","sourceRoot":"","sources":["../../src/app/introspectExpress.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAiBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,EAAE,GAAG,IAAI,CAM7E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAKjE;AAED,2CAA2C;AAC3C,MAAM,MAAM,sBAAsB,GAAG,CACnC,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,OAAO,kBAAkB,EAAE,cAAc,EAC9C,GAAG,EAAE,OAAO,kBAAkB,EAAE,eAAe,EAC/C,IAAI,EAAE,OAAO,kBAAkB,EAAE,YAAY,KAC1C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,sBAAsB,GAAG,IAAI,CAW5F"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.introspectExpressApp = introspectExpressApp;
|
|
12
|
+
exports.getAppParamNames = getAppParamNames;
|
|
12
13
|
exports.getExpressErrorMiddleware = getExpressErrorMiddleware;
|
|
13
14
|
const flattenRouter_1 = require("./flattenRouter");
|
|
14
15
|
/**
|
|
@@ -38,6 +39,18 @@ function introspectExpressApp(app) {
|
|
|
38
39
|
}
|
|
39
40
|
return (0, flattenRouter_1.flattenRouter)(router, '/');
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Names of params that have `app.param(name, fn)` callbacks registered. Both Express 4 (`router.params`
|
|
44
|
+
* on `app._router`) and the Express 5 `router` package store them as `{ [name]: fn[] }`. Routes using
|
|
45
|
+
* these params run on the Express lane so the callbacks actually fire (we don't reimplement app.param).
|
|
46
|
+
*/
|
|
47
|
+
function getAppParamNames(app) {
|
|
48
|
+
const router = getAppRouter(app);
|
|
49
|
+
const params = router?.params;
|
|
50
|
+
if (!params || typeof params !== 'object')
|
|
51
|
+
return new Set();
|
|
52
|
+
return new Set(Object.keys(params));
|
|
53
|
+
}
|
|
41
54
|
/**
|
|
42
55
|
* Return the first Express error middleware (4-arg handler) from the app's router stack, if any.
|
|
43
56
|
* Only considers middleware layers (no route), so we don't pick a route's handler by mistake.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspectExpress.js","sourceRoot":"","sources":["../../src/app/introspectExpress.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AA+BH,oDAMC;AAeD,8DAWC;
|
|
1
|
+
{"version":3,"file":"introspectExpress.js","sourceRoot":"","sources":["../../src/app/introspectExpress.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AA+BH,oDAMC;AAOD,4CAKC;AAeD,8DAWC;AAvED,mDAAgD;AAQhD;;;;;GAKG;AACH,SAAS,YAAY,CAAC,GAAmB;IACvC,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAmB;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAA,6BAAa,EAAC,MAA2B,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,GAAmB;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAA2E,CAAC;IAC3G,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC5D,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAUD;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,GAAmB;IAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAoD,EAAE,CAAC;QAChF,IAAI,KAAK,CAAC,KAAK;YAAE,SAAS,CAAC,mDAAmD;QAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,MAAM,KAAK,UAAU,IAAK,MAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtE,OAAO,MAAgC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines an Express-like property on a shared adapter prototype that is READABLE, WRITABLE, and
|
|
3
|
+
* concurrency-safe.
|
|
4
|
+
*
|
|
5
|
+
* The Fastify-lane req/res adapters reimplement Express's surface. Several Express properties
|
|
6
|
+
* (req.ip, req.hostname, req.protocol, req.cookies, ...) are derived values, but real Express code
|
|
7
|
+
* also *assigns* them (trust-proxy rewrites req.ip/protocol, cookie-parser sets req.cookies, etc.).
|
|
8
|
+
* A plain read-only getter makes those assignments throw in strict mode or silently drop — which is
|
|
9
|
+
* the root of the recurring "middleware breaks on the Fastify lane" bugs.
|
|
10
|
+
*
|
|
11
|
+
* This helper installs an accessor on the prototype whose `set` defines an OWN writable data
|
|
12
|
+
* property on the instance, so:
|
|
13
|
+
* - reads compute the derived value (Express's "derived until overridden" semantics),
|
|
14
|
+
* - the first write shadows the accessor with a per-instance own property (so it sticks AND is
|
|
15
|
+
* concurrency-safe — it lives on the per-request instance, never the shared prototype).
|
|
16
|
+
*
|
|
17
|
+
* @param memoize When true, the computed value is cached as a writable own property on first read
|
|
18
|
+
* (use for values that are STABLE for the life of the request and non-trivial to compute — ip,
|
|
19
|
+
* hostname, cookies — a speedup vs recomputing every access). When false, the value is recomputed
|
|
20
|
+
* on every read (use for values DERIVED FROM OTHER MUTABLE props — path←url, secure←protocol —
|
|
21
|
+
* which must stay live until explicitly overridden).
|
|
22
|
+
*/
|
|
23
|
+
export declare function defineWritable<T>(proto: object, key: string, compute: (self: Record<string, unknown>) => T, memoize?: boolean): void;
|
|
24
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/fastify/adapters/define.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAC7C,OAAO,UAAQ,GACd,IAAI,CAyBN"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineWritable = defineWritable;
|
|
4
|
+
/**
|
|
5
|
+
* Defines an Express-like property on a shared adapter prototype that is READABLE, WRITABLE, and
|
|
6
|
+
* concurrency-safe.
|
|
7
|
+
*
|
|
8
|
+
* The Fastify-lane req/res adapters reimplement Express's surface. Several Express properties
|
|
9
|
+
* (req.ip, req.hostname, req.protocol, req.cookies, ...) are derived values, but real Express code
|
|
10
|
+
* also *assigns* them (trust-proxy rewrites req.ip/protocol, cookie-parser sets req.cookies, etc.).
|
|
11
|
+
* A plain read-only getter makes those assignments throw in strict mode or silently drop — which is
|
|
12
|
+
* the root of the recurring "middleware breaks on the Fastify lane" bugs.
|
|
13
|
+
*
|
|
14
|
+
* This helper installs an accessor on the prototype whose `set` defines an OWN writable data
|
|
15
|
+
* property on the instance, so:
|
|
16
|
+
* - reads compute the derived value (Express's "derived until overridden" semantics),
|
|
17
|
+
* - the first write shadows the accessor with a per-instance own property (so it sticks AND is
|
|
18
|
+
* concurrency-safe — it lives on the per-request instance, never the shared prototype).
|
|
19
|
+
*
|
|
20
|
+
* @param memoize When true, the computed value is cached as a writable own property on first read
|
|
21
|
+
* (use for values that are STABLE for the life of the request and non-trivial to compute — ip,
|
|
22
|
+
* hostname, cookies — a speedup vs recomputing every access). When false, the value is recomputed
|
|
23
|
+
* on every read (use for values DERIVED FROM OTHER MUTABLE props — path←url, secure←protocol —
|
|
24
|
+
* which must stay live until explicitly overridden).
|
|
25
|
+
*/
|
|
26
|
+
function defineWritable(proto, key, compute, memoize = false) {
|
|
27
|
+
Object.defineProperty(proto, key, {
|
|
28
|
+
configurable: true,
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get() {
|
|
31
|
+
const value = compute(this);
|
|
32
|
+
if (memoize) {
|
|
33
|
+
Object.defineProperty(this, key, {
|
|
34
|
+
value,
|
|
35
|
+
writable: true,
|
|
36
|
+
configurable: true,
|
|
37
|
+
enumerable: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
},
|
|
42
|
+
set(value) {
|
|
43
|
+
Object.defineProperty(this, key, {
|
|
44
|
+
value,
|
|
45
|
+
writable: true,
|
|
46
|
+
configurable: true,
|
|
47
|
+
enumerable: true,
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/fastify/adapters/define.ts"],"names":[],"mappings":";;AAsBA,wCA8BC;AApDD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,cAAc,CAC5B,KAAa,EACb,GAAW,EACX,OAA6C,EAC7C,OAAO,GAAG,KAAK;IAEf,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;QAChC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC/B,KAAK;oBACL,QAAQ,EAAE,IAAI;oBACd,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,GAAG,CAAgC,KAAQ;YACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC/B,KAAK;gBACL,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/fastify/adapters/request.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/fastify/adapters/request.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA6D1D,wBAAgB,YAAY,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,CAoDvE;AAiGD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,CAAC,UAAU,EAAE,cAAc,KAAK,cAAc,CAsBrF"}
|
|
@@ -14,6 +14,7 @@ exports.createRequestAdapter = createRequestAdapter;
|
|
|
14
14
|
const accepts_1 = __importDefault(require("accepts"));
|
|
15
15
|
const range_parser_1 = __importDefault(require("range-parser"));
|
|
16
16
|
const type_is_1 = __importDefault(require("type-is"));
|
|
17
|
+
const define_1 = require("./define");
|
|
17
18
|
/** Express: Referer and Referrer are interchangeable. */
|
|
18
19
|
function getHeader(headers, name) {
|
|
19
20
|
if (!name || typeof name !== 'string')
|
|
@@ -138,12 +139,6 @@ const requestProto = {
|
|
|
138
139
|
header(name) {
|
|
139
140
|
return getHeader(this._raw?.headers ?? {}, name);
|
|
140
141
|
},
|
|
141
|
-
get method() {
|
|
142
|
-
return this._raw?.method;
|
|
143
|
-
},
|
|
144
|
-
get headers() {
|
|
145
|
-
return this._raw?.headers ?? {};
|
|
146
|
-
},
|
|
147
142
|
get rawHeaders() {
|
|
148
143
|
return this._raw?.rawHeaders;
|
|
149
144
|
},
|
|
@@ -162,48 +157,10 @@ const requestProto = {
|
|
|
162
157
|
get aborted() {
|
|
163
158
|
return this._raw?.aborted ?? false;
|
|
164
159
|
},
|
|
165
|
-
get path() {
|
|
166
|
-
return (this.url || '/').split('?')[0] || '/';
|
|
167
|
-
},
|
|
168
|
-
get protocol() {
|
|
169
|
-
const raw = this._raw;
|
|
170
|
-
return raw ? getProtocol(raw) : 'http';
|
|
171
|
-
},
|
|
172
|
-
get secure() {
|
|
173
|
-
return this.protocol === 'https';
|
|
174
|
-
},
|
|
175
|
-
get ip() {
|
|
176
|
-
const raw = this._raw;
|
|
177
|
-
return raw ? getIp(raw) : '';
|
|
178
|
-
},
|
|
179
|
-
get ips() {
|
|
180
|
-
const raw = this._raw;
|
|
181
|
-
return raw ? getIps(raw) : [];
|
|
182
|
-
},
|
|
183
|
-
get hostname() {
|
|
184
|
-
const raw = this._raw;
|
|
185
|
-
return raw ? getHostname(raw) : '';
|
|
186
|
-
},
|
|
187
|
-
get host() {
|
|
188
|
-
return this._raw?.headers?.host ?? '';
|
|
189
|
-
},
|
|
190
160
|
get xhr() {
|
|
191
161
|
return (this._raw?.headers?.['x-requested-with']?.toLowerCase() ===
|
|
192
162
|
'xmlhttprequest');
|
|
193
163
|
},
|
|
194
|
-
get fresh() {
|
|
195
|
-
return false;
|
|
196
|
-
},
|
|
197
|
-
get stale() {
|
|
198
|
-
return true;
|
|
199
|
-
},
|
|
200
|
-
get cookies() {
|
|
201
|
-
const raw = this._raw;
|
|
202
|
-
return raw ? parseCookieHeader(raw.headers.cookie) : {};
|
|
203
|
-
},
|
|
204
|
-
get signedCookies() {
|
|
205
|
-
return {};
|
|
206
|
-
},
|
|
207
164
|
accepts(...types) {
|
|
208
165
|
const acc = (0, accepts_1.default)(this);
|
|
209
166
|
return acc.types.apply(acc, types);
|
|
@@ -231,6 +188,29 @@ const requestProto = {
|
|
|
231
188
|
return (0, type_is_1.default)(this, arr);
|
|
232
189
|
},
|
|
233
190
|
};
|
|
191
|
+
/**
|
|
192
|
+
* Express properties that are DERIVED but also commonly ASSIGNED by middleware (trust-proxy rewrites
|
|
193
|
+
* req.ip/protocol/hostname, cookie-parser sets req.cookies, host-rewriting, cache middleware sets
|
|
194
|
+
* req.fresh, ...). They must be writable: a read-only getter makes those assignments throw in strict
|
|
195
|
+
* mode or silently drop. defineWritable installs accessors whose `set` shadows the getter with a
|
|
196
|
+
* per-instance own property (concurrency-safe). See define.ts.
|
|
197
|
+
*/
|
|
198
|
+
const rawOf = (self) => self._raw;
|
|
199
|
+
// memoize: stable for the life of the request + non-trivial to compute → cache (also a speedup).
|
|
200
|
+
(0, define_1.defineWritable)(requestProto, 'protocol', (s) => { const r = rawOf(s); return r ? getProtocol(r) : 'http'; }, true);
|
|
201
|
+
(0, define_1.defineWritable)(requestProto, 'ip', (s) => { const r = rawOf(s); return r ? getIp(r) : ''; }, true);
|
|
202
|
+
(0, define_1.defineWritable)(requestProto, 'ips', (s) => { const r = rawOf(s); return r ? getIps(r) : []; }, true);
|
|
203
|
+
(0, define_1.defineWritable)(requestProto, 'hostname', (s) => { const r = rawOf(s); return r ? getHostname(r) : ''; }, true);
|
|
204
|
+
(0, define_1.defineWritable)(requestProto, 'host', (s) => rawOf(s)?.headers?.host ?? '', true);
|
|
205
|
+
(0, define_1.defineWritable)(requestProto, 'cookies', (s) => { const r = rawOf(s); return r ? parseCookieHeader(r.headers.cookie) : {}; }, true);
|
|
206
|
+
(0, define_1.defineWritable)(requestProto, 'signedCookies', () => ({}), true);
|
|
207
|
+
// live: derived from OTHER mutable props, so recompute every read until explicitly overridden.
|
|
208
|
+
(0, define_1.defineWritable)(requestProto, 'method', (s) => rawOf(s)?.method);
|
|
209
|
+
(0, define_1.defineWritable)(requestProto, 'headers', (s) => rawOf(s)?.headers ?? {});
|
|
210
|
+
(0, define_1.defineWritable)(requestProto, 'path', (s) => (s.url || '/').split('?')[0] || '/');
|
|
211
|
+
(0, define_1.defineWritable)(requestProto, 'secure', (s) => s.protocol === 'https');
|
|
212
|
+
(0, define_1.defineWritable)(requestProto, 'fresh', () => false);
|
|
213
|
+
(0, define_1.defineWritable)(requestProto, 'stale', (s) => !s.fresh);
|
|
234
214
|
/**
|
|
235
215
|
* Returns a request adapter that builds a FRESH Express-like req per request (methods
|
|
236
216
|
* shared via prototype, state per instance).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/fastify/adapters/request.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/fastify/adapters/request.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAmEH,oCAoDC;AAyGD,oDAsBC;AApPD,sDAA8B;AAC9B,gEAAsC;AACtC,sDAA6B;AAG7B,qCAA0C;AAE1C,yDAAyD;AACzD,SAAS,SAAS,CAChB,OAAuD,EACvD,IAAY;IAEZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAQ,OAAO,CAAC,QAAmB,IAAK,OAAO,CAAC,OAAkB,CAAC;IACrE,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED,iDAAiD;AACjD,SAAS,iBAAiB,CAAC,YAAgC;IACzD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wDAAwD;AACxD,SAAS,WAAW,CAAC,GAAwC;IAC3D,MAAM,KAAK,GAAI,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAClF,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACxD,OAAQ,GAAG,CAAC,MAAuC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACpF,CAAC;AAED,sEAAsE;AACtE,SAAS,KAAK,CAAC,GAAwC;IACrD,MAAM,SAAS,GAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACpF,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IACvC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,sDAAsD;AACtD,SAAS,MAAM,CAAC,GAAwC;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,gDAAgD;AAChD,SAAS,WAAW,CAAC,GAAwC;IAC3D,MAAM,IAAI,GAAI,GAAG,CAAC,OAAO,CAAC,IAAe,IAAI,EAAE,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAgB,YAAY,CAAC,UAA0B;IACrD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAmB,CAAC;IACjD,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtE,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,KAAe;QACxC,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,GAAG,CAAC,CAAC;QACzB,OAAQ,GAAG,CAAC,KAAuD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC;IACF,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,SAAmB;QACrD,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,GAAG,CAAC,CAAC;QACzB,OAAQ,GAAG,CAAC,SAA2D,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAChG,CAAC,CAAC;IACF,GAAG,CAAC,eAAe,GAAG,UAAU,GAAG,QAAkB;QACnD,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,GAAG,CAAC,CAAC;QACzB,OAAQ,GAAG,CAAC,QAA0D,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9F,CAAC,CAAC;IACF,GAAG,CAAC,gBAAgB,GAAG,UAAU,GAAG,KAAe;QACjD,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,GAAG,CAAC,CAAC;QACzB,OAAQ,GAAG,CAAC,SAA2D,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC,CAAC;IACF,GAAG,CAAC,KAAK,GAAG,UAAU,IAAY,EAAE,OAA+B;QACjE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,OAAO,IAAA,sBAAU,EAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,GAAG,CAAC,EAAE,GAAG,UAAU,KAAwB;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,EAAe,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO,IAAA,iBAAM,EAAC,GAAG,EAAE,GAAG,CAAmB,CAAC;IAC5C,CAAC,CAAC;IACF,GAAG,CAAC,KAAK;QACN,UAA6E,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7F,GAAG,CAAC,MAAM;QACP,UAAmE,CAAC,MAAM,IAAI,EAAE,CAAC;IACpF,GAAG,CAAC,IAAI,GAAI,UAAkD,CAAC,IAAI,CAAC;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;IAC9B,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC;IACjB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;IACjB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACvC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;IACtC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,GAAG,CAAC,IAAI,GAAI,GAAG,CAAC,OAAO,CAAC,IAAe,IAAI,EAAE,CAAC;IAC9C,GAAG,CAAC,GAAG;QACJ,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAY,EAAE,WAAW,EAAE,KAAK,gBAAgB,CAAC;IAClF,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAClB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IACjB,GAAG,CAAC,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC;IAC9D,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC;AAOD;;;;;GAKG;AACH,MAAM,YAAY,GAAG;IACnB,GAAG,CAAC,IAAY;QACd,OAAO,SAAS,CAAE,IAA4B,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,CAAE,IAA4B,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,UAAU;QACZ,OAAQ,IAA4B,CAAC,IAAI,EAAE,UAAU,CAAC;IACxD,CAAC;IACD,IAAI,WAAW;QACb,OAAQ,IAA4B,CAAC,IAAI,EAAE,WAAW,CAAC;IACzD,CAAC;IACD,IAAI,MAAM;QACR,OAAQ,IAA4B,CAAC,IAAI,EAAE,MAAM,CAAC;IACpD,CAAC;IACD,IAAI,UAAU;QACZ,OAAQ,IAA4B,CAAC,IAAI,EAAE,MAAM,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ;QACV,OAAQ,IAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtD,CAAC;IACD,IAAI,OAAO;QACT,OAAQ,IAA4B,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;IAC9D,CAAC;IACD,IAAI,GAAG;QACL,OAAO,CACH,IAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAY,EAAE,WAAW,EAAE;YAC5F,gBAAgB,CACjB,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,KAAe;QACxB,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,IAAiC,CAAC,CAAC;QACvD,OAAQ,GAAG,CAAC,KAAuD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IACD,gBAAgB,CAAC,GAAG,SAAmB;QACrC,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,IAAiC,CAAC,CAAC;QACvD,OAAQ,GAAG,CAAC,SAA2D,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAChG,CAAC;IACD,eAAe,CAAC,GAAG,QAAkB;QACnC,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,IAAiC,CAAC,CAAC;QACvD,OAAQ,GAAG,CAAC,QAA0D,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9F,CAAC;IACD,gBAAgB,CAAC,GAAG,KAAe;QACjC,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,IAAiC,CAAC,CAAC;QACvD,OAAQ,GAAG,CAAC,SAA2D,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IACD,KAAK,CAAC,IAAY,EAAE,OAA+B;QACjD,MAAM,CAAC,GAAI,IAAkC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,OAAO,IAAA,sBAAU,EAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,EAAE,CAAC,KAAwB;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,EAAe,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO,IAAA,iBAAM,EAAC,IAAiC,EAAE,GAAG,CAAmB,CAAC;IAC1E,CAAC;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,KAAK,GAAG,CAAC,IAA6B,EAAE,EAAE,CAAE,IAA4B,CAAC,IAAI,CAAC;AAEpF,iGAAiG;AACjG,IAAA,uBAAc,EAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnH,IAAA,uBAAc,EAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnG,IAAA,uBAAc,EAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrG,IAAA,uBAAc,EAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/G,IAAA,uBAAc,EAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAe,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7F,IAAA,uBAAc,EAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7I,IAAA,uBAAc,EAAC,YAAY,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAEhE,+FAA+F;AAC/F,IAAA,uBAAc,EAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChE,IAAA,uBAAc,EAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AACxE,IAAA,uBAAc,EAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAsB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACvG,IAAA,uBAAc,EAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAA+B,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;AACrG,IAAA,uBAAc,EAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACnD,IAAA,uBAAc,EAAC,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAA+B,CAAC,KAAK,CAAC,CAAC;AAEtF;;;;;;;GAOG;AACH,SAAgB,oBAAoB;IAClC,OAAO,CAAC,UAA0B,EAAkB,EAAE;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAOrC,CAAC;QACF,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC;QAC1C,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC;QACjB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK;YACN,UAA6E,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7F,GAAG,CAAC,MAAM;YACP,UAAmE,CAAC,MAAM,IAAI,EAAE,CAAC;QACpF,GAAG,CAAC,IAAI,GAAI,UAAkD,CAAC,IAAI,CAAC;QACpE,OAAO,GAAgC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -309,7 +309,7 @@ function adaptResponse(fastifyReply, _fastifyReq) {
|
|
|
309
309
|
}
|
|
310
310
|
return res;
|
|
311
311
|
};
|
|
312
|
-
const RES_RENDER_HINT = 'res.render is not implemented on the Fastify lane. Wrap this handler with expressLane() so the route runs on the Express lane. See docs/FAST_PRODUCTION_CHECKLIST.md';
|
|
312
|
+
const RES_RENDER_HINT = 'res.render is not implemented on the Fastify lane. Wrap this handler with expressLane() so the route runs on the Express lane. See https://github.com/John-Daniels/express-fastify-runtime/blob/main/docs/FAST_PRODUCTION_CHECKLIST.md';
|
|
313
313
|
res.render = function (_view, _locals, _callback) {
|
|
314
314
|
if (process.env.NODE_ENV !== 'production') {
|
|
315
315
|
console.warn(`[express-fastify-runtime] ${RES_RENDER_HINT}`);
|
|
@@ -318,7 +318,7 @@ function adaptResponse(fastifyReply, _fastifyReq) {
|
|
|
318
318
|
fastifyReply.status(501).type('application/json').send({
|
|
319
319
|
error: 'res.render is not implemented on the Fastify lane',
|
|
320
320
|
hint: 'Wrap this handler with expressLane() so the route runs on the Express lane.',
|
|
321
|
-
docs: 'docs/FAST_PRODUCTION_CHECKLIST.md',
|
|
321
|
+
docs: 'https://github.com/John-Daniels/express-fastify-runtime/blob/main/docs/FAST_PRODUCTION_CHECKLIST.md',
|
|
322
322
|
});
|
|
323
323
|
}
|
|
324
324
|
return res;
|
|
@@ -632,7 +632,7 @@ const responseProto = {
|
|
|
632
632
|
return this;
|
|
633
633
|
},
|
|
634
634
|
render(_view, _locals, _callback) {
|
|
635
|
-
const RES_RENDER_HINT = 'res.render is not implemented on the Fastify lane. Wrap this handler with expressLane() so the route runs on the Express lane. See docs/FAST_PRODUCTION_CHECKLIST.md';
|
|
635
|
+
const RES_RENDER_HINT = 'res.render is not implemented on the Fastify lane. Wrap this handler with expressLane() so the route runs on the Express lane. See https://github.com/John-Daniels/express-fastify-runtime/blob/main/docs/FAST_PRODUCTION_CHECKLIST.md';
|
|
636
636
|
if (process.env.NODE_ENV !== 'production') {
|
|
637
637
|
console.warn(`[express-fastify-runtime] ${RES_RENDER_HINT}`);
|
|
638
638
|
}
|
|
@@ -641,7 +641,7 @@ const responseProto = {
|
|
|
641
641
|
r.status(501).type('application/json').send({
|
|
642
642
|
error: 'res.render is not implemented on the Fastify lane',
|
|
643
643
|
hint: 'Wrap this handler with expressLane() so the route runs on the Express lane.',
|
|
644
|
-
docs: 'docs/FAST_PRODUCTION_CHECKLIST.md',
|
|
644
|
+
docs: 'https://github.com/John-Daniels/express-fastify-runtime/blob/main/docs/FAST_PRODUCTION_CHECKLIST.md',
|
|
645
645
|
});
|
|
646
646
|
}
|
|
647
647
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/fastify/adapters/response.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/fastify/adapters/response.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAqDH,sCA4SC;AAuVD,sDAWC;AAjsBD,yCAA8D;AAC9D,0DAAkC;AAIlC,MAAM,YAAY,GAAG,wBAA2C,CAAC;AAEjE,SAAS,oBAAoB,CAAC,KAAiC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAqC;IAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,GAAM,EACN,GAAuC;IAEvC,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE;QACpB,GAAG,CAAC,MAAM,EAAE,IAAqB;YAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACpC,IAAI,OAAO,CAAC,KAAK,UAAU;oBAAE,OAAQ,CAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YAC3D,IAAI,OAAO,MAAM,KAAK,UAAU;gBAAE,OAAQ,MAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CACvB,CAAC;QACJ,CAAC;KACF,CAAM,CAAC;AACV,CAAC;AAED,yFAAyF;AACzF,SAAgB,aAAa,CAAC,YAA0B,EAAE,WAA2B;IACnF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAK5B,CAAC;IACF,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;IAEjB,4GAA4G;IAC5G,MAAM,eAAe,GAA+D,EAAE,CAAC;IACvF,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,GAAG,CAAC,oBAAoB,GAAG,eAAe,CAAC;IAC3C,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE;QACzB,IAAI,aAAa;YAAE,OAAO;QAC1B,aAAa,GAAG,IAAI,CAAC;QACrB,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;QACnC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,EAAE,EAAE,CAAC;YACP,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACjB,EAAE,CAAC,KAAa,EAAE,QAAsC;YACtD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC1C,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAwC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpF,OAAO,GAAG,CAAC;YACb,CAAC;YACD,OAAO,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,SAAiD,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,KAAa,EAAE,QAAsC;YACxD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC1C,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAwC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnF,OAAO,GAAG,CAAC;YACb,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAmD,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,KAAa,EAAE,GAAG,IAAe;YACpC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC1C,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAmD,CAAC,CAAC;QAClF,CAAC;KACF,CAAC,CAAC;IAEH,6FAA6F;IAC7F,4GAA4G;IAC5G,uFAAuF;IACvF,SAAS,SAAS;QAChB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACzC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,SAAS,kBAAkB,CAAC,CAAqD;QAC/E,IAAI,CAAC,CAAC,eAAe;YAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE;QACxC,GAAG;YACD,OAAO,GAAG,CAAC,WAAW,CAAC;QACzB,CAAC;QACD,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,GAAG,UAAU,IAAY;QACjC,UAAU,GAAG,IAAI,CAAC;QAClB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;QACtB,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,UAAU,GAAG,UAAU,IAAY;QACrC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;QACtB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,SAAS,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,IAAI,GAAG,UAAU,IAAc;QACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,SAAS,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC;QACb,CAAC;QACD,kFAAkF;QAClF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/D,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,SAAS,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC;QACb,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,SAAS,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,IAAI,GAAG,UAAU,IAAc;QACjC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,SAAS,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,KAAK,GAAG,UAAU,IAAc;QAClC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,SAAS,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,UACrB,KAAsC,EACtC,KAAyB;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAM,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,SAAS,GAAG,UAAU,IAAY,EAAE,KAAiC;QACvE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,YAAY,GAAG,UAAU,IAAY;QACvC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,MAAM,GAAG,UAAU,KAAa,EAAE,KAAwB;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GACR,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,GAAG,UAAU,KAAa;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC;IAEF,GAAG,CAAC,SAAS,GAAG,UAAU,IAAY;QACpC,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,GAAG,UAAU,IAAY;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAA2B;gBACnC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,iBAAiB;aACvB,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,KAAK,GAAG,UAAU,KAA6B;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,UAAU,GAAG,UAAU,QAAiB;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,CACX,qBAAqB,EACrB,yBAAyB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAC1D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAW;QAClC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,GACN,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,QAAmB;gBAC9C,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,OAAkB,CAAC;YACjD,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,IAAA,mBAAS,EAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,QAAQ,GAAG,UAAU,WAA4B,EAAE,GAAY;QACjE,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,GAAG,WAAW,CAAC;YACrB,MAAM,GAAG,GAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;QACxB,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClC,YAAY,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,IAAI,GAAG,UAAU,KAAa;QAChC,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,MAAM,GAAG,UAAU,IAAY,EAAE,GAAoB,EAAE,OAAuB;QAChF,MAAM,KAAK,GACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,IAAI,OAAO,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAa,SAAS;YAC9B,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,WAAW,GAAG,UAAU,IAAY,EAAE,OAAuB;QAC/D,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,GAAG,UACR,SAAmB,EACnB,YAA4C,EAC5C,EAAe;QAEf,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,SAAuB,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,IAAI,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAE,YAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,GAAG,CAAC,SAA4B,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,SAA4B,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,eAAe,GACnB,wOAAwO,CAAC;IAC3O,GAAG,CAAC,MAAM,GAAG,UACX,KAAa,EACb,OAAiC,EACjC,SAAsD;QAEtD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC;gBACrD,KAAK,EAAE,mDAAmD;gBAC1D,IAAI,EAAE,6EAA6E;gBACnF,IAAI,EAAE,qGAAqG;aAC5G,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO,aAAa,CAAC,GAAsB,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAaD,oGAAoG;AACpG,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAc;IACpC,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO;IAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,MAAO,CAAC,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,aAAa,GAAG;IACpB,IAAI,MAAM;QACR,MAAM,IAAI,GAAG,IAA2B,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,CAA0B;QAClC,IAA4B,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,WAAW;QACb,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC;IACxE,CAAC;IACD,IAAI,UAAU;QACZ,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;IACrE,CAAC;IACD,IAAI,UAAU,CAAC,IAAY;QACxB,IAA4B,CAAC,MAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;IAC9D,CAAC;IACD,qFAAqF;IACrF,IAAI,MAAM;QACR,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;IAClE,CAAC;IACD,IAAI,UAAU;QACZ,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;IAClE,CAAC;IACD,IAAI,QAAQ;QACV,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC;IAC1E,CAAC;IACD,IAAI,aAAa;QACf,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC;IAC1E,CAAC;IACD,IAAI,gBAAgB;QAClB,OAAQ,IAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC;IAC7E,CAAC;IACD,EAAE,CAAiB,KAAa,EAAE,QAAsC;QACrE,IAAI,CAAC,MAAO,CAAC,GAA2B,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,WAAW,CAAiB,KAAa,EAAE,QAAsC;QAC9E,IAAI,CAAC,MAAO,CAAC,GAA2B,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAiB,KAAa,EAAE,QAAsC;QACvE,IAAI,CAAC,MAAO,CAAC,GAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChE,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,eAAe,CAAiB,KAAa,EAAE,QAAsC;QAClF,IAAI,CAAC,MAAO,CAAC,GAA2B,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3E,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,cAAc,CAAiB,KAAa,EAAE,QAAsC;QACjF,IAAI,CAAC,MAAO,CAAC,GAA2B,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1E,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAiB,KAAa,EAAE,GAAG,IAAe;QACpD,OAAQ,IAAI,CAAC,MAAO,CAAC,GAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAiB,IAAY;QACjC,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;QACnC,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAiB,IAAY;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAO,CAAC;QACvB,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAiB,IAAc;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAO,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAClB,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACtE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAiB,IAAc;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAiB,IAAc;QAClC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAiB,KAAsC,EAAE,KAAyB;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAM,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAiB,KAAsC,EAAE,KAAyB;QACtF,OAAQ,IAAmC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAe,CAAC,CAAC;IAC1E,CAAC;IACD,SAAS,CAAiB,IAAY,EAAE,KAAiC;QACvE,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;QAClD,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,YAAY,CAAiB,IAAY;QACvC,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAiB,KAAa,EAAE,KAAwB;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GACR,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,GAAG,CAAiB,KAAa;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,SAAS,CAAiB,IAAY;QACpC,OAAO,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAiB,IAAY;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAA2B;gBACnC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,iBAAiB;aACvB,CAAC;YACF,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,WAAW,CAAiB,IAAY;QACtC,OAAQ,IAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAiB,KAA6B;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAiB,QAAiB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,CACX,qBAAqB,EACrB,yBAAyB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAC1D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,QAAQ,CAAiB,GAAW;QAClC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,MAAM,GAAG,GACN,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAmB,IAAK,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAkB,CAAC;YACpF,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,IAAA,mBAAS,EAAC,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,QAAQ,CAAiB,WAA4B,EAAE,GAAY;QACjE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAO,CAAC;QACvB,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,GAAG,WAAW,CAAC;YACrB,MAAM,GAAG,GAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;QAC1B,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACT,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAiB,KAAa;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAiB,IAAY,EAAE,GAAoB,EAAE,OAAuB;QAChF,MAAM,KAAK,GACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,IAAI,OAAO,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAa,SAAS;YAC9B,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,WAAW,CAAiB,IAAY,EAAE,OAAuB;QAC/D,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,IAAmC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,6FAA6F;IAC7F,qFAAqF;IACrF,KAAK,CAAiB,KAAc,EAAE,QAAwC,EAAE,EAAe;QAC7F,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,OAAQ,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,KAAsC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,SAAS,CAAiB,UAAkB,EAAE,GAAG,IAAe;QAC9D,cAAc,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,SAA0C,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;QAClF,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,YAAY;QACV,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,GAAG,CAED,SAAmB,EACnB,YAA4C,EAC5C,EAAe;QAEf,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC;QAC7B,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,SAAuB,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,IAAI,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAE,YAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,GAAG,CAAC,SAA4B,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,SAA4B,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAkC,CAAC;IAC5C,CAAC;IACD,MAAM,CAEJ,KAAa,EACb,OAAiC,EACjC,SAAsD;QAEtD,MAAM,eAAe,GACnB,wOAAwO,CAAC;QAC3O,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAO,CAAC;QACvB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC;gBAC1C,KAAK,EAAE,mDAAmD;gBAC1D,IAAI,EAAE,6EAA6E;gBACnF,IAAI,EAAE,qGAAqG;aAC5G,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAkC,CAAC;IAC5C,CAAC;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,qBAAqB;IAInC,OAAO,CAAC,YAA0B,EAAE,UAA2B,EAAmB,EAAE;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAa,CAAC;QACrD,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC;QACtB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,4CAA4C;QAChE,OAAO,GAAiC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -7,6 +7,8 @@ import type { ExpressRequest, ExpressResponse, NextFunction } from '../types/exp
|
|
|
7
7
|
export interface RegisterCompiledRoutesOptions {
|
|
8
8
|
/** When true, log that the request is handled on the Fastify lane. */
|
|
9
9
|
diagnostics?: boolean;
|
|
10
|
+
/** Param names with app.param() callbacks — routes using them stay on the Express lane. */
|
|
11
|
+
paramNames?: ReadonlySet<string>;
|
|
10
12
|
}
|
|
11
13
|
export declare function registerCompiledRoutes(fastify: FastifyInstance, classified: ClassifiedRoute[], runMiddleware: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void | Promise<void>, options?: RegisterCompiledRoutesOptions): void;
|
|
12
14
|
/**
|
|
@@ -1 +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;
|
|
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;IACtB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC;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;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAmBvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,wDASC;AAYD,4DAmBC;AAnDD,gDAA0D;AAC1D,kDAA4D;AAC5D,4CAAuD;AASvD,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;AAED;;;;;;;;;GASG;AACH,SAAgB,wBAAwB,CAAC,OAAwB;IAC/D,OAAO,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IACpD,OAAO,CAAC,oBAAoB,CAC1B,kBAAkB,EAClB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,4CAA4C;YAC5D,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACZ,GAA+B,CAAC,UAAU,GAAG,GAAG,CAAC;YAClD,IAAI,CAAC,GAAY,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAgCjB,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,CAsHjB"}
|
package/dist/runtime/fast.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.fast = fast;
|
|
|
12
12
|
const fastify_1 = __importDefault(require("fastify"));
|
|
13
13
|
const classify_1 = require("../app/classify");
|
|
14
14
|
const introspectExpress_1 = require("../app/introspectExpress");
|
|
15
|
+
const routingOptions_1 = require("./routingOptions");
|
|
15
16
|
const mount_1 = require("../express/mount");
|
|
16
17
|
const request_1 = require("../fastify/adapters/request");
|
|
17
18
|
const response_1 = require("../fastify/adapters/response");
|
|
@@ -64,17 +65,21 @@ function fast(app, ops) {
|
|
|
64
65
|
const fastifyOpts = ops && "fastify" in ops
|
|
65
66
|
? ops.fastify
|
|
66
67
|
: ops;
|
|
67
|
-
|
|
68
|
+
// Match the wrapped app's Express routing semantics (case-insensitive + non-strict by default);
|
|
69
|
+
// user-supplied fastify options still win.
|
|
70
|
+
const routingOpts = (0, routingOptions_1.deriveRoutingOptions)(app);
|
|
71
|
+
const fastify = (0, fastify_1.default)({ ...DEFAULT_OPTS, routerOptions: routingOpts, ...fastifyOpts });
|
|
68
72
|
(0, register_1.installExpressJsonParser)(fastify); // match express.json(): tolerate empty bodies (→ {})
|
|
69
73
|
const diagnostics = ops && "experimental" in ops && ops.experimental?.diagnostics === true;
|
|
70
74
|
const entries = (0, introspectExpress_1.introspectExpressApp)(app);
|
|
71
75
|
if (entries !== null && entries.length > 0) {
|
|
72
76
|
const classified = (0, classify_1.classifyAll)(entries);
|
|
73
77
|
const noop = (_req, _res, next) => next();
|
|
74
|
-
(0,
|
|
78
|
+
const paramNames = (0, introspectExpress_1.getAppParamNames)(app);
|
|
79
|
+
(0, register_1.registerCompiledRoutes)(fastify, classified, noop, { diagnostics, paramNames });
|
|
75
80
|
}
|
|
76
81
|
else if (diagnostics) {
|
|
77
|
-
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?");
|
|
82
|
+
console.log("[express-fastify-runtime] No routes compiled to Fastify lane (all requests will use Express lane). See https://github.com/John-Daniels/express-fastify-runtime/blob/main/docs/FAST_PRODUCTION_CHECKLIST.md (§ Why is everything on the Express lane?)");
|
|
78
83
|
}
|
|
79
84
|
(0, mount_1.mountExpress)(fastify, app, { diagnostics });
|
|
80
85
|
const expressErrorMiddleware = (0, introspectExpress_1.getExpressErrorMiddleware)(app);
|
package/dist/runtime/fast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast.js","sourceRoot":"","sources":["../../src/runtime/fast.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;
|
|
1
|
+
{"version":3,"file":"fast.js","sourceRoot":"","sources":["../../src/runtime/fast.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAmHH,oBAyHC;AAxOD,sDAGiB;AAEjB,8CAA8C;AAC9C,gEAKkC;AAClC,qDAAwD;AACxD,4CAAgD;AAChD,yDAAmE;AACnE,2DAGsC;AACtC,kDAAuF;AACvF,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,gGAAgG;IAChG,2CAA2C;IAC3C,MAAM,WAAW,GAAG,IAAA,qCAAoB,EAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAA,iBAAO,EAAC,EAAE,GAAG,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;IACzF,IAAA,mCAAwB,EAAC,OAAO,CAAC,CAAC,CAAC,qDAAqD;IAExF,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,MAAM,UAAU,GAAG,IAAA,oCAAgB,EAAC,GAAgC,CAAC,CAAC;QACtE,IAAA,iCAAsB,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CACT,uPAAuP,CACxP,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"}
|
|
@@ -1 +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;
|
|
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;AAiBhF,MAAM,WAAW,gBAAgB;IAC/B,4GAA4G;IAC5G,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA8JpE"}
|
|
@@ -12,6 +12,7 @@ const classify_1 = require("../app/classify");
|
|
|
12
12
|
const engine_1 = require("../express/engine");
|
|
13
13
|
const mount_1 = require("../express/mount");
|
|
14
14
|
const register_1 = require("../fastify/register");
|
|
15
|
+
const routingOptions_1 = require("./routingOptions");
|
|
15
16
|
const populateExpress_1 = require("./populateExpress");
|
|
16
17
|
const assert_1 = require("../utils/assert");
|
|
17
18
|
const errorHandler_1 = require("./errorHandler");
|
|
@@ -120,6 +121,7 @@ function createApp(options) {
|
|
|
120
121
|
const fastify = (0, fastify_1.default)({
|
|
121
122
|
logger: false,
|
|
122
123
|
bodyLimit: 10 * 1024 * 1024, // 10MB; matches express.json({ limit: '10mb' }) for large payloads
|
|
124
|
+
routerOptions: (0, routingOptions_1.deriveRoutingOptions)(express), // Express-like matching: case-insensitive + non-strict
|
|
123
125
|
});
|
|
124
126
|
(0, register_1.installExpressJsonParser)(fastify); // match express.json(): tolerate empty bodies (→ {})
|
|
125
127
|
const classified = (0, classify_1.classifyAll)(routeStore.getAll());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/runtime/lifecycle.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/runtime/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map Express routing settings to Fastify (find-my-way) options so matching behaves like Express.
|
|
3
|
+
*
|
|
4
|
+
* Express defaults: "case sensitive routing" OFF (so `/Foo` matches `/foo`) and "strict routing" OFF
|
|
5
|
+
* (so `/x` and `/x/` both match). Fastify's defaults are the opposite (case-sensitive, trailing slash
|
|
6
|
+
* significant), so without this fast() would be STRICTER than the Express app it wraps. We read the
|
|
7
|
+
* app's settings and translate:
|
|
8
|
+
* - caseSensitive = ("case sensitive routing" enabled)
|
|
9
|
+
* - ignoreTrailingSlash = ("strict routing" NOT enabled)
|
|
10
|
+
*/
|
|
11
|
+
export interface RoutingOptions {
|
|
12
|
+
caseSensitive: boolean;
|
|
13
|
+
ignoreTrailingSlash: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function deriveRoutingOptions(app: unknown): RoutingOptions;
|
|
16
|
+
//# sourceMappingURL=routingOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routingOptions.d.ts","sourceRoot":"","sources":["../../src/runtime/routingOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAejE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Map Express routing settings to Fastify (find-my-way) options so matching behaves like Express.
|
|
4
|
+
*
|
|
5
|
+
* Express defaults: "case sensitive routing" OFF (so `/Foo` matches `/foo`) and "strict routing" OFF
|
|
6
|
+
* (so `/x` and `/x/` both match). Fastify's defaults are the opposite (case-sensitive, trailing slash
|
|
7
|
+
* significant), so without this fast() would be STRICTER than the Express app it wraps. We read the
|
|
8
|
+
* app's settings and translate:
|
|
9
|
+
* - caseSensitive = ("case sensitive routing" enabled)
|
|
10
|
+
* - ignoreTrailingSlash = ("strict routing" NOT enabled)
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.deriveRoutingOptions = deriveRoutingOptions;
|
|
14
|
+
function deriveRoutingOptions(app) {
|
|
15
|
+
const a = app;
|
|
16
|
+
const enabled = typeof a?.enabled === 'function' ? (name) => a.enabled(name) : () => false;
|
|
17
|
+
let caseSensitiveRouting = false;
|
|
18
|
+
let strictRouting = false;
|
|
19
|
+
try {
|
|
20
|
+
caseSensitiveRouting = enabled('case sensitive routing') === true;
|
|
21
|
+
strictRouting = enabled('strict routing') === true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Non-Express-shaped app (e.g. createApp's own engine) — keep Express-like defaults.
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
caseSensitive: caseSensitiveRouting,
|
|
28
|
+
ignoreTrailingSlash: !strictRouting,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=routingOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routingOptions.js","sourceRoot":"","sources":["../../src/runtime/routingOptions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAWH,oDAeC;AAfD,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,MAAM,CAAC,GAAG,GAAyB,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACpG,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,IAAI,CAAC;QAClE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,qFAAqF;IACvF,CAAC;IACD,OAAO;QACL,aAAa,EAAE,oBAAoB;QACnC,mBAAmB,EAAE,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgCvD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAiB7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAEzD"}
|
package/dist/utils/detect.js
CHANGED
|
@@ -28,6 +28,11 @@ const UNSAFE_PATTERNS = [
|
|
|
28
28
|
/req\.on\s*\(\s*['"]end['"]/,
|
|
29
29
|
/multipart\/form-data/,
|
|
30
30
|
/formidable|busboy|multer/,
|
|
31
|
+
// Express route-skipping control flow. next('route')/next('router') means "skip the rest of this
|
|
32
|
+
// route/router and try the next match" — semantics our flattened single-chain runner can't honor
|
|
33
|
+
// (it would treat the string as an error). Run these on the real Express lane instead.
|
|
34
|
+
/next\s*\(\s*['"]route['"]\s*\)/,
|
|
35
|
+
/next\s*\(\s*['"]router['"]\s*\)/,
|
|
31
36
|
];
|
|
32
37
|
/**
|
|
33
38
|
* Returns true if the middleware is known to require Express (streams, multipart, etc.).
|
package/dist/utils/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAqCH,8CAiBC;AAKD,sCAEC;AA1DD,qCAAyC;AAEzC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,QAAQ;IACR,QAAQ;IACR,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,6FAA6F;IAC7F,8FAA8F;IAC9F,gGAAgG;IAChG,uFAAuF;IACvF,kBAAkB,EAAE,uBAAuB;IAC3C,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,iBAAiB;CAChC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG;IACtB,aAAa;IACb,6BAA6B;IAC7B,4BAA4B;IAC5B,sBAAsB;IACtB,0BAA0B;IAC1B,iGAAiG;IACjG,iGAAiG;IACjG,uFAAuF;IACvF,gCAAgC;IAChC,iCAAiC;CAClC,CAAC;AAEF;;GAEG;AACH,SAAgB,iBAAiB,CAAC,EAAkB;IAClD,IAAI,OAAO,EAAE,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC1C,6FAA6F;IAC7F,0FAA0F;IAC1F,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,EAAE,CAAmB,CAAC;IACnD,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,CAAC,GAAI,MAAuC,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAkB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translate an Express route path string into a Fastify (find-my-way) path.
|
|
3
|
+
*
|
|
4
|
+
* Express and Fastify share `/:param` and `/static`, but wildcards differ:
|
|
5
|
+
* - Express 4: bare `*` → the match is exposed as `req.params[0]` (then `[1]`, ...).
|
|
6
|
+
* - Express 5: named `*splat` → exposed as `req.params.splat`.
|
|
7
|
+
* - Fastify/find-my-way: a single trailing `*`, exposed as `req.params['*']`.
|
|
8
|
+
* Passing an Express path verbatim to Fastify therefore (a) crashes at registration for Express 5's
|
|
9
|
+
* `*splat` ("Wildcard must be the last character"), and (b) loses the wildcard value (handlers read
|
|
10
|
+
* `params[0]`/`params.splat`, Fastify wrote `params['*']`).
|
|
11
|
+
*
|
|
12
|
+
* `toFastifyPath` rewrites a trailing wildcard to Fastify's `*` and reports the Express key to bridge
|
|
13
|
+
* back at request time. Anything we can't translate safely (mid-path or multiple wildcards) returns
|
|
14
|
+
* null so the caller leaves that route on the Express lane. Plain param/static paths are returned
|
|
15
|
+
* unchanged with `wildcard: null` (zero behavior change for the common case).
|
|
16
|
+
*/
|
|
17
|
+
export interface FastifyPath {
|
|
18
|
+
/** The path to register on Fastify. */
|
|
19
|
+
url: string;
|
|
20
|
+
/** Express params key to copy Fastify's `params['*']` into, or null when there is no wildcard. */
|
|
21
|
+
wildcard: string | null;
|
|
22
|
+
}
|
|
23
|
+
export declare function toFastifyPath(expressPath: string): FastifyPath | null;
|
|
24
|
+
//# sourceMappingURL=expressPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressPath.d.ts","sourceRoot":"","sources":["../../src/utils/expressPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,kGAAkG;IAClG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA0BrE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Translate an Express route path string into a Fastify (find-my-way) path.
|
|
4
|
+
*
|
|
5
|
+
* Express and Fastify share `/:param` and `/static`, but wildcards differ:
|
|
6
|
+
* - Express 4: bare `*` → the match is exposed as `req.params[0]` (then `[1]`, ...).
|
|
7
|
+
* - Express 5: named `*splat` → exposed as `req.params.splat`.
|
|
8
|
+
* - Fastify/find-my-way: a single trailing `*`, exposed as `req.params['*']`.
|
|
9
|
+
* Passing an Express path verbatim to Fastify therefore (a) crashes at registration for Express 5's
|
|
10
|
+
* `*splat` ("Wildcard must be the last character"), and (b) loses the wildcard value (handlers read
|
|
11
|
+
* `params[0]`/`params.splat`, Fastify wrote `params['*']`).
|
|
12
|
+
*
|
|
13
|
+
* `toFastifyPath` rewrites a trailing wildcard to Fastify's `*` and reports the Express key to bridge
|
|
14
|
+
* back at request time. Anything we can't translate safely (mid-path or multiple wildcards) returns
|
|
15
|
+
* null so the caller leaves that route on the Express lane. Plain param/static paths are returned
|
|
16
|
+
* unchanged with `wildcard: null` (zero behavior change for the common case).
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.toFastifyPath = toFastifyPath;
|
|
20
|
+
const STAR = '*';
|
|
21
|
+
function toFastifyPath(expressPath) {
|
|
22
|
+
if (typeof expressPath !== 'string' || expressPath.length === 0)
|
|
23
|
+
return null;
|
|
24
|
+
// No wildcard → identical syntax on both routers (params, statics). Return as-is.
|
|
25
|
+
if (!expressPath.includes(STAR))
|
|
26
|
+
return { url: expressPath, wildcard: null };
|
|
27
|
+
// Count wildcard occurrences. Fastify supports exactly one, and only as the final segment.
|
|
28
|
+
const starCount = (expressPath.match(/\*/g) ?? []).length;
|
|
29
|
+
if (starCount !== 1)
|
|
30
|
+
return null; // multiple wildcards → Express lane
|
|
31
|
+
const starIndex = expressPath.indexOf(STAR);
|
|
32
|
+
// Express 5 names the wildcard: `*name` (chars right after `*`). Express 4 uses a bare `*`.
|
|
33
|
+
const after = expressPath.slice(starIndex + 1);
|
|
34
|
+
const nameMatch = after.match(/^([A-Za-z_$][\w$]*)/);
|
|
35
|
+
const wildcardName = nameMatch ? nameMatch[1] : null;
|
|
36
|
+
const trailingAfterName = nameMatch ? after.slice(nameMatch[1].length) : after;
|
|
37
|
+
// The wildcard must be last (only an optional trailing slash may follow). Otherwise we can't map
|
|
38
|
+
// it to Fastify's trailing `*`.
|
|
39
|
+
if (trailingAfterName !== '' && trailingAfterName !== '/')
|
|
40
|
+
return null;
|
|
41
|
+
const before = expressPath.slice(0, starIndex); // includes the slash before `*`
|
|
42
|
+
const url = before + STAR;
|
|
43
|
+
// Express 4 exposes a bare `*` as the numeric key '0'; Express 5 uses the given name.
|
|
44
|
+
const wildcard = wildcardName ?? '0';
|
|
45
|
+
return { url, wildcard };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=expressPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressPath.js","sourceRoot":"","sources":["../../src/utils/expressPath.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAWH,sCA0BC;AA5BD,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,SAAgB,aAAa,CAAC,WAAmB;IAC/C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7E,kFAAkF;IAClF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE7E,2FAA2F;IAC3F,MAAM,SAAS,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC1D,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,oCAAoC;IAEtE,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,4FAA4F;IAC5F,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAE/E,iGAAiG;IACjG,gCAAgC;IAChC,IAAI,iBAAiB,KAAK,EAAE,IAAI,iBAAiB,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAEvE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,gCAAgC;IAChF,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1B,sFAAsF;IACtF,MAAM,QAAQ,GAAG,YAAY,IAAI,GAAG,CAAC;IACrC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC"}
|