@cedarjs/vite 0.0.4
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/LICENSE +21 -0
- package/bins/rw-vite-build.mjs +61 -0
- package/bins/rw-vite-dev.mjs +57 -0
- package/bins/vite.mjs +12 -0
- package/dist/build/build.d.ts +21 -0
- package/dist/build/build.d.ts.map +1 -0
- package/dist/build/build.js +78 -0
- package/dist/buildFeServer.d.ts +6 -0
- package/dist/buildFeServer.d.ts.map +1 -0
- package/dist/buildFeServer.js +39 -0
- package/dist/buildRouteHooks.d.ts +3 -0
- package/dist/buildRouteHooks.d.ts.map +1 -0
- package/dist/buildRouteHooks.js +45 -0
- package/dist/buildRouteManifest.d.ts +6 -0
- package/dist/buildRouteManifest.d.ts.map +1 -0
- package/dist/buildRouteManifest.js +58 -0
- package/dist/buildRscClientAndServer.d.ts +4 -0
- package/dist/buildRscClientAndServer.d.ts.map +1 -0
- package/dist/buildRscClientAndServer.js +30 -0
- package/dist/bundled/react-server-dom-webpack.server.d.ts +2 -0
- package/dist/bundled/react-server-dom-webpack.server.d.ts.map +1 -0
- package/dist/bundled/react-server-dom-webpack.server.js +33529 -0
- package/dist/cjs/ClientRouter.d.ts +1 -0
- package/dist/cjs/build/build.d.ts +1 -0
- package/dist/cjs/build/build.js +116 -0
- package/dist/cjs/buildFeServer.d.ts +1 -0
- package/dist/cjs/buildFeServer.js +63 -0
- package/dist/cjs/buildRouteHooks.js +66 -0
- package/dist/cjs/buildRouteManifest.js +92 -0
- package/dist/cjs/buildRscClientAndServer.js +54 -0
- package/dist/cjs/client.d.ts +1 -0
- package/dist/cjs/clientSsr.d.ts +1 -0
- package/dist/cjs/devFeServer.js +153 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +184 -0
- package/dist/cjs/lib/StatusError.js +36 -0
- package/dist/cjs/lib/entries.js +53 -0
- package/dist/cjs/lib/envVarDefinitions.js +87 -0
- package/dist/cjs/lib/getMergedConfig.js +187 -0
- package/dist/cjs/lib/onWarn.js +36 -0
- package/dist/cjs/lib/registerFwGlobalsAndShims.js +117 -0
- package/dist/cjs/middleware/index.js +22 -0
- package/dist/cjs/middleware/invokeMiddleware.js +52 -0
- package/dist/cjs/middleware/register.js +106 -0
- package/dist/cjs/middleware/types.js +16 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/plugins/vite-plugin-jsx-loader.js +42 -0
- package/dist/cjs/plugins/vite-plugin-remove-from-bundle.js +56 -0
- package/dist/cjs/plugins/vite-plugin-rsc-analyze.js +104 -0
- package/dist/cjs/plugins/vite-plugin-rsc-reload.js +75 -0
- package/dist/cjs/plugins/vite-plugin-rsc-routes-auto-loader.js +159 -0
- package/dist/cjs/plugins/vite-plugin-rsc-routes-imports.js +125 -0
- package/dist/cjs/plugins/vite-plugin-rsc-ssr-router-import.js +75 -0
- package/dist/cjs/plugins/vite-plugin-rsc-transform-client.js +229 -0
- package/dist/cjs/plugins/vite-plugin-rsc-transform-server.js +398 -0
- package/dist/cjs/plugins/vite-plugin-swap-apollo-provider.js +41 -0
- package/dist/cjs/rsc/rscBuildAnalyze.js +116 -0
- package/dist/cjs/rsc/rscBuildClient.js +91 -0
- package/dist/cjs/rsc/rscBuildCopyCssAssets.js +56 -0
- package/dist/cjs/rsc/rscBuildEntriesFile.js +115 -0
- package/dist/cjs/rsc/rscBuildForServer.js +157 -0
- package/dist/cjs/rsc/rscBuildForSsr.js +172 -0
- package/dist/cjs/rsc/rscBuildRwEnvVars.js +56 -0
- package/dist/cjs/rsc/rscRenderer.js +165 -0
- package/dist/cjs/rsc/rscRequestHandler.js +162 -0
- package/dist/cjs/rsc/rscStudioHandlers.js +154 -0
- package/dist/cjs/runFeServer.js +166 -0
- package/dist/cjs/streaming/buildForStreamingServer.js +65 -0
- package/dist/cjs/streaming/collectCss.js +52 -0
- package/dist/cjs/streaming/createReactStreamingHandler.js +173 -0
- package/dist/cjs/streaming/streamHelpers.js +228 -0
- package/dist/cjs/streaming/transforms/bufferedTransform.js +61 -0
- package/dist/cjs/streaming/transforms/cancelTimeoutTransform.js +34 -0
- package/dist/cjs/streaming/transforms/encode-decode.js +36 -0
- package/dist/cjs/streaming/transforms/serverInjectionTransform.js +84 -0
- package/dist/cjs/streaming/triggerRouteHooks.js +96 -0
- package/dist/cjs/types.js +16 -0
- package/dist/cjs/utils.js +91 -0
- package/dist/devFeServer.d.ts +2 -0
- package/dist/devFeServer.d.ts.map +1 -0
- package/dist/devFeServer.js +134 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +154 -0
- package/dist/lib/StatusError.d.ts +8 -0
- package/dist/lib/StatusError.d.ts.map +1 -0
- package/dist/lib/StatusError.js +11 -0
- package/dist/lib/entries.d.ts +3 -0
- package/dist/lib/entries.d.ts.map +1 -0
- package/dist/lib/entries.js +32 -0
- package/dist/lib/envVarDefinitions.d.ts +14 -0
- package/dist/lib/envVarDefinitions.d.ts.map +1 -0
- package/dist/lib/envVarDefinitions.js +53 -0
- package/dist/lib/getMergedConfig.d.ts +11 -0
- package/dist/lib/getMergedConfig.d.ts.map +1 -0
- package/dist/lib/getMergedConfig.js +153 -0
- package/dist/lib/onWarn.d.ts +3 -0
- package/dist/lib/onWarn.d.ts.map +1 -0
- package/dist/lib/onWarn.js +12 -0
- package/dist/lib/registerFwGlobalsAndShims.d.ts +12 -0
- package/dist/lib/registerFwGlobalsAndShims.d.ts.map +1 -0
- package/dist/lib/registerFwGlobalsAndShims.js +83 -0
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +1 -0
- package/dist/middleware/invokeMiddleware.d.ts +14 -0
- package/dist/middleware/invokeMiddleware.d.ts.map +1 -0
- package/dist/middleware/invokeMiddleware.js +32 -0
- package/dist/middleware/register.d.ts +23 -0
- package/dist/middleware/register.d.ts.map +1 -0
- package/dist/middleware/register.js +69 -0
- package/dist/middleware/types.d.ts +3 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +0 -0
- package/dist/package.json +1 -0
- package/dist/plugins/vite-plugin-jsx-loader.d.ts +8 -0
- package/dist/plugins/vite-plugin-jsx-loader.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-jsx-loader.js +18 -0
- package/dist/plugins/vite-plugin-remove-from-bundle.d.ts +17 -0
- package/dist/plugins/vite-plugin-remove-from-bundle.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-remove-from-bundle.js +31 -0
- package/dist/plugins/vite-plugin-rsc-analyze.d.ts +3 -0
- package/dist/plugins/vite-plugin-rsc-analyze.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-analyze.js +70 -0
- package/dist/plugins/vite-plugin-rsc-reload.d.ts +3 -0
- package/dist/plugins/vite-plugin-rsc-reload.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-reload.js +41 -0
- package/dist/plugins/vite-plugin-rsc-routes-auto-loader.d.ts +3 -0
- package/dist/plugins/vite-plugin-rsc-routes-auto-loader.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-routes-auto-loader.js +130 -0
- package/dist/plugins/vite-plugin-rsc-routes-imports.d.ts +3 -0
- package/dist/plugins/vite-plugin-rsc-routes-imports.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-routes-imports.js +96 -0
- package/dist/plugins/vite-plugin-rsc-ssr-router-import.d.ts +7 -0
- package/dist/plugins/vite-plugin-rsc-ssr-router-import.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-ssr-router-import.js +41 -0
- package/dist/plugins/vite-plugin-rsc-transform-client.d.ts +3 -0
- package/dist/plugins/vite-plugin-rsc-transform-client.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-transform-client.js +195 -0
- package/dist/plugins/vite-plugin-rsc-transform-server.d.ts +3 -0
- package/dist/plugins/vite-plugin-rsc-transform-server.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-rsc-transform-server.js +364 -0
- package/dist/plugins/vite-plugin-swap-apollo-provider.d.ts +12 -0
- package/dist/plugins/vite-plugin-swap-apollo-provider.d.ts.map +1 -0
- package/dist/plugins/vite-plugin-swap-apollo-provider.js +17 -0
- package/dist/rsc/rscBuildAnalyze.d.ts +16 -0
- package/dist/rsc/rscBuildAnalyze.d.ts.map +1 -0
- package/dist/rsc/rscBuildAnalyze.js +92 -0
- package/dist/rsc/rscBuildClient.d.ts +7 -0
- package/dist/rsc/rscBuildClient.d.ts.map +1 -0
- package/dist/rsc/rscBuildClient.js +67 -0
- package/dist/rsc/rscBuildCopyCssAssets.d.ts +7 -0
- package/dist/rsc/rscBuildCopyCssAssets.d.ts.map +1 -0
- package/dist/rsc/rscBuildCopyCssAssets.js +22 -0
- package/dist/rsc/rscBuildEntriesFile.d.ts +10 -0
- package/dist/rsc/rscBuildEntriesFile.d.ts.map +1 -0
- package/dist/rsc/rscBuildEntriesFile.js +81 -0
- package/dist/rsc/rscBuildForServer.d.ts +7 -0
- package/dist/rsc/rscBuildForServer.d.ts.map +1 -0
- package/dist/rsc/rscBuildForServer.js +133 -0
- package/dist/rsc/rscBuildForSsr.d.ts +9 -0
- package/dist/rsc/rscBuildForSsr.d.ts.map +1 -0
- package/dist/rsc/rscBuildForSsr.js +138 -0
- package/dist/rsc/rscBuildRwEnvVars.d.ts +10 -0
- package/dist/rsc/rscBuildRwEnvVars.d.ts.map +1 -0
- package/dist/rsc/rscBuildRwEnvVars.js +22 -0
- package/dist/rsc/rscRenderer.d.ts +9 -0
- package/dist/rsc/rscRenderer.d.ts.map +1 -0
- package/dist/rsc/rscRenderer.js +130 -0
- package/dist/rsc/rscRequestHandler.d.ts +10 -0
- package/dist/rsc/rscRequestHandler.d.ts.map +1 -0
- package/dist/rsc/rscRequestHandler.js +131 -0
- package/dist/rsc/rscStudioHandlers.d.ts +10 -0
- package/dist/rsc/rscStudioHandlers.d.ts.map +1 -0
- package/dist/rsc/rscStudioHandlers.js +120 -0
- package/dist/runFeServer.d.ts +2 -0
- package/dist/runFeServer.d.ts.map +1 -0
- package/dist/runFeServer.js +132 -0
- package/dist/streaming/buildForStreamingServer.d.ts +4 -0
- package/dist/streaming/buildForStreamingServer.d.ts.map +1 -0
- package/dist/streaming/buildForStreamingServer.js +41 -0
- package/dist/streaming/collectCss.d.ts +7 -0
- package/dist/streaming/collectCss.d.ts.map +1 -0
- package/dist/streaming/collectCss.js +27 -0
- package/dist/streaming/createReactStreamingHandler.d.ts +12 -0
- package/dist/streaming/createReactStreamingHandler.d.ts.map +1 -0
- package/dist/streaming/createReactStreamingHandler.js +139 -0
- package/dist/streaming/streamHelpers.d.ts +23 -0
- package/dist/streaming/streamHelpers.d.ts.map +1 -0
- package/dist/streaming/streamHelpers.js +192 -0
- package/dist/streaming/transforms/bufferedTransform.d.ts +2 -0
- package/dist/streaming/transforms/bufferedTransform.d.ts.map +1 -0
- package/dist/streaming/transforms/bufferedTransform.js +37 -0
- package/dist/streaming/transforms/cancelTimeoutTransform.d.ts +2 -0
- package/dist/streaming/transforms/cancelTimeoutTransform.d.ts.map +1 -0
- package/dist/streaming/transforms/cancelTimeoutTransform.js +10 -0
- package/dist/streaming/transforms/encode-decode.d.ts +3 -0
- package/dist/streaming/transforms/encode-decode.d.ts.map +1 -0
- package/dist/streaming/transforms/encode-decode.js +11 -0
- package/dist/streaming/transforms/serverInjectionTransform.d.ts +16 -0
- package/dist/streaming/transforms/serverInjectionTransform.d.ts.map +1 -0
- package/dist/streaming/transforms/serverInjectionTransform.js +60 -0
- package/dist/streaming/triggerRouteHooks.d.ts +26 -0
- package/dist/streaming/triggerRouteHooks.d.ts.map +1 -0
- package/dist/streaming/triggerRouteHooks.js +71 -0
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +62 -0
- package/inject/reactRefresh.js +7 -0
- package/package.json +116 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getConfig, getPaths } from "@cedarjs/project-config";
|
|
3
|
+
function getEnvVarDefinitions() {
|
|
4
|
+
const rwConfig = getConfig();
|
|
5
|
+
const rwPaths = getPaths();
|
|
6
|
+
return {
|
|
7
|
+
RWJS_ENV: {
|
|
8
|
+
RWJS_API_GRAPHQL_URL: rwConfig.web.apiGraphQLUrl ?? rwConfig.web.apiUrl + "/graphql",
|
|
9
|
+
RWJS_API_URL: rwConfig.web.apiUrl,
|
|
10
|
+
__REDWOOD__APP_TITLE: rwConfig.web.title || path.basename(rwPaths.base),
|
|
11
|
+
RWJS_EXP_STREAMING_SSR: rwConfig.experimental.streamingSsr?.enabled,
|
|
12
|
+
RWJS_EXP_RSC: rwConfig.experimental?.rsc?.enabled
|
|
13
|
+
},
|
|
14
|
+
RWJS_DEBUG_ENV: {
|
|
15
|
+
RWJS_SRC_ROOT: rwPaths.web.src,
|
|
16
|
+
REDWOOD_ENV_EDITOR: JSON.stringify(process.env.REDWOOD_ENV_EDITOR)
|
|
17
|
+
},
|
|
18
|
+
// Vite can automatically expose environment variables, but we
|
|
19
|
+
// disable that in `buildFeServer.ts` by setting `envFile: false`
|
|
20
|
+
// because we want to use our own logic for loading .env,
|
|
21
|
+
// .env.defaults, etc
|
|
22
|
+
// The two object spreads below will expose all environment
|
|
23
|
+
// variables listed in redwood.toml and all environment variables
|
|
24
|
+
// prefixed with REDWOOD_ENV_
|
|
25
|
+
...Object.fromEntries(
|
|
26
|
+
rwConfig.web.includeEnvironmentVariables.flatMap((envName) => [
|
|
27
|
+
// TODO: Figure out if/why we need to disable eslint here, when we
|
|
28
|
+
// didn't have to before, when this code was in index.ts
|
|
29
|
+
// Re-enable if possible
|
|
30
|
+
// eslint-disable-next-line
|
|
31
|
+
[`import.meta.env.${envName}`, JSON.stringify(process.env[envName])],
|
|
32
|
+
// TODO: Figure out if/why we need to disable eslint here, when we
|
|
33
|
+
// didn't have to before, when this code was in index.ts
|
|
34
|
+
// Re-enable if possible
|
|
35
|
+
// eslint-disable-next-line
|
|
36
|
+
[`process.env.${envName}`, JSON.stringify(process.env[envName])]
|
|
37
|
+
])
|
|
38
|
+
),
|
|
39
|
+
...Object.entries(process.env).reduce(
|
|
40
|
+
(acc, [key, value]) => {
|
|
41
|
+
if (key.startsWith("REDWOOD_ENV_")) {
|
|
42
|
+
acc[`import.meta.env.${key}`] = JSON.stringify(value);
|
|
43
|
+
acc[`process.env.${key}`] = JSON.stringify(value);
|
|
44
|
+
}
|
|
45
|
+
return acc;
|
|
46
|
+
},
|
|
47
|
+
{}
|
|
48
|
+
)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
getEnvVarDefinitions
|
|
53
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ConfigEnv, UserConfig } from 'vite';
|
|
2
|
+
import type { Config, Paths } from '@cedarjs/project-config';
|
|
3
|
+
/**
|
|
4
|
+
* This function will merge in the default Redwood Vite config passed into the
|
|
5
|
+
* build function (or in Vite.config.xxx)
|
|
6
|
+
*
|
|
7
|
+
* Note that returning plugins in this function will have no effect on the
|
|
8
|
+
* build
|
|
9
|
+
*/
|
|
10
|
+
export declare function getMergedConfig(rwConfig: Config, rwPaths: Paths): (userConfig: UserConfig, env: ConfigEnv) => UserConfig;
|
|
11
|
+
//# sourceMappingURL=getMergedConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMergedConfig.d.ts","sourceRoot":"","sources":["../../src/lib/getMergedConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAK5D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,gBAC1C,UAAU,OAAO,SAAS,KAAG,UAAU,CAkI5D"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { mergeConfig } from "vite";
|
|
3
|
+
import { getConfig, getPaths } from "@cedarjs/project-config";
|
|
4
|
+
import { getEnvVarDefinitions } from "./envVarDefinitions.js";
|
|
5
|
+
function getMergedConfig(rwConfig, rwPaths) {
|
|
6
|
+
return (userConfig, env) => {
|
|
7
|
+
let apiHost = process.env.REDWOOD_API_HOST;
|
|
8
|
+
apiHost ??= rwConfig.api.host;
|
|
9
|
+
apiHost ??= process.env.NODE_ENV === "production" ? "0.0.0.0" : "[::]";
|
|
10
|
+
const streamingSsrEnabled = rwConfig.experimental.streamingSsr?.enabled;
|
|
11
|
+
const rscEnabled = rwConfig.experimental.rsc?.enabled;
|
|
12
|
+
let apiPort;
|
|
13
|
+
if (process.env.REDWOOD_API_PORT) {
|
|
14
|
+
apiPort = parseInt(process.env.REDWOOD_API_PORT);
|
|
15
|
+
} else {
|
|
16
|
+
apiPort = rwConfig.api.port;
|
|
17
|
+
}
|
|
18
|
+
const defaultRwViteConfig = {
|
|
19
|
+
root: rwPaths.web.src,
|
|
20
|
+
// @MARK: when we have these aliases, the warnings from the FE server go
|
|
21
|
+
// away BUT, if you have imports like this:
|
|
22
|
+
// ```
|
|
23
|
+
// import RandomNumberServerCell from
|
|
24
|
+
// 'src/components/RandomNumberServerCell/RandomNumberServerCell'
|
|
25
|
+
// ```
|
|
26
|
+
// they start failing (can't have the double
|
|
27
|
+
// `/RandomNumberServerCell/RandomNumberServerCell` at the end)
|
|
28
|
+
//
|
|
29
|
+
// resolve: {
|
|
30
|
+
// alias: [
|
|
31
|
+
// {
|
|
32
|
+
// find: 'src',
|
|
33
|
+
// replacement: rwPaths.web.src,
|
|
34
|
+
// },
|
|
35
|
+
// ],
|
|
36
|
+
// },
|
|
37
|
+
envPrefix: "REDWOOD_ENV_",
|
|
38
|
+
publicDir: path.join(rwPaths.web.base, "public"),
|
|
39
|
+
define: getEnvVarDefinitions(),
|
|
40
|
+
css: {
|
|
41
|
+
// @NOTE config path is relative to where vite.config.js is if you use
|
|
42
|
+
// a relative path
|
|
43
|
+
postcss: rwPaths.web.config
|
|
44
|
+
},
|
|
45
|
+
server: {
|
|
46
|
+
open: rwConfig.browser.open,
|
|
47
|
+
port: rwConfig.web.port,
|
|
48
|
+
host: true,
|
|
49
|
+
// Listen to all hosts
|
|
50
|
+
proxy: {
|
|
51
|
+
[rwConfig.web.apiUrl]: {
|
|
52
|
+
target: `http://${apiHost}:${apiPort}`,
|
|
53
|
+
changeOrigin: false,
|
|
54
|
+
// Remove the `.redwood/functions` part, but leave the `/graphql`
|
|
55
|
+
rewrite: (path2) => path2.replace(rwConfig.web.apiUrl, ""),
|
|
56
|
+
configure: (proxy) => {
|
|
57
|
+
let waitingForApiServer = true;
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
waitingForApiServer = false;
|
|
60
|
+
}, 2500);
|
|
61
|
+
proxy.on("error", (err, _req, res) => {
|
|
62
|
+
if (waitingForApiServer && err.message.includes("ECONNREFUSED")) {
|
|
63
|
+
err.stack = "\u231B API Server launching, please refresh your page...";
|
|
64
|
+
}
|
|
65
|
+
const msg = {
|
|
66
|
+
errors: [
|
|
67
|
+
{
|
|
68
|
+
message: "The RedwoodJS API server is not available or is currently reloading. Please refresh."
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
};
|
|
72
|
+
res.writeHead(203, {
|
|
73
|
+
"Content-Type": "application/json",
|
|
74
|
+
"Cache-Control": "no-cache"
|
|
75
|
+
});
|
|
76
|
+
res.write(JSON.stringify(msg));
|
|
77
|
+
res.end();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
build: {
|
|
84
|
+
// TODO (RSC): Remove `minify: false` when we don't need to debug as often
|
|
85
|
+
minify: false,
|
|
86
|
+
// NOTE this gets overridden when build gets called anyway!
|
|
87
|
+
outDir: streamingSsrEnabled || rscEnabled ? rwPaths.web.distBrowser : rwPaths.web.dist,
|
|
88
|
+
emptyOutDir: true,
|
|
89
|
+
manifest: !env.isSsrBuild ? "client-build-manifest.json" : void 0,
|
|
90
|
+
// Note that sourcemap can be boolean or 'inline'
|
|
91
|
+
sourcemap: !env.isSsrBuild && rwConfig.web.sourceMap,
|
|
92
|
+
rollupOptions: {
|
|
93
|
+
input: getRollupInput(!!env.isSsrBuild)
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
// @MARK: do not set buildSsrCjsExternalHeuristics here
|
|
97
|
+
// because rsc builds want false, client and server build wants true
|
|
98
|
+
optimizeDeps: {
|
|
99
|
+
esbuildOptions: {
|
|
100
|
+
// @MARK this is because JS projects in Redwood don't have .jsx
|
|
101
|
+
// extensions
|
|
102
|
+
loader: {
|
|
103
|
+
".js": "jsx"
|
|
104
|
+
},
|
|
105
|
+
// Node.js global to browser globalThis
|
|
106
|
+
// @MARK unsure why we need this, but required for DevFatalErrorPage
|
|
107
|
+
// at least
|
|
108
|
+
define: {
|
|
109
|
+
global: "globalThis"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return mergeConfig(defaultRwViteConfig, userConfig);
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function getRollupInput(ssr) {
|
|
118
|
+
const rwConfig = getConfig();
|
|
119
|
+
const rwPaths = getPaths();
|
|
120
|
+
if (!rwPaths.web.entryClient) {
|
|
121
|
+
throw new Error("entryClient not defined");
|
|
122
|
+
}
|
|
123
|
+
const streamingEnabled = rwConfig.experimental?.streamingSsr?.enabled;
|
|
124
|
+
const rscEnabled = rwConfig.experimental?.rsc?.enabled;
|
|
125
|
+
if (streamingEnabled) {
|
|
126
|
+
if (ssr) {
|
|
127
|
+
if (!rwPaths.web.entryServer) {
|
|
128
|
+
throw new Error("entryServer not defined");
|
|
129
|
+
}
|
|
130
|
+
if (rscEnabled) {
|
|
131
|
+
return {
|
|
132
|
+
Document: rwPaths.web.document,
|
|
133
|
+
"entry.server": rwPaths.web.entryServer
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
// NOTE: We're building the server entry *without* the react-server
|
|
138
|
+
// condition when we include it here. This works when only SSR is
|
|
139
|
+
// enabled, but not when RSC + SSR are both enabled
|
|
140
|
+
// For RSC we have this configured in rscBuildForServer.ts to get a
|
|
141
|
+
// build with the proper resolution conditions set.
|
|
142
|
+
"entry.server": rwPaths.web.entryServer,
|
|
143
|
+
// We need the document for React's fallback
|
|
144
|
+
Document: rwPaths.web.document
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
return rwPaths.web.entryClient;
|
|
148
|
+
}
|
|
149
|
+
return rwPaths.web.html;
|
|
150
|
+
}
|
|
151
|
+
export {
|
|
152
|
+
getMergedConfig
|
|
153
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onWarn.d.ts","sourceRoot":"","sources":["../../src/lib/onWarn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGxD,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,QAkBzE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function onWarn(warning, defaultHandler) {
|
|
2
|
+
const fileName = warning.loc?.file;
|
|
3
|
+
if (warning.code === "MODULE_LEVEL_DIRECTIVE" && /"use (client|server)"/.test(warning.message)) {
|
|
4
|
+
return;
|
|
5
|
+
} else if (warning.code === "SOURCEMAP_ERROR" && (fileName?.endsWith(".tsx") || fileName?.endsWith(".ts")) && warning.loc?.column === 0 && warning.loc?.line === 1) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
defaultHandler(warning);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
onWarn
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use this function on the web server
|
|
3
|
+
*
|
|
4
|
+
* Because although globals are defined in vite/index.ts they are only
|
|
5
|
+
* available in the user's code (and not in FW code) because define STATICALLY
|
|
6
|
+
* replaces it in user's code, not in node_modules
|
|
7
|
+
*
|
|
8
|
+
* It's still available on the client side though, probably because it's
|
|
9
|
+
* processed by Vite
|
|
10
|
+
*/
|
|
11
|
+
export declare const registerFwGlobalsAndShims: () => void;
|
|
12
|
+
//# sourceMappingURL=registerFwGlobalsAndShims.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerFwGlobalsAndShims.d.ts","sourceRoot":"","sources":["../../src/lib/registerFwGlobalsAndShims.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,YAGrC,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getConfig, getPaths } from "@cedarjs/project-config";
|
|
3
|
+
const registerFwGlobalsAndShims = () => {
|
|
4
|
+
registerFwGlobals();
|
|
5
|
+
registerFwShims();
|
|
6
|
+
};
|
|
7
|
+
function registerFwGlobals() {
|
|
8
|
+
const rwConfig = getConfig();
|
|
9
|
+
const rwPaths = getPaths();
|
|
10
|
+
globalThis.RWJS_ENV = {
|
|
11
|
+
RWJS_API_GRAPHQL_URL: rwConfig.web.apiGraphQLUrl ?? rwConfig.web.apiUrl + "/graphql",
|
|
12
|
+
RWJS_API_URL: rwConfig.web.apiUrl,
|
|
13
|
+
__REDWOOD__APP_TITLE: rwConfig.web.title || path.basename(rwPaths.base),
|
|
14
|
+
RWJS_EXP_STREAMING_SSR: rwConfig.experimental.streamingSsr?.enabled,
|
|
15
|
+
RWJS_EXP_RSC: rwConfig.experimental?.rsc?.enabled,
|
|
16
|
+
RWJS_EXP_SSR_GRAPHQL_ENDPOINT: (() => {
|
|
17
|
+
const apiPath = rwConfig.web.apiGraphQLUrl ?? rwConfig.web.apiUrl + "/graphql";
|
|
18
|
+
if (/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(apiPath)) {
|
|
19
|
+
return apiPath;
|
|
20
|
+
} else {
|
|
21
|
+
let webHost = process.env.REDWOOD_WEB_HOST;
|
|
22
|
+
webHost ??= rwConfig.web.host;
|
|
23
|
+
webHost ??= process.env.NODE_ENV === "production" ? "0.0.0.0" : "[::]";
|
|
24
|
+
let webPort;
|
|
25
|
+
if (process.env.REDWOOD_WEB_PORT) {
|
|
26
|
+
webPort = parseInt(process.env.REDWOOD_WEB_PORT);
|
|
27
|
+
} else {
|
|
28
|
+
webPort = rwConfig.web.port;
|
|
29
|
+
}
|
|
30
|
+
const proxiedApiUrl = swapLocalhostFor127(
|
|
31
|
+
"http://" + webHost + ":" + webPort + apiPath
|
|
32
|
+
);
|
|
33
|
+
if (process.env.NODE_ENV === "production" && !process.env.RWJS_EXP_SSR_GRAPHQL_ENDPOINT?.length) {
|
|
34
|
+
console.log("------------------ WARNING ! -------------------------");
|
|
35
|
+
console.warn();
|
|
36
|
+
console.warn();
|
|
37
|
+
console.warn(`You haven't configured your API absolute url.`);
|
|
38
|
+
console.warn(`Using ${proxiedApiUrl}`);
|
|
39
|
+
console.warn();
|
|
40
|
+
console.warn(
|
|
41
|
+
"You can override this for SSR by setting RWJS_EXP_SSR_GRAPHQL_ENDPOINT in your environment vars"
|
|
42
|
+
);
|
|
43
|
+
console.warn();
|
|
44
|
+
console.log("------------------ WARNING ! -------------------------");
|
|
45
|
+
return proxiedApiUrl;
|
|
46
|
+
}
|
|
47
|
+
return swapLocalhostFor127(
|
|
48
|
+
process.env.RWJS_EXP_SSR_GRAPHQL_ENDPOINT ?? proxiedApiUrl
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
})()
|
|
52
|
+
};
|
|
53
|
+
globalThis.RWJS_DEBUG_ENV = {
|
|
54
|
+
RWJS_SRC_ROOT: rwPaths.web.src,
|
|
55
|
+
REDWOOD_ENV_EDITOR: JSON.stringify(process.env.REDWOOD_ENV_EDITOR)
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function registerFwShims() {
|
|
59
|
+
if (!getConfig().experimental?.rsc?.enabled) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
globalThis.__rw_module_cache__ ||= /* @__PURE__ */ new Map();
|
|
63
|
+
globalThis.__webpack_chunk_load__ ||= async (id) => {
|
|
64
|
+
console.log("registerFwShims chunk load id", id);
|
|
65
|
+
return import(id).then((mod) => {
|
|
66
|
+
console.log("registerFwShims chunk load mod", mod);
|
|
67
|
+
if (mod.default && typeof mod.default === "object") {
|
|
68
|
+
return globalThis.__rw_module_cache__.set(id, mod.default);
|
|
69
|
+
}
|
|
70
|
+
return globalThis.__rw_module_cache__.set(id, mod);
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
globalThis.__webpack_require__ ||= (id) => {
|
|
74
|
+
console.log("registerFwShims require id", id);
|
|
75
|
+
return globalThis.__rw_module_cache__.get(id);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function swapLocalhostFor127(hostString) {
|
|
79
|
+
return hostString.replace("localhost", "127.0.0.1");
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
registerFwGlobalsAndShims
|
|
83
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ServerAuthState } from '@cedarjs/auth/dist/AuthProvider/ServerAuthProvider.js';
|
|
2
|
+
import { MiddlewareResponse } from '@cedarjs/web/dist/server/middleware';
|
|
3
|
+
import type { Middleware, MiddlewareInvokeOptions } from '@cedarjs/web/middleware';
|
|
4
|
+
/**
|
|
5
|
+
* Invokes the middleware function, and guarantees a MiddlewareResponse object
|
|
6
|
+
* is returned (also making sure that the eventual Response will be of
|
|
7
|
+
* type PonyResponse)
|
|
8
|
+
*
|
|
9
|
+
* Returns promise that will resolve to a tuple of
|
|
10
|
+
* [MiddlewareResponse, ServerAuthState]
|
|
11
|
+
* and will always make sure there is a ServerAuthState set
|
|
12
|
+
*/
|
|
13
|
+
export declare const invoke: (req: Request, middleware?: Middleware, options?: MiddlewareInvokeOptions) => Promise<[MiddlewareResponse, ServerAuthState]>;
|
|
14
|
+
//# sourceMappingURL=invokeMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invokeMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/invokeMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAA;AAE5F,OAAO,EACL,kBAAkB,EAGnB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACxB,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,QACZ,OAAO,eACC,UAAU,YACb,uBAAuB,KAChC,OAAO,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,CA6C/C,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { setServerAuthState } from "@cedarjs/server-store";
|
|
2
|
+
import {
|
|
3
|
+
MiddlewareResponse,
|
|
4
|
+
MiddlewareRequest,
|
|
5
|
+
MiddlewareShortCircuit
|
|
6
|
+
} from "@cedarjs/web/dist/server/middleware";
|
|
7
|
+
const invoke = async (req, middleware, options) => {
|
|
8
|
+
const mwReq = new MiddlewareRequest(req);
|
|
9
|
+
if (typeof middleware !== "function") {
|
|
10
|
+
setServerAuthState(mwReq.serverAuthState.get());
|
|
11
|
+
return [MiddlewareResponse.next(), mwReq.serverAuthState.get()];
|
|
12
|
+
}
|
|
13
|
+
let mwRes = MiddlewareResponse.next();
|
|
14
|
+
try {
|
|
15
|
+
const output = await middleware(mwReq, MiddlewareResponse.next(), options) || MiddlewareResponse.next();
|
|
16
|
+
mwRes = output;
|
|
17
|
+
} catch (e) {
|
|
18
|
+
if (e instanceof MiddlewareShortCircuit) {
|
|
19
|
+
return [e.mwResponse, mwReq.serverAuthState.get()];
|
|
20
|
+
}
|
|
21
|
+
console.error("Error executing middleware > \n");
|
|
22
|
+
console.error("~".repeat(80));
|
|
23
|
+
console.error(e);
|
|
24
|
+
console.error("~".repeat(80));
|
|
25
|
+
} finally {
|
|
26
|
+
setServerAuthState(mwReq.serverAuthState.get());
|
|
27
|
+
}
|
|
28
|
+
return [mwRes, mwReq.serverAuthState.get()];
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
invoke
|
|
32
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import fmw from 'find-my-way';
|
|
2
|
+
import type Router from 'find-my-way';
|
|
3
|
+
import type { ViteDevServer } from 'vite';
|
|
4
|
+
import { MiddlewareResponse } from '@cedarjs/web/middleware';
|
|
5
|
+
import type { Middleware, MiddlewareInvokeOptions, MiddlewareRequest } from '@cedarjs/web/middleware';
|
|
6
|
+
import type { MiddlewareReg } from './types.js';
|
|
7
|
+
type GroupedMw = Record<string, Middleware[]>;
|
|
8
|
+
export declare const groupByRoutePatterns: (mwRegList: MiddlewareReg) => GroupedMw;
|
|
9
|
+
/**
|
|
10
|
+
* Takes an array of middleware, and returns a single middleware function
|
|
11
|
+
* that chains them together, by passing the output of one to the next.
|
|
12
|
+
* @param groupedMw
|
|
13
|
+
*/
|
|
14
|
+
export declare const chain: (mwList: Middleware[]) => (req: MiddlewareRequest, res?: MiddlewareResponse, options?: MiddlewareInvokeOptions) => Promise<MiddlewareResponse>;
|
|
15
|
+
export declare const addMiddlewareHandlers: (mwRegList?: MiddlewareReg) => fmw.Instance<fmw.HTTPVersion.V1>;
|
|
16
|
+
/**
|
|
17
|
+
* If you pass in the vite dev server, we're running in development
|
|
18
|
+
* @param vite
|
|
19
|
+
* @returns Middleware find-my-way Router
|
|
20
|
+
*/
|
|
21
|
+
export declare const createMiddlewareRouter: (vite?: ViteDevServer) => Promise<Router.Instance<any>>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/middleware/register.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EACV,UAAU,EAEV,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,yBAAyB,CAAA;AAKhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAgB7C,eAAO,MAAM,oBAAoB,cAAe,aAAa,cAoB5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,WAAY,UAAU,EAAE,WAEjC,iBAAiB,QACjB,kBAAkB,YACb,uBAAuB,gCAcpC,CAAA;AAED,eAAO,MAAM,qBAAqB,eAAe,aAAa,qCAc7D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAC1B,aAAa,KACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAe9B,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import fmw from "find-my-way";
|
|
2
|
+
import { getPaths } from "@cedarjs/project-config";
|
|
3
|
+
import { MiddlewareResponse } from "@cedarjs/web/middleware";
|
|
4
|
+
import { makeFilePath, ssrLoadEntryServer } from "../utils.js";
|
|
5
|
+
const validateMw = (mw) => {
|
|
6
|
+
if (typeof mw === "function") {
|
|
7
|
+
return mw;
|
|
8
|
+
} else if (typeof mw === "object" && typeof mw.invoke === "function") {
|
|
9
|
+
return mw.invoke.bind(mw);
|
|
10
|
+
} else {
|
|
11
|
+
console.error("Received as middleware: ", mw);
|
|
12
|
+
throw new Error(
|
|
13
|
+
"Please check the return on registerMiddleware. Must be a Middleware function, Class or tuple of [Middleware, string]"
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const groupByRoutePatterns = (mwRegList) => {
|
|
18
|
+
const grouped = {};
|
|
19
|
+
mwRegList.forEach((mwReg) => {
|
|
20
|
+
if (Array.isArray(mwReg)) {
|
|
21
|
+
const [mw, pattern = "*"] = mwReg;
|
|
22
|
+
const mwFunction = validateMw(mw);
|
|
23
|
+
if (!grouped[pattern]) {
|
|
24
|
+
grouped[pattern] = [];
|
|
25
|
+
}
|
|
26
|
+
grouped[pattern].push(mwFunction);
|
|
27
|
+
} else {
|
|
28
|
+
grouped["*"] = [...grouped["*"] || [], validateMw(mwReg)];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return grouped;
|
|
32
|
+
};
|
|
33
|
+
const chain = (mwList) => {
|
|
34
|
+
return async (req, res = MiddlewareResponse.next(), options) => {
|
|
35
|
+
let response = res;
|
|
36
|
+
for (const mw of mwList) {
|
|
37
|
+
const mwOutput = await mw(req, response, options);
|
|
38
|
+
if (mwOutput) {
|
|
39
|
+
response = mwOutput;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return response;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const addMiddlewareHandlers = (mwRegList = []) => {
|
|
46
|
+
const groupedMw = groupByRoutePatterns(mwRegList);
|
|
47
|
+
const mwRouter = fmw();
|
|
48
|
+
for (const pattern in groupedMw) {
|
|
49
|
+
const mwList = groupedMw[pattern];
|
|
50
|
+
const chainedMw = chain(mwList);
|
|
51
|
+
mwRouter.on(["GET", "POST"], pattern, chainedMw);
|
|
52
|
+
}
|
|
53
|
+
return mwRouter;
|
|
54
|
+
};
|
|
55
|
+
const createMiddlewareRouter = async (vite) => {
|
|
56
|
+
const rwPaths = getPaths();
|
|
57
|
+
const entryServerImport = vite ? await ssrLoadEntryServer(vite) : await import(makeFilePath(rwPaths.web.distSsrEntryServer));
|
|
58
|
+
const { registerMiddleware } = entryServerImport;
|
|
59
|
+
if (!registerMiddleware) {
|
|
60
|
+
return fmw();
|
|
61
|
+
}
|
|
62
|
+
return addMiddlewareHandlers(await registerMiddleware());
|
|
63
|
+
};
|
|
64
|
+
export {
|
|
65
|
+
addMiddlewareHandlers,
|
|
66
|
+
chain,
|
|
67
|
+
createMiddlewareRouter,
|
|
68
|
+
groupByRoutePatterns
|
|
69
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/middleware/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EAChB,MAAM,qCAAqC,CAAA;AAG5C,MAAM,MAAM,aAAa,GAAG,CACxB,CAAC,UAAU,GAAG,eAAe,EAAE,MAAM,CAAC,GACtC,UAAU,GACV,eAAe,CAClB,EAAE,CAAA"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-jsx-loader.d.ts","sourceRoot":"","sources":["../../src/plugins/vite-plugin-jsx-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAgB5C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { transformWithEsbuild } from "vite";
|
|
2
|
+
function handleJsAsJsx() {
|
|
3
|
+
return {
|
|
4
|
+
name: "transform-js-files-as-jsx",
|
|
5
|
+
async transform(code, id) {
|
|
6
|
+
if (!id.match(/src\/.*\.js$/)) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return transformWithEsbuild(code, id, {
|
|
10
|
+
loader: "jsx",
|
|
11
|
+
jsx: "automatic"
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
handleJsAsJsx
|
|
18
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PluginOption } from 'vite';
|
|
2
|
+
type ModulesToExclude = {
|
|
3
|
+
id: RegExp;
|
|
4
|
+
}[];
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* This is a vite plugin to remove modules from the bundle.
|
|
8
|
+
*
|
|
9
|
+
* Only applies on build, not on dev.
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
export declare function removeFromBundle(modulesToExclude: ModulesToExclude, exportNames?: string[]): PluginOption;
|
|
13
|
+
export declare function excludeOnMatch(modulesToExclude: ModulesToExclude, id: string, exportNames?: string[]): {
|
|
14
|
+
code: string;
|
|
15
|
+
} | null;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=vite-plugin-remove-from-bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-remove-from-bundle.d.ts","sourceRoot":"","sources":["../../src/plugins/vite-plugin-remove-from-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,KAAK,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,CAAA;AAExC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,YAAY,CAgBd;AAQD,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,gBAAgB,EAClC,EAAE,EAAE,MAAM,EACV,WAAW,GAAE,MAAM,EAAO;;SAQ3B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function removeFromBundle(modulesToExclude, exportNames) {
|
|
2
|
+
const isMissingIdToExclude = modulesToExclude.some(
|
|
3
|
+
(module) => module.id === void 0
|
|
4
|
+
);
|
|
5
|
+
if (isMissingIdToExclude) {
|
|
6
|
+
throw new Error("You must specify an id to exclude");
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
name: "remove-from-bundle",
|
|
10
|
+
apply: "build",
|
|
11
|
+
// <-- @MARK important
|
|
12
|
+
load: (id) => {
|
|
13
|
+
return excludeOnMatch(modulesToExclude, id, exportNames);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function generateModuleWithExports(exportNames) {
|
|
18
|
+
return {
|
|
19
|
+
code: `export default {}; ${exportNames.map((name) => `export const ${name} = undefined;`).join("\n")}`
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function excludeOnMatch(modulesToExclude, id, exportNames = []) {
|
|
23
|
+
if (modulesToExclude.some((module) => module.id.test(id))) {
|
|
24
|
+
return generateModuleWithExports(exportNames);
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
excludeOnMatch,
|
|
30
|
+
removeFromBundle
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-rsc-analyze.d.ts","sourceRoot":"","sources":["../../src/plugins/vite-plugin-rsc-analyze.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EACzC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GACxC,MAAM,CA8CR"}
|