@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,159 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var vite_plugin_rsc_routes_auto_loader_exports = {};
30
+ __export(vite_plugin_rsc_routes_auto_loader_exports, {
31
+ rscRoutesAutoLoader: () => rscRoutesAutoLoader
32
+ });
33
+ module.exports = __toCommonJS(vite_plugin_rsc_routes_auto_loader_exports);
34
+ var import_path = __toESM(require("path"), 1);
35
+ var import_generator = __toESM(require("@babel/generator"), 1);
36
+ var import_parser = require("@babel/parser/index.cjs");
37
+ var import_traverse = __toESM(require("@babel/traverse"), 1);
38
+ var t = __toESM(require("@babel/types"), 1);
39
+ var import_vite = require("vite");
40
+ var import_project_config = require("@cedarjs/project-config");
41
+ const generate = import_generator.default.default;
42
+ const traverse = import_traverse.default.default;
43
+ const getPathRelativeToSrc = (maybeAbsolutePath) => {
44
+ if (!import_path.default.isAbsolute(maybeAbsolutePath)) {
45
+ return maybeAbsolutePath;
46
+ }
47
+ return `./${import_path.default.relative((0, import_project_config.getPaths)().web.src, maybeAbsolutePath)}`;
48
+ };
49
+ const withRelativeImports = (page) => {
50
+ return {
51
+ ...page,
52
+ relativeImport: (0, import_project_config.ensurePosixPath)(getPathRelativeToSrc(page.importPath))
53
+ };
54
+ };
55
+ function rscRoutesAutoLoader() {
56
+ const routesFileId = (0, import_vite.normalizePath)((0, import_project_config.getPaths)().web.routes);
57
+ const pages = (0, import_project_config.processPagesDir)().map(withRelativeImports);
58
+ const duplicatePageImportNames = /* @__PURE__ */ new Set();
59
+ const sortedPageImportNames = pages.map((page) => page.importName).sort();
60
+ for (let i = 0; i < sortedPageImportNames.length - 1; i++) {
61
+ if (sortedPageImportNames[i + 1] === sortedPageImportNames[i]) {
62
+ duplicatePageImportNames.add(sortedPageImportNames[i]);
63
+ }
64
+ }
65
+ if (duplicatePageImportNames.size > 0) {
66
+ const pageNames = Array.from(duplicatePageImportNames).map((name) => `'${name}'`).join(", ");
67
+ throw new Error(
68
+ `Unable to find only a single file ending in 'Page.{js,jsx,ts,tsx}' in the following page directories: ${pageNames}`
69
+ );
70
+ }
71
+ return {
72
+ name: "rsc-routes-auto-loader-dev",
73
+ transform: async function(code, id) {
74
+ if (id !== routesFileId) {
75
+ return null;
76
+ }
77
+ if (pages.length === 0) {
78
+ return null;
79
+ }
80
+ const ext = import_path.default.extname(id);
81
+ const plugins = [];
82
+ if (ext === ".jsx") {
83
+ plugins.push("jsx");
84
+ }
85
+ const ast = (0, import_parser.parse)(code, {
86
+ sourceType: "unambiguous",
87
+ plugins
88
+ });
89
+ const importedNames = /* @__PURE__ */ new Set();
90
+ const allImports = /* @__PURE__ */ new Map();
91
+ const wrappers = /* @__PURE__ */ new Set();
92
+ traverse(ast, {
93
+ ImportDeclaration(path2) {
94
+ const importPath = path2.node.source.value;
95
+ if (importPath === null) {
96
+ return;
97
+ }
98
+ const userImportRelativePath = getPathRelativeToSrc(
99
+ (0, import_project_config.importStatementPath)(importPath)
100
+ );
101
+ const defaultSpecifier = path2.node.specifiers.filter(
102
+ (specifier) => t.isImportDefaultSpecifier(specifier)
103
+ )[0];
104
+ if (userImportRelativePath && defaultSpecifier) {
105
+ importedNames.add(defaultSpecifier.local.name);
106
+ }
107
+ path2.node.specifiers.forEach((specifier) => {
108
+ allImports.set(specifier.local.name, path2.node);
109
+ });
110
+ },
111
+ JSXElement() {
112
+ },
113
+ CallExpression(path2) {
114
+ if ((t.isIdentifier(path2.node.callee, { name: "jsxs" }) || t.isIdentifier(path2.node.callee, { name: "jsx" })) && t.isIdentifier(path2.node.arguments[0]) && path2.node.arguments[0].name === "Set") {
115
+ const jsxArgs = path2.node.arguments;
116
+ if (t.isObjectExpression(jsxArgs[1])) {
117
+ const wrapProp = jsxArgs[1].properties.find(
118
+ (prop) => t.isObjectProperty(prop) && t.isIdentifier(prop.key, { name: "wrap" })
119
+ );
120
+ if (t.isArrayExpression(wrapProp?.value)) {
121
+ wrapProp.value.elements.forEach((element) => {
122
+ if (t.isIdentifier(element)) {
123
+ wrappers.add(element.name);
124
+ }
125
+ });
126
+ } else if (t.isIdentifier(wrapProp?.value)) {
127
+ wrappers.add(wrapProp.value.name);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ });
133
+ const nonImportedPages = pages.filter(
134
+ (page) => !importedNames.has(page.importName)
135
+ );
136
+ wrappers.forEach((wrapper) => {
137
+ const wrapperImport = allImports.get(wrapper);
138
+ if (wrapperImport) {
139
+ wrapperImport.source.value = "@cedarjs/router/dist/dummyComponent";
140
+ }
141
+ });
142
+ for (const page of nonImportedPages) {
143
+ ast.program.body.unshift(
144
+ t.variableDeclaration("const", [
145
+ t.variableDeclarator(
146
+ t.identifier(page.constName),
147
+ t.arrowFunctionExpression([], t.nullLiteral())
148
+ )
149
+ ])
150
+ );
151
+ }
152
+ return generate(ast).code;
153
+ }
154
+ };
155
+ }
156
+ // Annotate the CommonJS export names for ESM import in node:
157
+ 0 && (module.exports = {
158
+ rscRoutesAutoLoader
159
+ });
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var vite_plugin_rsc_routes_imports_exports = {};
30
+ __export(vite_plugin_rsc_routes_imports_exports, {
31
+ rscRoutesImports: () => rscRoutesImports
32
+ });
33
+ module.exports = __toCommonJS(vite_plugin_rsc_routes_imports_exports);
34
+ var import_path = __toESM(require("path"), 1);
35
+ var import_generator = __toESM(require("@babel/generator"), 1);
36
+ var import_parser = require("@babel/parser/index.cjs");
37
+ var import_traverse = __toESM(require("@babel/traverse"), 1);
38
+ var t = __toESM(require("@babel/types"), 1);
39
+ var import_vite = require("vite");
40
+ var import_project_config = require("@cedarjs/project-config");
41
+ const { default: generate } = import_generator.default;
42
+ const { default: traverse } = import_traverse.default;
43
+ const getPathRelativeToSrc = (maybeAbsolutePath) => {
44
+ if (!import_path.default.isAbsolute(maybeAbsolutePath)) {
45
+ return maybeAbsolutePath;
46
+ }
47
+ return `./${import_path.default.relative((0, import_project_config.getPaths)().web.src, maybeAbsolutePath)}`;
48
+ };
49
+ const withRelativeImports = (page) => {
50
+ return {
51
+ ...page,
52
+ relativeImport: (0, import_project_config.ensurePosixPath)(getPathRelativeToSrc(page.importPath))
53
+ };
54
+ };
55
+ function rscRoutesImports() {
56
+ const routesFileId = (0, import_vite.normalizePath)((0, import_project_config.getPaths)().web.routes);
57
+ const pages = (0, import_project_config.processPagesDir)().map(withRelativeImports);
58
+ const duplicatePageImportNames = /* @__PURE__ */ new Set();
59
+ const sortedPageImportNames = pages.map((page) => page.importName).sort();
60
+ for (let i = 0; i < sortedPageImportNames.length - 1; i++) {
61
+ if (sortedPageImportNames[i + 1] === sortedPageImportNames[i]) {
62
+ duplicatePageImportNames.add(sortedPageImportNames[i]);
63
+ }
64
+ }
65
+ if (duplicatePageImportNames.size > 0) {
66
+ const pageNames = Array.from(duplicatePageImportNames).map((name) => `'${name}'`).join(", ");
67
+ throw new Error(
68
+ `Unable to find only a single file ending in 'Page.{js,jsx,ts,tsx}' in the following page directories: ${pageNames}`
69
+ );
70
+ }
71
+ return {
72
+ name: "rsc-routes-imports",
73
+ transform: async function(code, id) {
74
+ if (id !== routesFileId) {
75
+ return null;
76
+ }
77
+ if (pages.length === 0) {
78
+ return null;
79
+ }
80
+ const ext = import_path.default.extname(id);
81
+ const plugins = [];
82
+ if (ext === ".jsx") {
83
+ plugins.push("jsx");
84
+ }
85
+ const ast = (0, import_parser.parse)(code, {
86
+ sourceType: "unambiguous",
87
+ plugins
88
+ });
89
+ const importedNames = /* @__PURE__ */ new Set();
90
+ traverse(ast, {
91
+ ImportDeclaration(path2) {
92
+ const importPath = path2.node.source.value;
93
+ if (importPath === null) {
94
+ return;
95
+ }
96
+ const userImportRelativePath = getPathRelativeToSrc(
97
+ (0, import_project_config.importStatementPath)(path2.node.source?.value)
98
+ );
99
+ const defaultSpecifier = path2.node.specifiers.filter(
100
+ (specifier) => t.isImportDefaultSpecifier(specifier)
101
+ )[0];
102
+ if (userImportRelativePath && defaultSpecifier) {
103
+ importedNames.add(defaultSpecifier.local.name);
104
+ }
105
+ }
106
+ });
107
+ const nonImportedPages = pages.filter((page) => {
108
+ return !importedNames.has(page.importName);
109
+ });
110
+ for (const page of nonImportedPages) {
111
+ ast.program.body.unshift(
112
+ t.importDeclaration(
113
+ [t.importDefaultSpecifier(t.identifier(page.importName))],
114
+ t.stringLiteral(page.importPath)
115
+ )
116
+ );
117
+ }
118
+ return generate(ast).code;
119
+ }
120
+ };
121
+ }
122
+ // Annotate the CommonJS export names for ESM import in node:
123
+ 0 && (module.exports = {
124
+ rscRoutesImports
125
+ });
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var vite_plugin_rsc_ssr_router_import_exports = {};
30
+ __export(vite_plugin_rsc_ssr_router_import_exports, {
31
+ rscSsrRouterImport: () => rscSsrRouterImport
32
+ });
33
+ module.exports = __toCommonJS(vite_plugin_rsc_ssr_router_import_exports);
34
+ var import_node_path = __toESM(require("node:path"), 1);
35
+ var import_generator = __toESM(require("@babel/generator"), 1);
36
+ var import_parser = require("@babel/parser/index.cjs");
37
+ var import_traverse = __toESM(require("@babel/traverse"), 1);
38
+ var t = __toESM(require("@babel/types"), 1);
39
+ var import_vite = require("vite");
40
+ var import_project_config = require("@cedarjs/project-config");
41
+ const { default: generate } = import_generator.default;
42
+ const { default: traverse } = import_traverse.default;
43
+ function rscSsrRouterImport() {
44
+ const routesFileId = (0, import_vite.normalizePath)((0, import_project_config.getPaths)().web.routes);
45
+ return {
46
+ name: "rsc-ssr-router-import",
47
+ transform: async function(code, id) {
48
+ if (id !== routesFileId) {
49
+ return null;
50
+ }
51
+ const ext = import_node_path.default.extname(id);
52
+ const plugins = [];
53
+ if (ext === ".jsx") {
54
+ plugins.push("jsx");
55
+ }
56
+ const ast = (0, import_parser.parse)(code, {
57
+ sourceType: "unambiguous",
58
+ plugins
59
+ });
60
+ traverse(ast, {
61
+ ImportDeclaration(path2) {
62
+ const source = path2.node.source.value;
63
+ if (source === "@cedarjs/router/RscRouter") {
64
+ path2.node.source = t.stringLiteral("@cedarjs/router/SsrRouter");
65
+ }
66
+ }
67
+ });
68
+ return generate(ast).code;
69
+ }
70
+ };
71
+ }
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ rscSsrRouterImport
75
+ });
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var vite_plugin_rsc_transform_client_exports = {};
30
+ __export(vite_plugin_rsc_transform_client_exports, {
31
+ rscTransformUseClientPlugin: () => rscTransformUseClientPlugin
32
+ });
33
+ module.exports = __toCommonJS(vite_plugin_rsc_transform_client_exports);
34
+ var import_node_path = __toESM(require("node:path"), 1);
35
+ var acorn = __toESM(require("acorn-loose"), 1);
36
+ var import_vite = require("vite");
37
+ var import_project_config = require("@cedarjs/project-config");
38
+ function rscTransformUseClientPlugin(clientEntryFiles) {
39
+ return {
40
+ name: "rsc-transform-use-client-plugin",
41
+ transform: async function(code, id) {
42
+ if (!code.includes("use client")) {
43
+ return code;
44
+ }
45
+ if (code.includes("$$id")) {
46
+ return code;
47
+ }
48
+ let body;
49
+ try {
50
+ body = acorn.parse(code, {
51
+ ecmaVersion: 2024,
52
+ sourceType: "module"
53
+ }).body;
54
+ } catch (x) {
55
+ console.error("Error parsing %s %s", id, x.message);
56
+ return code;
57
+ }
58
+ let useClient = false;
59
+ let useServer = false;
60
+ for (const node of body) {
61
+ if (node.type !== "ExpressionStatement" || !node.directive) {
62
+ break;
63
+ }
64
+ if (node.directive === "use client") {
65
+ useClient = true;
66
+ }
67
+ if (node.directive === "use server") {
68
+ useServer = true;
69
+ }
70
+ }
71
+ if (!useClient) {
72
+ return code;
73
+ }
74
+ if (useClient && useServer) {
75
+ throw new Error(
76
+ 'Cannot have both "use client" and "use server" directives in the same file.'
77
+ );
78
+ }
79
+ const transformedCode = await transformClientModule(
80
+ code,
81
+ body,
82
+ id,
83
+ clientEntryFiles
84
+ );
85
+ return transformedCode;
86
+ }
87
+ };
88
+ }
89
+ function addExportNames(names, node) {
90
+ switch (node.type) {
91
+ case "Identifier":
92
+ names.push(node.name);
93
+ return;
94
+ case "ObjectPattern":
95
+ for (const property of node.properties) {
96
+ addExportNames(names, property);
97
+ }
98
+ return;
99
+ case "ArrayPattern":
100
+ for (const element of node.elements) {
101
+ if (element) {
102
+ addExportNames(names, element);
103
+ }
104
+ }
105
+ return;
106
+ case "Property":
107
+ addExportNames(names, node.value);
108
+ return;
109
+ case "AssignmentPattern":
110
+ addExportNames(names, node.left);
111
+ return;
112
+ case "RestElement":
113
+ addExportNames(names, node.argument);
114
+ return;
115
+ case "ParenthesizedExpression":
116
+ addExportNames(names, node.expression);
117
+ return;
118
+ }
119
+ }
120
+ async function parseExportNamesIntoNames(code, body, names) {
121
+ for (const node of body) {
122
+ switch (node.type) {
123
+ case "ExportAllDeclaration":
124
+ if (node.exported) {
125
+ addExportNames(names, node.exported);
126
+ continue;
127
+ } else {
128
+ let childBody;
129
+ try {
130
+ childBody = acorn.parse(code, {
131
+ ecmaVersion: 2024,
132
+ sourceType: "module"
133
+ }).body;
134
+ } catch (x) {
135
+ console.error("Error parsing %s %s", "", x.message);
136
+ continue;
137
+ }
138
+ await parseExportNamesIntoNames(code, childBody, names);
139
+ continue;
140
+ }
141
+ case "ExportDefaultDeclaration":
142
+ names.push("default");
143
+ continue;
144
+ case "ExportNamedDeclaration":
145
+ if (node.declaration) {
146
+ if (node.declaration.type === "VariableDeclaration") {
147
+ const declarations = node.declaration.declarations;
148
+ for (const declaration of declarations) {
149
+ addExportNames(names, declaration.id);
150
+ }
151
+ } else {
152
+ addExportNames(names, node.declaration.id);
153
+ }
154
+ }
155
+ if (node.specifiers) {
156
+ const specifiers = node.specifiers;
157
+ for (const specifier of specifiers) {
158
+ addExportNames(names, specifier.exported);
159
+ }
160
+ }
161
+ continue;
162
+ // For CJS support
163
+ case "ExpressionStatement": {
164
+ let assignmentExpression = null;
165
+ if (node.expression.type === "AssignmentExpression") {
166
+ assignmentExpression = node.expression;
167
+ } else if (node.expression.type === "LogicalExpression" && node.expression.right.type === "AssignmentExpression") {
168
+ assignmentExpression = node.expression.right;
169
+ }
170
+ if (!assignmentExpression) {
171
+ continue;
172
+ }
173
+ if (assignmentExpression.left.type !== "MemberExpression") {
174
+ continue;
175
+ }
176
+ if (assignmentExpression.left.object.type !== "Identifier") {
177
+ continue;
178
+ }
179
+ if (assignmentExpression.left.object.name === "exports" && assignmentExpression.left.property.type === "Identifier") {
180
+ if (!names.includes(assignmentExpression.left.property.name)) {
181
+ names.push(assignmentExpression.left.property.name);
182
+ }
183
+ } else if (assignmentExpression.left.object.name === "module" && assignmentExpression.left.property.type === "Identifier" && assignmentExpression.left.property.name === "exports" && assignmentExpression.right.type === "ObjectExpression") {
184
+ assignmentExpression.right.properties.forEach((property) => {
185
+ if (property.type === "Property" && property.key.type === "Identifier") {
186
+ if (!names.includes(property.key.name)) {
187
+ names.push(property.key.name);
188
+ }
189
+ }
190
+ });
191
+ }
192
+ continue;
193
+ }
194
+ }
195
+ }
196
+ }
197
+ async function transformClientModule(code, body, url, clientEntryFiles) {
198
+ const names = [];
199
+ await parseExportNamesIntoNames(code, body, names);
200
+ console.log("transformClientModule names", names);
201
+ const entryRecord = Object.entries(clientEntryFiles).find(
202
+ ([_key, value]) => value === url
203
+ );
204
+ const loadId = (0, import_vite.normalizePath)(
205
+ entryRecord ? import_node_path.default.join((0, import_project_config.getPaths)().web.distRsc, "assets", `${entryRecord[0]}.mjs`) : url
206
+ );
207
+ let newSrc = 'import {registerClientReference} from "react-server-dom-webpack/server";\n';
208
+ for (const name of names) {
209
+ if (name === "default") {
210
+ newSrc += "export default registerClientReference(function() {";
211
+ newSrc += "throw new Error(" + JSON.stringify(
212
+ "Attempted to call the default export of " + url + " from the server but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."
213
+ ) + ");";
214
+ } else {
215
+ newSrc += "export const " + name + " = ";
216
+ newSrc += "registerClientReference(function() {";
217
+ newSrc += "throw new Error(" + JSON.stringify(
218
+ "Attempted to call " + name + "() from the server but " + name + " is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."
219
+ ) + ");";
220
+ }
221
+ newSrc += `},${JSON.stringify(loadId)},${JSON.stringify(name)})
222
+ ;`;
223
+ }
224
+ return newSrc;
225
+ }
226
+ // Annotate the CommonJS export names for ESM import in node:
227
+ 0 && (module.exports = {
228
+ rscTransformUseClientPlugin
229
+ });