@react-router/dev 0.0.0-experimental-5509a3c42 → 0.0.0-experimental-2bfe0a2f2

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-5509a3c42
3
+ * @react-router/dev v0.0.0-experimental-2bfe0a2f2
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,8 @@ 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 ClientMiddlewareArgs = T.CreateClientMiddlewareArgs<Info>
660
641
  export type LoaderArgs = T.CreateServerLoaderArgs<Info>
661
642
  export type ClientLoaderArgs = T.CreateClientLoaderArgs<Info>
662
643
  export type ActionArgs = T.CreateServerActionArgs<Info>
@@ -716,7 +697,7 @@ var init_generate = __esm({
716
697
  Path3 = __toESM(require("pathe"));
717
698
  Pathe2 = __toESM(require("pathe/utils"));
718
699
  init_paths();
719
- noExtension = (path10) => Path3.join(Path3.dirname(path10), Pathe2.filename(path10));
700
+ noExtension = (path8) => Path3.join(Path3.dirname(path8), Pathe2.filename(path8));
720
701
  }
721
702
  });
722
703
 
@@ -812,41 +793,34 @@ var init_node_adapter = __esm({
812
793
  });
813
794
 
814
795
  // vite/resolve-file-url.ts
815
- var path4;
796
+ var path2;
816
797
  var init_resolve_file_url = __esm({
817
798
  "vite/resolve-file-url.ts"() {
818
799
  "use strict";
819
- path4 = __toESM(require("path"));
820
- init_vite();
800
+ path2 = __toESM(require("path"));
801
+ init_import_vite_esm_sync();
821
802
  }
822
803
  });
823
804
 
824
805
  // vite/styles.ts
825
- var path5, import_react_router, cssFileRegExp, cssModulesRegExp;
806
+ var path3, import_react_router, cssFileRegExp, cssModulesRegExp;
826
807
  var init_styles = __esm({
827
808
  "vite/styles.ts"() {
828
809
  "use strict";
829
- path5 = __toESM(require("path"));
810
+ path3 = __toESM(require("path"));
830
811
  import_react_router = require("react-router");
831
812
  init_resolve_file_url();
832
- init_vite();
833
813
  cssFileRegExp = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
834
814
  cssModulesRegExp = new RegExp(`\\.module${cssFileRegExp.source}`);
835
815
  }
836
816
  });
837
817
 
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"() {
818
+ // vite/vmod.ts
819
+ var id;
820
+ var init_vmod = __esm({
821
+ "vite/vmod.ts"() {
849
822
  "use strict";
823
+ id = (name) => `virtual:react-router/${name}`;
850
824
  }
851
825
  });
852
826
 
@@ -868,14 +842,14 @@ var init_remove_exports = __esm({
868
842
  });
869
843
 
870
844
  // vite/with-props.ts
871
- var import_dedent2, vmod;
845
+ var import_dedent2, vmodId;
872
846
  var init_with_props = __esm({
873
847
  "vite/with-props.ts"() {
874
848
  "use strict";
875
849
  import_dedent2 = __toESM(require("dedent"));
876
850
  init_babel();
877
- init_virtual_module();
878
- vmod = create("with-props");
851
+ init_vmod();
852
+ vmodId = id("with-props");
879
853
  }
880
854
  });
881
855
 
