@pitlane/dev 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @pitlane/dev
2
2
 
3
+ ## 0.6.0
4
+
5
+ Target Remix `3.0.0-rc.1`.
6
+
7
+ - Raised the `remix` peer dependency to `^3.0.0-rc.1` (from
8
+ `^3.0.0-beta.10`). The plugin itself is unchanged: `remix()`, its
9
+ `prerender` option, and `@pitlane/dev/runtime` all behave as they did in
10
+ 0.5.1.
11
+ - Now depends on `@pitlane/crawler@^0.2.0`, its Remix rc.1 release. The
12
+ manifest carries `workspace:^` and the release workflow packs with pnpm,
13
+ which rewrites it to the version the monorepo resolved. 0.5.1 shipped
14
+ `^0.1.0`, which `0.2.0` does not satisfy, so the crawler release only reaches
15
+ `remix({ prerender })` users through this bump.
16
+ - Two rc.1 breaking changes land in the app code this plugin's guides
17
+ document, not in the plugin. The documented `app/entry.browser.ts` reads the
18
+ frame-targeting attributes off a submit button, and rc.1 renamed all of them
19
+ into the `data-rmx-*` namespace, so `rmx-target`, `rmx-src`, and
20
+ `rmx-reset-scroll` become `data-rmx-target`, `data-rmx-src`, and
21
+ `data-rmx-reset-scroll`. Nothing raises an error when they are missed: rc.1's
22
+ runtime matches only the prefixed names, so a stale attribute is inert and
23
+ frame navigation silently falls back to a document load. `createAssetServer`
24
+ also replaced `fileMap` with directory-based `mounts`, which affects an app
25
+ that configures its own asset server rather than letting this plugin do it.
26
+ - Tested against Vite 8.1 (Rolldown), Vite+ 0.2 (`vp`), and
27
+ `remix@3.0.0-rc.1`, across the node, cloudflare, hmr, and prerender fixtures.
28
+
3
29
  ## 0.5.1
4
30
 
5
31
  Fixes an unusable 0.5.0 on npm.
package/README.md CHANGED
@@ -12,7 +12,7 @@ npm install --save-dev @pitlane/dev
12
12
  vp add -D @pitlane/dev
13
13
  ```
14
14
 
15
- Requires `remix@^3.0.0-beta.10` and `vite@>=7` as peers. Tested against **Vite 8.1** (Rolldown), **Vite+ 0.2** (`vp`), and `remix@3.0.0-beta.10` — the [templates](https://github.com/pitlane-tools/templates) are the continuously tested reference.
15
+ Requires `remix@^3.0.0-rc.1` and `vite@>=7` as peers. Tested against **Vite 8.1** (Rolldown), **Vite+ 0.2** (`vp`), and `remix@3.0.0-rc.1` — the [templates](https://github.com/pitlane-tools/templates) are the continuously tested reference.
16
16
 
17
17
  ## Quick start
18
18
 
@@ -123,14 +123,14 @@ remix({
123
123
  });
124
124
  ```
125
125
 
