@react-router/dev 0.0.0-experimental-a839ff7e2 → 0.0.0-experimental-6b51a129b

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