Skip to content

Commit

Permalink
release: 4.0.0 [skip ci]
Browse files Browse the repository at this point in the history
## [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
Xunnamius committed Jan 15, 2024
1 parent 6538d02 commit 8fbfb02
Show file tree
Hide file tree
Showing 7 changed files with 568 additions and 461 deletions.
Loading

0 comments on commit 8fbfb02

Please sign in to comment.