@react-router/dev 0.0.0-experimental-9c1812606 → 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.
- package/bin.js +1 -1
- package/dist/cli/commands.js +1 -1
- package/dist/cli/detectPackageManager.js +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +7 -6
- package/dist/cli/run.js +1 -1
- package/dist/cli/useJavascript.js +1 -1
- package/dist/colors.js +1 -1
- package/dist/config/defaults/entry.client.tsx +1 -1
- package/dist/config/format.js +1 -1
- package/dist/config/routes.d.ts +77 -50
- package/dist/config/routes.js +175 -43
- package/dist/invariant.js +1 -1
- package/dist/routes.d.ts +2 -0
- package/dist/routes.js +23 -0
- package/dist/vite/babel.d.ts +10 -10
- package/dist/vite/babel.js +1 -1
- package/dist/vite/build.js +2 -2
- package/dist/vite/cloudflare-dev-proxy.d.ts +7 -1
- package/dist/vite/cloudflare-dev-proxy.js +13 -6
- package/dist/vite/cloudflare.d.ts +1 -0
- package/dist/vite/cloudflare.js +19 -0
- package/dist/vite/combine-urls.js +1 -1
- package/dist/{config.d.ts → vite/config.d.ts} +15 -24
- package/dist/{config.js → vite/config.js} +61 -39
- package/dist/vite/dev.js +1 -1
- package/dist/vite/import-vite-esm-sync.js +1 -1
- package/dist/vite/node-adapter.js +1 -1
- package/dist/vite/plugin.d.ts +6 -3
- package/dist/vite/plugin.js +125 -89
- package/dist/vite/profiler.js +1 -1
- package/dist/vite/remove-exports.d.ts +2 -2
- package/dist/vite/remove-exports.js +113 -243
- package/dist/vite/resolve-file-url.js +1 -1
- package/dist/vite/static/refresh-utils.cjs +7 -26
- package/dist/vite/styles.d.ts +3 -2
- package/dist/vite/styles.js +23 -2
- package/dist/vite/vmod.js +1 -1
- package/dist/vite/with-props.d.ts +4 -0
- package/dist/vite/with-props.js +151 -0
- package/dist/vite.d.ts +2 -0
- package/dist/{cli.js → vite.js} +7 -8
- package/package.json +21 -12
- package/dist/cli.d.ts +0 -1
- package/dist/config/findConfig.d.ts +0 -1
- package/dist/config/findConfig.js +0 -32
- package/dist/config/flatRoutes.d.ts +0 -14
- package/dist/config/flatRoutes.js +0 -418
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -23
- package/dist/vite/define-route.d.ts +0 -5
- package/dist/vite/define-route.js +0 -207
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-a26b992a1
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -24,10 +24,17 @@ function importWrangler() {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
const PLUGIN_NAME = "react-router-cloudflare-vite-dev-proxy";
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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;
|
|
31
38
|
return {
|
|
32
39
|
name: PLUGIN_NAME,
|
|
33
40
|
config: () => ({
|
|
@@ -52,7 +59,7 @@ const cloudflareDevProxyVitePlugin = ({
|
|
|
52
59
|
let {
|
|
53
60
|
dispose,
|
|
54
61
|
...cloudflare
|
|
55
|
-
} = await getPlatformProxy(
|
|
62
|
+
} = await getPlatformProxy(restOptions);
|
|
56
63
|
let context = {
|
|
57
64
|
cloudflare
|
|
58
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;
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import type * as Vite from "vite";
|
|
2
|
-
import
|
|
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<
|
|
6
|
+
type ConfigPreset = Omit<ReactRouterConfig, ExcludedConfigPresetKey>;
|
|
6
7
|
export type Preset = {
|
|
7
8
|
name: string;
|
|
8
9
|
reactRouterConfig?: (args: {
|
|
9
|
-
reactRouterUserConfig:
|
|
10
|
+
reactRouterUserConfig: ReactRouterConfig;
|
|
10
11
|
}) => ConfigPreset | Promise<ConfigPreset>;
|
|
11
12
|
reactRouterConfigResolved?: (args: {
|
|
12
|
-
reactRouterConfig:
|
|
13
|
+
reactRouterConfig: ResolvedReactRouterConfig;
|
|
13
14
|
}) => void | Promise<void>;
|
|
14
15
|
};
|
|
15
16
|
declare const branchRouteProperties: readonly ["id", "path", "file", "index"];
|
|
16
|
-
type BranchRoute = Pick<
|
|
17
|
-
export declare const configRouteToBranchRoute: (configRoute:
|
|
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>;
|
|
@@ -40,31 +41,19 @@ interface FutureConfig {
|
|
|
40
41
|
export type BuildManifest = DefaultBuildManifest | ServerBundlesBuildManifest;
|
|
41
42
|
type BuildEndHook = (args: {
|
|
42
43
|
buildManifest: BuildManifest | undefined;
|
|
43
|
-
reactRouterConfig:
|
|
44
|
+
reactRouterConfig: ResolvedReactRouterConfig;
|
|
44
45
|
viteConfig: Vite.ResolvedConfig;
|
|
45
46
|
}) => void | Promise<void>;
|
|
46
|
-
export type
|
|
47
|
+
export type ReactRouterConfig = {
|
|
47
48
|
/**
|
|
48
49
|
* The path to the `app` directory, relative to `remix.config.js`. Defaults
|
|
49
50
|
* to `"app"`.
|
|
50
51
|
*/
|
|
51
52
|
appDirectory?: string;
|
|
52
|
-
/**
|
|
53
|
-
* A function for defining custom routes, in addition to those already defined
|
|
54
|
-
* using the filesystem convention in `app/routes`. Both sets of routes will
|
|
55
|
-
* be merged.
|
|
56
|
-
*/
|
|
57
|
-
routes?: (defineRoutes: DefineRoutesFunction) => ReturnType<DefineRoutesFunction> | Promise<ReturnType<DefineRoutesFunction>>;
|
|
58
53
|
/**
|
|
59
54
|
* The output format of the server build. Defaults to "esm".
|
|
60
55
|
*/
|
|
61
56
|
serverModuleFormat?: ServerModuleFormat;
|
|
62
|
-
/**
|
|
63
|
-
* A list of filenames or a glob patterns to match files in the `app/routes`
|
|
64
|
-
* directory that Remix will ignore. Matching files will not be recognized as
|
|
65
|
-
* routes.
|
|
66
|
-
*/
|
|
67
|
-
ignoredRouteFiles?: string[];
|
|
68
57
|
/**
|
|
69
58
|
* Enabled future flags
|
|
70
59
|
*/
|
|
@@ -114,7 +103,7 @@ export type VitePluginConfig = {
|
|
|
114
103
|
*/
|
|
115
104
|
ssr?: boolean;
|
|
116
105
|
};
|
|
117
|
-
export type
|
|
106
|
+
export type ResolvedReactRouterConfig = Readonly<{
|
|
118
107
|
/**
|
|
119
108
|
* The absolute path to the application source directory.
|
|
120
109
|
*/
|
|
@@ -168,11 +157,13 @@ export type ResolvedVitePluginConfig = Readonly<{
|
|
|
168
157
|
ssr: boolean;
|
|
169
158
|
}>;
|
|
170
159
|
export declare function resolvePublicPath(viteUserConfig: Vite.UserConfig): string;
|
|
171
|
-
export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUserConfig, viteUserConfig, viteCommand, }: {
|
|
160
|
+
export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUserConfig, routeConfigChanged, viteUserConfig, viteCommand, viteNodeRunner, }: {
|
|
172
161
|
rootDirectory: string;
|
|
173
|
-
reactRouterUserConfig:
|
|
162
|
+
reactRouterUserConfig: ReactRouterConfig;
|
|
163
|
+
routeConfigChanged: boolean;
|
|
174
164
|
viteUserConfig: Vite.UserConfig;
|
|
175
165
|
viteCommand: Vite.ConfigEnv["command"];
|
|
166
|
+
viteNodeRunner: ViteNodeRunner;
|
|
176
167
|
}): Promise<Readonly<{
|
|
177
168
|
/**
|
|
178
169
|
* The absolute path to the application source directory.
|
|
@@ -228,7 +219,7 @@ export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUse
|
|
|
228
219
|
}>>;
|
|
229
220
|
export declare function resolveEntryFiles({ rootDirectory, reactRouterConfig, }: {
|
|
230
221
|
rootDirectory: string;
|
|
231
|
-
reactRouterConfig:
|
|
222
|
+
reactRouterConfig: ResolvedReactRouterConfig;
|
|
232
223
|
}): Promise<{
|
|
233
224
|
entryClientFilePath: string;
|
|
234
225
|
entryServerFilePath: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
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('
|
|
23
|
-
var
|
|
24
|
-
var
|
|
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,8 +117,6 @@ async function resolveReactRouterConfig({
|
|
|
122
117
|
basename,
|
|
123
118
|
buildDirectory: userBuildDirectory,
|
|
124
119
|
buildEnd,
|
|
125
|
-
ignoredRouteFiles,
|
|
126
|
-
routes: userRoutesFunction,
|
|
127
120
|
prerender: prerenderConfig,
|
|
128
121
|
serverBuildFile,
|
|
129
122
|
serverBundles,
|
|
@@ -146,18 +139,22 @@ async function resolveReactRouterConfig({
|
|
|
146
139
|
} else if (typeof prerenderConfig === "function") {
|
|
147
140
|
prerender = await prerenderConfig();
|
|
148
141
|
} else {
|
|
149
|
-
|
|
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);
|
|
150
144
|
}
|
|
151
145
|
}
|
|
152
146
|
let appDirectory = path__default["default"].resolve(rootDirectory, userAppDirectory || "app");
|
|
153
147
|
let buildDirectory = path__default["default"].resolve(rootDirectory, userBuildDirectory);
|
|
154
148
|
let publicPath = resolvePublicPath(viteUserConfig);
|
|
155
149
|
if (basename !== "/" && viteCommand === "serve" && !((_viteUserConfig$serve = viteUserConfig.server) !== null && _viteUserConfig$serve !== void 0 && _viteUserConfig$serve.middlewareMode) && !basename.startsWith(publicPath)) {
|
|
156
|
-
|
|
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);
|
|
157
152
|
}
|
|
158
153
|
let rootRouteFile = findEntry(appDirectory, "root");
|
|
159
154
|
if (!rootRouteFile) {
|
|
160
|
-
|
|
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);
|
|
161
158
|
}
|
|
162
159
|
let routes$1 = {
|
|
163
160
|
root: {
|
|
@@ -166,23 +163,47 @@ async function resolveReactRouterConfig({
|
|
|
166
163
|
file: rootRouteFile
|
|
167
164
|
}
|
|
168
165
|
};
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
};
|
|
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}".`);
|
|
176
172
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
let
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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);
|
|
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);
|
|
185
204
|
}
|
|
205
|
+
// Keep dev server running with the last valid routes to allow for correction
|
|
206
|
+
routes$1 = lastValidRoutes;
|
|
186
207
|
}
|
|
187
208
|
let future = {};
|
|
188
209
|
let reactRouterConfig = deepFreeze({
|
|
@@ -204,6 +225,7 @@ async function resolveReactRouterConfig({
|
|
|
204
225
|
reactRouterConfig
|
|
205
226
|
}));
|
|
206
227
|
}
|
|
228
|
+
isFirstLoad = false;
|
|
207
229
|
return reactRouterConfig;
|
|
208
230
|
}
|
|
209
231
|
async function resolveEntryFiles({
|
|
@@ -213,7 +235,7 @@ async function resolveEntryFiles({
|
|
|
213
235
|
let {
|
|
214
236
|
appDirectory
|
|
215
237
|
} = reactRouterConfig;
|
|
216
|
-
let defaultsDirectory = path__default["default"].resolve(__dirname, "config", "defaults");
|
|
238
|
+
let defaultsDirectory = path__default["default"].resolve(__dirname, "..", "config", "defaults");
|
|
217
239
|
let userEntryClientFile = findEntry(appDirectory, "entry.client");
|
|
218
240
|
let userEntryServerFile = findEntry(appDirectory, "entry.server");
|
|
219
241
|
let entryServerFile;
|
package/dist/vite/dev.js
CHANGED
package/dist/vite/plugin.d.ts
CHANGED
|
@@ -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
|
|
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:
|
|
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
|
-
type ReactRouterVitePlugin = (config?:
|
|
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 {};
|