@cedarjs/vite 5.0.6 → 5.0.7-next.219

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 (152) hide show
  1. package/dist/api/vite-plugin-cedar-vitest-api-preset.d.ts.map +1 -1
  2. package/dist/api/vite-plugin-cedar-vitest-api-preset.js +4 -0
  3. package/dist/apiDevMiddleware.d.ts.map +1 -1
  4. package/dist/apiDevMiddleware.js +117 -15
  5. package/dist/buildApp.d.ts.map +1 -1
  6. package/dist/buildApp.js +79 -18
  7. package/dist/buildRouteHooks.d.ts.map +1 -1
  8. package/dist/buildRouteHooks.js +36 -4
  9. package/dist/bundled/react-server-dom-webpack.server.js +192 -99
  10. package/dist/cedar-unified-dev.d.ts +18 -0
  11. package/dist/cedar-unified-dev.d.ts.map +1 -1
  12. package/dist/cedar-unified-dev.js +39 -5
  13. package/dist/devFeServer.js +3 -8
  14. package/dist/index.d.ts +11 -4
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +51 -19
  17. package/dist/lib/generateDiffSourceMap.d.ts +18 -0
  18. package/dist/lib/generateDiffSourceMap.d.ts.map +1 -0
  19. package/dist/lib/generateDiffSourceMap.js +151 -0
  20. package/dist/lib/getMergedConfig.d.ts.map +1 -1
  21. package/dist/lib/getMergedConfig.js +16 -6
  22. package/dist/lib/registerFwGlobalsAndShims.d.ts.map +1 -1
  23. package/dist/lib/registerFwGlobalsAndShims.js +14 -4
  24. package/dist/plugins/vite-plugin-cedar-api-import-guard.d.ts +13 -0
  25. package/dist/plugins/vite-plugin-cedar-api-import-guard.d.ts.map +1 -0
  26. package/dist/plugins/vite-plugin-cedar-api-import-guard.js +17 -0
  27. package/dist/plugins/vite-plugin-cedar-auto-import.d.ts +1 -1
  28. package/dist/plugins/vite-plugin-cedar-auto-import.d.ts.map +1 -1
  29. package/dist/plugins/vite-plugin-cedar-auto-import.js +8 -1
  30. package/dist/plugins/vite-plugin-cedar-cell.d.ts.map +1 -1
  31. package/dist/plugins/vite-plugin-cedar-cell.js +2 -1
  32. package/dist/plugins/vite-plugin-cedar-data-uri-shim.d.ts +3 -0
  33. package/dist/plugins/vite-plugin-cedar-data-uri-shim.d.ts.map +1 -0
  34. package/dist/plugins/vite-plugin-cedar-data-uri-shim.js +43 -0
  35. package/dist/plugins/vite-plugin-cedar-directory-named-import.d.ts +12 -0
  36. package/dist/plugins/vite-plugin-cedar-directory-named-import.d.ts.map +1 -0
  37. package/dist/plugins/vite-plugin-cedar-directory-named-import.js +35 -0
  38. package/dist/plugins/vite-plugin-cedar-gqlorm-inject.d.ts +29 -0
  39. package/dist/plugins/vite-plugin-cedar-gqlorm-inject.d.ts.map +1 -0
  40. package/dist/plugins/vite-plugin-cedar-gqlorm-inject.js +76 -0
  41. package/dist/plugins/vite-plugin-cedar-graphql-options-extract.d.ts +42 -0
  42. package/dist/plugins/vite-plugin-cedar-graphql-options-extract.d.ts.map +1 -0
  43. package/dist/plugins/vite-plugin-cedar-graphql-options-extract.js +103 -0
  44. package/dist/plugins/vite-plugin-cedar-import-dir.d.ts.map +1 -1
  45. package/dist/plugins/vite-plugin-cedar-import-dir.js +44 -31
  46. package/dist/plugins/vite-plugin-cedar-log-formatter-dev.d.ts +28 -0
  47. package/dist/plugins/vite-plugin-cedar-log-formatter-dev.d.ts.map +1 -0
  48. package/dist/plugins/vite-plugin-cedar-log-formatter-dev.js +67 -0
  49. package/dist/plugins/vite-plugin-cedar-mock-cell-data.d.ts +28 -0
  50. package/dist/plugins/vite-plugin-cedar-mock-cell-data.d.ts.map +1 -0
  51. package/dist/plugins/vite-plugin-cedar-mock-cell-data.js +247 -0
  52. package/dist/plugins/vite-plugin-cedar-otel-wrapping.d.ts +39 -0
  53. package/dist/plugins/vite-plugin-cedar-otel-wrapping.d.ts.map +1 -0
  54. package/dist/plugins/vite-plugin-cedar-otel-wrapping.js +200 -0
  55. package/dist/plugins/vite-plugin-cedar-universal-deploy.d.ts.map +1 -1
  56. package/dist/plugins/vite-plugin-cedar-universal-deploy.js +92 -90
  57. package/dist/plugins/vite-plugin-cedarjs-job-path-injector.d.ts +29 -0
  58. package/dist/plugins/vite-plugin-cedarjs-job-path-injector.d.ts.map +1 -1
  59. package/dist/plugins/vite-plugin-cedarjs-job-path-injector.js +63 -81
  60. package/dist/plugins/vite-plugin-cedarjs-resolve-cedar-style-imports.d.ts.map +1 -1
  61. package/dist/plugins/vite-plugin-cedarjs-resolve-cedar-style-imports.js +14 -0
  62. package/dist/plugins/{vite-plugin-cedar-context-wrapping.d.ts → vite-plugin-handler-als-wrapping.d.ts} +12 -12
  63. package/dist/plugins/vite-plugin-handler-als-wrapping.d.ts.map +1 -0
  64. package/dist/plugins/{vite-plugin-cedar-context-wrapping.js → vite-plugin-handler-als-wrapping.js} +16 -16
  65. package/dist/plugins/vite-plugin-swap-apollo-provider.d.ts +3 -0
  66. package/dist/plugins/vite-plugin-swap-apollo-provider.d.ts.map +1 -1
  67. package/dist/plugins/vite-plugin-swap-apollo-provider.js +2 -2
  68. package/dist/rsc/rscBuildForSsr.d.ts.map +1 -1
  69. package/dist/rsc/rscBuildForSsr.js +3 -5
  70. package/dist/streaming/buildForStreamingServer.d.ts.map +1 -1
  71. package/dist/streaming/buildForStreamingServer.js +3 -5
  72. package/package.json +41 -52
  73. package/dist/cjs/ClientRouter.d.ts +0 -1
  74. package/dist/cjs/api/vite-plugin-cedar-vitest-api-preset.js +0 -37
  75. package/dist/cjs/apiDevMiddleware.js +0 -371
  76. package/dist/cjs/build/build.d.ts +0 -1
  77. package/dist/cjs/build/build.js +0 -58
  78. package/dist/cjs/buildApp.js +0 -306
  79. package/dist/cjs/buildFeServer.d.ts +0 -1
  80. package/dist/cjs/buildFeServer.js +0 -63
  81. package/dist/cjs/buildRouteHooks.js +0 -80
  82. package/dist/cjs/buildRouteManifest.js +0 -92
  83. package/dist/cjs/buildRscClientAndServer.js +0 -54
  84. package/dist/cjs/cedar-unified-dev.js +0 -310
  85. package/dist/cjs/client.d.ts +0 -1
  86. package/dist/cjs/clientSsr.d.ts +0 -1
  87. package/dist/cjs/devFeServer.js +0 -157
  88. package/dist/cjs/index.d.ts +0 -1
  89. package/dist/cjs/index.js +0 -141
  90. package/dist/cjs/lib/StatusError.js +0 -37
  91. package/dist/cjs/lib/entries.js +0 -52
  92. package/dist/cjs/lib/getMergedConfig.js +0 -185
  93. package/dist/cjs/lib/onWarn.js +0 -36
  94. package/dist/cjs/lib/registerFwGlobalsAndShims.js +0 -102
  95. package/dist/cjs/lib/workspacePackageAliases.js +0 -107
  96. package/dist/cjs/middleware/index.js +0 -22
  97. package/dist/cjs/middleware/invokeMiddleware.js +0 -52
  98. package/dist/cjs/middleware/register.js +0 -105
  99. package/dist/cjs/middleware/types.js +0 -16
  100. package/dist/cjs/package.json +0 -1
  101. package/dist/cjs/plugins/vite-plugin-cedar-auto-import.js +0 -107
  102. package/dist/cjs/plugins/vite-plugin-cedar-cell.js +0 -183
  103. package/dist/cjs/plugins/vite-plugin-cedar-cjs-compat.js +0 -341
  104. package/dist/cjs/plugins/vite-plugin-cedar-context-wrapping.js +0 -95
  105. package/dist/cjs/plugins/vite-plugin-cedar-entry-injection.js +0 -107
  106. package/dist/cjs/plugins/vite-plugin-cedar-html-env.js +0 -67
  107. package/dist/cjs/plugins/vite-plugin-cedar-import-dir.js +0 -118
  108. package/dist/cjs/plugins/vite-plugin-cedar-node-polyfills.js +0 -43
  109. package/dist/cjs/plugins/vite-plugin-cedar-remove-dev-fatal-error-page.js +0 -61
  110. package/dist/cjs/plugins/vite-plugin-cedar-remove-from-bundle.js +0 -76
  111. package/dist/cjs/plugins/vite-plugin-cedar-routes-auto-loader.js +0 -126
  112. package/dist/cjs/plugins/vite-plugin-cedar-universal-deploy.js +0 -346
  113. package/dist/cjs/plugins/vite-plugin-cedar-wait-for-api-server.js +0 -134
  114. package/dist/cjs/plugins/vite-plugin-cedarjs-job-path-injector.js +0 -134
  115. package/dist/cjs/plugins/vite-plugin-cedarjs-resolve-cedar-style-imports.js +0 -106
  116. package/dist/cjs/plugins/vite-plugin-jsx-loader.js +0 -42
  117. package/dist/cjs/plugins/vite-plugin-merged-config.js +0 -39
  118. package/dist/cjs/plugins/vite-plugin-rsc-analyze.js +0 -104
  119. package/dist/cjs/plugins/vite-plugin-rsc-reload.js +0 -75
  120. package/dist/cjs/plugins/vite-plugin-rsc-routes-auto-loader.js +0 -159
  121. package/dist/cjs/plugins/vite-plugin-rsc-routes-imports.js +0 -125
  122. package/dist/cjs/plugins/vite-plugin-rsc-ssr-router-import.js +0 -75
  123. package/dist/cjs/plugins/vite-plugin-rsc-transform-client.js +0 -228
  124. package/dist/cjs/plugins/vite-plugin-rsc-transform-server.js +0 -398
  125. package/dist/cjs/plugins/vite-plugin-swap-apollo-provider.js +0 -46
  126. package/dist/cjs/rsc/rscBuildAnalyze.js +0 -126
  127. package/dist/cjs/rsc/rscBuildClient.js +0 -91
  128. package/dist/cjs/rsc/rscBuildCopyCssAssets.js +0 -56
  129. package/dist/cjs/rsc/rscBuildEntriesFile.js +0 -115
  130. package/dist/cjs/rsc/rscBuildForServer.js +0 -168
  131. package/dist/cjs/rsc/rscBuildForSsr.js +0 -173
  132. package/dist/cjs/rsc/rscBuildRwEnvVars.js +0 -56
  133. package/dist/cjs/rsc/rscRenderer.js +0 -165
  134. package/dist/cjs/rsc/rscRequestHandler.js +0 -162
  135. package/dist/cjs/rsc/rscStudioHandlers.js +0 -156
  136. package/dist/cjs/runFeServer.js +0 -165
  137. package/dist/cjs/streaming/buildForStreamingServer.js +0 -65
  138. package/dist/cjs/streaming/collectCss.js +0 -52
  139. package/dist/cjs/streaming/createReactStreamingHandler.js +0 -173
  140. package/dist/cjs/streaming/streamHelpers.js +0 -230
  141. package/dist/cjs/streaming/transforms/bufferedTransform.js +0 -61
  142. package/dist/cjs/streaming/transforms/cancelTimeoutTransform.js +0 -34
  143. package/dist/cjs/streaming/transforms/encode-decode.js +0 -36
  144. package/dist/cjs/streaming/transforms/serverInjectionTransform.js +0 -84
  145. package/dist/cjs/streaming/triggerRouteHooks.js +0 -96
  146. package/dist/cjs/types.js +0 -16
  147. package/dist/cjs/utils.js +0 -92
  148. package/dist/package.json +0 -1
  149. package/dist/plugins/vite-plugin-cedar-context-wrapping.d.ts.map +0 -1
  150. package/dist/plugins/vite-plugin-cedar-node-polyfills.d.ts +0 -3
  151. package/dist/plugins/vite-plugin-cedar-node-polyfills.d.ts.map +0 -1
  152. package/dist/plugins/vite-plugin-cedar-node-polyfills.js +0 -19
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin-cedar-vitest-api-preset.d.ts","sourceRoot":"","sources":["../../src/api/vite-plugin-cedar-vitest-api-preset.ts"],"names":[],"mappings":"AAQA,wBAAgB,iBAAiB,kEAOhC"}
1
+ {"version":3,"file":"vite-plugin-cedar-vitest-api-preset.d.ts","sourceRoot":"","sources":["../../src/api/vite-plugin-cedar-vitest-api-preset.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,kEAShC"}
@@ -3,9 +3,13 @@ import {
3
3
  cedarVitestApiConfigPlugin,
4
4
  trackDbImportsPlugin
5
5
  } from "@cedarjs/testing/api/vitest";
6
+ import { cedarImportDirPlugin } from "../plugins/vite-plugin-cedar-import-dir.js";
7
+ import { cedarjsJobPathInjectorPlugin } from "../plugins/vite-plugin-cedarjs-job-path-injector.js";
6
8
  import { cedarjsResolveCedarStyleImportsPlugin } from "../plugins/vite-plugin-cedarjs-resolve-cedar-style-imports.js";
7
9
  function cedarVitestPreset() {
8
10
  return [
11
+ cedarImportDirPlugin(),
12
+ cedarjsJobPathInjectorPlugin(),
9
13
  cedarVitestApiConfigPlugin(),
10
14
  autoImportsPlugin(),
11
15
  cedarjsResolveCedarStyleImportsPlugin(),
@@ -1 +1 @@
1
- {"version":3,"file":"apiDevMiddleware.d.ts","sourceRoot":"","sources":["../src/apiDevMiddleware.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,MAAM,CAAA;AA2BrD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,aAAa,iBAe/D;AA+GD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CAgFlE;AA0BD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CA0EhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,KAIrB,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAoFnD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,UAAU,EAAE,aAAa,CAAA;IACzB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CACjD,CAAC,CAcD"}
1
+ {"version":3,"file":"apiDevMiddleware.d.ts","sourceRoot":"","sources":["../src/apiDevMiddleware.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAsB,aAAa,EAAE,MAAM,MAAM,CAAA;AA4E7D,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,aAAa,iBAe/D;AA+GD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CAyMlE;AA0BD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CA0EhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,KAIrB,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAmGnD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,UAAU,EAAE,aAAa,CAAA;IACzB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CACjD,CAAC,CAcD"}
@@ -1,19 +1,49 @@
1
+ import fs from "node:fs";
1
2
  import { glob } from "node:fs/promises";
2
3
  import path from "node:path";
3
4
  import { pathToFileURL } from "node:url";
4
5
  import ansis from "ansis";
5
6
  import { normalizePath } from "vite";
7
+ import { gqlPlugin as gqlTagPlugin } from "vite-plugin-graphql-tag";
8
+ import tsPathsMod from "vite-tsconfig-paths";
9
+ const tsconfigPaths = (
10
+ // @ts-expect-error – .default only exists at runtime in CJS double-wrap
11
+ // interop
12
+ tsPathsMod.default?.default || tsPathsMod.default || tsPathsMod
13
+ );
6
14
  import { buildCedarContext, wrapLegacyHandler } from "@cedarjs/api/runtime";
7
15
  import {
8
- getApiSideBabelPlugins,
16
+ getApiSideBabelConfigPath,
17
+ getApiSideBabelPluginsForVite,
9
18
  transformWithBabel
10
19
  } from "@cedarjs/babel-config";
11
20
  import { getAsyncStoreInstance } from "@cedarjs/context/dist/store";
12
21
  import { createGraphQLYoga } from "@cedarjs/graphql-server";
13
- import { getConfig, getPaths, projectSideIsEsm } from "@cedarjs/project-config";
22
+ import { applyGqlormInject } from "@cedarjs/internal/dist/build/api-graphql-transforms.js";
23
+ import { getConfig, getPaths } from "@cedarjs/project-config";
24
+ import { generateDiffSourceMap } from "./lib/generateDiffSourceMap.js";
14
25
  import { getWorkspacePackageAliases } from "./lib/workspacePackageAliases.js";
26
+ import { cedarAutoImportsPlugin } from "./plugins/vite-plugin-cedar-auto-import.js";
27
+ import { cedarDirectoryNamedImportPlugin } from "./plugins/vite-plugin-cedar-directory-named-import.js";
28
+ import { applyGraphqlOptionsExtract } from "./plugins/vite-plugin-cedar-graphql-options-extract.js";
29
+ import { cedarImportDirPlugin } from "./plugins/vite-plugin-cedar-import-dir.js";
30
+ import { cedarApiLogFormatterDevPlugin } from "./plugins/vite-plugin-cedar-log-formatter-dev.js";
31
+ import { applyOtelWrapping } from "./plugins/vite-plugin-cedar-otel-wrapping.js";
32
+ import { cedarjsJobPathInjectorPlugin } from "./plugins/vite-plugin-cedarjs-job-path-injector.js";
33
+ function resolveWithExtensions(id) {
34
+ if (fs.existsSync(id) && fs.statSync(id).isFile()) {
35
+ return id;
36
+ }
37
+ for (const ext of [".js", ".ts", ".jsx", ".tsx", ".mjs", ".mts"]) {
38
+ const withExt = id + ext;
39
+ if (fs.existsSync(withExt)) {
40
+ return withExt;
41
+ }
42
+ }
43
+ return id;
44
+ }
15
45
  const LAMBDA_FUNCTIONS = {};
16
- let graphqlYoga = null;
46
+ let loadedGraphqlServer = null;
17
47
  let loadApiFunctionsInFlight = null;
18
48
  let needsReloadAfterInFlight = false;
19
49
  async function loadApiFunctions(viteServer) {
@@ -104,9 +134,9 @@ async function internalLoadApiFunctions(viteServer) {
104
134
  await Promise.all(imports);
105
135
  if (extractedGraphqlOptions) {
106
136
  const { yoga } = await createGraphQLYoga(extractedGraphqlOptions);
107
- graphqlYoga = yoga;
137
+ loadedGraphqlServer = { yoga, options: extractedGraphqlOptions };
108
138
  } else {
109
- graphqlYoga = null;
139
+ loadedGraphqlServer = null;
110
140
  }
111
141
  console.log(
112
142
  ansis.dim.italic("...Done importing in " + (Date.now() - tsImport) + " ms")
@@ -115,12 +145,8 @@ async function internalLoadApiFunctions(viteServer) {
115
145
  async function createApiViteServer() {
116
146
  const cedarPaths = getPaths();
117
147
  const cedarConfig = getConfig();
118
- const isEsm = projectSideIsEsm("api");
119
148
  const normalizedBase = normalizePath(cedarPaths.base);
120
- const babelPlugins = getApiSideBabelPlugins({
121
- openTelemetry: (cedarConfig.experimental?.opentelemetry?.enabled ?? false) && (cedarConfig.experimental?.opentelemetry?.wrapApi ?? false),
122
- projectIsEsm: isEsm
123
- });
149
+ const babelPlugins = getApiSideBabelConfigPath() ? getApiSideBabelPluginsForVite() : null;
124
150
  const workspacePkgSourceMap = Object.fromEntries(
125
151
  Object.entries(getWorkspacePackageAliases(cedarPaths, cedarConfig)).map(
126
152
  ([name, sourceFile]) => [name, normalizePath(sourceFile)]
@@ -140,6 +166,36 @@ async function createApiViteServer() {
140
166
  alias: workspacePkgSourceMap
141
167
  },
142
168
  plugins: [
169
+ // tsconfigPaths resolves user-defined tsconfig.json `paths` aliases; it
170
+ // replaces the Babel module-resolver's tsconfig-paths handling for dev.
171
+ tsconfigPaths(),
172
+ cedarApiLogFormatterDevPlugin(),
173
+ {
174
+ name: "cedar-api-src-redirect",
175
+ enforce: "pre",
176
+ resolveId(id, importer) {
177
+ const normalizedImporter = importer && normalizePath(importer);
178
+ const normalizedApiSrc = normalizePath(cedarPaths.api.src);
179
+ if (!normalizedImporter?.startsWith(`${normalizedApiSrc}/`)) {
180
+ return null;
181
+ }
182
+ if (id.startsWith("src/")) {
183
+ return resolveWithExtensions(
184
+ path.join(cedarPaths.api.src, id.slice(4))
185
+ );
186
+ }
187
+ return null;
188
+ }
189
+ },
190
+ cedarImportDirPlugin(),
191
+ cedarDirectoryNamedImportPlugin(),
192
+ cedarAutoImportsPlugin(),
193
+ cedarjsJobPathInjectorPlugin(),
194
+ (() => {
195
+ const p = gqlTagPlugin();
196
+ p.enforce = "post";
197
+ return p;
198
+ })(),
143
199
  {
144
200
  name: "cedar-api-babel-transform",
145
201
  enforce: "pre",
@@ -153,12 +209,52 @@ async function createApiViteServer() {
153
209
  if (!id.startsWith(normalizedBase)) {
154
210
  return null;
155
211
  }
212
+ let sourceCode = code;
213
+ let sourceMap = null;
214
+ if (normalizePath(id).endsWith("/graphql.ts") || normalizePath(id).endsWith("/graphql.js")) {
215
+ const extracted = applyGraphqlOptionsExtract(sourceCode);
216
+ if (extracted) {
217
+ sourceCode = extracted.code;
218
+ sourceMap = extracted.map;
219
+ }
220
+ const injected = applyGqlormInject(sourceCode, id);
221
+ if (injected) {
222
+ sourceCode = injected;
223
+ sourceMap = null;
224
+ }
225
+ }
156
226
  try {
227
+ if (cedarConfig.experimental?.opentelemetry?.enabled && cedarConfig.experimental?.opentelemetry?.wrapApi) {
228
+ const relativePath = normalizePath(id).slice(
229
+ normalizedBase.length + "/api/src/".length
230
+ );
231
+ const apiFolder = relativePath.split("/")[0] ?? "?";
232
+ const wrapped = applyOtelWrapping(sourceCode, id, apiFolder);
233
+ if (wrapped) {
234
+ sourceCode = wrapped;
235
+ sourceMap = null;
236
+ }
237
+ }
238
+ if (!babelPlugins) {
239
+ if (sourceCode === code) {
240
+ return null;
241
+ }
242
+ return {
243
+ code: sourceCode,
244
+ map: sourceMap ?? generateDiffSourceMap(code, sourceCode)
245
+ };
246
+ }
247
+ const inputSourceMap = sourceCode === code ? null : sourceMap ?? generateDiffSourceMap(code, sourceCode);
248
+ if (inputSourceMap) {
249
+ inputSourceMap.sources = [id];
250
+ }
157
251
  const result = await transformWithBabel(
158
- code,
252
+ sourceCode,
159
253
  id,
160
254
  babelPlugins,
161
- true
255
+ true,
256
+ true,
257
+ inputSourceMap ?? void 0
162
258
  );
163
259
  if (!result?.code) {
164
260
  return null;
@@ -264,16 +360,22 @@ function createApiFetchHandler() {
264
360
  pathname = "/";
265
361
  }
266
362
  if (pathname === "/graphql" || pathname.startsWith("/graphql/")) {
267
- if (!graphqlYoga) {
363
+ const graphqlServer = loadedGraphqlServer;
364
+ if (!graphqlServer) {
268
365
  return new Response(
269
366
  JSON.stringify({ error: "GraphQL Yoga instance not initialized" }),
270
367
  { status: 503, headers: { "Content-Type": "application/json" } }
271
368
  );
272
369
  }
273
- const yoga = graphqlYoga;
274
370
  return getAsyncStoreInstance().run(/* @__PURE__ */ new Map(), async () => {
275
371
  try {
276
- return await yoga.handle(request, { request });
372
+ const cedarContext = await buildCedarContext(request, {
373
+ authDecoder: graphqlServer.options.authDecoder
374
+ });
375
+ return await graphqlServer.yoga.handle(request, {
376
+ request,
377
+ cedarContext
378
+ });
277
379
  } catch (e) {
278
380
  if (!!e && typeof e === "object" && "code" in e && e.code === "ERR_STREAM_PREMATURE_CLOSE") {
279
381
  return new Response(null, { status: 499 });
@@ -1 +1 @@
1
- {"version":3,"file":"buildApp.d.ts","sourceRoot":"","sources":["../src/buildApp.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,EAClC,OAAe,EACf,SAA0B,EAC1B,EAAU,GACX,GAAE,oBAAyB,iBA8U3B"}
1
+ {"version":3,"file":"buildApp.d.ts","sourceRoot":"","sources":["../src/buildApp.ts"],"names":[],"mappings":"AA6DA,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,EAClC,OAAe,EACf,SAA0B,EAC1B,EAAU,GACX,GAAE,oBAAyB,iBAya3B"}
package/dist/buildApp.js CHANGED
@@ -3,16 +3,37 @@ import path from "node:path";
3
3
  import { catchAllEntry, getAllEntries } from "@universal-deploy/store";
4
4
  import { catchAll } from "@universal-deploy/vite";
5
5
  import { createBuilder, normalizePath } from "vite";
6
+ import { gqlPlugin as gqlTagPlugin } from "vite-plugin-graphql-tag";
7
+ import tsPathsMod from "vite-tsconfig-paths";
8
+ const tsconfigPaths = (
9
+ // @ts-expect-error – .default only exists at runtime in CJS double-wrap
10
+ // interop
11
+ tsPathsMod.default?.default || tsPathsMod.default || tsPathsMod
12
+ );
6
13
  import {
7
- getApiSideBabelPlugins,
14
+ getApiSideBabelConfigPath,
15
+ getApiSideBabelPluginsForVite,
8
16
  transformWithBabel
9
17
  } from "@cedarjs/babel-config";
18
+ import {
19
+ applyEsmExtensions,
20
+ applySrcAlias
21
+ } from "@cedarjs/internal/dist/build/api.js";
10
22
  import { findApiFiles } from "@cedarjs/internal/dist/files.js";
11
23
  import { getConfig, getPaths, projectSideIsEsm } from "@cedarjs/project-config";
24
+ import { generateDiffSourceMap } from "./lib/generateDiffSourceMap.js";
12
25
  import { getWorkspacePackageAliases } from "./lib/workspacePackageAliases.js";
13
- import { cedarContextWrappingPlugin } from "./plugins/vite-plugin-cedar-context-wrapping.js";
26
+ import { cedarAutoImportsPlugin } from "./plugins/vite-plugin-cedar-auto-import.js";
27
+ import { cedarDirectoryNamedImportPlugin } from "./plugins/vite-plugin-cedar-directory-named-import.js";
28
+ import { cedarGqlormInjectPlugin } from "./plugins/vite-plugin-cedar-gqlorm-inject.js";
29
+ import { cedarGraphqlOptionsExtractPlugin } from "./plugins/vite-plugin-cedar-graphql-options-extract.js";
30
+ import { cedarImportDirPlugin } from "./plugins/vite-plugin-cedar-import-dir.js";
31
+ import { cedarMockCellDataPlugin } from "./plugins/vite-plugin-cedar-mock-cell-data.js";
32
+ import { cedarOtelWrappingPlugin } from "./plugins/vite-plugin-cedar-otel-wrapping.js";
33
+ import { cedarjsJobPathInjectorPlugin } from "./plugins/vite-plugin-cedarjs-job-path-injector.js";
34
+ import { handlerAlsWrappingPlugin } from "./plugins/vite-plugin-handler-als-wrapping.js";
14
35
  function resolveWithExtensions(id) {
15
- if (fs.existsSync(id)) {
36
+ if (fs.existsSync(id) && fs.statSync(id).isFile()) {
16
37
  return id;
17
38
  }
18
39
  for (const ext of [".js", ".ts", ".jsx", ".tsx", ".mjs", ".mts"]) {
@@ -99,16 +120,19 @@ async function buildCedarApp({
99
120
  };
100
121
  }
101
122
  }
102
- const babelPlugins = workspace.includes("api") ? getApiSideBabelPlugins({
103
- openTelemetry: (cedarConfig.experimental?.opentelemetry?.enabled ?? false) && (cedarConfig.experimental?.opentelemetry?.wrapApi ?? false),
104
- projectIsEsm: projectSideIsEsm("api")
105
- }) : null;
106
123
  const workspacePkgSourceMap = workspace.includes("api") ? Object.fromEntries(
107
124
  Object.entries(getWorkspacePackageAliases(cedarPaths, cedarConfig)).map(
108
125
  ([name, sourceFile]) => [name, normalizePath(sourceFile)]
109
126
  )
110
127
  ) : {};
111
128
  const plugins = [
129
+ tsconfigPaths(),
130
+ cedarAutoImportsPlugin(),
131
+ (() => {
132
+ const p = gqlTagPlugin();
133
+ p.enforce = "post";
134
+ return p;
135
+ })(),
112
136
  // Suppress noisy warnings from third-party dependencies across all
113
137
  // environments by injecting onwarn into every environment's rollupOptions.
114
138
  {
@@ -211,7 +235,9 @@ async function buildCedarApp({
211
235
  name: "cedar-api-src-redirect",
212
236
  enforce: "pre",
213
237
  resolveId(id, importer) {
214
- if (!importer?.startsWith(cedarPaths.api.src)) {
238
+ const normalizedImporter = importer && normalizePath(importer);
239
+ const normalizedApiSrc = normalizePath(cedarPaths.api.src);
240
+ if (!normalizedImporter?.startsWith(`${normalizedApiSrc}/`)) {
215
241
  return null;
216
242
  }
217
243
  if (id.startsWith("src/")) {
@@ -224,11 +250,18 @@ async function buildCedarApp({
224
250
  });
225
251
  }
226
252
  if (workspace.includes("api")) {
253
+ plugins.push(cedarGraphqlOptionsExtractPlugin());
254
+ plugins.push(cedarGqlormInjectPlugin());
255
+ plugins.push(cedarImportDirPlugin());
256
+ plugins.push(cedarDirectoryNamedImportPlugin());
257
+ plugins.push(cedarOtelWrappingPlugin());
258
+ plugins.push(cedarjsJobPathInjectorPlugin());
227
259
  plugins.push(
228
- cedarContextWrappingPlugin({ projectIsEsm: projectSideIsEsm("api") })
260
+ handlerAlsWrappingPlugin({ projectIsEsm: projectSideIsEsm("api") })
229
261
  );
230
262
  }
231
- if (babelPlugins) {
263
+ plugins.push(cedarMockCellDataPlugin());
264
+ if (workspace.includes("api")) {
232
265
  plugins.push({
233
266
  name: "cedar-vite-api-babel-transform",
234
267
  enforce: "pre",
@@ -242,19 +275,47 @@ async function buildCedarApp({
242
275
  if (!normalizePath(id).startsWith(normalizePath(cedarPaths.api.base))) {
243
276
  return null;
244
277
  }
278
+ const babelPlugins = getApiSideBabelConfigPath() ? getApiSideBabelPluginsForVite() : null;
279
+ const fromDirRelativeToApiSrc = path.relative(
280
+ cedarPaths.api.src,
281
+ path.dirname(id)
282
+ );
283
+ const applyImportRewrites = (source) => {
284
+ let rewritten = applySrcAlias(source, fromDirRelativeToApiSrc);
285
+ if (projectSideIsEsm("api")) {
286
+ rewritten = applyEsmExtensions(rewritten, id);
287
+ }
288
+ return rewritten;
289
+ };
290
+ const rewrittenCode = applyImportRewrites(code);
291
+ if (!babelPlugins) {
292
+ if (rewrittenCode === code) {
293
+ return null;
294
+ }
295
+ return {
296
+ code: rewrittenCode,
297
+ map: generateDiffSourceMap(code, rewrittenCode)
298
+ };
299
+ }
300
+ const inputSourceMap = rewrittenCode === code ? null : generateDiffSourceMap(code, rewrittenCode);
301
+ if (inputSourceMap) {
302
+ inputSourceMap.sources = [id];
303
+ }
245
304
  const transformedCode = await transformWithBabel(
246
- code,
305
+ rewrittenCode,
247
306
  id,
248
307
  babelPlugins,
249
- true
308
+ true,
309
+ true,
310
+ inputSourceMap ?? void 0
250
311
  );
251
- if (transformedCode?.code) {
252
- return {
253
- code: transformedCode.code,
254
- map: transformedCode.map ?? null
255
- };
312
+ if (!transformedCode?.code) {
313
+ return null;
256
314
  }
257
- return null;
315
+ return {
316
+ code: applyImportRewrites(transformedCode.code),
317
+ map: transformedCode.map ?? null
318
+ };
258
319
  }
259
320
  });
260
321
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildRouteHooks.d.ts","sourceRoot":"","sources":["../src/buildRouteHooks.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAGpD,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,OAAO,EAAE,KAAK,iBA0Cf"}
1
+ {"version":3,"file":"buildRouteHooks.d.ts","sourceRoot":"","sources":["../src/buildRouteHooks.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AA2BpD,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,OAAO,EAAE,KAAK,iBA+Ef"}
@@ -1,26 +1,55 @@
1
1
  import fs from "node:fs";
2
+ import path from "node:path";
2
3
  import { build as esbuildBuild } from "esbuild";
4
+ import { gqlPlugin } from "vite-plugin-graphql-tag";
3
5
  import {
4
6
  getRouteHookBabelPlugins,
5
7
  transformWithBabel
6
8
  } from "@cedarjs/babel-config";
7
9
  import { findRouteHooksSrc } from "@cedarjs/internal/dist/files.js";
8
10
  import { getPaths } from "@cedarjs/project-config";
11
+ const GQL_TAG_PLUGIN_NAME = "rwjs-babel-graphql-tag";
12
+ const gqlPluginResult = gqlPlugin();
13
+ if (!gqlPluginResult || Array.isArray(gqlPluginResult) || !("transform" in gqlPluginResult) || !gqlPluginResult.transform) {
14
+ throw new Error("vite-plugin-graphql-tag did not return the expected shape");
15
+ }
16
+ const transform = gqlPluginResult.transform;
17
+ if (typeof transform !== "object" || !("handler" in transform)) {
18
+ throw new Error("vite-plugin-graphql-tag did not return the expected shape");
19
+ }
20
+ const gqlTransform = transform.handler;
9
21
  async function buildRouteHooks(verbose, rwPaths) {
10
22
  const allRouteHooks = findRouteHooksSrc();
11
23
  const runRwBabelTransformsPlugin = {
12
- name: "rw-esbuild-babel-transform",
24
+ name: "cedar-esbuild-babel-transform",
13
25
  setup(build) {
14
26
  build.onLoad({ filter: /\.(js|ts|tsx|jsx)$/ }, async (args) => {
15
27
  const fileContents = await fs.promises.readFile(args.path, "utf-8");
28
+ const babelPlugins = getRouteHookBabelPlugins().filter(
29
+ (p) => !(Array.isArray(p) && p[2] === GQL_TAG_PLUGIN_NAME)
30
+ );
16
31
  const transformedCode = await transformWithBabel(
17
32
  fileContents,
18
33
  args.path,
19
- [...getRouteHookBabelPlugins()]
34
+ babelPlugins
20
35
  );
21
36
  if (transformedCode?.code) {
37
+ const mockCtx = {
38
+ warn(msg) {
39
+ console.warn(`[gql-plugin] ${msg}`);
40
+ },
41
+ error(err) {
42
+ throw new Error(String(err));
43
+ }
44
+ };
45
+ const gqlResult = await gqlTransform.call(
46
+ mockCtx,
47
+ transformedCode.code,
48
+ args.path
49
+ );
50
+ const gqlCode = gqlResult && typeof gqlResult === "object" && "code" in gqlResult ? gqlResult.code : void 0;
22
51
  return {
23
- contents: transformedCode.code,
52
+ contents: gqlCode ?? transformedCode.code,
24
53
  loader: "js"
25
54
  };
26
55
  }
@@ -41,7 +70,10 @@ async function buildRouteHooks(verbose, rwPaths) {
41
70
  plugins: [runRwBabelTransformsPlugin],
42
71
  packages: "external",
43
72
  logLevel: verbose ? "info" : "error",
44
- outdir: rwPaths.web.distRouteHooks
73
+ outdir: rwPaths.web.distRouteHooks,
74
+ alias: {
75
+ "api/src": path.join(getPaths().api.base, "src")
76
+ }
45
77
  });
46
78
  }
47
79
  export {