Commit 8fbfb02
committed
release: 4.0.0 [skip ci]
## [4.0.0](v3.2.0...v4.0.0) (2024-01-15)
### 💥 BREAKING CHANGES 💥
* **Request URLs (e.g. `req.url`) will always be**
`"ntarh://testApiHandler"`.
This is instead of the old localhost string with the random port number, which
is an implementation detail that should not have been exposed to end developers.
* `NtarhParameters` has been superseded by `NtarhInit`,
`NtarhInitAppRouter`, and `NtarhInitPagesRouter`.
* **The `handler` option of `testApiHandler` (i.e.**
`testApiHandler({ handler })`) has been renamed to `pagesHandler`. It is
otherwise functionally equivalent.
Those migrating from NTARH@<4, the process should be as simple as renaming
`handler` to `pagesHandler` in your tests and getting on with your life.
* `requestPatcher`, `reponsePatcher`, and `paramsPatcher` options
of `testApiHandler({ ... })` can now be asynchronous and return Promises.
`paramsPatcher` can additionally return a brand new `params` object that will
overwrite the old one rather than merely augmenting it.
* `testApiHandler({ ... })` now accepts the `appHandler` option.
When this option is provided, the function signatures of the following options
shift to support standard `Request`/`Response` parameters and return types where
appropriate: `requestPatcher`, `responsePatcher`, and `paramsPatcher`. See the
docs, or intellisense, for more details.
* `requestPatcher`, `reponsePatcher`, and `paramsPatcher` options
of `testApiHandler({ ... })` no longer support parenthetical shorthand notation.
For example, the following will cause a type error:
`testApiHandler({ paramsPatcher: (params) => (params.id = "some-id") })`.
* This version of NTARH is now actively tracking a second Next.js
internal export, one that is not guaranteed to be available before
`[email protected]`. Therefore, versions of Next.js older than 14.0.4 **explicitly
unsupported** when using the `appHandler` option. On the other hand,
`pagesHandler` will always work regardless of Next.js version until Vercel
eventually removes the Pages Router functionality entirely.
* The `pagesHandler` option of `testApiHandler` (i.e.
`testApiHandler({ pagesHandler })`) will **not** accept edge runtime routes. To
test your edge runtime routes, use the `appHandler` option instead.
* Minimum supported Node.js version is now 18.18.2
* Node-fetch has been replaced by Node's native fetch
function. There may be subtle API changes between the two.
#### ✨ Features
* Land initial App Router support ([e2d8865](e2d8865)) <sup>closes [#938](#938), [#773](https://github.com/Xunnamius/next-test-api-route-handler/issues/773)</sup>
* Retire use of node-fetch ([5574831](5574831)) <sup>closes [#946](https://github.com/Xunnamius/next-test-api-route-handler/issues/946)</sup>
* **src:** warn when invoking testApiHandler with invalid property combos ([db599ac](db599ac))
#### 🪄 Fixes
* Loosen type checking for `NextApiHandler`s ([fdfec8c](fdfec8c))
* **src:** deeply summon res.json() return value into our realm ([59f54a5](59f54a5))
* **src:** ensure all results of calling ::json on Requests and Responses are summoned into our realm ([5c5f9a4](5c5f9a4))
* **src:** ensure AsyncLocalStorage is available globally (might fix [#875](#875)) ([43680d9](43680d9))
* **src:** ensure global fetch is restored after testApiHandler terminates ([75d4e1f](75d4e1f))
* **src:** forcefully coerce request.body into a ReadableStream ([f715331](f715331))
* **src:** hoist globalThis.AsyncLocalStorage initialization to be as soon as possible ([85bb8fa](85bb8fa))
* **src:** normalize pagesHandler into NextApiHandler (esm<->cjs interop) ([0133e11](0133e11))
* Use more accurate return type for app router patchers ([62f1d0b](62f1d0b))
#### ⚙️ Build system
* **husky:** ensure hooks do not run on rebase ([913cbd0](913cbd0))
* **package:** bump minimum supported node versions to maintained ([702cb44](702cb44))
* **package:** remove outdated properties ([dc23723](dc23723))
#### 🧙🏿 Refactored
* **src:** ensure request url is consistent across router types ([d72ae87](d72ae87))1 parent 6538d02 commit 8fbfb02
File tree
7 files changed
+568
-461
lines changed- docs
- interfaces
7 files changed
+568
-461
lines changed
0 commit comments