express-fastify-runtime 0.1.0 β†’ 0.1.1

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/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # express-fastify-runtime
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/express-fastify-runtime.svg)](https://www.npmjs.com/package/express-fastify-runtime)
4
+ [![license](https://img.shields.io/npm/l/express-fastify-runtime.svg)](./LICENSE)
5
+
6
+ <!-- [![npm downloads](https://img.shields.io/npm/dm/express-fastify-runtime.svg)](https://www.npmjs.com/package/express-fastify-runtime) -->
7
+
3
8
  > Your Express app. Fastify's speed. One line. No rewrite.
4
9
 
5
10
  ```ts
@@ -9,7 +14,7 @@ import express from "express";
9
14
  const app = express();
10
15
  app.get("/", (req, res) => res.json({ hello: "world" }));
11
16
 
12
- fast(app).listen({ port: 3000 }); // πŸ‘ˆ that's the whole trick
17
+ fast(app).listen({ port: 3000 }); // πŸ‘ˆ that's the whole trick
13
18
  ```
14
19
 
15
20
  ---
@@ -17,18 +22,18 @@ fast(app).listen({ port: 3000 }); // πŸ‘ˆ that's the whole trick
17
22
  ## A short, slightly emotional story
18
23
 
19
24
  I love Express. I love it the way you love a comfortable pair of shoes β€” `req`, `res`,
20
- `next`, a thousand middlewares on npm, and muscle memory built over years. Express is *home*.
25
+ `next`, a thousand middlewares on npm, and muscle memory built over years. Express is _home_.
21
26
 
22
27
  Then one day someone showed me a Fastify benchmark and my coffee went cold. "Two-ish times the
23
28
  throughput," they said, smiling like they'd discovered fire. And I thought: do I really have to
24
29
  abandon my comfortable shoes and rewrite everything in a new framework just to go faster?
25
30
 
26
31
  So I went looking for a shortcut. I found tools that "run Express on Fastify" β€” and many of them
27
- do *exactly* one thing: they hand your Express app to Fastify and let Fastify… call Express for
32
+ do _exactly_ one thing: they hand your Express app to Fastify and let Fastify… call Express for
28
33
  every request. Your app technically runs "on Fastify." It is not one bit faster. It's a very
29
34
  polite handshake between two frameworks where nothing actually changes. Cool sticker, no engine.
30
35
 
31
- **`express-fastify-runtime` is the engine.** It doesn't just *expose* your Express app to
36
+ **`express-fastify-runtime` is the engine.** It doesn't just _expose_ your Express app to
32
37
  Fastify β€” it **compiles** your safe routes and middleware onto Fastify's real request pipeline,
33
38
  and only falls back to actual Express for the things that genuinely need it (multipart uploads,
34
39
  `res.render`, streaming bodies, anything unusual). You keep writing Express. It actually gets
@@ -55,8 +60,16 @@ You don't rewrite a thing. You wrap one line. Your shoes stay on.
55
60
 
56
61
  ## Install
57
62
 
63
+ [**express-fastify-runtime** on npm](https://www.npmjs.com/package/express-fastify-runtime)
64
+
58
65
  ```bash
59
66
  npm install express-fastify-runtime
67
+ # or
68
+ pnpm add express-fastify-runtime
69
+ # or
70
+ yarn add express-fastify-runtime
71
+ # or
72
+ bun add express-fastify-runtime
60
73
  ```
61
74
 
62
75
  `express` is a **peer dependency** β€” bring your own (`^4.18` or `^5`). `fast()` uses whatever
@@ -74,26 +87,27 @@ Express you already have.
74
87
  You wrote a normal Express app. Wrap it. Done.
75
88
 
76
89
  ```ts
77
- import "express-fastify-runtime"; // load first (the one rule)
90
+ import "express-fastify-runtime"; // load first (the one rule)
78
91
  import express from "express";
79
92
  import morgan from "morgan";
80
93
  import helmet from "helmet";
81
94
  import { fast } from "express-fastify-runtime";
82
95
 
83
96
  const app = express();
84
- app.use(morgan("tiny")); // logs, correctly, per request
85
- app.use(helmet()); // security headers, intact
86
- app.use(express.json()); // parsed by Fastify's fast parser under the hood
97
+ app.use(morgan("tiny")); // logs, correctly, per request
98
+ app.use(helmet()); // security headers, intact
99
+ app.use(express.json()); // parsed by Fastify's fast parser under the hood
87
100
 
88
101
  app.get("/users/:id", (req, res) => {
89
102
  res.json({ id: req.params.id });
90
103
  });
91
104
 
92
- app.use((err, req, res, next) => { // your error middleware still works
105
+ app.use((err, req, res, next) => {
106
+ // your error middleware still works
93
107
  res.status(500).json({ error: err.message });
94
108
  });
95
109
 
96
- const fastApp = fast(app); // returns a Fastify instance
110
+ const fastApp = fast(app); // returns a Fastify instance
97
111
  fastApp.listen({ port: 3000 });
98
112
  ```
99
113
 
@@ -115,9 +129,9 @@ import { fast } from "express-fastify-runtime";
115
129
  const app = express();
116
130
  app.get("/", (req, res) => res.json({ ok: true }));
117
131
 
118
- const fastApp = fast(app, { fastify: { logger: true } }); // pass Fastify options through
119
- await fastApp.register(rateLimit, { max: 100 }); // real Fastify plugins
120
- await fastApp.ready(); // let plugins load before listen
132
+ const fastApp = fast(app, { fastify: { logger: true } }); // pass Fastify options through
133
+ await fastApp.register(rateLimit, { max: 100 }); // real Fastify plugins
134
+ await fastApp.ready(); // let plugins load before listen
121
135
  await fastApp.listen({ port: 3000 });
122
136
  ```
123
137
 
@@ -128,7 +142,7 @@ Fastify's full lifecycle (so 404s and internals work):
128
142
 
129
143
  ```ts
130
144
  const fastApp = fast(app);
131
- const server = fastApp.server; // http.Server
145
+ const server = fastApp.server; // http.Server
132
146
  server.listen(3000, () => console.log("up on 3000"));
133
147
  ```
134
148
 
@@ -141,8 +155,10 @@ Node app β€” attach your socket server to `fastApp.server`:
141
155
  import { Server as IOServer } from "socket.io";
142
156
 
143
157
  const fastApp = fast(app);
144
- const io = new IOServer(fastApp.server); // share the same HTTP server
145
- io.on("connection", (socket) => socket.emit("hello", "from express-fastify-runtime"));
158
+ const io = new IOServer(fastApp.server); // share the same HTTP server
159
+ io.on("connection", (socket) =>
160
+ socket.emit("hello", "from express-fastify-runtime"),
161
+ );
146
162
 
147
163
  fastApp.server.listen(3000);
148
164
  ```
@@ -170,7 +186,10 @@ Wrap the handler/middleware. Works with plain functions and arrow functions:
170
186
  ```ts
171
187
  import { expressLane } from "express-fastify-runtime";
172
188
 
173
- app.get("/page", expressLane((req, res) => res.render("index", { title: "Hi" })));
189
+ app.get(
190
+ "/page",
191
+ expressLane((req, res) => res.render("index", { title: "Hi" })),
192
+ );
174
193
  ```
175
194
 
176
195
  ### `@ExpressLane` β€” decorator form (class-method controllers)
@@ -226,13 +245,13 @@ Numbers are req/s, **median of repeated runs with warmup** (single-shot HTTP ben
226
245
  20–30%, so don't trust one sample β€” including ours; reproduce with `npm run benchmark:table`).
227
246
  10 connections, Node on an Apple-silicon laptop. Higher is better.
228
247
 
229
- | Scenario | Express | Fastify | **fast()** | fast/Express | fast/Fastify |
230
- |---|--:|--:|--:|--:|--:|
231
- | Plain JSON route (5 middleware) | 39,976 | 68,112 | **50,552** | **1.26Γ—** | 0.74Γ— |
232
- | JSON DB read | 41,848 | 68,624 | **50,584** | **1.21Γ—** | 0.74Γ— |
233
- | Middleware stack (helmet+morgan+json+custom) | 29,424 | 32,736 | **40,184** | **1.37Γ—** | **1.23Γ—** |
234
- | POST 1KB JSON | 33,018 | 46,752 | **46,696** | **1.41Γ—** | **1.00Γ—** |
235
- | Auth (JWT verify) | 17,636 | 33,976 | **19,360** | **1.10Γ—** | 0.57Γ— |
248
+ | Scenario | Express | Fastify | **fast()** | fast/Express | fast/Fastify |
249
+ | -------------------------------------------- | ------: | ------: | ---------: | -----------: | -----------: |
250
+ | Plain JSON route (5 middleware) | 39,976 | 68,112 | **50,552** | **1.26Γ—** | 0.74Γ— |
251
+ | JSON DB read | 41,848 | 68,624 | **50,584** | **1.21Γ—** | 0.74Γ— |
252
+ | Middleware stack (helmet+morgan+json+custom) | 29,424 | 32,736 | **40,184** | **1.37Γ—** | **1.23Γ—** |
253
+ | POST 1KB JSON | 33,018 | 46,752 | **46,696** | **1.41Γ—** | **1.00Γ—** |
254
+ | Auth (JWT verify) | 17,636 | 33,976 | **19,360** | **1.10Γ—** | 0.57Γ— |
236
255
 
237
256
  **Reading the table:**
238
257
 
@@ -240,7 +259,7 @@ Numbers are req/s, **median of repeated runs with warmup** (single-shot HTTP ben
240
259
  - It **matches or beats Fastify** on middleware-heavy and small-payload workloads.
241
260
  - On a tight pure-JSON hot path it trails raw Fastify a little β€” that's the unavoidable cost of
242
261
  presenting a real Express `req`/`res`, and it's still well ahead of Express.
243
- - **Auth (JWT):** the gap there isn't the adapter β€” it's the *library*. Fastify's benchmark uses
262
+ - **Auth (JWT):** the gap there isn't the adapter β€” it's the _library_. Fastify's benchmark uses
244
263
  `@fastify/jwt` (built on `fast-jwt`), which is simply faster than `jsonwebtoken`. Want that
245
264
  speed in your Express app? Use `fast-jwt` directly in your auth middleware β€” it's
246
265
  framework-agnostic.
@@ -1,5 +1,24 @@
1
1
  # 2026-06-25
2
2
 
3
+ ## Fix: writes (POST/PUT with a JSON body) 500'd on the Express-lane fallback (Express 4)
4
+
5
+ Reported by a consumer (Express 4): reads worked, but every request with a JSON body returned
6
+ `500 Cannot assign to read only property 'body' of object '#<IncomingMessage>'`.
7
+
8
+ - **Cause.** On the Express-lane fallback, Fastify has already parsed and consumed the body stream.
9
+ We attached the parsed body to the raw request as a **read-only** property to stop Express's
10
+ `express.json()` from overwriting it with an empty object. But body-parser **assigns**
11
+ `req.body = ...` unconditionally β€” and assigning to a read-only property *throws* on Express 4's
12
+ strict body-parser (Express 5 silently drops it, masking the bug). Any route on the Express lane
13
+ with a JSON body 500'd.
14
+ - **Fix** (`src/express/mount.ts`): attach the body as **writable** and set body-parser's
15
+ `req._body = true` flag, so `express.json()`/`urlencoded()`/etc. **skip** entirely (early-return)
16
+ instead of re-reading the consumed stream β€” no re-parse, no overwrite, no throw. Only set when
17
+ Fastify actually parsed a body, so urlencoded/raw requests Fastify doesn't parse still flow to the
18
+ real Express parsers untouched.
19
+ - **Test**: `test/compat/express4.test.js` now forces a POST with a JSON body onto the Express lane
20
+ and asserts `200` + correct `req.body` (the regression only manifests under Express 4).
21
+
3
22
  ## Publish prep
4
23
 
5
24
  - **Fastify upgraded to 5.8.5** (latest; includes the recent security/CVE fixes). Dependency floor
@@ -1 +1 @@
1
- {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/express/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAU3C,8EAA8E;AAC9E,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3E,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,WAAW,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAyDN"}
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/express/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAU3C,8EAA8E;AAC9E,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3E,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,WAAW,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAwDN"}
@@ -34,18 +34,17 @@ function mountExpress(fastify, expressApp, options) {
34
34
  (0, maxListeners_1.applyMaxListeners)(request.raw, reply.raw);
35
35
  const raw = request.raw;
36
36
  const res = reply.raw;
37
- // Fastify has already consumed the body stream; attach parsed body so Express sees req.body.
38
- // Define body as non-writable so express.json() cannot overwrite with empty when it reads
39
- // the already-consumed stream. No Proxy β€” avoids per-property access overhead on Express lane.
37
+ // Fastify already parsed and consumed the body stream. Attach the parsed body AND set
38
+ // body-parser's `_body` flag so Express's express.json()/urlencoded()/etc. SKIP (they early-
39
+ // return when req._body is set) instead of re-reading the now-empty stream. The body must stay
40
+ // WRITABLE: body parsers assign `req.body = ...` unconditionally, and a read-only property
41
+ // throws "Cannot assign to read only property 'body'" on Express 4 (and silently drops the
42
+ // assignment on Express 5). The `_body` flag is what prevents the overwrite, not read-only.
40
43
  const bodyFromFastify = await Promise.resolve(request.body);
41
44
  const req = raw;
42
45
  if (bodyFromFastify !== undefined) {
43
- Object.defineProperty(raw, 'body', {
44
- value: bodyFromFastify,
45
- writable: false,
46
- configurable: true,
47
- enumerable: true,
48
- });
46
+ req.body = bodyFromFastify;
47
+ req._body = true;
49
48
  }
50
49
  await new Promise((resolve, reject) => {
51
50
  let settled = false;
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/express/mount.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AA8BH,oCA6DC;AAtFD,wDAA0D;AAkB1D;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,OAAwB,EACxB,UAAuB,EACvB,OAA6B;IAE7B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAElD,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAuB,EAAE,KAAmB,EAAE,EAAE;QAChF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;YACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,2CAA2C,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAA,gCAAiB,EAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAEtB,6FAA6F;QAC7F,0FAA0F;QAC1F,+FAA+F;QAC/F,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAE,OAA8B,CAAC,IAAI,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,GAA8B,CAAC;QAC3C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;gBACjC,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC3B,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAED,UAAgD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/express/mount.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AA8BH,oCA4DC;AArFD,wDAA0D;AAkB1D;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,OAAwB,EACxB,UAAuB,EACvB,OAA6B;IAE7B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAElD,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAuB,EAAE,KAAmB,EAAE,EAAE;QAChF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;YACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,2CAA2C,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAA,gCAAiB,EAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAEtB,sFAAsF;QACtF,6FAA6F;QAC7F,+FAA+F;QAC/F,2FAA2F;QAC3F,2FAA2F;QAC3F,4FAA4F;QAC5F,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAE,OAA8B,CAAC,IAAI,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,GAAoD,CAAC;QACjE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC3B,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAED,UAAgD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "express-fastify-runtime",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Run Express apps on Fastify safely, faster, without code changes",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",