@react-router/dev 0.0.0-experimental-e41ede670 → 0.0.0-experimental-4d16b23b6

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,35 @@
1
1
  # `@react-router/dev`
2
2
 
3
+ ## 7.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix for a crash when optional args are passed to the CLI ([`5b1ca202f`](https://github.com/remix-run/react-router/commit/5b1ca202f77ef342db0109c6b791d33188077cd0))
8
+ - Updated dependencies:
9
+ - `react-router@7.1.1`
10
+ - `@react-router/node@7.1.1`
11
+ - `@react-router/serve@7.1.1`
12
+
13
+ ## 7.1.0
14
+
15
+ ### Minor Changes
16
+
17
+ - Add support for Vite v6 ([#12469](https://github.com/remix-run/react-router/pull/12469))
18
+
19
+ ### Patch Changes
20
+
21
+ - Properly initialize `NODE_ENV` if not already set for compatibility with React 19 ([#12578](https://github.com/remix-run/react-router/pull/12578))
22
+
23
+ - Remove the leftover/unused `abortDelay` prop from `ServerRouter` and update the default `entry.server.tsx` to use the new `streamTimeout` value for Single Fetch ([#12478](https://github.com/remix-run/react-router/pull/12478))
24
+
25
+ - The `abortDelay` functionality was removed in v7 as it was coupled to the `defer` implementation from Remix v2, but this removal of this prop was missed
26
+ - If you were still using this prop in your `entry.server` file, it's likely your app is not aborting streams as you would expect and you will need to adopt the new [`streamTimeout`](https://reactrouter.com/explanation/special-files#streamtimeout) value introduced with Single Fetch
27
+
28
+ - Updated dependencies:
29
+ - `react-router@7.1.0`
30
+ - `@react-router/node@7.1.0`
31
+ - `@react-router/serve@7.1.0`
32
+
3
33
  ## 7.0.2
4
34
 
5
35
  ### Patch Changes
package/bin.js CHANGED
@@ -1,2 +1,15 @@
1
1
  #!/usr/bin/env node
2
+ let arg = require("arg");
3
+
4
+ // Minimal replication of our actual parsing in `run.ts`. If not already set,
5
+ // default `NODE_ENV` so React loads the proper version in it's CJS entry script.
6
+ // We have to do this before importing `run.ts` since that is what imports
7
+ // `react` (indirectly via `react-router`)
8
+ let args = arg({}, { argv: process.argv.slice(2), stopAtPositional: true });
9
+ if (args._[0] === "dev") {
10
+ process.env.NODE_ENV = process.env.NODE_ENV ?? "development";
11
+ } else {
12
+ process.env.NODE_ENV = process.env.NODE_ENV ?? "production";
13
+ }
14
+
2
15
  require("./dist/cli/index");
package/dist/cli/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/dev v0.0.0-experimental-e41ede670
3
+ * @react-router/dev v0.0.0-experimental-4d16b23b6
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -55,26 +55,55 @@ var init_invariant = __esm({
55
55
  }
56
56
  });
57
57
 
58
- // vite/import-vite-esm-sync.ts
59
- async function preloadViteEsm() {
60
- vite = await import("vite");
58
+ // config/is-react-router-repo.ts
59
+ function isReactRouterRepo() {
60
+ let serverRuntimePath = import_pathe.default.dirname(
61
+ require.resolve("@react-router/node/package.json")
62
+ );
63
+ let serverRuntimeParentDir = import_pathe.default.basename(
64
+ import_pathe.default.resolve(serverRuntimePath, "..")
65
+ );
66
+ return serverRuntimeParentDir === "packages";
67
+ }
68
+ var import_pathe;
69
+ var init_is_react_router_repo = __esm({
70
+ "config/is-react-router-repo.ts"() {
71
+ "use strict";
72
+ import_pathe = __toESM(require("pathe"));
73
+ }
74
+ });
75
+
76
+ // vite/vite.ts
77
+ async function preloadVite() {
78
+ vite = await import(viteImportSpecifier);
61
79
  }
62
- function importViteEsmSync() {
63
- invariant(vite, "importViteEsmSync() called before preloadViteEsm()");
80
+ function getVite() {
81
+ invariant(vite, "getVite() called before preloadVite()");
64
82
  return vite;
65
83
  }
66
- var vite;
67
- var init_import_vite_esm_sync = __esm({
68
- "vite/import-vite-esm-sync.ts"() {
84
+ var import_pathe2, vite, viteImportSpecifier;
85
+ var init_vite = __esm({
86
+ "vite/vite.ts"() {
69
87
  "use strict";
88
+ import_pathe2 = __toESM(require("pathe"));
70
89
  init_invariant();
90
+ init_is_react_router_repo();
91
+ viteImportSpecifier = isReactRouterRepo() ? (
92
+ // Support testing against different versions of Vite by ensuring that Vite
93
+ // is resolved from the current working directory when running within this
94
+ // repo. If we don't do this, Vite will always be imported relative to this
95
+ // file, which means that it will always resolve to Vite 6.
96
+ `file:///${import_pathe2.default.normalize(
97
+ require.resolve("vite/package.json", { paths: [process.cwd()] })
98
+ ).replace("package.json", "dist/node/index.js")}`
99
+ ) : "vite";
71
100
  }
72
101
  });
73
102
 
74
103
  // vite/vite-node.ts
75
104
  async function createContext(viteConfig = {}) {
76
- await preloadViteEsm();
77
- const vite2 = importViteEsmSync();
105
+ await preloadVite();
106
+ const vite2 = getVite();
78
107
  const devServer = await vite2.createServer(
79
108
  vite2.mergeConfig(
80
109
  {
@@ -100,11 +129,11 @@ async function createContext(viteConfig = {}) {
100
129
  const runner = new import_client.ViteNodeRunner({
101
130
  root: devServer.config.root,
102
131
  base: devServer.config.base,
103
- fetchModule(id2) {
104
- return server.fetchModule(id2);
132
+ fetchModule(id) {
133
+ return server.fetchModule(id);
105
134
  },
106
- resolveId(id2, importer) {
107
- return server.resolveId(id2, importer);
135
+ resolveId(id, importer) {
136
+ return server.resolveId(id, importer);
108
137
  }
109
138
  });
110
139
  return { devServer, server, runner };
@@ -116,7 +145,7 @@ var init_vite_node = __esm({
116
145
  import_server = require("vite-node/server");
117
146
  import_client = require("vite-node/client");
118
147
  import_source_map = require("vite-node/source-map");
119
- init_import_vite_esm_sync();
148
+ init_vite();
120
149
  }
121
150
  });
122
151
 
@@ -149,7 +178,7 @@ function validateRouteConfig({
149
178
  `Route config in "${routeConfigFile}" is invalid.`,
150
179
  root ? `${root}` : [],
151
180
  nested ? Object.entries(nested).map(
152
- ([path8, message]) => `Path: routes.${path8}
181
+ ([path10, message]) => `Path: routes.${path10}
153
182
  ${message}`
154
183
  ) : []
155
184
  ].flat().join("\n\n")
@@ -160,24 +189,24 @@ ${message}`
160
189
  function configRoutesToRouteManifest(appDirectory, routes2, rootId = "root") {
161
190
  let routeManifest = {};
162
191
  function walk(route, parentId) {
163
- let id2 = route.id || createRouteId(route.file);
192
+ let id = route.id || createRouteId(route.file);
164
193
  let manifestItem = {
165
- id: id2,
194
+ id,
166
195
  parentId,
167
196
  file: Path.isAbsolute(route.file) ? Path.relative(appDirectory, route.file) : route.file,
168
197
  path: route.path,
169
198
  index: route.index,
170
199
  caseSensitive: route.caseSensitive
171
200
  };
172
- if (routeManifest.hasOwnProperty(id2)) {
201
+ if (routeManifest.hasOwnProperty(id)) {
173
202
  throw new Error(
174
- `Unable to define routes with duplicate route id: "${id2}"`
203
+ `Unable to define routes with duplicate route id: "${id}"`
175
204
  );
176
205
  }
177
- routeManifest[id2] = manifestItem;
206
+ routeManifest[id] = manifestItem;
178
207
  if (route.children) {
179
208
  for (let child of route.children) {
180
- walk(child, id2);
209
+ walk(child, id);
181
210
  }
182
211
  }
183
212
  }
@@ -307,13 +336,13 @@ async function resolveConfig({
307
336
  "The `prerender` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths"
308
337
  );
309
338
  }
310
- let appDirectory = import_pathe.default.resolve(root, userAppDirectory || "app");
311
- let buildDirectory = import_pathe.default.resolve(root, userBuildDirectory);
339
+ let appDirectory = import_pathe3.default.resolve(root, userAppDirectory || "app");
340
+ let buildDirectory = import_pathe3.default.resolve(root, userBuildDirectory);
312
341
  let rootRouteFile = findEntry(appDirectory, "root");
313
342
  if (!rootRouteFile) {
314
- let rootRouteDisplayPath = import_pathe.default.relative(
343
+ let rootRouteDisplayPath = import_pathe3.default.relative(
315
344
  root,
316
- import_pathe.default.join(appDirectory, "root.tsx")
345
+ import_pathe3.default.join(appDirectory, "root.tsx")
317
346
  );
318
347
  return err(
319
348
  `Could not find a root route module in the app directory as "${rootRouteDisplayPath}"`
@@ -325,15 +354,15 @@ async function resolveConfig({
325
354
  let routeConfigFile = findEntry(appDirectory, "routes");
326
355
  try {
327
356
  if (!routeConfigFile) {
328
- let routeConfigDisplayPath = import_pathe.default.relative(
357
+ let routeConfigDisplayPath = import_pathe3.default.relative(
329
358
  root,
330
- import_pathe.default.join(appDirectory, "routes.ts")
359
+ import_pathe3.default.join(appDirectory, "routes.ts")
331
360
  );
332
361
  return err(`Route config file not found at "${routeConfigDisplayPath}".`);
333
362
  }
334
363
  setAppDirectory(appDirectory);
335
364
  let routeConfigExport = (await viteNodeContext.runner.executeFile(
336
- import_pathe.default.join(appDirectory, routeConfigFile)
365
+ import_pathe3.default.join(appDirectory, routeConfigFile)
337
366
  )).default;
338
367
  let routeConfig = await routeConfigExport;
339
368
  let result = validateRouteConfig({
@@ -353,7 +382,7 @@ async function resolveConfig({
353
382
  import_picocolors.default.red(`Route config in "${routeConfigFile}" is invalid.`),
354
383
  "",
355
384
  error.loc?.file && error.loc?.column && error.frame ? [
356
- import_pathe.default.relative(appDirectory, error.loc.file) + ":" + error.loc.line + ":" + error.loc.column,
385
+ import_pathe3.default.relative(appDirectory, error.loc.file) + ":" + error.loc.line + ":" + error.loc.column,
357
386
  error.frame.trim?.()
358
387
  ] : error.stack
359
388
  ].flat().join("\n")
@@ -425,8 +454,8 @@ async function createConfigLoader({
425
454
  );
426
455
  fsWatcher.on("all", async (...args) => {
427
456
  let [event, rawFilepath] = args;
428
- let filepath = import_pathe.default.normalize(rawFilepath);
429
- let appFileAddedOrRemoved = appDirectory && (event === "add" || event === "unlink") && filepath.startsWith(import_pathe.default.normalize(appDirectory));
457
+ let filepath = import_pathe3.default.normalize(rawFilepath);
458
+ let appFileAddedOrRemoved = appDirectory && (event === "add" || event === "unlink") && filepath.startsWith(import_pathe3.default.normalize(appDirectory));
430
459
  let configCodeUpdated = Boolean(
431
460
  viteNodeContext.devServer?.moduleGraph.getModuleById(filepath)
432
461
  );
@@ -467,25 +496,16 @@ async function createConfigLoader({
467
496
  }
468
497
  };
469
498
  }
470
- function isInReactRouterMonorepo() {
471
- let serverRuntimePath = import_pathe.default.dirname(
472
- require.resolve("@react-router/node/package.json")
473
- );
474
- let serverRuntimeParentDir = import_pathe.default.basename(
475
- import_pathe.default.resolve(serverRuntimePath, "..")
476
- );
477
- return serverRuntimeParentDir === "packages";
478
- }
479
499
  function findEntry(dir, basename2, options) {
480
500
  for (let ext of entryExts) {
481
- let file = import_pathe.default.resolve(dir, basename2 + ext);
501
+ let file = import_pathe3.default.resolve(dir, basename2 + ext);
482
502
  if (import_node_fs.default.existsSync(file)) {
483
- return options?.absolute ?? false ? file : import_pathe.default.relative(dir, file);
503
+ return options?.absolute ?? false ? file : import_pathe3.default.relative(dir, file);
484
504
  }
485
505
  }
486
506
  return void 0;
487
507
  }
488
- var import_node_fs, import_node_child_process, import_package_json, import_pathe, import_chokidar, import_picocolors, import_pick2, import_omit, import_cloneDeep, import_isEqual, excludedConfigPresetKeys, branchRouteProperties, configRouteToBranchRoute, mergeReactRouterConfig, deepFreeze, ssrExternals, entryExts;
508
+ var import_node_fs, import_node_child_process, import_package_json, import_pathe3, import_chokidar, import_picocolors, import_pick2, import_omit, import_cloneDeep, import_isEqual, excludedConfigPresetKeys, branchRouteProperties, configRouteToBranchRoute, mergeReactRouterConfig, deepFreeze, ssrExternals, entryExts;
489
509
  var init_config = __esm({
490
510
  "config/config.ts"() {
491
511
  "use strict";
@@ -493,7 +513,7 @@ var init_config = __esm({
493
513
  import_node_child_process = require("child_process");
494
514
  import_package_json = __toESM(require("@npmcli/package-json"));
495
515
  init_vite_node();
496
- import_pathe = __toESM(require("pathe"));
516
+ import_pathe3 = __toESM(require("pathe"));
497
517
  import_chokidar = __toESM(require("chokidar"));
498
518
  import_picocolors = __toESM(require("picocolors"));
499
519
  import_pick2 = __toESM(require("lodash/pick"));
@@ -502,6 +522,7 @@ var init_config = __esm({
502
522
  import_isEqual = __toESM(require("lodash/isEqual"));
503
523
  init_routes();
504
524
  init_detectPackageManager();
525
+ init_is_react_router_repo();
505
526
  excludedConfigPresetKeys = ["presets"];
506
527
  branchRouteProperties = [
507
528
  "id",
@@ -548,7 +569,7 @@ var init_config = __esm({
548
569
  });
549
570
  return o;
550
571
  };
551
- ssrExternals = isInReactRouterMonorepo() ? [
572
+ ssrExternals = isReactRouterRepo() ? [
552
573
  // This is only needed within this repo because these packages
553
574
  // are linked to a directory outside of node_modules so Vite
554
575
  // treats them as internal code by default.
@@ -636,10 +657,6 @@ function generate(ctx, route) {
636
657
  export type HeadersArgs = T.HeadersArgs
637
658
  export type HeadersFunction = (args: HeadersArgs) => Headers | HeadersInit
638
659
 
639
- export type MiddlewareArgs = T.CreateServerMiddlewareArgs<Info>
640
- export type MiddlewareNextFunction = T.ServerMiddlewareNextFunction
641
- export type ClientMiddlewareArgs = T.CreateClientMiddlewareArgs<Info>
642
- export type ClientMiddlewareNextFunction = T.ClientMiddlewareNextFunction
643
660
  export type LoaderArgs = T.CreateServerLoaderArgs<Info>
644
661
  export type ClientLoaderArgs = T.CreateClientLoaderArgs<Info>
645
662
  export type ActionArgs = T.CreateServerActionArgs<Info>
@@ -699,7 +716,7 @@ var init_generate = __esm({
699
716
  Path3 = __toESM(require("pathe"));
700
717
  Pathe2 = __toESM(require("pathe/utils"));
701
718
  init_paths();
702
- noExtension = (path8) => Path3.join(Path3.dirname(path8), Pathe2.filename(path8));
719
+ noExtension = (path10) => Path3.join(Path3.dirname(path10), Pathe2.filename(path10));
703
720
  }
704
721
  });
705
722
 
@@ -795,34 +812,41 @@ var init_node_adapter = __esm({
795
812
  });
796
813
 
797
814
  // vite/resolve-file-url.ts
798
- var path2;
815
+ var path4;
799
816
  var init_resolve_file_url = __esm({
800
817
  "vite/resolve-file-url.ts"() {
801
818
  "use strict";
802
- path2 = __toESM(require("path"));
803
- init_import_vite_esm_sync();
819
+ path4 = __toESM(require("path"));
820
+ init_vite();
804
821
  }
805
822
  });
806
823
 
807
824
  // vite/styles.ts
808
- var path3, import_react_router, cssFileRegExp, cssModulesRegExp;
825
+ var path5, import_react_router, cssFileRegExp, cssModulesRegExp;
809
826
  var init_styles = __esm({
810
827
  "vite/styles.ts"() {
811
828
  "use strict";
812
- path3 = __toESM(require("path"));
829
+ path5 = __toESM(require("path"));
813
830
  import_react_router = require("react-router");
814
831
  init_resolve_file_url();
832
+ init_vite();
815
833
  cssFileRegExp = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
816
834
  cssModulesRegExp = new RegExp(`\\.module${cssFileRegExp.source}`);
817
835
  }
818
836
  });
819
837
 
820
- // vite/vmod.ts
821
- var id;
822
- var init_vmod = __esm({
823
- "vite/vmod.ts"() {
838
+ // vite/virtual-module.ts
839
+ function create(name) {
840
+ let id = `virtual:react-router/${name}`;
841
+ return {
842
+ id,
843
+ resolvedId: `\0${id}`,
844
+ url: `/@id/__x00__${id}`
845
+ };
846
+ }
847
+ var init_virtual_module = __esm({
848
+ "vite/virtual-module.ts"() {
824
849
  "use strict";
825
- id = (name) => `virtual:react-router/${name}`;
826
850
  }
827
851
  });
828
852
 
@@ -844,14 +868,14 @@ var init_remove_exports = __esm({
844
868
  });
845
869
 
846
870
  // vite/with-props.ts
847
- var import_dedent2, vmodId;
871
+ var import_dedent2, vmod;
848
872
  var init_with_props = __esm({
849
873
  "vite/with-props.ts"() {
850
874
  "use strict";
851
875
  import_dedent2 = __toESM(require("dedent"));
852
876
  init_babel();
853
- init_vmod();
854
- vmodId = id("with-props");
877
+ init_virtual_module();
878
+ vmod = create("with-props");
855
879
  }
856
880
  });
857
881
 
@@ -861,7 +885,7 @@ async function resolveViteConfig({
861
885
  mode,
862
886
  root
863
887
  }) {
864
- let vite2 = await import("vite");
888
+ let vite2 = getVite();
865
889
  let viteConfig = await vite2.resolveConfig(
866
890
  { mode, configFile, root },
867
891
  "build",
@@ -911,17 +935,17 @@ async function loadPluginContext({
911
935
  function findConfig(dir, basename2, extensions) {
912
936
  for (let ext of extensions) {
913
937
  let name = basename2 + ext;
914
- let file = path4.join(dir, name);
938
+ let file = path6.join(dir, name);
915
939
  if (fse.existsSync(file)) return file;
916
940
  }
917
941
  return void 0;
918
942
  }
919
- var import_node_crypto, path4, url, fse, babel, import_react_router2, import_es_module_lexer, import_jsesc, import_picocolors3, serverBuildId, serverManifestId, browserManifestId, hmrRuntimeId, injectHmrRuntimeId, getServerBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER, REACT_REFRESH_FOOTER;
943
+ var import_node_crypto, path6, url, fse, babel, import_react_router2, import_es_module_lexer, import_jsesc, import_picocolors3, virtualHmrRuntime, virtualInjectHmrRuntime, virtual, getServerBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER;
920
944
  var init_plugin = __esm({
921
945
  "vite/plugin.ts"() {
922
946
  "use strict";
923
947
  import_node_crypto = require("crypto");
924
- path4 = __toESM(require("path"));
948
+ path6 = __toESM(require("path"));
925
949
  url = __toESM(require("url"));
926
950
  fse = __toESM(require("fs-extra"));
927
951
  babel = __toESM(require("@babel/core"));
@@ -934,33 +958,35 @@ var init_plugin = __esm({
934
958
  init_babel();
935
959
  init_node_adapter();
936
960
  init_styles();
937
- init_vmod();
961
+ init_virtual_module();
938
962
  init_resolve_file_url();
939
963
  init_combine_urls();
940
964
  init_remove_exports();
941
- init_import_vite_esm_sync();
965
+ init_vite();
942
966
  init_config();
943
967
  init_with_props();
944
- serverBuildId = id("server-build");
945
- serverManifestId = id("server-manifest");
946
- browserManifestId = id("browser-manifest");
947
- hmrRuntimeId = id("hmr-runtime");
948
- injectHmrRuntimeId = id("inject-hmr-runtime");
949
- getServerBuildDirectory = (ctx) => path4.join(
968
+ virtualHmrRuntime = create("hmr-runtime");
969
+ virtualInjectHmrRuntime = create("inject-hmr-runtime");
970
+ virtual = {
971
+ serverBuild: create("server-build"),
972
+ serverManifest: create("server-manifest"),
973
+ browserManifest: create("browser-manifest")
974
+ };
975
+ getServerBuildDirectory = (ctx) => path6.join(
950
976
  ctx.reactRouterConfig.buildDirectory,
951
977
  "server",
952
978
  ...ctx.serverBundleBuildConfig ? [ctx.serverBundleBuildConfig.serverBundleId] : []
953
979
  );
954
- defaultEntriesDir = path4.resolve(
955
- path4.dirname(require.resolve("@react-router/dev/package.json")),
980
+ defaultEntriesDir = path6.resolve(
981
+ path6.dirname(require.resolve("@react-router/dev/package.json")),
956
982
  "dist",
957
983
  "config",
958
984
  "defaults"
959
985
  );
960
- defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) => path4.join(defaultEntriesDir, filename3));
986
+ defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) => path6.join(defaultEntriesDir, filename3));
961
987
  invariant(defaultEntries.length > 0, "No default entries found");
962
988
  REACT_REFRESH_HEADER = `
963
- import RefreshRuntime from "${hmrRuntimeId}";
989
+ import RefreshRuntime from "${virtualHmrRuntime.id}";
964
990
 
965
991
  const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
966
992
  let prevRefreshReg;
@@ -979,21 +1005,7 @@ if (import.meta.hot && !inWebWorker) {
979
1005
  RefreshRuntime.register(type, __SOURCE__ + " " + id)
980
1006
  };
981
1007
  window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
982
- }`.trim();
983
- REACT_REFRESH_FOOTER = `
984
- if (import.meta.hot && !inWebWorker) {
985
- window.$RefreshReg$ = prevRefreshReg;
986
- window.$RefreshSig$ = prevRefreshSig;
987
- RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
988
- RefreshRuntime.registerExportsForReactRefresh(__SOURCE__, currentExports);
989
- import.meta.hot.accept((nextExports) => {
990
- if (!nextExports) return;
991
- __ROUTE_ID__ && window.__reactRouterRouteModuleUpdates.set(__ROUTE_ID__, nextExports);
992
- const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate(currentExports, nextExports, __ACCEPT_EXPORTS__);
993
- if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
994
- });
995
- });
996
- }`.trim();
1008
+ }`.replaceAll("\n", "");
997
1009
  }
998
1010
  });
999
1011
 
@@ -1043,8 +1055,8 @@ __export(build_exports, {
1043
1055
  });
1044
1056
  function getAddressableRoutes(routes2) {
1045
1057
  let nonAddressableIds = /* @__PURE__ */ new Set();
1046
- for (let id2 in routes2) {
1047
- let route = routes2[id2];
1058
+ for (let id in routes2) {
1059
+ let route = routes2[id];
1048
1060
  if (route.index) {
1049
1061
  invariant(
1050
1062
  route.parentId,
@@ -1053,7 +1065,7 @@ function getAddressableRoutes(routes2) {
1053
1065
  nonAddressableIds.add(route.parentId);
1054
1066
  }
1055
1067
  if (typeof route.path !== "string" && !route.index) {
1056
- nonAddressableIds.add(id2);
1068
+ nonAddressableIds.add(id);
1057
1069
  }
1058
1070
  }
1059
1071
  return Object.values(routes2).filter(
@@ -1084,12 +1096,12 @@ async function getServerBuilds(ctx) {
1084
1096
  let { normalizePath } = await import("vite");
1085
1097
  let resolvedAppDirectory = import_node_path2.default.resolve(rootDirectory, appDirectory);
1086
1098
  let rootRelativeRoutes = Object.fromEntries(
1087
- Object.entries(routes2).map(([id2, route]) => {
1099
+ Object.entries(routes2).map(([id, route]) => {
1088
1100
  let filePath = import_node_path2.default.join(resolvedAppDirectory, route.file);
1089
1101
  let rootRelativeFilePath = normalizePath(
1090
1102
  import_node_path2.default.relative(rootDirectory, filePath)
1091
1103
  );
1092
- return [id2, { ...route, file: rootRelativeFilePath }];
1104
+ return [id, { ...route, file: rootRelativeFilePath }];
1093
1105
  })
1094
1106
  );
1095
1107
  let buildManifest = {
@@ -1190,7 +1202,7 @@ async function build(root, {
1190
1202
  sourcemapClient,
1191
1203
  sourcemapServer
1192
1204
  }) {
1193
- await preloadViteEsm();
1205
+ await preloadVite();
1194
1206
  let viteConfig = await resolveViteConfig({ configFile, mode, root });
1195
1207
  const ctx = await extractPluginContext(viteConfig);
1196
1208
  if (!ctx) {
@@ -1200,7 +1212,7 @@ async function build(root, {
1200
1212
  process.exit(1);
1201
1213
  }
1202
1214
  let { reactRouterConfig } = ctx;
1203
- let vite2 = await import("vite");
1215
+ let vite2 = getVite();
1204
1216
  async function viteBuild({
1205
1217
  ssr,
1206
1218
  serverBundleBuildConfig
@@ -1257,7 +1269,7 @@ var init_build = __esm({
1257
1269
  init_plugin();
1258
1270
  init_config();
1259
1271
  init_invariant();
1260
- init_import_vite_esm_sync();
1272
+ init_vite();
1261
1273
  }
1262
1274
  });
1263
1275
 
@@ -1278,8 +1290,8 @@ async function dev(root, {
1278
1290
  port,
1279
1291
  strictPort
1280
1292
  }) {
1281
- await preloadViteEsm();
1282
- let vite2 = await import("vite");
1293
+ await preloadVite();
1294
+ let vite2 = getVite();
1283
1295
  let server = await vite2.createServer({
1284
1296
  root,
1285
1297
  mode,
@@ -1319,7 +1331,7 @@ var init_dev = __esm({
1319
1331
  "vite/dev.ts"() {
1320
1332
  "use strict";
1321
1333
  import_picocolors6 = __toESM(require("picocolors"));
1322
- init_import_vite_esm_sync();
1334
+ init_vite();
1323
1335
  init_profiler();
1324
1336
  }
1325
1337
  });
@@ -1330,7 +1342,7 @@ var import_semver = __toESM(require("semver"));
1330
1342
  var import_picocolors8 = __toESM(require("picocolors"));
1331
1343
 
1332
1344
  // cli/commands.ts
1333
- var path7 = __toESM(require("path"));
1345
+ var path9 = __toESM(require("path"));
1334
1346
  var import_fs_extra2 = __toESM(require("fs-extra"));
1335
1347
  var import_package_json2 = __toESM(require("@npmcli/package-json"));
1336
1348
  var import_exit_hook = __toESM(require("exit-hook"));
@@ -1416,7 +1428,7 @@ function transpile(tsx, options = {}) {
1416
1428
  // cli/commands.ts
1417
1429
  init_profiler();
1418
1430
  init_typegen();
1419
- init_import_vite_esm_sync();
1431
+ init_vite();
1420
1432
  async function routes(reactRouterRoot, flags = {}) {
1421
1433
  let ctx = await loadPluginContext({
1422
1434
  root: reactRouterRoot,
@@ -1488,14 +1500,14 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1488
1500
  console.error(import_picocolors7.default.red(`No default server entry detected.`));
1489
1501
  return;
1490
1502
  }
1491
- let defaultsDirectory = path7.resolve(
1492
- path7.dirname(require.resolve("@react-router/dev/package.json")),
1503
+ let defaultsDirectory = path9.resolve(
1504
+ path9.dirname(require.resolve("@react-router/dev/package.json")),
1493
1505
  "dist",
1494
1506
  "config",
1495
1507
  "defaults"
1496
1508
  );
1497
- let defaultEntryClient = path7.resolve(defaultsDirectory, "entry.client.tsx");
1498
- let defaultEntryServer = path7.resolve(
1509
+ let defaultEntryClient = path9.resolve(defaultsDirectory, "entry.client.tsx");
1510
+ let defaultEntryServer = path9.resolve(
1499
1511
  defaultsDirectory,
1500
1512
  `entry.server.node.tsx`
1501
1513
  );
@@ -1504,7 +1516,7 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1504
1516
  let useTypeScript = flags.typescript ?? true;
1505
1517
  let outputExtension = useTypeScript ? "tsx" : "jsx";
1506
1518
  let outputEntry = `${entry}.${outputExtension}`;
1507
- let outputFile2 = path7.resolve(appDirectory, outputEntry);
1519
+ let outputFile2 = path9.resolve(appDirectory, outputEntry);
1508
1520
  if (!useTypeScript) {
1509
1521
  let javascript = transpile(contents, {
1510
1522
  cwd: rootDirectory,
@@ -1516,7 +1528,7 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1516
1528
  }
1517
1529
  console.log(
1518
1530
  import_picocolors7.default.blue(
1519
- `Entry file ${entry} created at ${path7.relative(
1531
+ `Entry file ${entry} created at ${path9.relative(
1520
1532
  rootDirectory,
1521
1533
  outputFile2
1522
1534
  )}.`
@@ -1525,10 +1537,10 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1525
1537
  }
1526
1538
  async function checkForEntry(rootDirectory, appDirectory, entries2) {
1527
1539
  for (let entry of entries2) {
1528
- let entryPath = path7.resolve(appDirectory, entry);
1540
+ let entryPath = path9.resolve(appDirectory, entry);
1529
1541
  let exists = await import_fs_extra2.default.pathExists(entryPath);
1530
1542
  if (exists) {
1531
- let relative8 = path7.relative(rootDirectory, entryPath);
1543
+ let relative8 = path9.relative(rootDirectory, entryPath);
1532
1544
  console.error(import_picocolors7.default.red(`Entry file ${relative8} already exists.`));
1533
1545
  return process.exit(1);
1534
1546
  }
@@ -1547,8 +1559,8 @@ async function createClientEntry(rootDirectory, appDirectory, inputFile) {
1547
1559
  async function typegen(root, flags) {
1548
1560
  root ??= process.cwd();
1549
1561
  if (flags.watch) {
1550
- await preloadViteEsm();
1551
- const vite2 = importViteEsmSync();
1562
+ await preloadVite();
1563
+ const vite2 = getVite();
1552
1564
  const logger = vite2.createLogger("info", { prefix: "[react-router]" });
1553
1565
  await watch(root, { logger });
1554
1566
  await new Promise(() => {
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-e41ede670
2
+ * @react-router/dev v0.0.0-experimental-4d16b23b6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/routes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-e41ede670
2
+ * @react-router/dev v0.0.0-experimental-4d16b23b6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *