@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.
Files changed (213) hide show
  1. package/LICENSE +21 -0
  2. package/bins/rw-vite-build.mjs +61 -0
  3. package/bins/rw-vite-dev.mjs +57 -0
  4. package/bins/vite.mjs +12 -0
  5. package/dist/build/build.d.ts +21 -0
  6. package/dist/build/build.d.ts.map +1 -0
  7. package/dist/build/build.js +78 -0
  8. package/dist/buildFeServer.d.ts +6 -0
  9. package/dist/buildFeServer.d.ts.map +1 -0
  10. package/dist/buildFeServer.js +39 -0
  11. package/dist/buildRouteHooks.d.ts +3 -0
  12. package/dist/buildRouteHooks.d.ts.map +1 -0
  13. package/dist/buildRouteHooks.js +45 -0
  14. package/dist/buildRouteManifest.d.ts +6 -0
  15. package/dist/buildRouteManifest.d.ts.map +1 -0
  16. package/dist/buildRouteManifest.js +58 -0
  17. package/dist/buildRscClientAndServer.d.ts +4 -0
  18. package/dist/buildRscClientAndServer.d.ts.map +1 -0
  19. package/dist/buildRscClientAndServer.js +30 -0
  20. package/dist/bundled/react-server-dom-webpack.server.d.ts +2 -0
  21. package/dist/bundled/react-server-dom-webpack.server.d.ts.map +1 -0
  22. package/dist/bundled/react-server-dom-webpack.server.js +33529 -0
  23. package/dist/cjs/ClientRouter.d.ts +1 -0
  24. package/dist/cjs/build/build.d.ts +1 -0
  25. package/dist/cjs/build/build.js +116 -0
  26. package/dist/cjs/buildFeServer.d.ts +1 -0
  27. package/dist/cjs/buildFeServer.js +63 -0
  28. package/dist/cjs/buildRouteHooks.js +66 -0
  29. package/dist/cjs/buildRouteManifest.js +92 -0
  30. package/dist/cjs/buildRscClientAndServer.js +54 -0
  31. package/dist/cjs/client.d.ts +1 -0
  32. package/dist/cjs/clientSsr.d.ts +1 -0
  33. package/dist/cjs/devFeServer.js +153 -0
  34. package/dist/cjs/index.d.ts +1 -0
  35. package/dist/cjs/index.js +184 -0
  36. package/dist/cjs/lib/StatusError.js +36 -0
  37. package/dist/cjs/lib/entries.js +53 -0
  38. package/dist/cjs/lib/envVarDefinitions.js +87 -0
  39. package/dist/cjs/lib/getMergedConfig.js +187 -0
  40. package/dist/cjs/lib/onWarn.js +36 -0
  41. package/dist/cjs/lib/registerFwGlobalsAndShims.js +117 -0
  42. package/dist/cjs/middleware/index.js +22 -0
  43. package/dist/cjs/middleware/invokeMiddleware.js +52 -0
  44. package/dist/cjs/middleware/register.js +106 -0
  45. package/dist/cjs/middleware/types.js +16 -0
  46. package/dist/cjs/package.json +1 -0
  47. package/dist/cjs/plugins/vite-plugin-jsx-loader.js +42 -0
  48. package/dist/cjs/plugins/vite-plugin-remove-from-bundle.js +56 -0
  49. package/dist/cjs/plugins/vite-plugin-rsc-analyze.js +104 -0
  50. package/dist/cjs/plugins/vite-plugin-rsc-reload.js +75 -0
  51. package/dist/cjs/plugins/vite-plugin-rsc-routes-auto-loader.js +159 -0
  52. package/dist/cjs/plugins/vite-plugin-rsc-routes-imports.js +125 -0
  53. package/dist/cjs/plugins/vite-plugin-rsc-ssr-router-import.js +75 -0
  54. package/dist/cjs/plugins/vite-plugin-rsc-transform-client.js +229 -0
  55. package/dist/cjs/plugins/vite-plugin-rsc-transform-server.js +398 -0
  56. package/dist/cjs/plugins/vite-plugin-swap-apollo-provider.js +41 -0
  57. package/dist/cjs/rsc/rscBuildAnalyze.js +116 -0
  58. package/dist/cjs/rsc/rscBuildClient.js +91 -0
  59. package/dist/cjs/rsc/rscBuildCopyCssAssets.js +56 -0
  60. package/dist/cjs/rsc/rscBuildEntriesFile.js +115 -0
  61. package/dist/cjs/rsc/rscBuildForServer.js +157 -0
  62. package/dist/cjs/rsc/rscBuildForSsr.js +172 -0
  63. package/dist/cjs/rsc/rscBuildRwEnvVars.js +56 -0
  64. package/dist/cjs/rsc/rscRenderer.js +165 -0
  65. package/dist/cjs/rsc/rscRequestHandler.js +162 -0
  66. package/dist/cjs/rsc/rscStudioHandlers.js +154 -0
  67. package/dist/cjs/runFeServer.js +166 -0
  68. package/dist/cjs/streaming/buildForStreamingServer.js +65 -0
  69. package/dist/cjs/streaming/collectCss.js +52 -0
  70. package/dist/cjs/streaming/createReactStreamingHandler.js +173 -0
  71. package/dist/cjs/streaming/streamHelpers.js +228 -0
  72. package/dist/cjs/streaming/transforms/bufferedTransform.js +61 -0
  73. package/dist/cjs/streaming/transforms/cancelTimeoutTransform.js +34 -0
  74. package/dist/cjs/streaming/transforms/encode-decode.js +36 -0
  75. package/dist/cjs/streaming/transforms/serverInjectionTransform.js +84 -0
  76. package/dist/cjs/streaming/triggerRouteHooks.js +96 -0
  77. package/dist/cjs/types.js +16 -0
  78. package/dist/cjs/utils.js +91 -0
  79. package/dist/devFeServer.d.ts +2 -0
  80. package/dist/devFeServer.d.ts.map +1 -0
  81. package/dist/devFeServer.js +134 -0
  82. package/dist/index.d.ts +6 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +154 -0
  85. package/dist/lib/StatusError.d.ts +8 -0
  86. package/dist/lib/StatusError.d.ts.map +1 -0
  87. package/dist/lib/StatusError.js +11 -0
  88. package/dist/lib/entries.d.ts +3 -0
  89. package/dist/lib/entries.d.ts.map +1 -0
  90. package/dist/lib/entries.js +32 -0
  91. package/dist/lib/envVarDefinitions.d.ts +14 -0
  92. package/dist/lib/envVarDefinitions.d.ts.map +1 -0
  93. package/dist/lib/envVarDefinitions.js +53 -0
  94. package/dist/lib/getMergedConfig.d.ts +11 -0
  95. package/dist/lib/getMergedConfig.d.ts.map +1 -0
  96. package/dist/lib/getMergedConfig.js +153 -0
  97. package/dist/lib/onWarn.d.ts +3 -0
  98. package/dist/lib/onWarn.d.ts.map +1 -0
  99. package/dist/lib/onWarn.js +12 -0
  100. package/dist/lib/registerFwGlobalsAndShims.d.ts +12 -0
  101. package/dist/lib/registerFwGlobalsAndShims.d.ts.map +1 -0
  102. package/dist/lib/registerFwGlobalsAndShims.js +83 -0
  103. package/dist/middleware/index.d.ts +2 -0
  104. package/dist/middleware/index.d.ts.map +1 -0
  105. package/dist/middleware/index.js +1 -0
  106. package/dist/middleware/invokeMiddleware.d.ts +14 -0
  107. package/dist/middleware/invokeMiddleware.d.ts.map +1 -0
  108. package/dist/middleware/invokeMiddleware.js +32 -0
  109. package/dist/middleware/register.d.ts +23 -0
  110. package/dist/middleware/register.d.ts.map +1 -0
  111. package/dist/middleware/register.js +69 -0
  112. package/dist/middleware/types.d.ts +3 -0
  113. package/dist/middleware/types.d.ts.map +1 -0
  114. package/dist/middleware/types.js +0 -0
  115. package/dist/package.json +1 -0
  116. package/dist/plugins/vite-plugin-jsx-loader.d.ts +8 -0
  117. package/dist/plugins/vite-plugin-jsx-loader.d.ts.map +1 -0
  118. package/dist/plugins/vite-plugin-jsx-loader.js +18 -0
  119. package/dist/plugins/vite-plugin-remove-from-bundle.d.ts +17 -0
  120. package/dist/plugins/vite-plugin-remove-from-bundle.d.ts.map +1 -0
  121. package/dist/plugins/vite-plugin-remove-from-bundle.js +31 -0
  122. package/dist/plugins/vite-plugin-rsc-analyze.d.ts +3 -0
  123. package/dist/plugins/vite-plugin-rsc-analyze.d.ts.map +1 -0
  124. package/dist/plugins/vite-plugin-rsc-analyze.js +70 -0
  125. package/dist/plugins/vite-plugin-rsc-reload.d.ts +3 -0
  126. package/dist/plugins/vite-plugin-rsc-reload.d.ts.map +1 -0
  127. package/dist/plugins/vite-plugin-rsc-reload.js +41 -0
  128. package/dist/plugins/vite-plugin-rsc-routes-auto-loader.d.ts +3 -0
  129. package/dist/plugins/vite-plugin-rsc-routes-auto-loader.d.ts.map +1 -0
  130. package/dist/plugins/vite-plugin-rsc-routes-auto-loader.js +130 -0
  131. package/dist/plugins/vite-plugin-rsc-routes-imports.d.ts +3 -0
  132. package/dist/plugins/vite-plugin-rsc-routes-imports.d.ts.map +1 -0
  133. package/dist/plugins/vite-plugin-rsc-routes-imports.js +96 -0
  134. package/dist/plugins/vite-plugin-rsc-ssr-router-import.d.ts +7 -0
  135. package/dist/plugins/vite-plugin-rsc-ssr-router-import.d.ts.map +1 -0
  136. package/dist/plugins/vite-plugin-rsc-ssr-router-import.js +41 -0
  137. package/dist/plugins/vite-plugin-rsc-transform-client.d.ts +3 -0
  138. package/dist/plugins/vite-plugin-rsc-transform-client.d.ts.map +1 -0
  139. package/dist/plugins/vite-plugin-rsc-transform-client.js +195 -0
  140. package/dist/plugins/vite-plugin-rsc-transform-server.d.ts +3 -0
  141. package/dist/plugins/vite-plugin-rsc-transform-server.d.ts.map +1 -0
  142. package/dist/plugins/vite-plugin-rsc-transform-server.js +364 -0
  143. package/dist/plugins/vite-plugin-swap-apollo-provider.d.ts +12 -0
  144. package/dist/plugins/vite-plugin-swap-apollo-provider.d.ts.map +1 -0
  145. package/dist/plugins/vite-plugin-swap-apollo-provider.js +17 -0
  146. package/dist/rsc/rscBuildAnalyze.d.ts +16 -0
  147. package/dist/rsc/rscBuildAnalyze.d.ts.map +1 -0
  148. package/dist/rsc/rscBuildAnalyze.js +92 -0
  149. package/dist/rsc/rscBuildClient.d.ts +7 -0
  150. package/dist/rsc/rscBuildClient.d.ts.map +1 -0
  151. package/dist/rsc/rscBuildClient.js +67 -0
  152. package/dist/rsc/rscBuildCopyCssAssets.d.ts +7 -0
  153. package/dist/rsc/rscBuildCopyCssAssets.d.ts.map +1 -0
  154. package/dist/rsc/rscBuildCopyCssAssets.js +22 -0
  155. package/dist/rsc/rscBuildEntriesFile.d.ts +10 -0
  156. package/dist/rsc/rscBuildEntriesFile.d.ts.map +1 -0
  157. package/dist/rsc/rscBuildEntriesFile.js +81 -0
  158. package/dist/rsc/rscBuildForServer.d.ts +7 -0
  159. package/dist/rsc/rscBuildForServer.d.ts.map +1 -0
  160. package/dist/rsc/rscBuildForServer.js +133 -0
  161. package/dist/rsc/rscBuildForSsr.d.ts +9 -0
  162. package/dist/rsc/rscBuildForSsr.d.ts.map +1 -0
  163. package/dist/rsc/rscBuildForSsr.js +138 -0
  164. package/dist/rsc/rscBuildRwEnvVars.d.ts +10 -0
  165. package/dist/rsc/rscBuildRwEnvVars.d.ts.map +1 -0
  166. package/dist/rsc/rscBuildRwEnvVars.js +22 -0
  167. package/dist/rsc/rscRenderer.d.ts +9 -0
  168. package/dist/rsc/rscRenderer.d.ts.map +1 -0
  169. package/dist/rsc/rscRenderer.js +130 -0
  170. package/dist/rsc/rscRequestHandler.d.ts +10 -0
  171. package/dist/rsc/rscRequestHandler.d.ts.map +1 -0
  172. package/dist/rsc/rscRequestHandler.js +131 -0
  173. package/dist/rsc/rscStudioHandlers.d.ts +10 -0
  174. package/dist/rsc/rscStudioHandlers.d.ts.map +1 -0
  175. package/dist/rsc/rscStudioHandlers.js +120 -0
  176. package/dist/runFeServer.d.ts +2 -0
  177. package/dist/runFeServer.d.ts.map +1 -0
  178. package/dist/runFeServer.js +132 -0
  179. package/dist/streaming/buildForStreamingServer.d.ts +4 -0
  180. package/dist/streaming/buildForStreamingServer.d.ts.map +1 -0
  181. package/dist/streaming/buildForStreamingServer.js +41 -0
  182. package/dist/streaming/collectCss.d.ts +7 -0
  183. package/dist/streaming/collectCss.d.ts.map +1 -0
  184. package/dist/streaming/collectCss.js +27 -0
  185. package/dist/streaming/createReactStreamingHandler.d.ts +12 -0
  186. package/dist/streaming/createReactStreamingHandler.d.ts.map +1 -0
  187. package/dist/streaming/createReactStreamingHandler.js +139 -0
  188. package/dist/streaming/streamHelpers.d.ts +23 -0
  189. package/dist/streaming/streamHelpers.d.ts.map +1 -0
  190. package/dist/streaming/streamHelpers.js +192 -0
  191. package/dist/streaming/transforms/bufferedTransform.d.ts +2 -0
  192. package/dist/streaming/transforms/bufferedTransform.d.ts.map +1 -0
  193. package/dist/streaming/transforms/bufferedTransform.js +37 -0
  194. package/dist/streaming/transforms/cancelTimeoutTransform.d.ts +2 -0
  195. package/dist/streaming/transforms/cancelTimeoutTransform.d.ts.map +1 -0
  196. package/dist/streaming/transforms/cancelTimeoutTransform.js +10 -0
  197. package/dist/streaming/transforms/encode-decode.d.ts +3 -0
  198. package/dist/streaming/transforms/encode-decode.d.ts.map +1 -0
  199. package/dist/streaming/transforms/encode-decode.js +11 -0
  200. package/dist/streaming/transforms/serverInjectionTransform.d.ts +16 -0
  201. package/dist/streaming/transforms/serverInjectionTransform.d.ts.map +1 -0
  202. package/dist/streaming/transforms/serverInjectionTransform.js +60 -0
  203. package/dist/streaming/triggerRouteHooks.d.ts +26 -0
  204. package/dist/streaming/triggerRouteHooks.d.ts.map +1 -0
  205. package/dist/streaming/triggerRouteHooks.js +71 -0
  206. package/dist/types.d.ts +31 -0
  207. package/dist/types.d.ts.map +1 -0
  208. package/dist/types.js +0 -0
  209. package/dist/utils.d.ts +14 -0
  210. package/dist/utils.d.ts.map +1 -0
  211. package/dist/utils.js +62 -0
  212. package/inject/reactRefresh.js +7 -0
  213. 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,3 @@
1
+ import type { LoggingFunction, RollupLog } from 'rollup';
2
+ export declare function onWarn(warning: RollupLog, defaultHandler: LoggingFunction): void;
3
+ //# sourceMappingURL=onWarn.d.ts.map
@@ -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,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { Middleware, MiddlewareClass } from '@cedarjs/web/dist/server/middleware';
2
+ export type MiddlewareReg = ([Middleware | MiddlewareClass, string] | Middleware | MiddlewareClass)[];
3
+ //# sourceMappingURL=types.d.ts.map
@@ -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,8 @@
1
+ import type { PluginOption } from 'vite';
2
+ /**
3
+ *
4
+ * This is a vite plugin to load and transform JS files as JSX.
5
+ *
6
+ */
7
+ export declare function handleJsAsJsx(): PluginOption;
8
+ //# sourceMappingURL=vite-plugin-jsx-loader.d.ts.map
@@ -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,3 @@
1
+ import type { Plugin } from 'vite';
2
+ export declare function rscAnalyzePlugin(clientEntryCallback: (id: string) => void, serverEntryCallback: (id: string) => void): Plugin;
3
+ //# sourceMappingURL=vite-plugin-rsc-analyze.d.ts.map
@@ -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"}