diff --git a/.changeset/rare-shoes-enjoy.md b/.changeset/rare-shoes-enjoy.md deleted file mode 100644 index 60a0c856cbc..00000000000 --- a/.changeset/rare-shoes-enjoy.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@remix-run/dev": minor -"@remix-run/react": minor -"@remix-run/server-runtime": minor ---- - -Stabilize React Router APIs in Remix - -- Adopt stabilized React Router APIs internally - - Single Fetch: `unstable_dataStrategy` -> `dataStrategy` - - Lazy Route Discovery: `unstable_patchRoutesOnNavigation` -> `patchRoutesOnNavigation` -- Stabilize public-facing APIs - - Single Fetch: `unstable_data()` -> `data()` - - `unstable_viewTransition` -> `viewTransition` (`Link`, `Form`, `navigate`, `submit`) - - `unstable_flushSync>` -> `` (`Link`, `Form`, `navigate`, `submit`, `useFetcher`) diff --git a/.changeset/short-maps-reflect.md b/.changeset/short-maps-reflect.md deleted file mode 100644 index 4bb701e6a97..00000000000 --- a/.changeset/short-maps-reflect.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@remix-run/dev": patch ---- - -Stop passing `request.signal` as the `renderToReadableStream` `signal` to abort server rendering for cloudflare/deno runtimes because by the time that `request` is aborted, aborting the rendering is useless because there's no way for React to flush down the unresolved boundaries - -- This has been incorrect for some time, but only recently exposed due to a bug in how we were aborting requests when running via `remix vite:dev` because we were incorrectly aborting requests after successful renders - which was causing us to abort a completed React render, and try to close an already closed `ReadableStream`. -- This has likely not shown up in any production scenarios because cloudflare/deno production runtimes are (correctly) not aborting the `request.signal` on successful renders -- The built-in `entry.server` files no longer pass a `signal` to `renderToReadableStream` because adding a timeout-based abort signal to the default behavior would constitute a breaking change -- Users can configure this abort behavior via their own `entry.server` via `remix reveal entry.server`, and the template entry.server files have been updated with an example approach for newly created Remix apps diff --git a/.changeset/silly-gifts-wash.md b/.changeset/silly-gifts-wash.md deleted file mode 100644 index f17c9084b4d..00000000000 --- a/.changeset/silly-gifts-wash.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@remix-run/dev": patch -"@remix-run/express": patch ---- - -Fix adapter logic for aborting `request.signal` so we don't incorrectly abort on the `close` event for successful requests diff --git a/.changeset/spotty-papayas-remember.md b/.changeset/spotty-papayas-remember.md deleted file mode 100644 index f8d2f073a3f..00000000000 --- a/.changeset/spotty-papayas-remember.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@remix-run/react": patch ---- - -Fix bug with `clientLoader.hydrate` in a layout route when hydrating with bubbled errors diff --git a/.changeset/stabilize-future-flags.md b/.changeset/stabilize-future-flags.md deleted file mode 100644 index 185ff2e080f..00000000000 --- a/.changeset/stabilize-future-flags.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@remix-run/dev": minor -"@remix-run/react": minor -"@remix-run/server-runtime": minor ---- - -Stabilize future flags - -- `future.unstable_singleFetch` -> `future.v3_singleFetch` -- `future.unstable_lazyRouteDiscovery` -> `future.v3_lazyRouteDiscovery` diff --git a/.github/workflows/deduplicate-lock-file.yml b/.github/workflows/deduplicate-lock-file.yml index 717a5e4cd9e..748d4a08994 100644 --- a/.github/workflows/deduplicate-lock-file.yml +++ b/.github/workflows/deduplicate-lock-file.yml @@ -23,7 +23,7 @@ jobs: token: ${{ secrets.FORMAT_PAT }} - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/deployments.yml b/.github/workflows/deployments.yml index 895718baa5e..4247a3c894e 100644 --- a/.github/workflows/deployments.yml +++ b/.github/workflows/deployments.yml @@ -36,7 +36,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 @@ -73,7 +73,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 @@ -111,7 +111,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 @@ -150,7 +150,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 @@ -192,7 +192,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index e5ebc4189cc..211f5f789e2 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -22,7 +22,7 @@ jobs: token: ${{ secrets.FORMAT_PAT }} - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 95515d2b7b9..bd639c1564b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 1744b3cf68d..75815ef0aff 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -35,7 +35,7 @@ jobs: fetch-depth: 0 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/release-experimental.yml b/.github/workflows/release-experimental.yml index b165cd722f2..06b92e282ee 100644 --- a/.github/workflows/release-experimental.yml +++ b/.github/workflows/release-experimental.yml @@ -26,7 +26,7 @@ jobs: fetch-depth: 0 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f63cda0d8fd..89f7c3d9eb9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,7 +30,7 @@ jobs: fetch-depth: 0 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 @@ -76,7 +76,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/shared-build.yml b/.github/workflows/shared-build.yml index 78d4e656737..472ff67575c 100644 --- a/.github/workflows/shared-build.yml +++ b/.github/workflows/shared-build.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node uses: actions/setup-node@v4 diff --git a/.github/workflows/shared-test-integration.yml b/.github/workflows/shared-test-integration.yml index 51190a0ec93..50dd9faec5c 100644 --- a/.github/workflows/shared-test-integration.yml +++ b/.github/workflows/shared-test-integration.yml @@ -38,7 +38,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node ${{ matrix.node }} uses: actions/setup-node@v4 diff --git a/.github/workflows/shared-test-unit.yml b/.github/workflows/shared-test-unit.yml index 70fe820602a..1b5c3287354 100644 --- a/.github/workflows/shared-test-unit.yml +++ b/.github/workflows/shared-test-unit.yml @@ -30,7 +30,7 @@ jobs: uses: actions/checkout@v4 - name: 📦 Setup pnpm - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 - name: ⎔ Setup node ${{ matrix.node }} uses: actions/setup-node@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 79f2a679225..fae6a96af42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,154 +13,161 @@ We manage release notes in this file instead of the paginated Github Releases Pa Table of Contents - [Remix Releases](#remix-releases) - - [v2.12.1](#v2121) + - [v2.13.0](#v2130) + - [What's Changed](#whats-changed) + - [Stabilized APIs](#stabilized-apis) + - [Minor Changes](#minor-changes) - [Patch Changes](#patch-changes) + - [Updated Dependencies](#updated-dependencies) - [Changes by Package](#changes-by-package) + - [v2.12.1](#v2121) + - [Patch Changes](#patch-changes-1) + - [Changes by Package](#changes-by-package-1) - [v2.12.0](#v2120) - - [What's Changed](#whats-changed) + - [What's Changed](#whats-changed-1) - [Future Flag for Automatic Dependency Optimization (unstable)](#future-flag-for-automatic-dependency-optimization-unstable) - [Improved Single Fetch Type Safety (unstable)](#improved-single-fetch-type-safety-unstable) - [Updates to Single Fetch Revalidation Behavior (unstable)](#updates-to-single-fetch-revalidation-behavior-unstable) - - [Minor Changes](#minor-changes) - - [Patch Changes](#patch-changes-1) - - [Updated Dependencies](#updated-dependencies) - - [Changes by Package](#changes-by-package-1) - - [v2.11.2](#v2112) + - [Minor Changes](#minor-changes-1) - [Patch Changes](#patch-changes-2) - [Updated Dependencies](#updated-dependencies-1) - [Changes by Package](#changes-by-package-2) - - [v2.11.1](#v2111) + - [v2.11.2](#v2112) - [Patch Changes](#patch-changes-3) + - [Updated Dependencies](#updated-dependencies-2) - [Changes by Package](#changes-by-package-3) + - [v2.11.1](#v2111) + - [Patch Changes](#patch-changes-4) + - [Changes by Package](#changes-by-package-4) - [v2.11.0](#v2110) - - [What's Changed](#whats-changed-1) + - [What's Changed](#whats-changed-2) - [Renamed `unstable_fogOfWar` future flag to `unstable_lazyRouteDiscovery` (unstable)](#renamed-unstable_fogofwar-future-flag-to-unstable_lazyroutediscovery-unstable) - [Removed `response` stub in Single Fetch (unstable)](#removed-response-stub-in-single-fetch-unstable) - - [Minor Changes](#minor-changes-1) - - [Patch Changes](#patch-changes-4) - - [Updated Dependencies](#updated-dependencies-2) - - [Changes by Package](#changes-by-package-4) - - [v2.10.3](#v2103) + - [Minor Changes](#minor-changes-2) - [Patch Changes](#patch-changes-5) - [Updated Dependencies](#updated-dependencies-3) - [Changes by Package](#changes-by-package-5) - - [v2.10.2](#v2102) + - [v2.10.3](#v2103) - [Patch Changes](#patch-changes-6) + - [Updated Dependencies](#updated-dependencies-4) - [Changes by Package](#changes-by-package-6) - - [v2.10.1](#v2101) + - [v2.10.2](#v2102) - [Patch Changes](#patch-changes-7) - - [Updated Dependencies](#updated-dependencies-4) - [Changes by Package](#changes-by-package-7) - - [v2.10.0](#v2100) - - [What's Changed](#whats-changed-2) - - [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war) - - [Minor Changes](#minor-changes-2) + - [v2.10.1](#v2101) - [Patch Changes](#patch-changes-8) - [Updated Dependencies](#updated-dependencies-5) - [Changes by Package](#changes-by-package-8) - - [v2.9.2](#v292) + - [v2.10.0](#v2100) - [What's Changed](#whats-changed-3) - - [Updated Type-Safety for Single Fetch](#updated-type-safety-for-single-fetch) + - [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war) + - [Minor Changes](#minor-changes-3) - [Patch Changes](#patch-changes-9) - [Updated Dependencies](#updated-dependencies-6) - [Changes by Package](#changes-by-package-9) - - [v2.9.1](#v291) + - [v2.9.2](#v292) + - [What's Changed](#whats-changed-4) + - [Updated Type-Safety for Single Fetch](#updated-type-safety-for-single-fetch) - [Patch Changes](#patch-changes-10) + - [Updated Dependencies](#updated-dependencies-7) - [Changes by Package](#changes-by-package-10) + - [v2.9.1](#v291) + - [Patch Changes](#patch-changes-11) + - [Changes by Package](#changes-by-package-11) - [v2.9.0](#v290) - - [What's Changed](#whats-changed-4) + - [What's Changed](#whats-changed-5) - [Single Fetch (unstable)](#single-fetch-unstable) - [Undici](#undici) - - [Minor Changes](#minor-changes-3) - - [Patch Changes](#patch-changes-11) - - [Updated Dependencies](#updated-dependencies-7) - - [Changes by Package](#changes-by-package-11) - - [v2.8.1](#v281) + - [Minor Changes](#minor-changes-4) - [Patch Changes](#patch-changes-12) - [Updated Dependencies](#updated-dependencies-8) - [Changes by Package](#changes-by-package-12) - - [v2.8.0](#v280) - - [Minor Changes](#minor-changes-4) + - [v2.8.1](#v281) - [Patch Changes](#patch-changes-13) - [Updated Dependencies](#updated-dependencies-9) - [Changes by Package](#changes-by-package-13) - - [2.7.2](#272) + - [v2.8.0](#v280) + - [Minor Changes](#minor-changes-5) - [Patch Changes](#patch-changes-14) - - [2.7.1](#271) + - [Updated Dependencies](#updated-dependencies-10) + - [Changes by Package](#changes-by-package-14) + - [2.7.2](#272) - [Patch Changes](#patch-changes-15) + - [2.7.1](#271) + - [Patch Changes](#patch-changes-16) - [v2.7.0](#v270) - - [What's Changed](#whats-changed-5) + - [What's Changed](#whats-changed-6) - [Stabilized Vite Plugin](#stabilized-vite-plugin) - [New `Layout` Export](#new-layout-export) - [Basename support](#basename-support) - [Cloudflare Proxy as a Vite Plugin](#cloudflare-proxy-as-a-vite-plugin) - - [Minor Changes](#minor-changes-5) - - [Patch Changes](#patch-changes-16) - - [Updated Dependencies](#updated-dependencies-10) - - [Changes by Package](#changes-by-package-14) - - [v2.6.0](#v260) - - [What's Changed](#whats-changed-6) - - [Unstable Vite Plugin updates](#unstable-vite-plugin-updates) - [Minor Changes](#minor-changes-6) - [Patch Changes](#patch-changes-17) - [Updated Dependencies](#updated-dependencies-11) - [Changes by Package](#changes-by-package-15) - - [v2.5.1](#v251) + - [v2.6.0](#v260) + - [What's Changed](#whats-changed-7) + - [Unstable Vite Plugin updates](#unstable-vite-plugin-updates) + - [Minor Changes](#minor-changes-7) - [Patch Changes](#patch-changes-18) - [Updated Dependencies](#updated-dependencies-12) - [Changes by Package](#changes-by-package-16) - - [v2.5.0](#v250) - - [What's Changed](#whats-changed-7) - - [SPA Mode (unstable)](#spa-mode-unstable) - - [Server Bundles (unstable)](#server-bundles-unstable) - - [Minor Changes](#minor-changes-7) + - [v2.5.1](#v251) - [Patch Changes](#patch-changes-19) - [Updated Dependencies](#updated-dependencies-13) - [Changes by Package](#changes-by-package-17) - - [v2.4.1](#v241) + - [v2.5.0](#v250) + - [What's Changed](#whats-changed-8) + - [SPA Mode (unstable)](#spa-mode-unstable) + - [Server Bundles (unstable)](#server-bundles-unstable) + - [Minor Changes](#minor-changes-8) - [Patch Changes](#patch-changes-20) - [Updated Dependencies](#updated-dependencies-14) - [Changes by Package](#changes-by-package-18) + - [v2.4.1](#v241) + - [Patch Changes](#patch-changes-21) + - [Updated Dependencies](#updated-dependencies-15) + - [Changes by Package](#changes-by-package-19) - [v2.4.0](#v240) - - [What's Changed](#whats-changed-8) + - [What's Changed](#whats-changed-9) - [Client Data](#client-data) - [`future.v3_relativeSplatPath`](#futurev3_relativesplatpath) - [Vite Updates (Unstable)](#vite-updates-unstable) - - [Minor Changes](#minor-changes-8) - - [Patch Changes](#patch-changes-21) - - [Updated Dependencies](#updated-dependencies-15) - - [Changes by Package](#changes-by-package-19) - - [v2.3.1](#v231) + - [Minor Changes](#minor-changes-9) - [Patch Changes](#patch-changes-22) - [Updated Dependencies](#updated-dependencies-16) - [Changes by Package](#changes-by-package-20) - - [v2.3.0](#v230) - - [What's Changed](#whats-changed-9) - - [Stabilized `useBlocker`](#stabilized-useblocker) - - [`unstable_flushSync` API](#unstable_flushsync-api) - - [Minor Changes](#minor-changes-9) + - [v2.3.1](#v231) - [Patch Changes](#patch-changes-23) - [Updated Dependencies](#updated-dependencies-17) - [Changes by Package](#changes-by-package-21) - - [v2.2.0](#v220) + - [v2.3.0](#v230) - [What's Changed](#whats-changed-10) - - [Vite!](#vite) - - [New Fetcher APIs](#new-fetcher-apis) - - [Persistence Future Flag](#persistence-future-flag) + - [Stabilized `useBlocker`](#stabilized-useblocker) + - [`unstable_flushSync` API](#unstable_flushsync-api) - [Minor Changes](#minor-changes-10) - [Patch Changes](#patch-changes-24) - [Updated Dependencies](#updated-dependencies-18) - [Changes by Package](#changes-by-package-22) - - [v2.1.0](#v210) + - [v2.2.0](#v220) - [What's Changed](#whats-changed-11) - - [View Transitions](#view-transitions) - - [Stable `createRemixStub`](#stable-createremixstub) + - [Vite!](#vite) + - [New Fetcher APIs](#new-fetcher-apis) + - [Persistence Future Flag](#persistence-future-flag) - [Minor Changes](#minor-changes-11) - [Patch Changes](#patch-changes-25) - [Updated Dependencies](#updated-dependencies-19) - [Changes by Package](#changes-by-package-23) - - [v2.0.1](#v201) + - [v2.1.0](#v210) + - [What's Changed](#whats-changed-12) + - [View Transitions](#view-transitions) + - [Stable `createRemixStub`](#stable-createremixstub) + - [Minor Changes](#minor-changes-12) - [Patch Changes](#patch-changes-26) + - [Updated Dependencies](#updated-dependencies-20) + - [Changes by Package](#changes-by-package-24) + - [v2.0.1](#v201) + - [Patch Changes](#patch-changes-27) - [Changes by Package 🔗](#changes-by-package-) - [v2.0.0](#v200) - [Breaking Changes](#breaking-changes) @@ -172,8 +179,8 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Breaking Type Changes](#breaking-type-changes) - [New Features](#new-features) - [Other Notable Changes](#other-notable-changes) - - [Updated Dependencies](#updated-dependencies-20) - - [Changes by Package](#changes-by-package-24) + - [Updated Dependencies](#updated-dependencies-21) + - [Changes by Package](#changes-by-package-25) @@ -221,6 +228,73 @@ Date: YYYY-MM-DD --> +## v2.13.0 + +Date: 2024-10-11 + +### What's Changed + +#### Stabilized APIs + +This release stabilizes a handful of "unstable" APIs in preparation for the pending React Router v7 release (see [these](https://remix.run/blog/merging-remix-and-react-router) [posts](https://remix.run/blog/incremental-path-to-react-19) for more info): + +- `unstable_data` → `data` (for use with Single Fetch) +- `unstable_flushSync` → `flushSync` (`useSubmit`, `fetcher.load`, `fetcher.submit`) +- `unstable_viewTransition` → `viewTransition` (``, `
`, `useNavigate`, `useSubmit`) +- `future.unstable_optimizeDeps` → `future.v3_optimizeDeps` ([Docs](https://remix.run/docs/en/main/guides/dependency-optimization)) +- `future.unstable_lazyRouteDiscovery` → `future.v3_lazyRouteDiscovery` ([Docs](https://remix.run/docs/guides/lazy-route-discovery)) +- `future.unstable_singleFetch` → `future.v3_singleFetch` ([Docs](https://remix.run/docs/guides/single-fetch)) + +### Minor Changes + +- Stabilize React Router APIs in Remix ([#9980](https://github.com/remix-run/remix/pull/9980)) + - Adopt stabilized React Router APIs internally + - Single Fetch: `unstable_dataStrategy` -> `dataStrategy` + - Lazy Route Discovery: `unstable_patchRoutesOnNavigation` -> `patchRoutesOnNavigation` + - Stabilize public-facing APIs + - Single Fetch: `unstable_data()` -> `data()` + - `unstable_viewTransition` -> `viewTransition` (`Link`, `Form`, `navigate`, `submit`) + - `unstable_flushSync>` -> `` (`Link`, `Form`, `navigate`, `submit`, `useFetcher`) +- Stabilize future flags ([#10072](https://github.com/remix-run/remix/pull/10072), [#10092](https://github.com/remix-run/remix/pull/10092)) + - `future.unstable_lazyRouteDiscovery` -> `future.v3_lazyRouteDiscovery` + - `future.unstable_optimizeDeps` -> `future.v3_optimizeDeps` + - `future.unstable_singleFetch` -> `future.v3_singleFetch` + +### Patch Changes + +- `@remix-run/dev` - Stop passing `request.signal` as the `renderToReadableStream` `signal` to abort server rendering for cloudflare/deno runtimes because by the time that `request` is aborted, aborting the rendering is useless because there's no way for React to flush down the unresolved boundaries ([#10047](https://github.com/remix-run/remix/pull/10047)) + - This has been incorrect for some time, but only recently exposed due to a bug in how we were aborting requests when running via `remix vite:dev` because we were incorrectly aborting requests after successful renders - which was causing us to abort a completed React render, and try to close an already closed `ReadableStream` + - This has likely not shown up in any production scenarios because cloudflare/deno production runtimes are (correctly) not aborting the `request.signal` on successful renders + - The built-in `entry.server` files no longer pass a `signal` to `renderToReadableStream` because adding a timeout-based abort signal to the default behavior would constitute a breaking change + - Users can configure this abort behavior via their own `entry.server` via `remix reveal entry.server`, and the template entry.server files have been updated with an example approach for newly created Remix apps +- `@remix-run/express` - Fix adapter logic for aborting `request.signal` so we don't incorrectly abort on the `close` event for successful requests ([#10046](https://github.com/remix-run/remix/pull/10046)) +- `@remix-run/react` - Fix bug with `clientLoader.hydrate` in a layout route when hydrating with bubbled errors ([#10063](https://github.com/remix-run/remix/pull/10063)) + +### Updated Dependencies + +- [`react-router-dom@6.27.0`](https://github.com/remix-run/react-router/releases/tag/react-router%406.27.0) +- [`@remix-run/router@1.20.0`](https://github.com/remix-run/react-router/blob/main/packages/router/CHANGELOG.md#1200) + +### Changes by Package + +- [`create-remix`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/create-remix/CHANGELOG.md#2130) +- [`@remix-run/architect`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-architect/CHANGELOG.md#2130) +- [`@remix-run/cloudflare`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-cloudflare/CHANGELOG.md#2130) +- [`@remix-run/cloudflare-pages`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-cloudflare-pages/CHANGELOG.md#2130) +- [`@remix-run/cloudflare-workers`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-cloudflare-workers/CHANGELOG.md#2130) +- [`@remix-run/css-bundle`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-css-bundle/CHANGELOG.md#2130) +- [`@remix-run/deno`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-deno/CHANGELOG.md#2130) +- [`@remix-run/dev`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-dev/CHANGELOG.md#2130) +- [`@remix-run/eslint-config`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-eslint-config/CHANGELOG.md#2130) +- [`@remix-run/express`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-express/CHANGELOG.md#2130) +- [`@remix-run/node`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-node/CHANGELOG.md#2130) +- [`@remix-run/react`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-react/CHANGELOG.md#2130) +- [`@remix-run/serve`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-serve/CHANGELOG.md#2130) +- [`@remix-run/server-runtime`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-server-runtime/CHANGELOG.md#2130) +- [`@remix-run/testing`](https://github.com/remix-run/remix/blob/remix%402.13.0/packages/remix-testing/CHANGELOG.md#2130) + +**Full Changelog**: [`v2.12.1...v2.13.0`](https://github.com/remix-run/remix/compare/remix@2.12.1...remix@2.13.0) + ## v2.12.1 Date: 2024-09-19 diff --git a/contributors.yml b/contributors.yml index ef460350f43..57082791773 100644 --- a/contributors.yml +++ b/contributors.yml @@ -139,6 +139,7 @@ - dario-piotrowicz - davecalnan - davecranwell-vocovo +- david-crespo - DavidHollins6 - davongit - dcramer @@ -164,6 +165,7 @@ - dnsbty - dogukanakkaya - dokeet +- domluther - donavon - Drew-Daniels - dschlabach @@ -328,6 +330,7 @@ - jrubins - jsbmg - jsgv +- jsparkdev - jssisodiya - jstafman - juhanakristian @@ -440,6 +443,7 @@ - Mattinton - mattkindy - mattmazzola +- mattpocock - mattstobbs - maxprilutskiy - maxrchung @@ -471,6 +475,7 @@ - mochi-sann - mohammadhosseinbagheri - monitaure +- monsterdeveloper - mootari - morinokami - mrkhosravian @@ -650,6 +655,7 @@ - toufiqnuur - toyozaki - TrySound +- Tsukina-7mochi - ttsirkia - turkerdev - tvanantwerp diff --git a/docs/guides/dependency-optimization.md b/docs/guides/dependency-optimization.md index 48877769a3e..a92f9b3733c 100644 --- a/docs/guides/dependency-optimization.md +++ b/docs/guides/dependency-optimization.md @@ -6,7 +6,7 @@ title: Dependency optimization # Dependency optimization -Remix introduced automatic dependency optimization in development behind the `future.unstable_optimizeDeps` [Future Flag][future-flags]. +Remix introduced automatic dependency optimization in development behind the `future.v3_optimizeDeps` [Future Flag][future-flags]. This allows you to opt-into this behavior which will become the default in the next major version of Remix - a.k.a. React Router v7 ([1][rr-v7], [2][rr-v7-2]). In development, Vite aims to [prebundle dependencies][prebundle-dependencies] so that it can efficiently serve up those dependencies on-demand. diff --git a/docs/guides/envvars.md b/docs/guides/envvars.md index 546e11fc827..fcebd8eec75 100644 --- a/docs/guides/envvars.md +++ b/docs/guides/envvars.md @@ -46,19 +46,19 @@ export async function loader() { } ``` -If you're using the `@remix-run/cloudflare-pages` adapter, env variables work a little differently. Since Cloudflare Pages are powered by Functions, you'll need to define your local environment variables in the [`.dev.vars`][dev-vars] file. It has the same syntax as `.env` example file mentioned above. +If you're using the `@remix-run/cloudflare-pages` or `@remix-run/cloudflare` adapters, env variables work a little differently. You'll need to define your local environment variables in the [`.dev.vars`][dev-vars] file. It has the same syntax as `.env` example file mentioned above. -Then, they'll be available via Remix's `context.env` in your `loader`/`action` functions: +Then, they'll be available via Remix's `context.cloudflare.env` in your `loader`/`action` functions: ```tsx export const loader = async ({ context, }: LoaderFunctionArgs) => { - console.log(context.env.SOME_SECRET); + console.log(context.cloudflare.env.SOME_SECRET); }; ``` -Note that `.env` files are only for development. You should not use them in production, so Remix doesn't load them when running `remix serve`. You'll need to follow your host's guides on adding secrets to your production server, via the links below. +Note that `.env` and `.dev.vars` files are only for development. You should not use them in production, so Remix doesn't load them when running `remix serve`. You'll need to follow your host's guides on adding secrets to your production server, via the links below. ### Production diff --git a/docs/guides/lazy-route-discovery.md b/docs/guides/lazy-route-discovery.md index 9ce0a1089b6..4ea6d90a4d2 100644 --- a/docs/guides/lazy-route-discovery.md +++ b/docs/guides/lazy-route-discovery.md @@ -4,8 +4,6 @@ title: Lazy Route Discovery # Lazy Route Discovery (a.k.a. "Fog of War") -This is an unstable API and will continue to change, do not adopt in production - Remix introduced support for Lazy Route Discovery (a.k.a. "Fog of War") ([RFC][rfc]) behind the `future.unstable_lazyRouteDiscovery` [Future Flag][future-flags] in [`v2.10.0`][2.10.0] (later stabilized as `future.v3_lazyRouteDiscovery` in [`v2.13.0`][2.13.0]). This allows you to opt-into this behavior which will become the default in the next major version of Remix - a.k.a. React Router v7 ([1][rr-v7], [2][rr-v7-2]). For more information on this feature, please check out the [blog post][blog-post]. ## Current Behavior diff --git a/docs/guides/resource-routes.md b/docs/guides/resource-routes.md index 1995fb46068..0b846db94db 100644 --- a/docs/guides/resource-routes.md +++ b/docs/guides/resource-routes.md @@ -43,7 +43,7 @@ export default function Report() { It's linking to a PDF version of the page. To make this work we can create a Resource Route below it. Notice that it has no component: that makes it a Resource Route. -```tsx filename=app/routes/reports.$id.pdf.tsx +```tsx filename=app/routes/reports.$id[.pdf].tsx export async function loader({ params, }: LoaderFunctionArgs) { diff --git a/docs/guides/single-fetch.md b/docs/guides/single-fetch.md index 9082350d72b..1c4123196f2 100644 --- a/docs/guides/single-fetch.md +++ b/docs/guides/single-fetch.md @@ -4,8 +4,6 @@ title: Single Fetch # Single Fetch -This is an unstable API and will continue to change, do not adopt in production - Single Fetch is a new data loading strategy and streaming format. When you enable Single Fetch, Remix will make a single HTTP call to your server on client-side transitions, instead of multiple HTTP calls in parallel (one per loader). Additionally, Single Fetch also allows you to send down naked objects from your `loader` and `action`, such as `Date`, `Error`, `Promise`, `RegExp`, and more. ## Overview @@ -152,7 +150,7 @@ You can do this in any file covered by your `tsconfig.json` > `include`. We recommend you do this in your `vite.config.ts` to keep it colocated with the `future.v3_singleFetch` future flag in the Remix plugin: ```ts -declare module "@remix-run/node" { +declare module "@remix-run/server-runtime" { // or cloudflare, deno, etc. interface Future { v3_singleFetch: true; diff --git a/docs/other-api/create-remix.md b/docs/other-api/create-remix.md index ef7bafb18cd..24cedf28906 100644 --- a/docs/other-api/create-remix.md +++ b/docs/other-api/create-remix.md @@ -35,11 +35,11 @@ npx create-remix@latest --help ```sh npm create remix@latest # or -yarn create remix +yarn create remix@latest # or -pnpm create remix +pnpm create remix@latest # or -bunx create-remix +bunx create-remix@latest ``` ### `create-remix --template` diff --git a/docs/start/future-flags.md b/docs/start/future-flags.md index 4c680abcc62..1356d4937d1 100644 --- a/docs/start/future-flags.md +++ b/docs/start/future-flags.md @@ -234,7 +234,7 @@ The fetcher lifecycle is now based on when it returns to an idle state rather th 👉 **Enable the Flag** -```ts +```ts filename=vite.config.ts remix({ future: { v3_fetcherPersist: true, @@ -254,7 +254,7 @@ Changes the relative path matching and linking for multi-segment splats paths li 👉 **Enable the Flag** -```ts +```ts filename=vite.config.ts remix({ future: { v3_relativeSplatPath: true, @@ -320,7 +320,7 @@ When a server-side request is aborted, such as when a user navigates away from a 👉 **Enable the Flag** -```ts +```ts filename=vite.config.ts remix({ future: { v3_throwAbortReason: true, @@ -334,21 +334,171 @@ You likely won't need to adjust any code, unless you had custom logic inside of ## v3_singleFetch -Opt into [Single Fetch][single-fetch] behavior (details will be expanded once the flag stabilizes). +**Background** + +with this flag, Remix moves to a "single fetch" approach for data requests when making SPA navigations within your app. Additional details are available in the [docs][single-fetch], but the main reason we chose to move to this approach is **Simplicity**. With Single Fetch, data requests now behave just like document requests and developers no longer need to think about the nuances of how to manage headers, caching, etc., differently between the two. For more advanced use-cases, developers can still opt into fine-grained revalidations. + +👉 **Enable the Flag (and the types)** + +```ts filename=vite.config.ts lines=[5-10,16] +import { vitePlugin as remix } from "@remix-run/dev"; +import { defineConfig } from "vite"; +import tsconfigPaths from "vite-tsconfig-paths"; + +declare module "@remix-run/node" { + // or cloudflare, deno, etc. + interface Future { + v3_singleFetch: true; + } +} + +export default defineConfig({ + plugins: [ + remix({ + future: { + v3_singleFetch: true, + }, + }), + tsconfigPaths(), + ], +}); +``` + +**Update your Code** + +You should be able to mostly use your code as-is with the flag enabled, but the following changes should be made over time and will be required prior to the next major version. + +👉 **Remove json()/defer() in favor of raw objects** + +Single Fetch supports JSON objects and Promises out of the box, so you can return the raw data from your `loader`/`action` functions: + +```diff +-import { json } from "@remix-run/node"; + +export async function loader({}: LoaderFunctionArgs) { + let tasks = await fetchTasks(); +- return json(tasks); ++ return tasks; +} +``` + +```diff +-import { defer } from "@remix-run/node"; + +export async function loader({}: LoaderFunctionArgs) { + let lazyStuff = fetchLazyStuff(); + let tasks = await fetchTasks(); +- return defer({ tasks, lazyStuff }); ++ return { tasks, lazyStuff }; +} +``` + +If you were using the second parameter of `json`/`defer` to set a custom status or headers on your response, you can continue doing do via the new `data` API: + +```diff +-import { json } from "@remix-run/node"; ++import { data } from "@remix-run/node"; + +export async function loader({}: LoaderFunctionArgs) { + let tasks = await fetchTasks(); +- return json(tasks, { ++ return data(tasks, { + headers: { + "Cache-Control": "public, max-age=604800" + } + }); +} +``` + +👉 **Adjust your server abort delay** + +If you were using a custom `ABORT_DELAY` in your `entry.server.tsx` file, you should change that to use thew new `streamTimeout` API leveraged by Single Fetch: + +```diff filename=entry.server.tsx +-const ABORT_DELAY = 5000; ++// Reject/cancel all pending promises after 5 seconds ++export const streamTimeout = 5000; + +// ... + +function handleBrowserRequest(/* ... */) { + return new Promise((resolve, reject) => { + const { pipe, abort } = renderToPipeableStream( + , + { + onShellReady() { + /* ... */ + }, + onShellError(error: unknown) { + /* ... */ + }, + onError(error: unknown) { + /* ... */ + }, + } + ); + +- setTimeout(abort, ABORT_DELAY); ++ // Automatically timeout the React renderer after 6 seconds, which ensures ++ // React has enough time to flush down the rejected boundary contents ++ setTimeout(abort, streamTimeout + 1000); + }); +} +``` ## v3_lazyRouteDiscovery -Opt into [Lazy Route Discovery][lazy-route-discovery] behavior (details will be expanded once the flag stabilizes). +**Background** + +With this flag, Remix no longer sends the full route manifest up to the client on initial load. Instead, Remix only sends the server-rendered routes up in the manifest and then fetches the remaining routes as the user navigated around the application. Additional details are available in the [docs][lazy-route-discovery] and the [blog post][lazy-route-discovery-blog-post] + +👉 **Enable the Flag** + +```ts filename=vite.config.ts +remix({ + future: { + v3_lazyRouteDiscovery: true, + }, +}); +``` -## unstable_optimizeDeps +**Update your Code** + +You shouldn't need to make any changes to your application code for this feature to work. + +You may find some usage for the new [``][discover-prop] API if you wish to disable eager route discovery on certain links. + +## v3_optimizeDeps + +**Background** + +This flag allows you to opt-into automatic [dependency optimization][dependency-optimization] during development when using Vite. + +👉 **Enable the Flag** + +```ts filename=vite.config.ts +remix({ + future: { + v3_optimizeDeps: true, + }, +}); +``` + +**Update your Code** -Opt into automatic [dependency optimization][dependency-optimization] during development. +You shouldn't need to make any changes to your application code for this feature to work. [development-strategy]: ../guides/api-development-strategy [fetcherpersist-rfc]: https://github.com/remix-run/remix/discussions/7698 [relativesplatpath-changelog]: https://github.com/remix-run/remix/blob/main/CHANGELOG.md#futurev3_relativesplatpath [single-fetch]: ../guides/single-fetch [lazy-route-discovery]: ../guides/lazy-route-discovery +[lazy-route-discovery-blog-post]: https://remix.run/blog/fog-of-war +[discover-prop]: ../components/link#discover [vite]: https://vitejs.dev [vite-docs]: ../guides/vite [supported-remix-config-options]: ../file-conventions/vite-config diff --git a/docs/start/tutorial.md b/docs/start/tutorial.md index 625f94d1e65..e41ee6436df 100644 --- a/docs/start/tutorial.md +++ b/docs/start/tutorial.md @@ -168,7 +168,7 @@ export default function Contact() { const contact = { first: "Your", last: "Name", - avatar: "https://placekitten.com/200/200", + avatar: "https://placecats.com/200/200", twitter: "your_handle", notes: "Some notes", favorite: true, @@ -634,11 +634,11 @@ export default function EditContact() {

Name ``` diff --git a/integration/client-data-test.ts b/integration/client-data-test.ts index 5588ce84825..eebc4fb7c72 100644 --- a/integration/client-data-test.ts +++ b/integration/client-data-test.ts @@ -937,7 +937,17 @@ test.describe("Client Data", () => { let app = new PlaywrightFixture(appFixture, page); let logs: string[] = []; - page.on("console", (msg) => logs.push(msg.text())); + page.on("console", (msg) => { + let text = msg.text(); + if ( + // Ignore any dev tools messages. This may only happen locally when dev + // tools is installed and not in CI but either way we don't care + /Download the React DevTools/.test(text) + ) { + return; + } + logs.push(text); + }); await app.goto("/parent/child", false); let html = await app.getHtml("main"); @@ -954,10 +964,7 @@ test.describe("Client Data", () => { expect(html).toMatch("Child Server Error"); expect(html).not.toMatch("Should not see me"); - expect(logs).toEqual([ - expect.stringContaining("Download the React DevTools"), - "running parent client loader", - ]); + expect(logs).toEqual(["running parent client loader"]); console.error = _consoleError; }); diff --git a/integration/helpers/node-template/package.json b/integration/helpers/node-template/package.json index 57b73e3c4c4..f57ba9e27d5 100644 --- a/integration/helpers/node-template/package.json +++ b/integration/helpers/node-template/package.json @@ -16,7 +16,7 @@ "@remix-run/react": "workspace:*", "@remix-run/serve": "workspace:*", "@remix-run/server-runtime": "workspace:*", - "express": "^4.19.2", + "express": "^4.20.0", "isbot": "^4.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/integration/helpers/vite-cloudflare-template/package.json b/integration/helpers/vite-cloudflare-template/package.json index bbfc0138a52..de435b53d85 100644 --- a/integration/helpers/vite-cloudflare-template/package.json +++ b/integration/helpers/vite-cloudflare-template/package.json @@ -11,9 +11,9 @@ "typecheck": "tsc" }, "dependencies": { - "@remix-run/cloudflare": "2.12.1", - "@remix-run/cloudflare-pages": "2.12.1", - "@remix-run/react": "2.12.1", + "@remix-run/cloudflare": "2.13.0", + "@remix-run/cloudflare-pages": "2.13.0", + "@remix-run/react": "2.13.0", "isbot": "^4.1.0", "miniflare": "^3.20231030.4", "react": "^18.2.0", @@ -26,7 +26,7 @@ "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "typescript": "^5.1.6", - "vite": "5.1.3", + "vite": "5.1.8", "vite-tsconfig-paths": "^4.2.1", "wrangler": "^3.24.0" }, diff --git a/integration/helpers/vite-template/package.json b/integration/helpers/vite-template/package.json index c825ca66055..3d9a59396e3 100644 --- a/integration/helpers/vite-template/package.json +++ b/integration/helpers/vite-template/package.json @@ -17,7 +17,7 @@ "@remix-run/serve": "workspace:*", "@vanilla-extract/css": "^1.10.0", "@vanilla-extract/vite-plugin": "^3.9.2", - "express": "^4.19.2", + "express": "^4.20.0", "isbot": "^4.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -30,7 +30,7 @@ "@types/react-dom": "^18.2.7", "eslint": "^8.38.0", "typescript": "^5.1.6", - "vite": "5.1.0", + "vite": "5.1.8", "vite-env-only": "^2.0.0", "vite-tsconfig-paths": "^4.2.1", "wrangler": "^3.24.0" diff --git a/integration/package.json b/integration/package.json index a7071bbb80b..d17bcca979e 100644 --- a/integration/package.json +++ b/integration/package.json @@ -14,7 +14,7 @@ "@remix-run/dev": "workspace:*", "@remix-run/express": "workspace:*", "@remix-run/node": "workspace:*", - "@remix-run/router": "1.20.0-pre.0", + "@remix-run/router": "1.20.0", "@remix-run/server-runtime": "workspace:*", "@types/express": "^4.17.9", "@vanilla-extract/css": "^1.10.0", @@ -23,7 +23,7 @@ "cross-spawn": "^7.0.3", "dedent": "^0.7.0", "execa": "^5.1.1", - "express": "^4.19.2", + "express": "^4.20.0", "fs-extra": "^10.0.0", "get-port": "^5.1.1", "glob": "8.0.3", diff --git a/package.json b/package.json index 49c82aaf605..511e6694e4c 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "remark-gfm": "3.0.1", "remark-parse": "^10.0.1", "remark-stringify": "^10.0.2", - "rollup": "^2.36.1", + "rollup": "^2.79.2", "rollup-plugin-copy": "^3.3.0", "semver": "^7.3.7", "simple-git": "^3.16.0", @@ -129,7 +129,7 @@ "unified": "^10.1.2", "unist-util-remove": "^3.1.0", "unist-util-visit": "^4.1.1", - "vite": "5.1.3", + "vite": "5.1.8", "vite-tsconfig-paths": "^4.2.2", "wait-on": "^7.0.1", "wrangler": "^3.72.3" diff --git a/packages/create-remix/CHANGELOG.md b/packages/create-remix/CHANGELOG.md index d38a29905b5..fbc3d266508 100644 --- a/packages/create-remix/CHANGELOG.md +++ b/packages/create-remix/CHANGELOG.md @@ -1,5 +1,9 @@ # `create-remix` +## 2.13.0 + +No significant changes to this package were made in this release. [See the repo `CHANGELOG.md`](https://github.com/remix-run/remix/blob/main/CHANGELOG.md) for an overview of all changes in v2.13.0. + ## 2.12.1 No significant changes to this package were made in this release. [See the repo `CHANGELOG.md`](https://github.com/remix-run/remix/blob/main/CHANGELOG.md) for an overview of all changes in v2.12.1. @@ -146,7 +150,7 @@ No significant changes to this package were made in this release. [See the relea ### Patch Changes -- Allow dots in github repo shorthand notation folder names (i.e., `npx create-remix --template remix-run/examples/socket.io`) ([#7277](https://github.com/remix-run/remix/pull/7277)) +- Allow dots in github repo shorthand notation folder names (i.e., `npx create-remix@latest --template remix-run/examples/socket.io`) ([#7277](https://github.com/remix-run/remix/pull/7277)) ## 1.19.3 diff --git a/packages/create-remix/package.json b/packages/create-remix/package.json index 0b226abffe6..24424148e5b 100644 --- a/packages/create-remix/package.json +++ b/packages/create-remix/package.json @@ -1,6 +1,6 @@ { "name": "create-remix", - "version": "2.12.1", + "version": "2.13.0", "description": "Create a new Remix app", "homepage": "https://remix.run", "bugs": { diff --git a/packages/remix-architect/CHANGELOG.md b/packages/remix-architect/CHANGELOG.md index 876edd16332..df978b460fe 100644 --- a/packages/remix-architect/CHANGELOG.md +++ b/packages/remix-architect/CHANGELOG.md @@ -1,5 +1,12 @@ # `@remix-run/architect` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/node@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-architect/package.json b/packages/remix-architect/package.json index dd7b0269a31..7dd3b59f1ba 100644 --- a/packages/remix-architect/package.json +++ b/packages/remix-architect/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/architect", - "version": "2.12.1", + "version": "2.13.0", "description": "Architect server request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-cloudflare-pages/CHANGELOG.md b/packages/remix-cloudflare-pages/CHANGELOG.md index 8edf01a3f0c..5aa3199898b 100644 --- a/packages/remix-cloudflare-pages/CHANGELOG.md +++ b/packages/remix-cloudflare-pages/CHANGELOG.md @@ -1,5 +1,12 @@ # `@remix-run/cloudflare-pages` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/cloudflare@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-cloudflare-pages/package.json b/packages/remix-cloudflare-pages/package.json index befdd859087..ca570257735 100644 --- a/packages/remix-cloudflare-pages/package.json +++ b/packages/remix-cloudflare-pages/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/cloudflare-pages", - "version": "2.12.1", + "version": "2.13.0", "description": "Cloudflare Pages request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-cloudflare-workers/CHANGELOG.md b/packages/remix-cloudflare-workers/CHANGELOG.md index 7a30dc6115e..c69bef8deda 100644 --- a/packages/remix-cloudflare-workers/CHANGELOG.md +++ b/packages/remix-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,12 @@ # `@remix-run/cloudflare-workers` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/cloudflare@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-cloudflare-workers/package.json b/packages/remix-cloudflare-workers/package.json index b263d71a415..cc154fb3f46 100644 --- a/packages/remix-cloudflare-workers/package.json +++ b/packages/remix-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/cloudflare-workers", - "version": "2.12.1", + "version": "2.13.0", "description": "Cloudflare worker request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-cloudflare/CHANGELOG.md b/packages/remix-cloudflare/CHANGELOG.md index 78e95e59d1b..cf2a7541231 100644 --- a/packages/remix-cloudflare/CHANGELOG.md +++ b/packages/remix-cloudflare/CHANGELOG.md @@ -1,5 +1,12 @@ # `@remix-run/cloudflare` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/server-runtime@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-cloudflare/package.json b/packages/remix-cloudflare/package.json index 27413616f72..222dc93fc48 100644 --- a/packages/remix-cloudflare/package.json +++ b/packages/remix-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/cloudflare", - "version": "2.12.1", + "version": "2.13.0", "description": "Cloudflare platform abstractions for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-css-bundle/CHANGELOG.md b/packages/remix-css-bundle/CHANGELOG.md index 700d716e930..377ffd88f0c 100644 --- a/packages/remix-css-bundle/CHANGELOG.md +++ b/packages/remix-css-bundle/CHANGELOG.md @@ -1,5 +1,9 @@ # @remix-run/css-bundle +## 2.13.0 + +No significant changes to this package were made in this release. [See the repo `CHANGELOG.md`](https://github.com/remix-run/remix/blob/main/CHANGELOG.md) for an overview of all changes in v2.13.0. + ## 2.12.1 No significant changes to this package were made in this release. [See the repo `CHANGELOG.md`](https://github.com/remix-run/remix/blob/main/CHANGELOG.md) for an overview of all changes in v2.12.1. diff --git a/packages/remix-css-bundle/package.json b/packages/remix-css-bundle/package.json index 00602ab88a2..726af148d4f 100644 --- a/packages/remix-css-bundle/package.json +++ b/packages/remix-css-bundle/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/css-bundle", - "version": "2.12.1", + "version": "2.13.0", "description": "CSS bundle href when using CSS bundling features in Remix", "homepage": "https://remix.run", "bugs": { diff --git a/packages/remix-deno/CHANGELOG.md b/packages/remix-deno/CHANGELOG.md index 85def5f4d92..fdc8de2e9c1 100644 --- a/packages/remix-deno/CHANGELOG.md +++ b/packages/remix-deno/CHANGELOG.md @@ -1,5 +1,12 @@ # `@remix-run/deno` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/server-runtime@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-deno/package.json b/packages/remix-deno/package.json index ed99eaa5524..dc89eaba3da 100644 --- a/packages/remix-deno/package.json +++ b/packages/remix-deno/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/deno", - "version": "2.12.1", + "version": "2.13.0", "description": "Deno platform abstractions for Remix", "homepage": "https://remix.run", "main": "./index.ts", diff --git a/packages/remix-dev/CHANGELOG.md b/packages/remix-dev/CHANGELOG.md index 7a6039f7bde..d0a63133b8c 100644 --- a/packages/remix-dev/CHANGELOG.md +++ b/packages/remix-dev/CHANGELOG.md @@ -1,5 +1,35 @@ # `@remix-run/dev` +## 2.13.0 + +### Minor Changes + +- Stabilize the `future.unstable_optimizeDeps` flag into `future.v3_optimizeDeps` ([#10092](https://github.com/remix-run/remix/pull/10092)) +- Stabilize React Router APIs in Remix ([#9980](https://github.com/remix-run/remix/pull/9980)) + - Adopt stabilized React Router APIs internally + - Single Fetch: `unstable_dataStrategy` -> `dataStrategy` + - Lazy Route Discovery: `unstable_patchRoutesOnNavigation` -> `patchRoutesOnNavigation` + - Stabilize public-facing APIs + - Single Fetch: `unstable_data()` -> `data()` + - `unstable_viewTransition` -> `viewTransition` (`Link`, `Form`, `navigate`, `submit`) + - `unstable_flushSync>` -> `` (`Link`, `Form`, `navigate`, `submit`, `useFetcher`) +- Stabilize future flags ([#10072](https://github.com/remix-run/remix/pull/10072)) + - `future.unstable_singleFetch` -> `future.v3_singleFetch` + - `future.unstable_lazyRouteDiscovery` -> `future.v3_lazyRouteDiscovery` + +### Patch Changes + +- Stop passing `request.signal` as the `renderToReadableStream` `signal` to abort server rendering for cloudflare/deno runtimes because by the time that `request` is aborted, aborting the rendering is useless because there's no way for React to flush down the unresolved boundaries ([#10047](https://github.com/remix-run/remix/pull/10047)) + - This has been incorrect for some time, but only recently exposed due to a bug in how we were aborting requests when running via `remix vite:dev` because we were incorrectly aborting requests after successful renders - which was causing us to abort a completed React render, and try to close an already closed `ReadableStream`. + - This has likely not shown up in any production scenarios because cloudflare/deno production runtimes are (correctly) not aborting the `request.signal` on successful renders + - The built-in `entry.server` files no longer pass a `signal` to `renderToReadableStream` because adding a timeout-based abort signal to the default behavior would constitute a breaking change + - Users can configure this abort behavior via their own `entry.server` via `remix reveal entry.server`, and the template entry.server files have been updated with an example approach for newly created Remix apps +- Fix adapter logic for aborting `request.signal` so we don't incorrectly abort on the `close` event for successful requests ([#10046](https://github.com/remix-run/remix/pull/10046)) + +- Updated dependencies: + - `@remix-run/server-runtime@2.13.0` + - `@remix-run/node@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-dev/__tests__/readConfig-test.ts b/packages/remix-dev/__tests__/readConfig-test.ts index f528c16f15e..bd06d50309f 100644 --- a/packages/remix-dev/__tests__/readConfig-test.ts +++ b/packages/remix-dev/__tests__/readConfig-test.ts @@ -36,9 +36,9 @@ describe("readConfig", () => { "entryServerFile": "entry.server.tsx", "entryServerFilePath": Any, "future": { - "unstable_optimizeDeps": false, "v3_fetcherPersist": false, "v3_lazyRouteDiscovery": false, + "v3_optimizeDeps": false, "v3_relativeSplatPath": false, "v3_singleFetch": false, "v3_throwAbortReason": false, diff --git a/packages/remix-dev/config.ts b/packages/remix-dev/config.ts index 16065ff01af..b6cb6dd8f01 100644 --- a/packages/remix-dev/config.ts +++ b/packages/remix-dev/config.ts @@ -39,7 +39,7 @@ interface FutureConfig { v3_throwAbortReason: boolean; v3_singleFetch: boolean; v3_lazyRouteDiscovery: boolean; - unstable_optimizeDeps: boolean; + v3_optimizeDeps: boolean; } type NodeBuiltinsPolyfillOptions = Pick< @@ -605,7 +605,7 @@ export async function resolveConfig( v3_throwAbortReason: appConfig.future?.v3_throwAbortReason === true, v3_singleFetch: appConfig.future?.v3_singleFetch === true, v3_lazyRouteDiscovery: appConfig.future?.v3_lazyRouteDiscovery === true, - unstable_optimizeDeps: appConfig.future?.unstable_optimizeDeps === true, + v3_optimizeDeps: appConfig.future?.v3_optimizeDeps === true, }; if (appConfig.future) { diff --git a/packages/remix-dev/package.json b/packages/remix-dev/package.json index 0c24f2f1cf5..df0d561ce93 100644 --- a/packages/remix-dev/package.json +++ b/packages/remix-dev/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/dev", - "version": "2.12.1", + "version": "2.13.0", "description": "Dev tools and CLI for Remix", "homepage": "https://remix.run", "bugs": { @@ -32,7 +32,7 @@ "@mdx-js/mdx": "^2.3.0", "@npmcli/package-json": "^4.0.1", "@remix-run/node": "workspace:*", - "@remix-run/router": "1.20.0-pre.0", + "@remix-run/router": "1.20.0", "@remix-run/server-runtime": "workspace:*", "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", @@ -47,7 +47,7 @@ "esbuild-plugins-node-modules-polyfill": "^1.6.0", "execa": "5.1.1", "exit-hook": "2.2.1", - "express": "^4.19.2", + "express": "^4.20.0", "fs-extra": "^10.0.0", "get-port": "^5.1.1", "gunzip-maybe": "^1.4.2", @@ -73,7 +73,7 @@ "set-cookie-parser": "^2.6.0", "tar-fs": "^2.1.1", "tsconfig-paths": "^4.0.0", - "ws": "^7.4.5" + "ws": "^7.5.10" }, "devDependencies": { "@remix-run/cloudflare": "workspace:*", @@ -102,12 +102,12 @@ "msw": "^1.2.3", "strip-ansi": "^6.0.1", "tiny-invariant": "^1.2.0", - "vite": "5.1.3", + "vite": "5.1.8", "wrangler": "^3.28.2" }, "peerDependencies": { - "@remix-run/react": "^2.12.1", - "@remix-run/serve": "^2.12.1", + "@remix-run/react": "^2.13.0", + "@remix-run/serve": "^2.13.0", "typescript": "^5.1.0", "vite": "^5.1.0", "wrangler": "^3.28.2" diff --git a/packages/remix-dev/vite/plugin.ts b/packages/remix-dev/vite/plugin.ts index 53ce6400b57..c886f7fcbcf 100644 --- a/packages/remix-dev/vite/plugin.ts +++ b/packages/remix-dev/vite/plugin.ts @@ -1075,7 +1075,7 @@ export const remixVitePlugin: RemixVitePlugin = (remixUserConfig = {}) => { : undefined, }, optimizeDeps: { - entries: ctx.remixConfig.future.unstable_optimizeDeps + entries: ctx.remixConfig.future.v3_optimizeDeps ? [ ctx.entryClientFilePath, ...Object.values(ctx.remixConfig.routes).map((route) => diff --git a/packages/remix-eslint-config/CHANGELOG.md b/packages/remix-eslint-config/CHANGELOG.md index 4b5c3c9eca0..fe21832a941 100644 --- a/packages/remix-eslint-config/CHANGELOG.md +++ b/packages/remix-eslint-config/CHANGELOG.md @@ -1,5 +1,9 @@ # `@remix-run/eslint-config` +## 2.13.0 + +No significant changes to this package were made in this release. [See the repo `CHANGELOG.md`](https://github.com/remix-run/remix/blob/main/CHANGELOG.md) for an overview of all changes in v2.13.0. + ## 2.12.1 No significant changes to this package were made in this release. [See the repo `CHANGELOG.md`](https://github.com/remix-run/remix/blob/main/CHANGELOG.md) for an overview of all changes in v2.12.1. diff --git a/packages/remix-eslint-config/package.json b/packages/remix-eslint-config/package.json index 0aa6b67e7ec..2eef04d774c 100644 --- a/packages/remix-eslint-config/package.json +++ b/packages/remix-eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/eslint-config", - "version": "2.12.1", + "version": "2.13.0", "description": "ESLint configuration for Remix projects", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-express/CHANGELOG.md b/packages/remix-express/CHANGELOG.md index 313928c165f..8deee99c92a 100644 --- a/packages/remix-express/CHANGELOG.md +++ b/packages/remix-express/CHANGELOG.md @@ -1,5 +1,13 @@ # `@remix-run/express` +## 2.13.0 + +### Patch Changes + +- Fix adapter logic for aborting `request.signal` so we don't incorrectly abort on the `close` event for successful requests ([#10046](https://github.com/remix-run/remix/pull/10046)) +- Updated dependencies: + - `@remix-run/node@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-express/package.json b/packages/remix-express/package.json index c48fbce17c8..806658fc7aa 100644 --- a/packages/remix-express/package.json +++ b/packages/remix-express/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/express", - "version": "2.12.1", + "version": "2.13.0", "description": "Express server request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -23,13 +23,13 @@ "@types/express": "^4.17.9", "@types/node": "^18.17.1", "@types/supertest": "^2.0.10", - "express": "^4.19.2", + "express": "^4.20.0", "node-mocks-http": "^1.10.1", "supertest": "^6.3.3", "typescript": "^5.1.6" }, "peerDependencies": { - "express": "^4.19.2", + "express": "^4.20.0", "typescript": "^5.1.0" }, "peerDependenciesMeta": { diff --git a/packages/remix-node/CHANGELOG.md b/packages/remix-node/CHANGELOG.md index b427e22b848..289aea2b5ad 100644 --- a/packages/remix-node/CHANGELOG.md +++ b/packages/remix-node/CHANGELOG.md @@ -1,5 +1,12 @@ # `@remix-run/node` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/server-runtime@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-node/package.json b/packages/remix-node/package.json index 5d4b97afbbb..bbfb70bb6a0 100644 --- a/packages/remix-node/package.json +++ b/packages/remix-node/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/node", - "version": "2.12.1", + "version": "2.13.0", "description": "Node.js platform abstractions for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-react/CHANGELOG.md b/packages/remix-react/CHANGELOG.md index f058cb461e1..126d9bb18e4 100644 --- a/packages/remix-react/CHANGELOG.md +++ b/packages/remix-react/CHANGELOG.md @@ -1,5 +1,27 @@ # `@remix-run/react` +## 2.13.0 + +### Minor Changes + +- Stabilize React Router APIs in Remix ([#9980](https://github.com/remix-run/remix/pull/9980)) + - Adopt stabilized React Router APIs internally + - Single Fetch: `unstable_dataStrategy` -> `dataStrategy` + - Lazy Route Discovery: `unstable_patchRoutesOnNavigation` -> `patchRoutesOnNavigation` + - Stabilize public-facing APIs + - Single Fetch: `unstable_data()` -> `data()` + - `unstable_viewTransition` -> `viewTransition` (`Link`, `Form`, `navigate`, `submit`) + - `unstable_flushSync>` -> `` (`Link`, `Form`, `navigate`, `submit`, `useFetcher`) +- Stabilize future flags ([#10072](https://github.com/remix-run/remix/pull/10072)) + - `future.unstable_singleFetch` -> `future.v3_singleFetch` + - `future.unstable_lazyRouteDiscovery` -> `future.v3_lazyRouteDiscovery` + +### Patch Changes + +- Fix bug with `clientLoader.hydrate` in a layout route when hydrating with bubbled errors ([#10063](https://github.com/remix-run/remix/pull/10063)) +- Updated dependencies: + - `@remix-run/server-runtime@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-react/package.json b/packages/remix-react/package.json index e7edc513902..14501eacea9 100644 --- a/packages/remix-react/package.json +++ b/packages/remix-react/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/react", - "version": "2.12.1", + "version": "2.13.0", "description": "React DOM bindings for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -19,10 +19,10 @@ "tsc": "tsc" }, "dependencies": { - "@remix-run/router": "1.20.0-pre.0", + "@remix-run/router": "1.20.0", "@remix-run/server-runtime": "workspace:*", - "react-router": "6.27.0-pre.0", - "react-router-dom": "6.27.0-pre.0", + "react-router": "6.27.0", + "react-router-dom": "6.27.0", "turbo-stream": "2.4.0" }, "devDependencies": { diff --git a/packages/remix-serve/CHANGELOG.md b/packages/remix-serve/CHANGELOG.md index 16478322656..c4fa8a5f687 100644 --- a/packages/remix-serve/CHANGELOG.md +++ b/packages/remix-serve/CHANGELOG.md @@ -1,5 +1,13 @@ # `@remix-run/serve` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/express@2.13.0` + - `@remix-run/node@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-serve/package.json b/packages/remix-serve/package.json index 6fe1b017ef8..dc2090398fa 100644 --- a/packages/remix-serve/package.json +++ b/packages/remix-serve/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/serve", - "version": "2.12.1", + "version": "2.13.0", "description": "Production application server for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -22,7 +22,7 @@ "@remix-run/node": "workspace:*", "chokidar": "^3.5.3", "compression": "^1.7.4", - "express": "^4.19.2", + "express": "^4.20.0", "get-port": "5.1.1", "morgan": "^1.10.0", "source-map-support": "^0.5.21" diff --git a/packages/remix-server-runtime/CHANGELOG.md b/packages/remix-server-runtime/CHANGELOG.md index e5dfae8975e..76d6b5d93e0 100644 --- a/packages/remix-server-runtime/CHANGELOG.md +++ b/packages/remix-server-runtime/CHANGELOG.md @@ -1,5 +1,21 @@ # `@remix-run/server-runtime` +## 2.13.0 + +### Minor Changes + +- Stabilize React Router APIs in Remix ([#9980](https://github.com/remix-run/remix/pull/9980)) + - Adopt stabilized React Router APIs internally + - Single Fetch: `unstable_dataStrategy` -> `dataStrategy` + - Lazy Route Discovery: `unstable_patchRoutesOnNavigation` -> `patchRoutesOnNavigation` + - Stabilize public-facing APIs + - Single Fetch: `unstable_data()` -> `data()` + - `unstable_viewTransition` -> `viewTransition` (`Link`, `Form`, `navigate`, `submit`) + - `unstable_flushSync>` -> `` (`Link`, `Form`, `navigate`, `submit`, `useFetcher`) +- Stabilize future flags ([#10072](https://github.com/remix-run/remix/pull/10072)) + - `future.unstable_singleFetch` -> `future.v3_singleFetch` + - `future.unstable_lazyRouteDiscovery` -> `future.v3_lazyRouteDiscovery` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-server-runtime/package.json b/packages/remix-server-runtime/package.json index cc693edbb03..be6b91ac29c 100644 --- a/packages/remix-server-runtime/package.json +++ b/packages/remix-server-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/server-runtime", - "version": "2.12.1", + "version": "2.13.0", "description": "Server runtime for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -19,7 +19,7 @@ "tsc": "tsc" }, "dependencies": { - "@remix-run/router": "1.20.0-pre.0", + "@remix-run/router": "1.20.0", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", diff --git a/packages/remix-testing/CHANGELOG.md b/packages/remix-testing/CHANGELOG.md index e2a150e17d5..0a99197ed4f 100644 --- a/packages/remix-testing/CHANGELOG.md +++ b/packages/remix-testing/CHANGELOG.md @@ -1,5 +1,13 @@ # `@remix-run/testing` +## 2.13.0 + +### Patch Changes + +- Updated dependencies: + - `@remix-run/react@2.13.0` + - `@remix-run/node@2.13.0` + ## 2.12.1 ### Patch Changes diff --git a/packages/remix-testing/package.json b/packages/remix-testing/package.json index 8cd8a1e613e..906443f1bc4 100644 --- a/packages/remix-testing/package.json +++ b/packages/remix-testing/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/testing", - "version": "2.12.1", + "version": "2.13.0", "description": "Testing utilities for Remix apps", "homepage": "https://remix.run", "bugs": { @@ -21,8 +21,8 @@ "dependencies": { "@remix-run/node": "workspace:*", "@remix-run/react": "workspace:*", - "@remix-run/router": "1.20.0-pre.0", - "react-router-dom": "6.27.0-pre.0" + "@remix-run/router": "1.20.0", + "react-router-dom": "6.27.0" }, "devDependencies": { "@remix-run/server-runtime": "workspace:*", diff --git a/packages/remix/package.json b/packages/remix/package.json index 634c2d57a2d..40a8c7ffa8c 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "remix", - "version": "2.12.1", + "version": "2.13.0", "description": "A framework for building better websites", "homepage": "https://remix.run", "bugs": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8a81af7576..e7c6f22c28d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 2.4.1 '@mdx-js/rollup': specifier: ^3.0.0 - version: 3.0.0(rollup@2.75.7) + version: 3.0.0(rollup@2.79.2) '@octokit/core': specifier: ^3.6.0 version: 3.6.0 @@ -93,19 +93,19 @@ importers: version: link:packages/remix-testing '@rollup/plugin-babel': specifier: ^5.2.2 - version: 5.3.1(@babel/core@7.23.7)(rollup@2.75.7) + version: 5.3.1(@babel/core@7.23.7)(rollup@2.79.2) '@rollup/plugin-commonjs': specifier: ^21.1.0 - version: 21.1.0(rollup@2.75.7) + version: 21.1.0(rollup@2.79.2) '@rollup/plugin-json': specifier: ^5.0.0 - version: 5.0.2(rollup@2.75.7) + version: 5.0.2(rollup@2.79.2) '@rollup/plugin-node-resolve': specifier: ^11.0.1 - version: 11.2.1(rollup@2.75.7) + version: 11.2.1(rollup@2.79.2) '@rollup/plugin-replace': specifier: ^5.0.2 - version: 5.0.2(rollup@2.75.7) + version: 5.0.2(rollup@2.79.2) '@testing-library/cypress': specifier: ^8.0.2 version: 8.0.2(cypress@9.6.0) @@ -257,8 +257,8 @@ importers: specifier: ^10.0.2 version: 10.0.2 rollup: - specifier: ^2.36.1 - version: 2.75.7 + specifier: ^2.79.2 + version: 2.79.2 rollup-plugin-copy: specifier: ^3.3.0 version: 3.4.0 @@ -290,11 +290,11 @@ importers: specifier: ^4.1.1 version: 4.1.1 vite: - specifier: 5.1.3 - version: 5.1.3(@types/node@18.17.1) + specifier: 5.1.8 + version: 5.1.8(@types/node@18.17.1) vite-tsconfig-paths: specifier: ^4.2.2 - version: 4.3.1(typescript@5.1.6)(vite@5.1.3) + version: 4.3.1(typescript@5.1.6)(vite@5.1.8) wait-on: specifier: ^7.0.1 version: 7.0.1 @@ -323,8 +323,8 @@ importers: specifier: workspace:* version: link:../packages/remix-node '@remix-run/router': - specifier: 1.20.0-pre.0 - version: 1.20.0-pre.0 + specifier: 1.20.0 + version: 1.20.0 '@remix-run/server-runtime': specifier: workspace:* version: link:../packages/remix-server-runtime @@ -336,7 +336,7 @@ importers: version: 1.14.1 '@vanilla-extract/vite-plugin': specifier: ^3.9.2 - version: 3.9.5(vite@5.1.3) + version: 3.9.5(vite@5.1.8) cheerio: specifier: ^1.0.0-rc.12 version: 1.0.0-rc.12 @@ -350,8 +350,8 @@ importers: specifier: ^5.1.1 version: 5.1.1 express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 fs-extra: specifier: ^10.0.0 version: 10.1.0 @@ -411,7 +411,7 @@ importers: version: 5.1.6 vite-tsconfig-paths: specifier: ^4.2.2 - version: 4.3.1(typescript@5.1.6)(vite@5.1.3) + version: 4.3.1(typescript@5.1.6)(vite@5.1.8) wrangler: specifier: ^3.28.2 version: 3.74.0(@cloudflare/workers-types@4.20240208.0) @@ -505,8 +505,8 @@ importers: specifier: workspace:* version: link:../../../packages/remix-server-runtime express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 isbot: specifier: ^4.1.0 version: 4.4.0 @@ -531,7 +531,7 @@ importers: version: 1.14.1 '@vanilla-extract/vite-plugin': specifier: ^3.9.2 - version: 3.9.5(vite@5.1.3) + version: 3.9.5(vite@5.1.8) getos: specifier: ^3.2.1 version: 3.2.1 @@ -548,13 +548,13 @@ importers: integration/helpers/vite-cloudflare-template: dependencies: '@remix-run/cloudflare': - specifier: 2.12.1 + specifier: 2.13.0 version: link:../../../packages/remix-cloudflare '@remix-run/cloudflare-pages': - specifier: 2.12.1 + specifier: 2.13.0 version: link:../../../packages/remix-cloudflare-pages '@remix-run/react': - specifier: 2.12.1 + specifier: 2.13.0 version: link:../../../packages/remix-react isbot: specifier: ^4.1.0 @@ -588,11 +588,11 @@ importers: specifier: ^5.1.6 version: 5.1.6 vite: - specifier: 5.1.3 - version: 5.1.3(@types/node@18.17.1) + specifier: 5.1.8 + version: 5.1.8(@types/node@18.17.1) vite-tsconfig-paths: specifier: ^4.2.1 - version: 4.3.1(typescript@5.1.6)(vite@5.1.3) + version: 4.3.1(typescript@5.1.6)(vite@5.1.8) wrangler: specifier: ^3.24.0 version: 3.74.0(@cloudflare/workers-types@4.20240208.0) @@ -616,10 +616,10 @@ importers: version: 1.14.1 '@vanilla-extract/vite-plugin': specifier: ^3.9.2 - version: 3.9.5(vite@5.1.0) + version: 3.9.5(vite@5.1.8) express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 isbot: specifier: ^4.1.0 version: 4.4.0 @@ -652,14 +652,14 @@ importers: specifier: ^5.1.6 version: 5.1.6 vite: - specifier: 5.1.0 - version: 5.1.0 + specifier: 5.1.8 + version: 5.1.8(@types/node@18.17.1) vite-env-only: specifier: ^2.0.0 version: 2.2.0 vite-tsconfig-paths: specifier: ^4.2.1 - version: 4.3.1(typescript@5.1.6)(vite@5.1.0) + version: 4.3.1(typescript@5.1.6)(vite@5.1.8) wrangler: specifier: ^3.24.0 version: 3.74.0(@cloudflare/workers-types@4.20240208.0) @@ -868,11 +868,11 @@ importers: specifier: workspace:* version: link:../remix-node '@remix-run/react': - specifier: ^2.12.1 + specifier: ^2.13.0 version: link:../remix-react '@remix-run/router': - specifier: 1.20.0-pre.0 - version: 1.20.0-pre.0 + specifier: 1.20.0 + version: 1.20.0 '@remix-run/server-runtime': specifier: workspace:* version: link:../remix-server-runtime @@ -916,8 +916,8 @@ importers: specifier: 2.2.1 version: 2.2.1 express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 fs-extra: specifier: ^10.0.0 version: 10.1.0 @@ -997,8 +997,8 @@ importers: specifier: ^5.1.0 version: 5.1.6 ws: - specifier: ^7.4.5 - version: 7.5.9 + specifier: ^7.5.10 + version: 7.5.10 devDependencies: '@remix-run/cloudflare': specifier: workspace:* @@ -1079,8 +1079,8 @@ importers: specifier: ^1.2.0 version: 1.3.1 vite: - specifier: 5.1.3 - version: 5.1.3(@types/node@18.17.1) + specifier: 5.1.8 + version: 5.1.8(@types/node@18.17.1) wrangler: specifier: ^3.28.2 version: 3.74.0(@cloudflare/workers-types@4.20240208.0) @@ -1168,8 +1168,8 @@ importers: specifier: ^2.0.10 version: 2.0.16 express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 node-mocks-http: specifier: ^1.10.1 version: 1.14.1 @@ -1217,17 +1217,17 @@ importers: packages/remix-react: dependencies: '@remix-run/router': - specifier: 1.20.0-pre.0 - version: 1.20.0-pre.0 + specifier: 1.20.0 + version: 1.20.0 '@remix-run/server-runtime': specifier: workspace:* version: link:../remix-server-runtime react-router: - specifier: 6.27.0-pre.0 - version: 6.27.0-pre.0(react@18.2.0) + specifier: 6.27.0 + version: 6.27.0(react@18.2.0) react-router-dom: - specifier: 6.27.0-pre.0 - version: 6.27.0-pre.0(react-dom@18.2.0)(react@18.2.0) + specifier: 6.27.0 + version: 6.27.0(react-dom@18.2.0)(react@18.2.0) turbo-stream: specifier: 2.4.0 version: 2.4.0 @@ -1275,8 +1275,8 @@ importers: specifier: ^1.7.4 version: 1.7.4 express: - specifier: ^4.19.2 - version: 4.19.2 + specifier: ^4.20.0 + version: 4.20.0 get-port: specifier: 5.1.1 version: 5.1.1 @@ -1303,8 +1303,8 @@ importers: packages/remix-server-runtime: dependencies: '@remix-run/router': - specifier: 1.20.0-pre.0 - version: 1.20.0-pre.0 + specifier: 1.20.0 + version: 1.20.0 '@types/cookie': specifier: ^0.6.0 version: 0.6.0 @@ -1340,11 +1340,11 @@ importers: specifier: workspace:* version: link:../remix-react '@remix-run/router': - specifier: 1.20.0-pre.0 - version: 1.20.0-pre.0 + specifier: 1.20.0 + version: 1.20.0 react-router-dom: - specifier: 6.27.0-pre.0 - version: 6.27.0-pre.0(react-dom@18.2.0)(react@18.2.0) + specifier: 6.27.0 + version: 6.27.0(react-dom@18.2.0)(react@18.2.0) devDependencies: '@remix-run/server-runtime': specifier: workspace:* @@ -3963,14 +3963,14 @@ packages: - supports-color dev: false - /@mdx-js/rollup@3.0.0(rollup@2.75.7): + /@mdx-js/rollup@3.0.0(rollup@2.79.2): resolution: {integrity: sha512-ITvGiwPGEBW+D7CCnpSA9brzAosIWHAi4y+Air8wgfLnez8aWue50avHtWMfnFLCp7vt+JQ9UM8nwfuQuuydxw==} peerDependencies: rollup: '>=2' dependencies: '@mdx-js/mdx': 3.0.0 - '@rollup/pluginutils': 5.0.5(rollup@2.75.7) - rollup: 2.75.7 + '@rollup/pluginutils': 5.0.5(rollup@2.79.2) + rollup: 2.79.2 source-map: 0.7.3 vfile: 6.0.1 transitivePeerDependencies: @@ -4206,8 +4206,8 @@ packages: - encoding dev: false - /@remix-run/router@1.20.0-pre.0: - resolution: {integrity: sha512-xFJySbWOaxjYP8QJy9f1TdW98H+tT8ykvuJN8Ew1J1En4v77ega3FMbFD2M8sXkCq43PKuSBPc8oZWDub6IQhA==} + /@remix-run/router@1.20.0: + resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} engines: {node: '>=14.0.0'} dev: false @@ -4250,7 +4250,7 @@ packages: web-streams-polyfill: 3.2.0 dev: false - /@rollup/plugin-babel@5.3.1(@babel/core@7.23.7)(rollup@2.75.7): + /@rollup/plugin-babel@5.3.1(@babel/core@7.23.7)(rollup@2.79.2): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -4263,27 +4263,27 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-module-imports': 7.22.15 - '@rollup/pluginutils': 3.1.0(rollup@2.75.7) - rollup: 2.75.7 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 dev: false - /@rollup/plugin-commonjs@21.1.0(rollup@2.75.7): + /@rollup/plugin-commonjs@21.1.0(rollup@2.79.2): resolution: {integrity: sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.38.3 dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.75.7) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.0 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.8 - rollup: 2.75.7 + rollup: 2.79.2 dev: false - /@rollup/plugin-json@5.0.2(rollup@2.75.7): + /@rollup/plugin-json@5.0.2(rollup@2.79.2): resolution: {integrity: sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4292,26 +4292,26 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@2.75.7) - rollup: 2.75.7 + '@rollup/pluginutils': 5.0.5(rollup@2.79.2) + rollup: 2.79.2 dev: false - /@rollup/plugin-node-resolve@11.2.1(rollup@2.75.7): + /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2): resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.75.7) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.8 - rollup: 2.75.7 + rollup: 2.79.2 dev: false - /@rollup/plugin-replace@5.0.2(rollup@2.75.7): + /@rollup/plugin-replace@5.0.2(rollup@2.79.2): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4320,12 +4320,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@2.75.7) + '@rollup/pluginutils': 5.0.5(rollup@2.79.2) magic-string: 0.27.0 - rollup: 2.75.7 + rollup: 2.79.2 dev: false - /@rollup/pluginutils@3.1.0(rollup@2.75.7): + /@rollup/pluginutils@3.1.0(rollup@2.79.2): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -4334,10 +4334,10 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.75.7 + rollup: 2.79.2 dev: false - /@rollup/pluginutils@5.0.5(rollup@2.75.7): + /@rollup/pluginutils@5.0.5(rollup@2.79.2): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4349,7 +4349,7 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 2.75.7 + rollup: 2.79.2 dev: false /@rollup/rollup-android-arm-eabi@4.4.1: @@ -5245,7 +5245,7 @@ packages: lodash: 4.17.21 mlly: 1.5.0 outdent: 0.8.0 - vite: 5.1.3(@types/node@18.17.1) + vite: 5.1.8(@types/node@18.17.1) vite-node: 1.2.2(@types/node@18.17.1) transitivePeerDependencies: - '@types/node' @@ -5260,7 +5260,7 @@ packages: /@vanilla-extract/private@1.0.3: resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} - /@vanilla-extract/vite-plugin@3.9.5(vite@5.1.0): + /@vanilla-extract/vite-plugin@3.9.5(vite@5.1.8): resolution: {integrity: sha512-CWI/CtrVW6i3HKccI6T7uGQkTJ8bd8Xl2UMBg3Pkr7dwWMmavXTeucV0I9KSbmXaYXSbEj+Q8c9y0xAZwtmTig==} peerDependencies: vite: ^2.2.3 || ^3.0.0 || ^4.0.3 || ^5.0.0 @@ -5269,29 +5269,7 @@ packages: outdent: 0.8.0 postcss: 8.4.35 postcss-load-config: 4.0.2(postcss@8.4.35) - vite: 5.1.0 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - ts-node - dev: false - - /@vanilla-extract/vite-plugin@3.9.5(vite@5.1.3): - resolution: {integrity: sha512-CWI/CtrVW6i3HKccI6T7uGQkTJ8bd8Xl2UMBg3Pkr7dwWMmavXTeucV0I9KSbmXaYXSbEj+Q8c9y0xAZwtmTig==} - peerDependencies: - vite: ^2.2.3 || ^3.0.0 || ^4.0.3 || ^5.0.0 - dependencies: - '@vanilla-extract/integration': 6.5.0(@types/node@18.17.1) - outdent: 0.8.0 - postcss: 8.4.35 - postcss-load-config: 4.0.2(postcss@8.4.35) - vite: 5.1.3(@types/node@18.17.1) + vite: 5.1.8(@types/node@18.17.1) transitivePeerDependencies: - '@types/node' - less @@ -6073,8 +6051,8 @@ packages: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: false - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 @@ -6085,7 +6063,7 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -6922,7 +6900,7 @@ packages: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 - side-channel: 1.0.4 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.14 @@ -7166,6 +7144,10 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -8058,36 +8040,36 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 - /express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + /express@4.20.0: + resolution: {integrity: sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 finalhandler: 1.2.0 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 qs: 6.11.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.0 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -8327,7 +8309,7 @@ packages: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.2 + qs: 6.13.0 dev: true /forwarded@0.2.0: @@ -9018,7 +9000,7 @@ packages: dependencies: es-errors: 1.3.0 hasown: 2.0.1 - side-channel: 1.0.4 + side-channel: 1.0.6 dev: false /interpret@1.4.0: @@ -10827,12 +10809,8 @@ packages: yargs-parser: 18.1.3 dev: false - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - /merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - dev: true /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -12232,8 +12210,8 @@ packages: lru-cache: 10.2.0 minipass: 7.0.4 - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + /path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} @@ -12718,14 +12696,13 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 - dev: true + side-channel: 1.0.6 /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} @@ -12801,26 +12778,26 @@ packages: engines: {node: '>=0.10.0'} dev: false - /react-router-dom@6.27.0-pre.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z8peFQxpWiqTBh18eWWBXiMMxWKJcqYSpHiP6s35zM7eh8s5TWKdhWsPSP3xVhHMIM6oYHVJCEawGsReFaI4PQ==} + /react-router-dom@6.27.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.20.0-pre.0 + '@remix-run/router': 1.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.27.0-pre.0(react@18.2.0) + react-router: 6.27.0(react@18.2.0) dev: false - /react-router@6.27.0-pre.0(react@18.2.0): - resolution: {integrity: sha512-hJSLrLWzjsTvPiE91/54bRJ8gVzQpIT/yb8MBQWvmsd+5fFaemYr6I/6pCdAw/jpOHg+948WDyCgsxXa0XExRQ==} + /react-router@6.27.0(react@18.2.0): + resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.20.0-pre.0 + '@remix-run/router': 1.20.0 react: 18.2.0 dev: false @@ -13262,8 +13239,8 @@ packages: dependencies: estree-walker: 0.6.1 - /rollup@2.75.7: - resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==} + /rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -13409,14 +13386,34 @@ packages: transitivePeerDependencies: - supports-color + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + /serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 dev: false - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + /serve-static@1.16.0: + resolution: {integrity: sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==} engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 @@ -13521,10 +13518,12 @@ packages: rechoir: 0.6.2 dev: false - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 @@ -13847,7 +13846,7 @@ packages: internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 set-function-name: 2.0.1 - side-channel: 1.0.4 + side-channel: 1.0.6 dev: false /string.prototype.padend@3.1.5: @@ -13986,7 +13985,7 @@ packages: formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.2 + qs: 6.13.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -14838,7 +14837,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.3(@types/node@18.17.1) + vite: 5.1.8(@types/node@18.17.1) transitivePeerDependencies: - '@types/node' - less @@ -14849,24 +14848,7 @@ packages: - supports-color - terser - /vite-tsconfig-paths@4.3.1(typescript@5.1.6)(vite@5.1.0): - resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true - dependencies: - debug: 4.3.4(supports-color@8.1.1) - globrex: 0.1.2 - tsconfck: 3.0.2(typescript@5.1.6) - vite: 5.1.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /vite-tsconfig-paths@4.3.1(typescript@5.1.6)(vite@5.1.3): + /vite-tsconfig-paths@4.3.1(typescript@5.1.6)(vite@5.1.8): resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} peerDependencies: vite: '*' @@ -14877,47 +14859,13 @@ packages: debug: 4.3.4(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.0.2(typescript@5.1.6) - vite: 5.1.3(@types/node@18.17.1) + vite: 5.1.8(@types/node@18.17.1) transitivePeerDependencies: - supports-color - typescript - /vite@5.1.0: - resolution: {integrity: sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.4.1 - optionalDependencies: - fsevents: 2.3.3 - - /vite@5.1.3(@types/node@18.17.1): - resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} + /vite@5.1.8(@types/node@18.17.1): + resolution: {integrity: sha512-mB8ToUuSmzODSpENgvpFk2fTiU/YQ1tmcVJJ4WZbq4fPdGJkFNVcmVL5k7iDug6xzWjjuGDKAuSievIsD6H7Xw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -15205,8 +15153,8 @@ packages: imurmurhash: 0.1.4 signal-exit: 3.0.7 - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 diff --git a/templates/cloudflare/app/root.tsx b/templates/cloudflare/app/root.tsx index 61c8b983d28..c86a03ebf76 100644 --- a/templates/cloudflare/app/root.tsx +++ b/templates/cloudflare/app/root.tsx @@ -1,3 +1,4 @@ +import type { LinksFunction } from "@remix-run/cloudflare"; import { Links, Meta, @@ -5,7 +6,6 @@ import { Scripts, ScrollRestoration, } from "@remix-run/react"; -import type { LinksFunction } from "@remix-run/node"; import "./tailwind.css"; diff --git a/templates/cloudflare/app/routes/_index.tsx b/templates/cloudflare/app/routes/_index.tsx index 13a5c00468c..afdf49c446e 100644 --- a/templates/cloudflare/app/routes/_index.tsx +++ b/templates/cloudflare/app/routes/_index.tsx @@ -1,4 +1,4 @@ -import type { MetaFunction } from "@remix-run/node"; +import type { MetaFunction } from "@remix-run/cloudflare"; export const meta: MetaFunction = () => { return [