126
- | Option | Type | Default | Purpose |
127
- | -------------------- | ---------------------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
128
- | `server` | `boolean` | `true` | Whether the app has a server. Pass `false` for [SPA mode](#spa-mode), which ignores every option below. |
129
- | `prerender` | `boolean \| string[] \| fn \| obj` | none | Render paths to static HTML at build time. See [Prerendering](#prerendering). |
130
- | `clientEntry` | `string \| false` | `"app/entry.browser"` | Client entry module. Pass `false` for fully server-rendered apps with no hydration. |
131
- | `serverEntry` | `string` | `"app/entry.server"` | Server entry module, built as `dist/ssr/index.js`. |
132
- | `serverEnvironments` | `string[]` | `["ssr"]` | Environment names the `clientEntry()` transform treats as "server". |
133
- | `serverHandler` | `boolean` | `true` | Serve dev requests through your server entry. Set `false` when `@cloudflare/vite-plugin`, `@netlify/vite-plugin`, or `nitro/vite` owns dev-time request handling. |
126
+ | Option | Type | Default | Purpose |
127
+ | -------------------- | ---------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
128
+ | `server` | `boolean` | `true` | Whether the app has a server. Pass `false` for [SPA mode](#spa-mode), which ignores every option below. |
129
+ | `prerender` | `boolean \| string[] \| fn \| obj` | none | Render paths to static HTML at build time. See [Prerendering](#prerendering). |
130
+ | `clientEntry` | `string \| false` | `"app/entry.browser"` | Client entry module. Pass `false` for fully server-rendered apps with no hydration. |
131
+ | `serverEntry` | `string` | `"app/entry.server"` | Server entry module, built as `dist/ssr/index.js`. |
132
+ | `serverEnvironments` | `string[]` | `["ssr"]` | Environment names the `clientEntry()` transform treats as "server". |
133
+ | `serverHandler` | `boolean` | `true` | Serve dev requests through your server entry. Set `false` when `@cloudflare/vite-plugin` or `nitro/vite` owns dev-time request handling. Netlify's plugin does not serve SSR, so keep the default there. |
134
134
 
135
135
  ## Prerendering
136
136
 
@@ -429,10 +429,10 @@ dist/
429
429
  | ----------- | -------------- |
430
430
  | `vite` | 8.1.5 |
431
431
  | `vite-plus` | 0.2.6 |
432
- | `remix` | 3.0.0-beta.10 |
433
- | Node | 24 LTS, 25 |
432
+ | `remix` | 3.0.0-rc.1 |
433
+ | Node | 24 LTS, 26 |
434
434
 
435
- Remix 3 is in beta; each `@pitlane/dev` release records the exact beta it was verified against. Rolldown is not required — the transform runs identically on generic Vite and Vite+.
435
+ Remix 3 is in prerelease; each `@pitlane/dev` release records the exact prerelease it was verified against. Rolldown is not required — the transform runs identically on generic Vite and Vite+.
436
436
 
437
437
  ### Troubleshooting
438
438
 
package/dist/index.d.mts CHANGED
@@ -94,7 +94,9 @@ interface RemixPluginOptions {
94
94
  /**
95
95
  * Serve dev-server requests through the server entry's fetch handler.
96
96
  * Set to `false` when another plugin owns dev-time request handling —
97
- * e.g. `@cloudflare/vite-plugin`, `@netlify/vite-plugin`, or `nitro/vite`.
97
+ * `@cloudflare/vite-plugin` (workerd) or `nitro/vite`. Keep the default
98
+ * with `@netlify/vite-plugin`, which emulates platform primitives around
99
+ * the dev server but leaves SSR to the app's fetch handler.
98
100
  *
99
101
  * Ignored when `server` is `false`, which has no fetch handler.
100
102
  *
package/dist/index.mjs CHANGED
@@ -635,8 +635,8 @@ const SERVER_UPDATE_SETTLE_MS = 50;
635
635
  * preserving live component state.
636
636
  *
637
637
  * `ui-hmr` only recognizes named-function component forms, so arrow-form
638
- * exports (`export const Name = clientEntry(url, (handle) => …)` and
639
- * `export const Name = (handle) => …`) are first normalized to named function
638
+ * exports (`export let Name = clientEntry(url, (handle) => …)` and
639
+ * `export let Name = (handle) => …`) are first normalized to named function
640
640
  * expressions — the idiomatic Remix authoring style then hot-swaps without any
641
641
  * source changes. The normalization is discarded when `ui-hmr` does not
642
642
  * instrument the module, so non-component arrows are never rewritten.
@@ -724,11 +724,11 @@ function serverDataHmr(serverEnvironments) {
724
724
  *
725
725
  * Handles the two idiomatic Remix arrow forms:
726
726
  *
727
- * - `export const Name = clientEntry(url, (handle) => …)`
728
- * - `export const Name = (handle) => () => <jsx/>`
727
+ * - `export let Name = clientEntry(url, (handle) => …)`
728
+ * - `export let Name = (handle) => () => <jsx/>`
729
729
  *
730
- * Both become `export const Name = clientEntry(url, function Name(handle) { … })`
731
- * / `export const Name = function Name(handle) { … }`, which is behavior-
730
+ * Both become `export let Name = clientEntry(url, function Name(handle) { … })`
731
+ * / `export let Name = function Name(handle) { … }`, which is behavior-
732
732
  * identical for component setup functions (they never rely on a lexical `this`
733
733
  * or `arguments`).
734
734
  */
@@ -825,7 +825,7 @@ function preview$1() {
825
825
  //#region src/transform.ts
826
826
  const CLIENT_ENTRY_PATTERN = /\bclientEntry\b/;
827
827
  /**
828
- * Rewrites `export const Name = clientEntry(import.meta.url, …)` so the first
828
+ * Rewrites `export let Name = clientEntry(import.meta.url, …)` so the first
829
829
  * argument resolves to a production asset URL carrying an `#ExportName`
830
830
  * fragment.
831
831
  *
@@ -866,10 +866,11 @@ function clientEntryTransform(serverEnvironments) {
866
866
  };
867
867
  }
868
868
  /**
869
- * Matches exactly `export const Name = clientEntry(import.meta.url, …)` at the
870
- * top level, with at least two arguments. Default exports, aliased callees,
871
- * and non-exported calls are intentionally ignored the `#Name` fragment
872
- * requires a named export.
869
+ * Matches exactly `export let Name = clientEntry(import.meta.url, …)` at the
870
+ * top level, with at least two arguments. Any declaration kind (`let`, `const`,
871
+ * `var`) qualifies; the export name is what matters. Default exports, aliased
872
+ * callees, and non-exported calls are intentionally ignored — the `#Name`
873
+ * fragment requires a named export.
873
874
  */
874
875
  function findClientEntryCalls(program) {
875
876
  let results = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pitlane/dev",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "remix() — the Remix 3 Vite plugin: build orchestration, clientEntry() hydration transform, dev server with component and server-data HMR, SPA mode, build-time prerendering, and preview for any Vite or Vite+ project.",
5
5
  "keywords": [
6
6
  "pitlane",
@@ -42,20 +42,20 @@
42
42
  "@hiogawa/vite-plugin-fullstack": "0.0.11",
43
43
  "magic-string": "^0.30.21",
44
44
  "oxc-parser": "^0.141.0",
45
- "@pitlane/crawler": "^0.1.0"
45
+ "@pitlane/crawler": "^0.2.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@cloudflare/vite-plugin": "^1.31.0",
49
49
  "@types/node": "^25.5.0",
50
50
  "playwright": "1.61.1",
51
- "remix": "3.0.0-beta.10",
51
+ "remix": "3.0.0-rc.1",
52
52
  "typescript": "^7.0.2",
53
53
  "vite": "^8.1.5",
54
54
  "vite-plus": "^0.2.6",
55
55
  "wrangler": "^4.114.0"
56
56
  },
57
57
  "peerDependencies": {
58
- "remix": "^3.0.0-beta.10",
58
+ "remix": "^3.0.0-rc.1",
59
59
  "vite": ">=7.0.0"
60
60
  },
61
61
  "engines": {