Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## [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 `next@14.0.4`. 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))
- Loading branch information