@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,84 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var serverInjectionTransform_exports = {};
20
+ __export(serverInjectionTransform_exports, {
21
+ createServerInjectionTransform: () => createServerInjectionTransform
22
+ });
23
+ module.exports = __toCommonJS(serverInjectionTransform_exports);
24
+ var import_encode_decode = require("./encode-decode.js");
25
+ function createServerInjectionTransform({
26
+ injectionState,
27
+ createElement,
28
+ ServerInjectedHtml,
29
+ renderToString,
30
+ onlyOnFlush = false
31
+ }) {
32
+ const transformStream = new TransformStream({
33
+ transform(chunk, controller) {
34
+ if (onlyOnFlush) {
35
+ controller.enqueue(chunk);
36
+ } else {
37
+ const mergedBytes = insertHtml(chunk);
38
+ controller.enqueue(mergedBytes);
39
+ }
40
+ },
41
+ flush(controller) {
42
+ const mergedBytes = insertHtml();
43
+ controller.enqueue(mergedBytes);
44
+ const moveTagsScript = (0, import_encode_decode.encodeText)(`<script>document.querySelectorAll('body [data-rwjs-head]').forEach((el) => {
45
+ document.querySelectorAll('head ' + el.tagName).forEach((e) => {
46
+ if (
47
+ el.tagName === 'TITLE' ||
48
+ (el.tagName === 'META' &&
49
+ el.getAttribute('name') === e.getAttribute('name') &&
50
+ el.getAttribute('property') === e.getAttribute('property'))
51
+ ) {
52
+ e.remove();
53
+ }
54
+ document.head.appendChild(el);
55
+ });
56
+ });
57
+ </script>`);
58
+ controller.enqueue(moveTagsScript);
59
+ }
60
+ });
61
+ return transformStream;
62
+ function insertHtml(chunk) {
63
+ const serverHtmlOutput = renderToString(
64
+ createElement(ServerInjectedHtml, {
65
+ injectionState
66
+ })
67
+ );
68
+ const injectedBytes = (0, import_encode_decode.encodeText)(serverHtmlOutput);
69
+ if (chunk !== void 0) {
70
+ const mergedBytes = new Uint8Array(chunk.length + injectedBytes.length);
71
+ mergedBytes.set(chunk);
72
+ mergedBytes.set(injectedBytes, chunk.length);
73
+ return mergedBytes;
74
+ } else {
75
+ const injectedHtmlOutput = new Uint8Array(injectedBytes.length);
76
+ injectedHtmlOutput.set(injectedBytes);
77
+ return injectedHtmlOutput;
78
+ }
79
+ }
80
+ }
81
+ // Annotate the CommonJS export names for ESM import in node:
82
+ 0 && (module.exports = {
83
+ createServerInjectionTransform
84
+ });
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var triggerRouteHooks_exports = {};
20
+ __export(triggerRouteHooks_exports, {
21
+ loadAndRunRouteHooks: () => loadAndRunRouteHooks,
22
+ triggerRouteHooks: () => triggerRouteHooks
23
+ });
24
+ module.exports = __toCommonJS(triggerRouteHooks_exports);
25
+ var import_util = require("@cedarjs/router/util");
26
+ const triggerRouteHooks = async ({
27
+ routeHooks,
28
+ req,
29
+ parsedParams = {},
30
+ previousOutput
31
+ }) => {
32
+ const event = {
33
+ params: parsedParams,
34
+ headers: req.headers || {},
35
+ query: (0, import_util.parseSearch)(req.url),
36
+ // cookies: req.cookies || {}, // TODO (STREAMING) we probably need some sort of cookie parser
37
+ // TODO (STREAMING) called app routeHook, but its just the previous output
38
+ appRouteHook: previousOutput
39
+ };
40
+ let meta = previousOutput?.meta || [];
41
+ try {
42
+ const metaRouteHookOutput = await routeHooks?.meta?.(event) || [];
43
+ const currentMeta = Array.isArray(metaRouteHookOutput) ? metaRouteHookOutput : [metaRouteHookOutput];
44
+ meta = [...meta, ...currentMeta];
45
+ } catch (e) {
46
+ throw new Error(`Error in meta hook: ${e.message}`);
47
+ }
48
+ return {
49
+ meta
50
+ };
51
+ };
52
+ const defaultRouteHookOutput = {
53
+ meta: []
54
+ };
55
+ const loadAndRunRouteHooks = async ({
56
+ paths = [],
57
+ reqMeta,
58
+ viteDevServer,
59
+ previousOutput = defaultRouteHookOutput
60
+ }) => {
61
+ const loadModule = async (path) => {
62
+ return viteDevServer ? viteDevServer.ssrLoadModule(path) : import(path);
63
+ };
64
+ let currentRouteHooks;
65
+ let rhOutput = defaultRouteHookOutput;
66
+ const routeHookPath = paths.shift();
67
+ try {
68
+ if (routeHookPath) {
69
+ currentRouteHooks = await loadModule(routeHookPath);
70
+ rhOutput = await triggerRouteHooks({
71
+ routeHooks: currentRouteHooks,
72
+ req: reqMeta.req,
73
+ parsedParams: reqMeta.parsedParams,
74
+ previousOutput
75
+ });
76
+ }
77
+ if (paths.length > 0) {
78
+ return loadAndRunRouteHooks({
79
+ paths,
80
+ reqMeta,
81
+ previousOutput: rhOutput,
82
+ viteDevServer
83
+ });
84
+ } else {
85
+ return rhOutput;
86
+ }
87
+ } catch (e) {
88
+ console.error(`Error loading route hooks in ${routeHookPath}}`);
89
+ throw e;
90
+ }
91
+ };
92
+ // Annotate the CommonJS export names for ESM import in node:
93
+ 0 && (module.exports = {
94
+ loadAndRunRouteHooks,
95
+ triggerRouteHooks
96
+ });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_exports = {};
16
+ module.exports = __toCommonJS(types_exports);
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var utils_exports = {};
20
+ __export(utils_exports, {
21
+ convertExpressHeaders: () => convertExpressHeaders,
22
+ ensureProcessDirWeb: () => ensureProcessDirWeb,
23
+ getFullUrl: () => getFullUrl,
24
+ makeFilePath: () => makeFilePath,
25
+ ssrLoadEntryServer: () => ssrLoadEntryServer,
26
+ stripQueryStringAndHashFromPath: () => stripQueryStringAndHashFromPath
27
+ });
28
+ module.exports = __toCommonJS(utils_exports);
29
+ var import_node_url = require("node:url");
30
+ var import_project_config = require("@cedarjs/project-config");
31
+ function stripQueryStringAndHashFromPath(url) {
32
+ return url.split("?")[0].split("#")[0];
33
+ }
34
+ function ensureProcessDirWeb(webDir = (0, import_project_config.getPaths)().web.base) {
35
+ if (process.cwd() !== webDir) {
36
+ console.error("\u26A0\uFE0F Warning: CWD is ", process.cwd());
37
+ console.warn("~".repeat(50));
38
+ console.warn(
39
+ "The cwd must be web/. Please use `yarn rw <command>` or run the command from the web/ directory."
40
+ );
41
+ console.log(`Changing cwd to ${webDir}....`);
42
+ console.log();
43
+ process.chdir(webDir);
44
+ }
45
+ }
46
+ function makeFilePath(path) {
47
+ return (0, import_node_url.pathToFileURL)(path).href;
48
+ }
49
+ async function ssrLoadEntryServer(viteDevServer) {
50
+ const rwPaths = (0, import_project_config.getPaths)();
51
+ if (!rwPaths.web.entryServer) {
52
+ throw new Error("entryServer not defined");
53
+ }
54
+ return viteDevServer.ssrLoadModule(
55
+ rwPaths.web.entryServer
56
+ // Have to type cast here because ssrLoadModule just returns a generic
57
+ // Record<string, any> type
58
+ );
59
+ }
60
+ function convertExpressHeaders(expressDistinctHeaders) {
61
+ const headers = new Headers();
62
+ for (const name in expressDistinctHeaders) {
63
+ const values = expressDistinctHeaders[name];
64
+ if (Array.isArray(values)) {
65
+ for (const value of values) {
66
+ headers.append(name, value);
67
+ }
68
+ }
69
+ }
70
+ return headers;
71
+ }
72
+ const getFullUrl = (req, rscEnabled) => {
73
+ const baseUrl = req.protocol + "://" + req.headers.host;
74
+ const url = new URL(req.originalUrl || "", baseUrl);
75
+ const pathname = url.searchParams.get("__rwjs__pathname");
76
+ const search = url.searchParams.get("__rwjs__search");
77
+ let pathnamePlusSearch = req.originalUrl;
78
+ if (rscEnabled && pathname !== null && search !== null) {
79
+ pathnamePlusSearch = pathname + "?" + search;
80
+ }
81
+ return baseUrl + pathnamePlusSearch;
82
+ };
83
+ // Annotate the CommonJS export names for ESM import in node:
84
+ 0 && (module.exports = {
85
+ convertExpressHeaders,
86
+ ensureProcessDirWeb,
87
+ getFullUrl,
88
+ makeFilePath,
89
+ ssrLoadEntryServer,
90
+ stripQueryStringAndHashFromPath
91
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=devFeServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devFeServer.d.ts","sourceRoot":"","sources":["../src/devFeServer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,134 @@
1
+ import { createServerAdapter } from "@whatwg-node/server";
2
+ import express from "express";
3
+ import { createServer as createViteServer } from "vite";
4
+ import { cjsInterop } from "vite-plugin-cjs-interop";
5
+ import { getProjectRoutes } from "@cedarjs/internal/dist/routes.js";
6
+ import { getConfig, getPaths } from "@cedarjs/project-config";
7
+ import { createPerRequestMap, createServerStorage } from "@cedarjs/server-store";
8
+ import { registerFwGlobalsAndShims } from "./lib/registerFwGlobalsAndShims.js";
9
+ import { invoke } from "./middleware/invokeMiddleware.js";
10
+ import { createMiddlewareRouter } from "./middleware/register.js";
11
+ import { rscRoutesAutoLoader } from "./plugins/vite-plugin-rsc-routes-auto-loader.js";
12
+ import { collectCssPaths, componentsModules } from "./streaming/collectCss.js";
13
+ import { createReactStreamingHandler } from "./streaming/createReactStreamingHandler.js";
14
+ import {
15
+ convertExpressHeaders,
16
+ ensureProcessDirWeb,
17
+ getFullUrl
18
+ } from "./utils.js";
19
+ globalThis.__REDWOOD__PRERENDER_PAGES = {};
20
+ async function createServer() {
21
+ ensureProcessDirWeb();
22
+ registerFwGlobalsAndShims();
23
+ const app = express();
24
+ const rwPaths = getPaths();
25
+ const rscEnabled = getConfig().experimental.rsc?.enabled ?? false;
26
+ const serverStorage = createServerStorage();
27
+ app.use("*", (req, _res, next) => {
28
+ const fullUrl = getFullUrl(req, rscEnabled);
29
+ const perReqStore = createPerRequestMap({
30
+ // Convert express headers to fetch header
31
+ headers: convertExpressHeaders(req.headersDistinct),
32
+ fullUrl
33
+ });
34
+ serverStorage.run(perReqStore, next);
35
+ });
36
+ if (!rwPaths.web.entryServer || !rwPaths.web.entryClient) {
37
+ throw new Error(
38
+ "Vite entry points not found. Please check that your project has an entry.client.{jsx,tsx} and entry.server.{jsx,tsx} file in the web/src directory."
39
+ );
40
+ }
41
+ if (!rwPaths.web.viteConfig) {
42
+ throw new Error(
43
+ "Vite config not found. You need to setup your project with Vite using `yarn rw setup vite`"
44
+ );
45
+ }
46
+ const vite = await createViteServer({
47
+ configFile: rwPaths.web.viteConfig,
48
+ plugins: [
49
+ cjsInterop({
50
+ dependencies: [
51
+ // Skip ESM modules: rwjs/auth, rwjs/web, rwjs/auth-*-middleware, rwjs/router
52
+ "@cedarjs/forms",
53
+ "@cedarjs/prerender/*",
54
+ "@cedarjs/auth-*-api",
55
+ "@cedarjs/auth-*-web"
56
+ ]
57
+ }),
58
+ rscEnabled && rscRoutesAutoLoader()
59
+ ],
60
+ server: { middlewareMode: true },
61
+ logLevel: "info",
62
+ clearScreen: false,
63
+ appType: "custom"
64
+ });
65
+ const handleWithMiddleware = (route) => {
66
+ return createServerAdapter(async (req) => {
67
+ const middlewareRouter = await createMiddlewareRouter(vite);
68
+ const middleware = middlewareRouter.find(
69
+ req.method,
70
+ req.url
71
+ )?.handler;
72
+ if (!middleware) {
73
+ return new Response("No middleware found", { status: 404 });
74
+ }
75
+ const [mwRes] = await invoke(req, middleware, {
76
+ route,
77
+ viteDevServer: vite
78
+ });
79
+ return mwRes.toResponse();
80
+ });
81
+ };
82
+ app.use(vite.middlewares);
83
+ if (rscEnabled) {
84
+ const { createRscRequestHandler } = await import("./rsc/rscRequestHandler.js");
85
+ app.use(
86
+ "/rw-rsc",
87
+ createRscRequestHandler({
88
+ getMiddlewareRouter: async () => createMiddlewareRouter(vite),
89
+ viteDevServer: vite
90
+ })
91
+ );
92
+ }
93
+ const routes = getProjectRoutes();
94
+ const routeHandler = await createReactStreamingHandler(
95
+ {
96
+ routes,
97
+ clientEntryPath: rwPaths.web.entryClient,
98
+ getStylesheetLinks: (route) => {
99
+ return getCssLinks({ rwPaths, route, vite });
100
+ },
101
+ // Recreate middleware router on each request in dev
102
+ getMiddlewareRouter: async () => createMiddlewareRouter(vite)
103
+ },
104
+ vite
105
+ );
106
+ app.get("*", createServerAdapter(routeHandler));
107
+ app.post("*", handleWithMiddleware());
108
+ const port = getConfig().web.port;
109
+ console.log(`Started server on http://localhost:${port}`);
110
+ return app.listen(port);
111
+ }
112
+ let devApp = createServer();
113
+ process.stdin.on("data", async (data) => {
114
+ const str = data.toString().trim().toLowerCase();
115
+ if (str === "rs" || str === "restart") {
116
+ console.log("Restarting dev web server.....");
117
+ (await devApp).close(() => {
118
+ devApp = createServer();
119
+ });
120
+ }
121
+ });
122
+ function getCssLinks({
123
+ rwPaths,
124
+ route,
125
+ vite
126
+ }) {
127
+ const appAndRouteModules = componentsModules(
128
+ [rwPaths.web.app, route?.filePath].filter(Boolean),
129
+ vite
130
+ );
131
+ const collectedCss = collectCssPaths(appAndRouteModules);
132
+ const cssLinks = Array.from(collectedCss);
133
+ return cssLinks;
134
+ }
@@ -0,0 +1,6 @@
1
+ import type { PluginOption } from 'vite';
2
+ /**
3
+ * Pre-configured vite plugin, with required config for Redwood apps.
4
+ */
5
+ export default function redwoodPluginVite(): PluginOption[];
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAYxC;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,IAAI,YAAY,EAAE,CAwK1D"}
package/dist/index.js ADDED
@@ -0,0 +1,154 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import react from "@vitejs/plugin-react";
4
+ import { normalizePath } from "vite";
5
+ import { nodePolyfills } from "vite-plugin-node-polyfills";
6
+ import { getWebSideDefaultBabelConfig } from "@cedarjs/babel-config";
7
+ import { getConfig, getPaths } from "@cedarjs/project-config";
8
+ import { getMergedConfig } from "./lib/getMergedConfig.js";
9
+ import { handleJsAsJsx } from "./plugins/vite-plugin-jsx-loader.js";
10
+ import { removeFromBundle } from "./plugins/vite-plugin-remove-from-bundle.js";
11
+ import { swapApolloProvider } from "./plugins/vite-plugin-swap-apollo-provider.js";
12
+ function redwoodPluginVite() {
13
+ const rwPaths = getPaths();
14
+ const rwConfig = getConfig();
15
+ const clientEntryPath = rwPaths.web.entryClient;
16
+ if (!clientEntryPath) {
17
+ throw new Error(
18
+ "Vite client entry point not found. Please check that your project has an entry.client.{jsx,tsx} file in the web/src directory."
19
+ );
20
+ }
21
+ const relativeEntryPath = path.relative(rwPaths.web.src, clientEntryPath);
22
+ const apiPackageJsonPath = path.join(rwPaths.api.base, "package.json");
23
+ const realtimeEnabled = fs.existsSync(apiPackageJsonPath) && fs.readFileSync(apiPackageJsonPath, "utf-8").includes("@cedarjs/realtime");
24
+ const streamingEnabled = rwConfig.experimental.streamingSsr.enabled;
25
+ const rscEnabled = rwConfig.experimental?.rsc?.enabled;
26
+ const webSideDefaultBabelConfig = getWebSideDefaultBabelConfig();
27
+ const babelConfig = {
28
+ ...webSideDefaultBabelConfig,
29
+ // For RSC we don't want to include the routes auto-loader plugin as we
30
+ // handle that differently in each specific RSC build stage
31
+ overrides: rscEnabled ? webSideDefaultBabelConfig.overrides.filter((override) => {
32
+ return !override.plugins?.some((plugin) => {
33
+ return Array.isArray(plugin) && plugin[2] === "babel-plugin-redwood-routes-auto-loader";
34
+ });
35
+ }) : webSideDefaultBabelConfig.overrides
36
+ };
37
+ return [
38
+ // Only include the Buffer polyfill for non-rsc dev, for DevFatalErrorPage
39
+ // Including the polyfill plugin in any form in RSC breaks
40
+ !rscEnabled && {
41
+ ...nodePolyfills({
42
+ include: ["buffer"],
43
+ globals: {
44
+ Buffer: true
45
+ }
46
+ }),
47
+ apply: "serve"
48
+ },
49
+ {
50
+ name: "redwood-plugin-vite-html-env",
51
+ // Vite can support replacing environment variables in index.html but
52
+ // there are currently two issues with that:
53
+ // 1. It requires the environment variables to be exposed on
54
+ // `import.meta.env`, but we expose them on `process.env` in Redwood.
55
+ // 2. There's an open issue on Vite where it adds extra quotes around
56
+ // the replaced values, which breaks trying to use environment
57
+ // variables in src attributes for example.
58
+ // Until those issues are resolved, we'll do the replacement ourselves
59
+ // instead using transformIndexHtml. Doing it this was was also the
60
+ // recommended way until Vite added built-in support for it.
61
+ //
62
+ // Extra quotes issue: https://github.com/vitejs/vite/issues/13424
63
+ // transformIndexHtml being the recommended way:
64
+ // https://github.com/vitejs/vite/issues/3105#issuecomment-1059975023
65
+ transformIndexHtml: {
66
+ // Setting order: 'pre' so that it runs before the built-in
67
+ // html env replacement.
68
+ order: "pre",
69
+ handler: (html) => {
70
+ let newHtml = html;
71
+ rwConfig.web.includeEnvironmentVariables.map((envName) => {
72
+ newHtml = newHtml.replaceAll(
73
+ `%${envName}%`,
74
+ process.env[envName] || ""
75
+ );
76
+ });
77
+ Object.entries(process.env).forEach(([envName, value]) => {
78
+ if (envName.startsWith("REDWOOD_ENV_")) {
79
+ newHtml = newHtml.replaceAll(`%${envName}%`, value || "");
80
+ }
81
+ });
82
+ return newHtml;
83
+ }
84
+ }
85
+ },
86
+ {
87
+ name: "redwood-plugin-vite",
88
+ // ---------- Bundle injection ----------
89
+ // Used by Vite during dev, to inject the entrypoint.
90
+ transformIndexHtml: {
91
+ order: "pre",
92
+ handler: (html) => {
93
+ if (fs.existsSync(clientEntryPath)) {
94
+ return html.replace(
95
+ "</head>",
96
+ // @NOTE the slash in front, for windows compatibility and for pages in subdirectories
97
+ `<script type="module" src="/${relativeEntryPath}"></script>
98
+ </head>`
99
+ );
100
+ } else {
101
+ return html;
102
+ }
103
+ }
104
+ },
105
+ // Used by rollup during build to inject the entrypoint
106
+ // but note index.html does not come through as an id during dev
107
+ transform: (code, id) => {
108
+ if (fs.existsSync(clientEntryPath) && normalizePath(id) === normalizePath(rwPaths.web.html)) {
109
+ return {
110
+ code: code.replace(
111
+ "</head>",
112
+ `<script type="module" src="/${relativeEntryPath}"></script>
113
+ </head>`
114
+ ),
115
+ map: null
116
+ };
117
+ } else {
118
+ return {
119
+ code,
120
+ map: null
121
+ // Returning null here preserves the original sourcemap
122
+ };
123
+ }
124
+ },
125
+ // ---------- End Bundle injection ----------
126
+ // @MARK: Using the config hook here let's us modify the config
127
+ // but returning plugins will **not** work
128
+ config: getMergedConfig(rwConfig, rwPaths)
129
+ },
130
+ // We can remove when streaming is stable
131
+ streamingEnabled && swapApolloProvider(),
132
+ handleJsAsJsx(),
133
+ // Remove the splash-page from the bundle.
134
+ removeFromBundle(
135
+ [
136
+ {
137
+ id: /@cedarjs\/router\/dist\/splash-page/
138
+ }
139
+ ],
140
+ ["SplashPage"]
141
+ ),
142
+ !realtimeEnabled && removeFromBundle([
143
+ {
144
+ id: /@cedarjs\/web\/dist\/apollo\/sseLink/
145
+ }
146
+ ]),
147
+ react({
148
+ babel: babelConfig
149
+ })
150
+ ];
151
+ }
152
+ export {
153
+ redwoodPluginVite as default
154
+ };
@@ -0,0 +1,8 @@
1
+ export declare class StatusError extends Error {
2
+ statusCode: number;
3
+ constructor(message: string, statusCode: number);
4
+ }
5
+ export declare const hasStatusCode: (x: unknown) => x is {
6
+ statusCode: number;
7
+ };
8
+ //# sourceMappingURL=StatusError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusError.d.ts","sourceRoot":"","sources":["../../src/lib/StatusError.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;IAG3B,UAAU,EAAE,MAAM;gBADzB,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM;CAI5B;AAGD,eAAO,MAAM,aAAa,MAAO,OAAO,KAAG,CAAC,IAAI;IAAE,UAAU,EAAE,MAAM,CAAA;CACxB,CAAA"}
@@ -0,0 +1,11 @@
1
+ class StatusError extends Error {
2
+ constructor(message, statusCode) {
3
+ super(message);
4
+ this.statusCode = statusCode;
5
+ }
6
+ }
7
+ const hasStatusCode = (x) => typeof x?.statusCode === "number";
8
+ export {
9
+ StatusError,
10
+ hasStatusCode
11
+ };
@@ -0,0 +1,3 @@
1
+ export declare function getEntries(): Record<string, string>;
2
+ export declare function getEntriesFromDist(): Promise<Record<string, string>>;
3
+ //# sourceMappingURL=entries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,2BA0BzB;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAI1E"}
@@ -0,0 +1,32 @@
1
+ import {
2
+ ensurePosixPath,
3
+ getPaths,
4
+ importStatementPath
5
+ } from "@cedarjs/project-config";
6
+ import { getProject } from "@cedarjs/structure/dist/index.js";
7
+ import { makeFilePath } from "../utils.js";
8
+ function getEntries() {
9
+ const entries = {};
10
+ const rwProject = getProject(getPaths().base);
11
+ const routes = rwProject.getRouter().routes;
12
+ const pages = routes.map((route) => route.page);
13
+ for (const page of pages) {
14
+ entries[page.constName] = ensurePosixPath(importStatementPath(page.path));
15
+ }
16
+ const serverEntry = getPaths().web.entryServer;
17
+ if (!serverEntry) {
18
+ throw new Error("Server Entry file not found");
19
+ }
20
+ entries["__rwjs__ServerEntry"] = serverEntry;
21
+ entries["__rwjs__Routes"] = getPaths().web.routes;
22
+ return entries;
23
+ }
24
+ async function getEntriesFromDist() {
25
+ const entriesDist = getPaths().web.distRscEntries;
26
+ const { serverEntries } = await import(makeFilePath(entriesDist));
27
+ return serverEntries;
28
+ }
29
+ export {
30
+ getEntries,
31
+ getEntriesFromDist
32
+ };
@@ -0,0 +1,14 @@
1
+ export declare function getEnvVarDefinitions(): {
2
+ RWJS_ENV: {
3
+ RWJS_API_GRAPHQL_URL: string;
4
+ RWJS_API_URL: string;
5
+ __REDWOOD__APP_TITLE: string;
6
+ RWJS_EXP_STREAMING_SSR: boolean;
7
+ RWJS_EXP_RSC: boolean;
8
+ };
9
+ RWJS_DEBUG_ENV: {
10
+ RWJS_SRC_ROOT: string;
11
+ REDWOOD_ENV_EDITOR: string;
12
+ };
13
+ };
14
+ //# sourceMappingURL=envVarDefinitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envVarDefinitions.d.ts","sourceRoot":"","sources":["../../src/lib/envVarDefinitions.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB;;;;;;;;;;;;EAkDnC"}