@react-router/dev 0.0.0-experimental-49eef6a01 → 0.0.0-experimental-a26b992a1

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.
Files changed (55) hide show
  1. package/bin.js +1 -1
  2. package/dist/cli/commands.js +1 -1
  3. package/dist/cli/detectPackageManager.js +1 -1
  4. package/dist/cli/index.d.ts +1 -1
  5. package/dist/cli/index.js +7 -6
  6. package/dist/cli/run.js +1 -1
  7. package/dist/cli/useJavascript.js +1 -1
  8. package/dist/colors.js +1 -1
  9. package/dist/config/defaults/entry.client.tsx +1 -1
  10. package/dist/config/format.js +1 -1
  11. package/dist/config/routes.d.ts +77 -50
  12. package/dist/config/routes.js +175 -43
  13. package/dist/invariant.js +1 -1
  14. package/dist/routes.d.ts +2 -0
  15. package/dist/routes.js +23 -0
  16. package/dist/vite/babel.d.ts +10 -10
  17. package/dist/vite/babel.js +1 -1
  18. package/dist/vite/build.js +2 -2
  19. package/dist/vite/cloudflare-dev-proxy.d.ts +7 -1
  20. package/dist/vite/cloudflare-dev-proxy.js +23 -7
  21. package/dist/vite/cloudflare.d.ts +1 -0
  22. package/dist/vite/cloudflare.js +19 -0
  23. package/dist/vite/combine-urls.d.ts +1 -0
  24. package/dist/vite/combine-urls.js +20 -0
  25. package/dist/{config.d.ts → vite/config.d.ts} +15 -27
  26. package/dist/{config.js → vite/config.js} +62 -45
  27. package/dist/vite/dev.js +1 -1
  28. package/dist/vite/import-vite-esm-sync.js +1 -1
  29. package/dist/vite/node-adapter.js +1 -1
  30. package/dist/vite/plugin.d.ts +6 -3
  31. package/dist/vite/plugin.js +145 -121
  32. package/dist/vite/profiler.js +1 -1
  33. package/dist/vite/remove-exports.d.ts +2 -2
  34. package/dist/vite/remove-exports.js +113 -243
  35. package/dist/vite/resolve-file-url.js +1 -1
  36. package/dist/vite/static/refresh-utils.cjs +7 -26
  37. package/dist/vite/styles.d.ts +3 -2
  38. package/dist/vite/styles.js +23 -2
  39. package/dist/vite/vmod.js +1 -1
  40. package/dist/vite/with-props.d.ts +4 -0
  41. package/dist/vite/with-props.js +151 -0
  42. package/dist/vite.d.ts +2 -0
  43. package/dist/{cli.js → vite.js} +7 -8
  44. package/package.json +21 -12
  45. package/dist/config/findConfig.d.ts +0 -1
  46. package/dist/config/findConfig.js +0 -32
  47. package/dist/config/flatRoutes.d.ts +0 -14
  48. package/dist/config/flatRoutes.js +0 -418
  49. package/dist/index.d.ts +0 -4
  50. package/dist/index.js +0 -23
  51. package/dist/vite/define-route.d.ts +0 -5
  52. package/dist/vite/define-route.js +0 -207
  53. package/dist/vite/index.d.ts +0 -3
  54. package/dist/vite/index.js +0 -31
  55. /package/dist/{cli.d.ts → vite/combine-urls-test.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-49eef6a01
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -13,15 +13,28 @@
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
15
  var reactRouter = require('react-router');
16
- var wrangler = require('wrangler');
17
16
  var nodeAdapter = require('./node-adapter.js');
18
17
 
19
18
  let serverBuildId = "virtual:react-router/server-build";
19
+ function importWrangler() {
20
+ try {
21
+ return import('wrangler');
22
+ } catch (_) {
23
+ throw Error("Could not import `wrangler`. Do you have it installed?");
24
+ }
25
+ }
20
26
  const PLUGIN_NAME = "react-router-cloudflare-vite-dev-proxy";
21
- const cloudflareDevProxyVitePlugin = ({
22
- getLoadContext,
23
- ...options
24
- } = {}) => {
27
+ /**
28
+ * Vite plugin that provides [Node proxies to local workerd
29
+ * bindings](https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy)
30
+ * to `context.cloudflare` in your server loaders and server actions during
31
+ * development.
32
+ */
33
+ const cloudflareDevProxyVitePlugin = (options = {}) => {
34
+ let {
35
+ getLoadContext,
36
+ ...restOptions
37
+ } = options;
25
38
  return {
26
39
  name: PLUGIN_NAME,
27
40
  config: () => ({
@@ -39,11 +52,14 @@ const cloudflareDevProxyVitePlugin = ({
39
52
  }
40
53
  },
41
54
  configureServer: async viteDevServer => {
55
+ let {
56
+ getPlatformProxy
57
+ } = await importWrangler();
42
58
  // Do not include `dispose` in Cloudflare context
43
59
  let {
44
60
  dispose,
45
61
  ...cloudflare
46
- } = await wrangler.getPlatformProxy(options);
62
+ } = await getPlatformProxy(restOptions);
47
63
  let context = {
48
64
  cloudflare
49
65
  };
@@ -0,0 +1 @@
1
+ export { cloudflareDevProxyVitePlugin as cloudflareDevProxy } from "./cloudflare-dev-proxy";
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
+ *
4
+ * Copyright (c) Remix Software Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ var cloudflareDevProxy = require('./cloudflare-dev-proxy.js');
16
+
17
+
18
+
19
+ exports.cloudflareDevProxy = cloudflareDevProxy.cloudflareDevProxyVitePlugin;
@@ -0,0 +1 @@
1
+ export declare function combineURLs(baseURL: string, relativeURL: string): string;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
+ *
4
+ * Copyright (c) Remix Software Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */
11
+ 'use strict';
12
+
13
+ Object.defineProperty(exports, '__esModule', { value: true });
14
+
15
+ // Borrowed from axios: https://github.com/axios/axios/blob/0e4f9fa29077ebee4499facea6be1492b42e8a26/lib/helpers/combineURLs.js#L11-L15
16
+ function combineURLs(baseURL, relativeURL) {
17
+ return relativeURL ? baseURL.replace(/\/+$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
18
+ }
19
+
20
+ exports.combineURLs = combineURLs;
@@ -1,20 +1,21 @@
1
1
  import type * as Vite from "vite";
2
- import { type RouteManifest, type ConfigRoute, type DefineRoutesFunction } from "./config/routes";
2
+ import type { ViteNodeRunner } from "vite-node/client";
3
+ import { type RouteManifest, type RouteManifestEntry } from "../config/routes";
3
4
  declare const excludedConfigPresetKeys: readonly ["presets"];
4
5
  type ExcludedConfigPresetKey = (typeof excludedConfigPresetKeys)[number];
5
- type ConfigPreset = Omit<VitePluginConfig, ExcludedConfigPresetKey>;
6
+ type ConfigPreset = Omit<ReactRouterConfig, ExcludedConfigPresetKey>;
6
7
  export type Preset = {
7
8
  name: string;
8
9
  reactRouterConfig?: (args: {
9
- reactRouterUserConfig: VitePluginConfig;
10
+ reactRouterUserConfig: ReactRouterConfig;
10
11
  }) => ConfigPreset | Promise<ConfigPreset>;
11
12
  reactRouterConfigResolved?: (args: {
12
- reactRouterConfig: ResolvedVitePluginConfig;
13
+ reactRouterConfig: ResolvedReactRouterConfig;
13
14
  }) => void | Promise<void>;
14
15
  };
15
16
  declare const branchRouteProperties: readonly ["id", "path", "file", "index"];
16
- type BranchRoute = Pick<ConfigRoute, (typeof branchRouteProperties)[number]>;
17
- export declare const configRouteToBranchRoute: (configRoute: ConfigRoute) => BranchRoute;
17
+ type BranchRoute = Pick<RouteManifestEntry, (typeof branchRouteProperties)[number]>;
18
+ export declare const configRouteToBranchRoute: (configRoute: RouteManifestEntry) => BranchRoute;
18
19
  export type ServerBundlesFunction = (args: {
19
20
  branch: BranchRoute[];
20
21
  }) => string | Promise<string>;
@@ -36,38 +37,23 @@ export type ServerBundlesBuildManifest = BaseBuildManifest & {
36
37
  };
37
38
  type ServerModuleFormat = "esm" | "cjs";
38
39
  interface FutureConfig {
39
- v3_fetcherPersist: boolean;
40
- v3_relativeSplatPath: boolean;
41
- v3_throwAbortReason: boolean;
42
40
  }
43
41
  export type BuildManifest = DefaultBuildManifest | ServerBundlesBuildManifest;
44
42
  type BuildEndHook = (args: {
45
43
  buildManifest: BuildManifest | undefined;
46
- reactRouterConfig: ResolvedVitePluginConfig;
44
+ reactRouterConfig: ResolvedReactRouterConfig;
47
45
  viteConfig: Vite.ResolvedConfig;
48
46
  }) => void | Promise<void>;
49
- export type VitePluginConfig = {
47
+ export type ReactRouterConfig = {
50
48
  /**
51
49
  * The path to the `app` directory, relative to `remix.config.js`. Defaults
52
50
  * to `"app"`.
53
51
  */
54
52
  appDirectory?: string;
55
- /**
56
- * A function for defining custom routes, in addition to those already defined
57
- * using the filesystem convention in `app/routes`. Both sets of routes will
58
- * be merged.
59
- */
60
- routes?: (defineRoutes: DefineRoutesFunction) => ReturnType<DefineRoutesFunction> | Promise<ReturnType<DefineRoutesFunction>>;
61
53
  /**
62
54
  * The output format of the server build. Defaults to "esm".
63
55
  */
64
56
  serverModuleFormat?: ServerModuleFormat;
65
- /**
66
- * A list of filenames or a glob patterns to match files in the `app/routes`
67
- * directory that Remix will ignore. Matching files will not be recognized as
68
- * routes.
69
- */
70
- ignoredRouteFiles?: string[];
71
57
  /**
72
58
  * Enabled future flags
73
59
  */
@@ -117,7 +103,7 @@ export type VitePluginConfig = {
117
103
  */
118
104
  ssr?: boolean;
119
105
  };
120
- export type ResolvedVitePluginConfig = Readonly<{
106
+ export type ResolvedReactRouterConfig = Readonly<{
121
107
  /**
122
108
  * The absolute path to the application source directory.
123
109
  */
@@ -171,11 +157,13 @@ export type ResolvedVitePluginConfig = Readonly<{
171
157
  ssr: boolean;
172
158
  }>;
173
159
  export declare function resolvePublicPath(viteUserConfig: Vite.UserConfig): string;
174
- export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUserConfig, viteUserConfig, viteCommand, }: {
160
+ export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUserConfig, routeConfigChanged, viteUserConfig, viteCommand, viteNodeRunner, }: {
175
161
  rootDirectory: string;
176
- reactRouterUserConfig: VitePluginConfig;
162
+ reactRouterUserConfig: ReactRouterConfig;
163
+ routeConfigChanged: boolean;
177
164
  viteUserConfig: Vite.UserConfig;
178
165
  viteCommand: Vite.ConfigEnv["command"];
166
+ viteNodeRunner: ViteNodeRunner;
179
167
  }): Promise<Readonly<{
180
168
  /**
181
169
  * The absolute path to the application source directory.
@@ -231,7 +219,7 @@ export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUse
231
219
  }>>;
232
220
  export declare function resolveEntryFiles({ rootDirectory, reactRouterConfig, }: {
233
221
  rootDirectory: string;
234
- reactRouterConfig: ResolvedVitePluginConfig;
222
+ reactRouterConfig: ResolvedReactRouterConfig;
235
223
  }): Promise<{
236
224
  entryClientFilePath: string;
237
225
  entryServerFilePath: string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-49eef6a01
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -19,9 +19,9 @@ var colors = require('picocolors');
19
19
  var pick = require('lodash/pick');
20
20
  var omit = require('lodash/omit');
21
21
  var PackageJson = require('@npmcli/package-json');
22
- var routes = require('./config/routes.js');
23
- var flatRoutes = require('./config/flatRoutes.js');
24
- var detectPackageManager = require('./cli/detectPackageManager.js');
22
+ var routes = require('../config/routes.js');
23
+ var detectPackageManager = require('../cli/detectPackageManager.js');
24
+ var importViteEsmSync = require('./import-vite-esm-sync.js');
25
25
 
26
26
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
27
27
 
@@ -54,21 +54,8 @@ let mergeReactRouterConfig = (...configs) => {
54
54
  ...configB.future
55
55
  }
56
56
  } : {}),
57
- ...(mergeRequired("ignoredRouteFiles") ? {
58
- ignoredRouteFiles: Array.from(new Set([...(configA.ignoredRouteFiles ?? []), ...(configB.ignoredRouteFiles ?? [])]))
59
- } : {}),
60
57
  ...(mergeRequired("presets") ? {
61
58
  presets: [...(configA.presets ?? []), ...(configB.presets ?? [])]
62
- } : {}),
63
- ...(mergeRequired("routes") ? {
64
- routes: async (...args) => {
65
- var _configA$routes, _configB$routes;
66
- let [routesA, routesB] = await Promise.all([(_configA$routes = configA.routes) === null || _configA$routes === void 0 ? void 0 : _configA$routes.call(configA, ...args), (_configB$routes = configB.routes) === null || _configB$routes === void 0 ? void 0 : _configB$routes.call(configB, ...args)]);
67
- return {
68
- ...routesA,
69
- ...routesB
70
- };
71
- }
72
59
  } : {})
73
60
  };
74
61
  };
@@ -89,13 +76,21 @@ let deepFreeze = o => {
89
76
  function resolvePublicPath(viteUserConfig) {
90
77
  return viteUserConfig.base ?? "/";
91
78
  }
79
+ let isFirstLoad = true;
80
+ let lastValidRoutes = {};
92
81
  async function resolveReactRouterConfig({
93
82
  rootDirectory,
94
83
  reactRouterUserConfig,
84
+ routeConfigChanged,
95
85
  viteUserConfig,
96
- viteCommand
86
+ viteCommand,
87
+ viteNodeRunner
97
88
  }) {
98
89
  var _viteUserConfig$serve;
90
+ let vite = importViteEsmSync.importViteEsmSync();
91
+ let logger = vite.createLogger(viteUserConfig.logLevel, {
92
+ prefix: "[react-router]"
93
+ });
99
94
  let presets = (await Promise.all((reactRouterUserConfig.presets ?? []).map(async preset => {
100
95
  if (!preset.name) {
101
96
  throw new Error("React Router presets must have a `name` property defined.");
@@ -122,9 +117,6 @@ async function resolveReactRouterConfig({
122
117
  basename,
123
118
  buildDirectory: userBuildDirectory,
124
119
  buildEnd,
125
- future: userFuture,
126
- ignoredRouteFiles,
127
- routes: userRoutesFunction,
128
120
  prerender: prerenderConfig,
129
121
  serverBuildFile,
130
122
  serverBundles,
@@ -147,18 +139,22 @@ async function resolveReactRouterConfig({
147
139
  } else if (typeof prerenderConfig === "function") {
148
140
  prerender = await prerenderConfig();
149
141
  } else {
150
- throw new Error("The `prerender` config must be an array of string paths, or a function " + "returning an array of string paths");
142
+ logger.error(colors__default["default"].red("The `prerender` config must be an array of string paths, or a function " + "returning an array of string paths"));
143
+ process.exit(1);
151
144
  }
152
145
  }
153
146
  let appDirectory = path__default["default"].resolve(rootDirectory, userAppDirectory || "app");
154
147
  let buildDirectory = path__default["default"].resolve(rootDirectory, userBuildDirectory);
155
148
  let publicPath = resolvePublicPath(viteUserConfig);
156
149
  if (basename !== "/" && viteCommand === "serve" && !((_viteUserConfig$serve = viteUserConfig.server) !== null && _viteUserConfig$serve !== void 0 && _viteUserConfig$serve.middlewareMode) && !basename.startsWith(publicPath)) {
157
- throw new Error("When using the React Router `basename` and the Vite `base` config, " + "the `basename` config must begin with `base` for the default " + "Vite dev server.");
150
+ logger.error(colors__default["default"].red("When using the React Router `basename` and the Vite `base` config, " + "the `basename` config must begin with `base` for the default " + "Vite dev server."));
151
+ process.exit(1);
158
152
  }
159
153
  let rootRouteFile = findEntry(appDirectory, "root");
160
154
  if (!rootRouteFile) {
161
- throw new Error(`Missing "root" route file in ${appDirectory}`);
155
+ let rootRouteDisplayPath = path__default["default"].relative(rootDirectory, path__default["default"].join(appDirectory, "root.tsx"));
156
+ logger.error(colors__default["default"].red(`Could not find a root route module in the app directory as "${rootRouteDisplayPath}"`));
157
+ process.exit(1);
162
158
  }
163
159
  let routes$1 = {
164
160
  root: {
@@ -167,29 +163,49 @@ async function resolveReactRouterConfig({
167
163
  file: rootRouteFile
168
164
  }
169
165
  };
170
- if (fse__default["default"].existsSync(path__default["default"].resolve(appDirectory, "routes"))) {
171
- let fileRoutes = flatRoutes.flatRoutes(appDirectory, ignoredRouteFiles);
172
- for (let route of Object.values(fileRoutes)) {
173
- routes$1[route.id] = {
174
- ...route,
175
- parentId: route.parentId || "root"
176
- };
166
+ let routeConfigFile = findEntry(appDirectory, "routes");
167
+ class FriendlyError extends Error {}
168
+ try {
169
+ if (!routeConfigFile) {
170
+ let routeConfigDisplayPath = vite.normalizePath(path__default["default"].relative(rootDirectory, path__default["default"].join(appDirectory, "routes.ts")));
171
+ throw new FriendlyError(`Route config file not found at "${routeConfigDisplayPath}".`);
177
172
  }
178
- }
179
- if (userRoutesFunction) {
180
- let userRoutes = await userRoutesFunction(routes.defineRoutes);
181
- for (let route of Object.values(userRoutes)) {
182
- routes$1[route.id] = {
183
- ...route,
184
- parentId: route.parentId || "root"
185
- };
173
+ routes.setAppDirectory(appDirectory);
174
+ let routeConfigExport = (await viteNodeRunner.executeFile(path__default["default"].join(appDirectory, routeConfigFile))).routes;
175
+ let routeConfig = await routeConfigExport;
176
+ let result = routes.validateRouteConfig({
177
+ routeConfigFile,
178
+ routeConfig
179
+ });
180
+ if (!result.valid) {
181
+ throw new FriendlyError(result.message);
186
182
  }
183
+ routes$1 = {
184
+ ...routes$1,
185
+ ...routes.configRoutesToRouteManifest(routeConfig)
186
+ };
187
+ lastValidRoutes = routes$1;
188
+ if (routeConfigChanged) {
189
+ logger.info(colors__default["default"].green("Route config changed."), {
190
+ clear: true,
191
+ timestamp: true
192
+ });
193
+ }
194
+ } catch (error) {
195
+ var _error$loc, _error$loc2, _error$frame$trim, _error$frame;
196
+ logger.error(error instanceof FriendlyError ? colors__default["default"].red(error.message) : [colors__default["default"].red(`Route config in "${routeConfigFile}" is invalid.`), "", (_error$loc = error.loc) !== null && _error$loc !== void 0 && _error$loc.file && (_error$loc2 = error.loc) !== null && _error$loc2 !== void 0 && _error$loc2.column && error.frame ? [path__default["default"].relative(appDirectory, error.loc.file) + ":" + error.loc.line + ":" + error.loc.column, (_error$frame$trim = (_error$frame = error.frame).trim) === null || _error$frame$trim === void 0 ? void 0 : _error$frame$trim.call(_error$frame)] : error.stack].flat().join("\n") + "\n", {
197
+ error,
198
+ clear: !isFirstLoad,
199
+ timestamp: !isFirstLoad
200
+ });
201
+ // Bail if this is the first time loading config, otherwise keep the dev server running
202
+ if (isFirstLoad) {
203
+ process.exit(1);
204
+ }
205
+ // Keep dev server running with the last valid routes to allow for correction
206
+ routes$1 = lastValidRoutes;
187
207
  }
188
- let future = {
189
- v3_fetcherPersist: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_fetcherPersist) === true,
190
- v3_relativeSplatPath: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_relativeSplatPath) === true,
191
- v3_throwAbortReason: (userFuture === null || userFuture === void 0 ? void 0 : userFuture.v3_throwAbortReason) === true
192
- };
208
+ let future = {};
193
209
  let reactRouterConfig = deepFreeze({
194
210
  appDirectory,
195
211
  basename,
@@ -209,6 +225,7 @@ async function resolveReactRouterConfig({
209
225
  reactRouterConfig
210
226
  }));
211
227
  }
228
+ isFirstLoad = false;
212
229
  return reactRouterConfig;
213
230
  }
214
231
  async function resolveEntryFiles({
@@ -218,7 +235,7 @@ async function resolveEntryFiles({
218
235
  let {
219
236
  appDirectory
220
237
  } = reactRouterConfig;
221
- let defaultsDirectory = path__default["default"].resolve(__dirname, "config", "defaults");
238
+ let defaultsDirectory = path__default["default"].resolve(__dirname, "..", "config", "defaults");
222
239
  let userEntryClientFile = findEntry(appDirectory, "entry.client");
223
240
  let userEntryServerFile = findEntry(appDirectory, "entry.server");
224
241
  let entryServerFile;
package/dist/vite/dev.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-49eef6a01
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-49eef6a01
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-49eef6a01
2
+ * @react-router/dev v0.0.0-experimental-a26b992a1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,7 +1,7 @@
1
1
  import type * as Vite from "vite";
2
2
  import { type RouteManifest } from "../config/routes";
3
3
  import type { Manifest as ReactRouterManifest } from "../manifest";
4
- import { type VitePluginConfig, type ResolvedVitePluginConfig } from "../config";
4
+ import { type ReactRouterConfig, type ResolvedReactRouterConfig } from "./config";
5
5
  export declare function resolveViteConfig({ configFile, mode, root, }: {
6
6
  configFile?: string;
7
7
  mode?: string;
@@ -61,12 +61,15 @@ export type ReactRouterPluginContext = ReactRouterPluginSsrBuildContext & {
61
61
  entryClientFilePath: string;
62
62
  entryServerFilePath: string;
63
63
  publicPath: string;
64
- reactRouterConfig: ResolvedVitePluginConfig;
64
+ reactRouterConfig: ResolvedReactRouterConfig;
65
65
  viteManifestEnabled: boolean;
66
66
  };
67
67
  export declare let getServerBuildDirectory: (ctx: ReactRouterPluginContext) => string;
68
68
  type MaybePromise<T> = T | Promise<T>;
69
69
  export declare let setReactRouterDevLoadContext: (loadContext: (request: Request) => MaybePromise<Record<string, unknown>>) => void;
70
- export type ReactRouterVitePlugin = (config?: VitePluginConfig) => Vite.Plugin[];
70
+ type ReactRouterVitePlugin = (config?: ReactRouterConfig) => Vite.Plugin[];
71
+ /**
72
+ * React Router [Vite plugin.](https://vitejs.dev/guide/using-plugins.html)
73
+ */
71
74
  export declare const reactRouterVitePlugin: ReactRouterVitePlugin;
72
75
  export {};