express-fastify-runtime 0.1.1 → 0.1.2
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 +16 -0
- package/dist/fastify/register.d.ts +11 -0
- package/dist/fastify/register.d.ts.map +1 -1
- package/dist/fastify/register.js +28 -0
- package/dist/fastify/register.js.map +1 -1
- package/dist/runtime/fast.d.ts.map +1 -1
- package/dist/runtime/fast.js +1 -0
- package/dist/runtime/fast.js.map +1 -1
- package/dist/runtime/lifecycle.d.ts.map +1 -1
- package/dist/runtime/lifecycle.js +1 -0
- package/dist/runtime/lifecycle.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# 2026-06-25
|
|
2
2
|
|
|
3
|
+
## Fix: empty JSON body 400'd ("Body cannot be empty…") — now matches express.json()
|
|
4
|
+
|
|
5
|
+
Reported by a consumer: bodyless requests sent with `Content-Type: application/json` (common from
|
|
6
|
+
axios on POST/PUT/DELETE with no payload) failed with
|
|
7
|
+
`FST_ERR_CTP_EMPTY_JSON_BODY` — "Body cannot be empty when content-type is set to 'application/json'".
|
|
8
|
+
|
|
9
|
+
- **Cause.** `express.json()` tolerates an empty body and sets `req.body = {}`; Fastify's default
|
|
10
|
+
`application/json` parser rejects it with 400. Because `fast()` maps Express's JSON parsing onto
|
|
11
|
+
Fastify's native parser, it inherited the stricter behavior — 400'ing requests that work on plain
|
|
12
|
+
Express.
|
|
13
|
+
- **Fix** (`src/fastify/register.ts` `installExpressJsonParser`, wired into `runtime/fast.ts` and
|
|
14
|
+
`runtime/lifecycle.ts`): override Fastify's JSON content-type parser to behave like Express —
|
|
15
|
+
empty/whitespace body → `{}`, otherwise `JSON.parse` (malformed JSON still → 400, as on Express).
|
|
16
|
+
- **Test**: `test/integration/middleware-parity.test.js` now asserts empty body → 200 `{}`, valid
|
|
17
|
+
body → parsed, malformed JSON → 400.
|
|
18
|
+
|
|
3
19
|
## Fix: writes (POST/PUT with a JSON body) 500'd on the Express-lane fallback (Express 4)
|
|
4
20
|
|
|
5
21
|
Reported by a consumer (Express 4): reads worked, but every request with a JSON body returned
|
|
@@ -9,4 +9,15 @@ export interface RegisterCompiledRoutesOptions {
|
|
|
9
9
|
diagnostics?: boolean;
|
|
10
10
|
}
|
|
11
11
|
export declare function registerCompiledRoutes(fastify: FastifyInstance, classified: ClassifiedRoute[], runMiddleware: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void | Promise<void>, options?: RegisterCompiledRoutesOptions): void;
|
|
12
|
+
/**
|
|
13
|
+
* Make Fastify's JSON body parsing behave like Express's `express.json()`.
|
|
14
|
+
*
|
|
15
|
+
* Fastify's default `application/json` parser rejects an empty body with
|
|
16
|
+
* `FST_ERR_CTP_EMPTY_JSON_BODY` ("Body cannot be empty when content-type is set to
|
|
17
|
+
* 'application/json'"). Express's body-parser tolerates it and sets `req.body = {}`. Clients (axios
|
|
18
|
+
* et al.) routinely send `Content-Type: application/json` with no body on bodyless POST/PUT/DELETE
|
|
19
|
+
* calls, so the default would 400 requests that work fine on plain Express. Override the parser to
|
|
20
|
+
* match Express: empty body → `{}`, otherwise `JSON.parse` (400 on malformed JSON, as before).
|
|
21
|
+
*/
|
|
22
|
+
export declare function installExpressJsonParser(fastify: FastifyInstance): void;
|
|
12
23
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -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;CACvB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,eAAe,EAAE,EAC7B,aAAa,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACtG,OAAO,CAAC,EAAE,6BAA6B,GACtC,IAAI,CAIN"}
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKtF,MAAM,WAAW,6BAA6B;IAC5C,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,eAAe,EAAE,EAC7B,aAAa,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACtG,OAAO,CAAC,EAAE,6BAA6B,GACtC,IAAI,CAIN;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAmBvE"}
|
package/dist/fastify/register.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerCompiledRoutes = registerCompiledRoutes;
|
|
7
|
+
exports.installExpressJsonParser = installExpressJsonParser;
|
|
7
8
|
const request_1 = require("./adapters/request");
|
|
8
9
|
const response_1 = require("./adapters/response");
|
|
9
10
|
const compile_1 = require("../app/compile");
|
|
@@ -12,4 +13,31 @@ function registerCompiledRoutes(fastify, classified, runMiddleware, options) {
|
|
|
12
13
|
const adaptResponse = (0, response_1.createResponseAdapter)();
|
|
13
14
|
(0, compile_1.registerFastifyRoutes)(fastify, classified, adaptRequest, adaptResponse, runMiddleware, options);
|
|
14
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Make Fastify's JSON body parsing behave like Express's `express.json()`.
|
|
18
|
+
*
|
|
19
|
+
* Fastify's default `application/json` parser rejects an empty body with
|
|
20
|
+
* `FST_ERR_CTP_EMPTY_JSON_BODY` ("Body cannot be empty when content-type is set to
|
|
21
|
+
* 'application/json'"). Express's body-parser tolerates it and sets `req.body = {}`. Clients (axios
|
|
22
|
+
* et al.) routinely send `Content-Type: application/json` with no body on bodyless POST/PUT/DELETE
|
|
23
|
+
* calls, so the default would 400 requests that work fine on plain Express. Override the parser to
|
|
24
|
+
* match Express: empty body → `{}`, otherwise `JSON.parse` (400 on malformed JSON, as before).
|
|
25
|
+
*/
|
|
26
|
+
function installExpressJsonParser(fastify) {
|
|
27
|
+
fastify.removeContentTypeParser('application/json');
|
|
28
|
+
fastify.addContentTypeParser('application/json', { parseAs: 'string' }, (_req, body, done) => {
|
|
29
|
+
const text = typeof body === 'string' ? body : body == null ? '' : String(body);
|
|
30
|
+
if (text.trim().length === 0) {
|
|
31
|
+
done(null, {}); // Express returns {} for an empty JSON body
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
done(null, JSON.parse(text));
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
err.statusCode = 400;
|
|
39
|
+
done(err, undefined);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
15
43
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAcH,wDASC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/fastify/register.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAcH,wDASC;AAYD,4DAmBC;AAjDD,gDAA0D;AAC1D,kDAA4D;AAC5D,4CAAuD;AAOvD,SAAgB,sBAAsB,CACpC,OAAwB,EACxB,UAA6B,EAC7B,aAAsG,EACtG,OAAuC;IAEvC,MAAM,YAAY,GAAG,IAAA,8BAAoB,GAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAA,gCAAqB,GAAE,CAAC;IAC9C,IAAA,+BAAqB,EAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAClG,CAAC;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;AA8BjB,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uDAAuD;IACvD,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;;;;;GAQG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG;IAEnD,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAE7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAqCF;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACnC,eAAe,
|
|
1
|
+
{"version":3,"file":"fast.d.ts","sourceRoot":"","sources":["../../src/runtime/fast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAgB,EACd,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AA8BjB,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uDAAuD;IACvD,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;;;;;GAQG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG;IAEnD,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAE7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAqCF;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACnC,eAAe,CAkHjB"}
|
package/dist/runtime/fast.js
CHANGED
|
@@ -65,6 +65,7 @@ function fast(app, ops) {
|
|
|
65
65
|
? ops.fastify
|
|
66
66
|
: ops;
|
|
67
67
|
const fastify = (0, fastify_1.default)({ ...DEFAULT_OPTS, ...fastifyOpts });
|
|
68
|
+
(0, register_1.installExpressJsonParser)(fastify); // match express.json(): tolerate empty bodies (→ {})
|
|
68
69
|
const diagnostics = ops && "experimental" in ops && ops.experimental?.diagnostics === true;
|
|
69
70
|
const entries = (0, introspectExpress_1.introspectExpressApp)(app);
|
|
70
71
|
if (entries !== null && entries.length > 0) {
|
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;;;;;AAiHH,
|
|
1
|
+
{"version":3,"file":"fast.js","sourceRoot":"","sources":["../../src/runtime/fast.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAgBhF,MAAM,WAAW,gBAAgB;IAC/B,4GAA4G;IAC5G,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,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;AAgBhF,MAAM,WAAW,gBAAgB;IAC/B,4GAA4G;IAC5G,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA6JpE"}
|
|
@@ -121,6 +121,7 @@ function createApp(options) {
|
|
|
121
121
|
logger: false,
|
|
122
122
|
bodyLimit: 10 * 1024 * 1024, // 10MB; matches express.json({ limit: '10mb' }) for large payloads
|
|
123
123
|
});
|
|
124
|
+
(0, register_1.installExpressJsonParser)(fastify); // match express.json(): tolerate empty bodies (→ {})
|
|
124
125
|
const classified = (0, classify_1.classifyAll)(routeStore.getAll());
|
|
125
126
|
const runMiddleware = (_req, _res, next) => next();
|
|
126
127
|
(0, register_1.registerCompiledRoutes)(fastify, classified, runMiddleware);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/runtime/lifecycle.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAwBH,
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/runtime/lifecycle.ts"],"names":[],"mappings":"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"}
|