@@ -885,7 +859,7 @@ async function resolveViteConfig({
885
859
  mode,
886
860
  root
887
861
  }) {
888
- let vite2 = getVite();
862
+ let vite2 = await import("vite");
889
863
  let viteConfig = await vite2.resolveConfig(
890
864
  { mode, configFile, root },
891
865
  "build",
@@ -935,17 +909,17 @@ async function loadPluginContext({
935
909
  function findConfig(dir, basename2, extensions) {
936
910
  for (let ext of extensions) {
937
911
  let name = basename2 + ext;
938
- let file = path6.join(dir, name);
912
+ let file = path4.join(dir, name);
939
913
  if (fse.existsSync(file)) return file;
940
914
  }
941
915
  return void 0;
942
916
  }
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;
917
+ 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
918
  var init_plugin = __esm({
945
919
  "vite/plugin.ts"() {
946
920
  "use strict";
947
921
  import_node_crypto = require("crypto");
948
- path6 = __toESM(require("path"));
922
+ path4 = __toESM(require("path"));
949
923
  url = __toESM(require("url"));
950
924
  fse = __toESM(require("fs-extra"));
951
925
  babel = __toESM(require("@babel/core"));
@@ -958,35 +932,33 @@ var init_plugin = __esm({
958
932
  init_babel();
959
933
  init_node_adapter();
960
934
  init_styles();
961
- init_virtual_module();
935
+ init_vmod();
962
936
  init_resolve_file_url();
963
937
  init_combine_urls();
964
938
  init_remove_exports();
965
- init_vite();
939
+ init_import_vite_esm_sync();
966
940
  init_config();
967
941
  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(
942
+ serverBuildId = id("server-build");
943
+ serverManifestId = id("server-manifest");
944
+ browserManifestId = id("browser-manifest");
945
+ hmrRuntimeId = id("hmr-runtime");
946
+ injectHmrRuntimeId = id("inject-hmr-runtime");
947
+ getServerBuildDirectory = (ctx) => path4.join(
976
948
  ctx.reactRouterConfig.buildDirectory,
977
949
  "server",
978
950
  ...ctx.serverBundleBuildConfig ? [ctx.serverBundleBuildConfig.serverBundleId] : []
979
951
  );
980
- defaultEntriesDir = path6.resolve(
981
- path6.dirname(require.resolve("@react-router/dev/package.json")),
952
+ defaultEntriesDir = path4.resolve(
953
+ path4.dirname(require.resolve("@react-router/dev/package.json")),
982
954
  "dist",
983
955
  "config",
984
956
  "defaults"
985
957
  );
986
- defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) => path6.join(defaultEntriesDir, filename3));
958
+ defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) => path4.join(defaultEntriesDir, filename3));
987
959
  invariant(defaultEntries.length > 0, "No default entries found");
988
960
  REACT_REFRESH_HEADER = `
989
- import RefreshRuntime from "${virtualHmrRuntime.id}";
961
+ import RefreshRuntime from "${hmrRuntimeId}";
990
962
 
991
963
  const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
992
964
  let prevRefreshReg;
@@ -1005,7 +977,21 @@ if (import.meta.hot && !inWebWorker) {
1005
977
  RefreshRuntime.register(type, __SOURCE__ + " " + id)
1006
978
  };
1007
979
  window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
1008
- }`.replaceAll("\n", "");
980
+ }`.trim();
981
+ REACT_REFRESH_FOOTER = `
982
+ if (import.meta.hot && !inWebWorker) {
983
+ window.$RefreshReg$ = prevRefreshReg;
984
+ window.$RefreshSig$ = prevRefreshSig;
985
+ RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
986
+ RefreshRuntime.registerExportsForReactRefresh(__SOURCE__, currentExports);
987
+ import.meta.hot.accept((nextExports) => {
988
+ if (!nextExports) return;
989
+ __ROUTE_ID__ && window.__reactRouterRouteModuleUpdates.set(__ROUTE_ID__, nextExports);
990
+ const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate(currentExports, nextExports, __ACCEPT_EXPORTS__);
991
+ if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
992
+ });
993
+ });
994
+ }`.trim();
1009
995
  }
1010
996
  });
1011
997
 
@@ -1055,8 +1041,8 @@ __export(build_exports, {
1055
1041
  });
1056
1042
  function getAddressableRoutes(routes2) {
1057
1043
  let nonAddressableIds = /* @__PURE__ */ new Set();
1058
- for (let id in routes2) {
1059
- let route = routes2[id];
1044
+ for (let id2 in routes2) {
1045
+ let route = routes2[id2];
1060
1046
  if (route.index) {
1061
1047
  invariant(
1062
1048
  route.parentId,
@@ -1065,7 +1051,7 @@ function getAddressableRoutes(routes2) {
1065
1051
  nonAddressableIds.add(route.parentId);
1066
1052
  }
1067
1053
  if (typeof route.path !== "string" && !route.index) {
1068
- nonAddressableIds.add(id);
1054
+ nonAddressableIds.add(id2);
1069
1055
  }
1070
1056
  }
1071
1057
  return Object.values(routes2).filter(
@@ -1096,12 +1082,12 @@ async function getServerBuilds(ctx) {
1096
1082
  let { normalizePath } = await import("vite");
1097
1083
  let resolvedAppDirectory = import_node_path2.default.resolve(rootDirectory, appDirectory);
1098
1084
  let rootRelativeRoutes = Object.fromEntries(
1099
- Object.entries(routes2).map(([id, route]) => {
1085
+ Object.entries(routes2).map(([id2, route]) => {
1100
1086
  let filePath = import_node_path2.default.join(resolvedAppDirectory, route.file);
1101
1087
  let rootRelativeFilePath = normalizePath(
1102
1088
  import_node_path2.default.relative(rootDirectory, filePath)
1103
1089
  );
1104
- return [id, { ...route, file: rootRelativeFilePath }];
1090
+ return [id2, { ...route, file: rootRelativeFilePath }];
1105
1091
  })
1106
1092
  );
1107
1093
  let buildManifest = {
@@ -1202,7 +1188,7 @@ async function build(root, {
1202
1188
  sourcemapClient,
1203
1189
  sourcemapServer
1204
1190
  }) {
1205
- await preloadVite();
1191
+ await preloadViteEsm();
1206
1192
  let viteConfig = await resolveViteConfig({ configFile, mode, root });
1207
1193
  const ctx = await extractPluginContext(viteConfig);
1208
1194
  if (!ctx) {
@@ -1212,7 +1198,7 @@ async function build(root, {
1212
1198
  process.exit(1);
1213
1199
  }
1214
1200
  let { reactRouterConfig } = ctx;
1215
- let vite2 = getVite();
1201
+ let vite2 = await import("vite");
1216
1202
  async function viteBuild({
1217
1203
  ssr,
1218
1204
  serverBundleBuildConfig
@@ -1269,7 +1255,7 @@ var init_build = __esm({
1269
1255
  init_plugin();
1270
1256
  init_config();
1271
1257
  init_invariant();
1272
- init_vite();
1258
+ init_import_vite_esm_sync();
1273
1259
  }
1274
1260
  });
1275
1261
 
@@ -1290,8 +1276,8 @@ async function dev(root, {
1290
1276
  port,
1291
1277
  strictPort
1292
1278
  }) {
1293
- await preloadVite();
1294
- let vite2 = getVite();
1279
+ await preloadViteEsm();
1280
+ let vite2 = await import("vite");
1295
1281
  let server = await vite2.createServer({
1296
1282
  root,
1297
1283
  mode,
@@ -1331,7 +1317,7 @@ var init_dev = __esm({
1331
1317
  "vite/dev.ts"() {
1332
1318
  "use strict";
1333
1319
  import_picocolors6 = __toESM(require("picocolors"));
1334
- init_vite();
1320
+ init_import_vite_esm_sync();
1335
1321
  init_profiler();
1336
1322
  }
1337
1323
  });
@@ -1342,7 +1328,7 @@ var import_semver = __toESM(require("semver"));
1342
1328
  var import_picocolors8 = __toESM(require("picocolors"));
1343
1329
 
1344
1330
  // cli/commands.ts
1345
- var path9 = __toESM(require("path"));
1331
+ var path7 = __toESM(require("path"));
1346
1332
  var import_fs_extra2 = __toESM(require("fs-extra"));
1347
1333
  var import_package_json2 = __toESM(require("@npmcli/package-json"));
1348
1334
  var import_exit_hook = __toESM(require("exit-hook"));
@@ -1428,7 +1414,7 @@ function transpile(tsx, options = {}) {
1428
1414
  // cli/commands.ts
1429
1415
  init_profiler();
1430
1416
  init_typegen();
1431
- init_vite();
1417
+ init_import_vite_esm_sync();
1432
1418
  async function routes(reactRouterRoot, flags = {}) {
1433
1419
  let ctx = await loadPluginContext({
1434
1420
  root: reactRouterRoot,
@@ -1500,14 +1486,14 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1500
1486
  console.error(import_picocolors7.default.red(`No default server entry detected.`));
1501
1487
  return;
1502
1488
  }
1503
- let defaultsDirectory = path9.resolve(
1504
- path9.dirname(require.resolve("@react-router/dev/package.json")),
1489
+ let defaultsDirectory = path7.resolve(
1490
+ path7.dirname(require.resolve("@react-router/dev/package.json")),
1505
1491
  "dist",
1506
1492
  "config",
1507
1493
  "defaults"
1508
1494
  );
1509
- let defaultEntryClient = path9.resolve(defaultsDirectory, "entry.client.tsx");
1510
- let defaultEntryServer = path9.resolve(
1495
+ let defaultEntryClient = path7.resolve(defaultsDirectory, "entry.client.tsx");
1496
+ let defaultEntryServer = path7.resolve(
1511
1497
  defaultsDirectory,
1512
1498
  `entry.server.node.tsx`
1513
1499
  );
@@ -1516,7 +1502,7 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1516
1502
  let useTypeScript = flags.typescript ?? true;
1517
1503
  let outputExtension = useTypeScript ? "tsx" : "jsx";
1518
1504
  let outputEntry = `${entry}.${outputExtension}`;
1519
- let outputFile2 = path9.resolve(appDirectory, outputEntry);
1505
+ let outputFile2 = path7.resolve(appDirectory, outputEntry);
1520
1506
  if (!useTypeScript) {
1521
1507
  let javascript = transpile(contents, {
1522
1508
  cwd: rootDirectory,
@@ -1528,7 +1514,7 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1528
1514
  }
1529
1515
  console.log(
1530
1516
  import_picocolors7.default.blue(
1531
- `Entry file ${entry} created at ${path9.relative(
1517
+ `Entry file ${entry} created at ${path7.relative(
1532
1518
  rootDirectory,
1533
1519
  outputFile2
1534
1520
  )}.`
@@ -1537,10 +1523,10 @@ async function generateEntry(entry, reactRouterRoot, flags = {}) {
1537
1523
  }
1538
1524
  async function checkForEntry(rootDirectory, appDirectory, entries2) {
1539
1525
  for (let entry of entries2) {
1540
- let entryPath = path9.resolve(appDirectory, entry);
1526
+ let entryPath = path7.resolve(appDirectory, entry);
1541
1527
  let exists = await import_fs_extra2.default.pathExists(entryPath);
1542
1528
  if (exists) {
1543
- let relative8 = path9.relative(rootDirectory, entryPath);
1529
+ let relative8 = path7.relative(rootDirectory, entryPath);
1544
1530
  console.error(import_picocolors7.default.red(`Entry file ${relative8} already exists.`));
1545
1531
  return process.exit(1);
1546
1532
  }
@@ -1559,8 +1545,8 @@ async function createClientEntry(rootDirectory, appDirectory, inputFile) {
1559
1545
  async function typegen(root, flags) {
1560
1546
  root ??= process.cwd();
1561
1547
  if (flags.watch) {
1562
- await preloadVite();
1563
- const vite2 = getVite();
1548
+ await preloadViteEsm();
1549
+ const vite2 = importViteEsmSync();
1564
1550
  const logger = vite2.createLogger("info", { prefix: "[react-router]" });
1565
1551
  await watch(root, { logger });
1566
1552
  await new Promise(() => {
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-5509a3c42
2
+ * @react-router/dev v0.0.0-experimental-2bfe0a2f2
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-5509a3c42
2
+ * @react-router/dev v0.0.0-experimental-2bfe0a2f2
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *