@evjs/bundler-utoopack 0.1.10 → 0.2.0

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.
@@ -0,0 +1,22 @@
1
+ const path = require("node:path");
2
+
3
+ module.exports = function componentPageLoader() {
4
+ this.cacheable?.();
5
+
6
+ const options = this.getOptions ? this.getOptions() : {};
7
+ const entryOptions = {
8
+ mount: options.mount ?? "#app",
9
+ hydrate: options.hydrate ?? "load",
10
+ render: options.render ?? "csr",
11
+ ...(options.route ? { route: options.route } : {}),
12
+ };
13
+
14
+ return [
15
+ `import Component from ${JSON.stringify(`./${path.basename(this.resourcePath)}?evjs-component-page-source`)};`,
16
+ `import { createGeneratedReactPageEntry } from "@evjs/client/internal/react-page";`,
17
+ ``,
18
+ `const mod = createGeneratedReactPageEntry(Component, ${JSON.stringify(entryOptions)}, import.meta.url);`,
19
+ `export default mod;`,
20
+ ``,
21
+ ].join("\n");
22
+ };
@@ -1,19 +1,19 @@
1
1
  /**
2
- * Map ResolvedEvConfig to a utoopack configuration object.
2
+ * Map ResolvedConfig to a utoopack configuration object.
3
3
  *
4
4
  * Utoopack uses a JSON-based config with `build()` / `dev()` programmatic API.
5
5
  * It handles "use server" directives natively via the
6
- * `server.functions.callServerModule` config field.
6
+ * server-function runtime module config fields.
7
7
  */
8
- import { type EvPluginHooks, type ResolvedEvConfig } from "@evjs/ev";
8
+ import type { BuildPlan, PluginHooks, ResolvedConfig } from "@evjs/ev";
9
9
  import type { ConfigComplete } from "@utoo/pack";
10
10
  /**
11
- * Create a utoopack configuration object from EvConfig.
11
+ * Create a utoopack configuration object from Config.
12
12
  *
13
13
  * @param config - Resolved evjs config
14
14
  * @param cwd - Project root directory
15
15
  * @param hooks - Plugin lifecycle hooks
16
16
  * @returns A config object suitable for `@utoo/pack`'s `build()` / `dev()` API
17
17
  */
18
- export declare function createUtoopackConfig(config: ResolvedEvConfig<ConfigComplete>, cwd: string, hooks: EvPluginHooks<ConfigComplete>[]): Promise<ConfigComplete>;
18
+ export declare function createUtoopackConfig(config: ResolvedConfig<ConfigComplete>, plan: BuildPlan, cwd: string, hooks: PluginHooks<ConfigComplete>[]): Promise<ConfigComplete>;
19
19
  //# sourceMappingURL=create-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-config.d.ts","sourceRoot":"","sources":["../../src/adapter/create-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,gBAAgB,EACtB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,cAAc,EAA6B,MAAM,YAAY,CAAC;AAsB5E;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,CAAC,cAAc,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,GACrC,OAAO,CAAC,cAAc,CAAC,CAwGzB"}
1
+ {"version":3,"file":"create-config.d.ts","sourceRoot":"","sources":["../../src/adapter/create-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,KAAK,EACV,SAAS,EAGT,WAAW,EAEX,cAAc,EACf,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,YAAY,CAAC;AA4DpB;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC,EACtC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,GACnC,OAAO,CAAC,cAAc,CAAC,CAoHzB"}
@@ -1,19 +1,25 @@
1
1
  /**
2
- * Map ResolvedEvConfig to a utoopack configuration object.
2
+ * Map ResolvedConfig to a utoopack configuration object.
3
3
  *
4
4
  * Utoopack uses a JSON-based config with `build()` / `dev()` programmatic API.
5
5
  * It handles "use server" directives natively via the
6
- * `server.functions.callServerModule` config field.
6
+ * server-function runtime module config fields.
7
7
  */
8
8
  import { createRequire } from "node:module";
9
+ import path from "node:path";
10
+ import { fileURLToPath } from "node:url";
9
11
  const require = createRequire(import.meta.url);
10
- import { isMpa, } from "@evjs/ev";
12
+ const componentPageLoader = fileURLToPath(new URL("./component-page-loader.cjs", import.meta.url));
13
+ const pagesEntryLoader = fileURLToPath(new URL("./pages-entry-loader.cjs", import.meta.url));
14
+ const pagesEntryAnchor = fileURLToPath(new URL("./pages-entry-anchor.js", import.meta.url));
15
+ import { getLogger } from "@logtape/logtape";
11
16
  import { getOutputPaths } from "./output-paths.js";
17
+ const logger = getLogger(["evjs", "bundler-utoopack", "config"]);
12
18
  function createSpaHistoryFallbackRule(config) {
13
19
  const target = new URL(config.dev.https ? "https://localhost" : "http://localhost");
14
20
  target.port = String(config.dev.port);
15
21
  return {
16
- context: ["^/(?!api(?:/|$))(?!turbopack-hmr$)(?!.*\\.[^/]+$).+"],
22
+ context: [createSpaHistoryFallbackContext(config)],
17
23
  target: target.origin,
18
24
  changeOrigin: true,
19
25
  secure: false,
@@ -22,63 +28,95 @@ function createSpaHistoryFallbackRule(config) {
22
28
  },
23
29
  };
24
30
  }
31
+ function createSpaHistoryFallbackContext(config) {
32
+ const exclusions = createSpaHistoryFallbackExclusions(config)
33
+ .map(normalizeRoutePrefix)
34
+ .filter((prefix) => prefix !== "/")
35
+ .map((prefix) => `(?!${escapeRegExp(prefix.slice(1))}(?:/|$))`)
36
+ .join("");
37
+ return `^/${exclusions}(?!turbopack-hmr$)(?!.*\\.[^/]+$).+`;
38
+ }
39
+ function createSpaHistoryFallbackExclusions(config) {
40
+ const exclusions = new Set(["/api"]);
41
+ if (config.serverEnabled) {
42
+ exclusions.add(config.server.runtime.basePath);
43
+ exclusions.add(config.server.runtime.fn);
44
+ exclusions.add(config.server.runtime.ppr);
45
+ if (config.server.runtime.rsc) {
46
+ exclusions.add(config.server.runtime.rsc);
47
+ }
48
+ }
49
+ return [...exclusions];
50
+ }
51
+ function normalizeRoutePrefix(prefix) {
52
+ const withLeadingSlash = prefix.startsWith("/") ? prefix : `/${prefix}`;
53
+ return withLeadingSlash.length > 1
54
+ ? withLeadingSlash.replace(/\/+$/, "")
55
+ : withLeadingSlash;
56
+ }
25
57
  /**
26
- * Create a utoopack configuration object from EvConfig.
58
+ * Create a utoopack configuration object from Config.
27
59
  *
28
60
  * @param config - Resolved evjs config
29
61
  * @param cwd - Project root directory
30
62
  * @param hooks - Plugin lifecycle hooks
31
63
  * @returns A config object suitable for `@utoo/pack`'s `build()` / `dev()` API
32
64
  */
33
- export async function createUtoopackConfig(config, cwd, hooks) {
34
- const isProduction = process.env.NODE_ENV === "production";
35
- const mode = isProduction ? "production" : "development";
65
+ export async function createUtoopackConfig(config, plan, cwd, hooks) {
66
+ validateUtoopackPlanSupport(plan);
67
+ const mode = plan.mode;
68
+ const isProduction = mode === "production";
36
69
  const serverEnabled = config.serverEnabled;
70
+ const frameworkRules = createFrameworkModuleRules(plan);
37
71
  const devProxy = [
38
72
  ...config.dev.proxy,
39
- ...(!isMpa(config) ? [createSpaHistoryFallbackRule(config)] : []),
73
+ ...(hasAppClientEntry(plan) ? [createSpaHistoryFallbackRule(config)] : []),
40
74
  ];
41
75
  let finalServerEntry;
42
76
  if (serverEnabled) {
43
- finalServerEntry =
44
- config.server.entry || require.resolve("@evjs/server/fetch");
77
+ finalServerEntry = resolveServerEntry(plan.server.entry);
45
78
  }
46
79
  if (serverEnabled && !finalServerEntry) {
47
80
  throw new Error("Failed to resolve a server entry for the server bundle.");
48
81
  }
49
- const outputPaths = getOutputPaths(cwd, serverEnabled);
82
+ const outputPaths = getOutputPaths(cwd, serverEnabled, plan.distDir);
50
83
  const utoopackConfig = {
51
84
  mode,
52
- // MPA mode: one entry per page; SPA mode: single entry
53
- entry: isMpa(config)
54
- ? Object.entries(config.pages ?? {}).map(([name, page]) => ({
55
- import: page.entry,
56
- name,
57
- }))
58
- : [
59
- {
60
- import: config.entry,
61
- },
62
- ],
85
+ entry: plan.entries
86
+ .filter((entry) => entry.environment === "client")
87
+ .map((entry) => ({
88
+ import: resolveClientEntry(entry),
89
+ name: entry.name,
90
+ })),
63
91
  output: {
64
92
  path: outputPaths.clientDir,
65
93
  filename: isProduction ? "[name].[contenthash:8].js" : "[name].js",
66
94
  chunkFilename: isProduction ? "[name].[contenthash:8].js" : "[name].js",
67
- publicPath: "/",
95
+ publicPath: toUtoopackPublicPath(plan.runtime.publicPath),
96
+ crossOriginLoading: config.output.crossOriginLoading,
68
97
  clean: true,
69
98
  },
70
99
  resolve: {
71
100
  extensions: [".tsx", ".ts", ".jsx", ".js", ".mjs", ".cjs"],
72
101
  },
102
+ ...(frameworkRules.length > 0
103
+ ? {
104
+ module: {
105
+ rules: {
106
+ "**/*": frameworkRules,
107
+ },
108
+ },
109
+ }
110
+ : {}),
73
111
  sourceMaps: !isProduction,
74
112
  stats: true,
75
113
  react: {
76
114
  runtime: "automatic",
77
115
  },
78
116
  define: {
79
- "process.env.EVJS_FUNCTION_ENDPOINT": JSON.stringify(config.server.functions.endpoint),
117
+ "process.env.EVJS_FUNCTION_ENDPOINT": JSON.stringify(config.server.functionRuntime.endpoint),
80
118
  "process.env.NODE_ENV": JSON.stringify(mode),
81
- __EVJS_FUNCTION_ENDPOINT__: JSON.stringify(config.server.functions.endpoint),
119
+ __EVJS_FUNCTION_ENDPOINT__: JSON.stringify(config.server.functionRuntime.endpoint),
82
120
  },
83
121
  // Server functions config — utoopack handles "use server" natively
84
122
  ...(serverEnabled
@@ -95,8 +133,8 @@ export async function createUtoopackConfig(config, cwd, hooks) {
95
133
  : "[name].js",
96
134
  },
97
135
  function: {
98
- clientProxy: config.server.functions.clientProxy,
99
- serverRegister: config.server.functions.serverRegister,
136
+ clientProxy: config.server.functionRuntime.clientProxy,
137
+ serverRegister: config.server.functionRuntime.serverRegister,
100
138
  },
101
139
  },
102
140
  }
@@ -112,8 +150,13 @@ export async function createUtoopackConfig(config, cwd, hooks) {
112
150
  // Run plugin bundler hooks
113
151
  const ctx = {
114
152
  mode: isProduction ? "production" : "development",
153
+ command: isProduction ? "build" : "dev",
115
154
  cwd,
116
155
  config,
156
+ bundlerName: "utoopack",
157
+ environment: "mixed",
158
+ logger,
159
+ addWatchFile() { },
117
160
  };
118
161
  for (const h of hooks) {
119
162
  if (h.bundlerConfig) {
@@ -122,4 +165,134 @@ export async function createUtoopackConfig(config, cwd, hooks) {
122
165
  }
123
166
  return utoopackConfig;
124
167
  }
168
+ function createPagesEntryRule(entry) {
169
+ return {
170
+ condition: createPagesEntryCondition(),
171
+ loaders: [
172
+ {
173
+ loader: pagesEntryLoader,
174
+ options: createPagesLoaderOptions(entry.metadata),
175
+ },
176
+ ],
177
+ type: "ecmascript",
178
+ };
179
+ }
180
+ function createPagesEntryCondition() {
181
+ const normalizedAnchor = normalizeRulePath(pagesEntryAnchor);
182
+ const frameworkAnchorSuffix = "(?:packages/bundler-utoopack|node_modules/@evjs/bundler-utoopack)/(?:src|esm)/adapter/pages-entry-anchor\\.js";
183
+ return {
184
+ path: new RegExp(`(?:${escapeRegExp(normalizedAnchor)}|(?:^|/)${frameworkAnchorSuffix})$`),
185
+ query: "",
186
+ };
187
+ }
188
+ function createComponentPageRule(metadata) {
189
+ return {
190
+ condition: {
191
+ path: new RegExp(`${escapeRegExp(normalizeRulePath(metadata.component))}$`),
192
+ query: "",
193
+ },
194
+ loaders: [
195
+ {
196
+ loader: componentPageLoader,
197
+ options: createComponentPageLoaderOptions(metadata),
198
+ },
199
+ ],
200
+ type: "ecmascript",
201
+ };
202
+ }
203
+ function normalizeRulePath(value) {
204
+ return value.replace(/^\.\//, "").replaceAll("\\", "/");
205
+ }
206
+ function escapeRegExp(value) {
207
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
208
+ }
209
+ function resolveClientEntry(entry) {
210
+ if (entry.metadata?.type !== "pages-app")
211
+ return entry.import;
212
+ return pagesEntryAnchor;
213
+ }
214
+ function getPagesAppEntry(plan) {
215
+ return plan.entries.find((entry) => entry.metadata?.type === "pages-app");
216
+ }
217
+ function getComponentPageMetadata(plan) {
218
+ return plan.entries
219
+ .map((entry) => entry.metadata)
220
+ .filter((metadata) => metadata?.type === "react-component-page");
221
+ }
222
+ function createFrameworkModuleRules(plan) {
223
+ const pagesApp = getPagesAppEntry(plan);
224
+ return [
225
+ ...(pagesApp ? [createPagesEntryRule(pagesApp)] : []),
226
+ ...getComponentPageMetadata(plan).map(createComponentPageRule),
227
+ ];
228
+ }
229
+ function createPagesLoaderOptions(metadata) {
230
+ return {
231
+ type: "pages-app",
232
+ mount: metadata.mount,
233
+ routes: metadata.routes.map((route) => ({
234
+ id: route.id,
235
+ path: route.path,
236
+ module: route.module,
237
+ ...(route.parentId ? { parentId: route.parentId } : {}),
238
+ ...(route.kind ? { kind: route.kind } : {}),
239
+ })),
240
+ ...(metadata.rootModule ? { rootModule: metadata.rootModule } : {}),
241
+ };
242
+ }
243
+ function createComponentPageLoaderOptions(metadata) {
244
+ return {
245
+ type: "react-component-page",
246
+ mount: metadata.mount,
247
+ hydrate: metadata.hydrate,
248
+ render: metadata.render,
249
+ ...(metadata.route ? { route: metadata.route } : {}),
250
+ };
251
+ }
252
+ function hasAppClientEntry(plan) {
253
+ return plan.entries.some((entry) => entry.kind === "app-client");
254
+ }
255
+ function validateUtoopackPlanSupport(plan) {
256
+ const unsupportedServerEntries = plan.entries.filter((entry) => entry.kind === "page-server" ||
257
+ entry.kind === "rsc-page" ||
258
+ entry.kind === "ppr-shell" ||
259
+ entry.kind === "ppr-region");
260
+ if (unsupportedServerEntries.length === 0)
261
+ return;
262
+ const details = unsupportedServerEntries
263
+ .map(formatUnsupportedServerEntry)
264
+ .join("; ");
265
+ const kinds = [
266
+ ...new Set(unsupportedServerEntries.map((entry) => entry.kind)),
267
+ ].join(", ");
268
+ throw new Error(`[evjs] The current Utoopack adapter cannot build framework server page entries yet (${details}). Unsupported entry kinds: ${kinds}. Utoopack needs multi server entry support; use another bundler adapter for SSR/PPR/RSC validation until that lower-layer API is available.`);
269
+ }
270
+ function formatUnsupportedServerEntry(entry) {
271
+ const owner = formatBuildEntryOwner(entry.owner);
272
+ return `${entry.name} (${entry.kind}${owner ? `, ${owner}` : ""})`;
273
+ }
274
+ function formatBuildEntryOwner(owner) {
275
+ if (!owner)
276
+ return undefined;
277
+ const parts = [];
278
+ if (owner.pageId)
279
+ parts.push(`page "${owner.pageId}"`);
280
+ if (owner.routeId)
281
+ parts.push(`route "${owner.routeId}"`);
282
+ if (owner.regionId)
283
+ parts.push(`region "${owner.regionId}"`);
284
+ if (owner.appId)
285
+ parts.push(`app "${owner.appId}"`);
286
+ return parts.join(", ") || undefined;
287
+ }
288
+ function resolveServerEntry(entry) {
289
+ if (!entry)
290
+ return undefined;
291
+ if (entry.startsWith(".") || path.isAbsolute(entry))
292
+ return entry;
293
+ return require.resolve(entry);
294
+ }
295
+ function toUtoopackPublicPath(publicPath) {
296
+ return typeof publicPath === "string" ? publicPath : "auto";
297
+ }
125
298
  //# sourceMappingURL=create-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-config.js","sourceRoot":"","sources":["../../src/adapter/create-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-config.js","sourceRoot":"","sources":["../../src/adapter/create-config.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * "use server" directives natively — no custom loader or child
7
7
  * compiler is needed.
8
8
  */
9
- import { type BundlerAdapter } from "@evjs/ev";
9
+ import type { BundlerAdapter } from "@evjs/ev";
10
10
  import type { ConfigComplete } from "@utoo/pack";
11
11
  export declare const utoopackAdapter: BundlerAdapter<ConfigComplete>;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkHjD,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,cAAc,CAiF1D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAGV,cAAc,EAMf,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA4CjD,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,cAAc,CAsG1D,CAAC"}
@@ -8,118 +8,68 @@
8
8
  */
9
9
  import fs from "node:fs";
10
10
  import path from "node:path";
11
- import { isMpa, } from "@evjs/ev";
12
11
  import { getLogger } from "@logtape/logtape";
13
12
  import { UtoopackManifestGenerator } from "../manifest-generator.js";
14
13
  import { getOutputPaths } from "./output-paths.js";
15
14
  const logger = getLogger(["evjs", "bundler-utoopack"]);
16
- async function generateAndEmitHtml(config, cwd, hooks) {
17
- const isServerEnabled = config.serverEnabled;
18
- const outputPaths = getOutputPaths(cwd, isServerEnabled);
19
- const clientManifestPath = path.join(outputPaths.clientDir, "manifest.json");
20
- if (!fs.existsSync(clientManifestPath))
21
- return;
22
- const clientManifest = JSON.parse(await fs.promises.readFile(clientManifestPath, "utf-8"));
23
- // biome-ignore lint/suspicious/noExplicitAny: match @evjs/manifest type
24
- let serverManifest;
25
- if (isServerEnabled) {
26
- const serverManifestPath = path.join(outputPaths.serverDir, "manifest.json");
27
- if (fs.existsSync(serverManifestPath)) {
28
- serverManifest = JSON.parse(await fs.promises.readFile(serverManifestPath, "utf-8"));
29
- }
30
- }
31
- const { generateHtml } = await import("@evjs/build-tools");
32
- const { buildHtml } = await import("@evjs/ev");
33
- // MPA mode: generate one HTML file per page
34
- if (isMpa(config) && clientManifest.pages) {
35
- for (const [pageName, pageManifest] of Object.entries(clientManifest.pages)) {
36
- const pageConfig = config.pages?.[pageName];
37
- if (!pageConfig)
38
- continue;
39
- const doc = generateHtml({
40
- template: path.resolve(cwd, pageConfig.html),
41
- js: pageManifest.assets.js,
42
- css: pageManifest.assets.css,
43
- });
44
- const finalHtml = await buildHtml({
45
- // biome-ignore lint/suspicious/noExplicitAny: DOM interfaces
46
- doc: doc,
47
- // biome-ignore lint/suspicious/noExplicitAny: Bundler-agnostic hook generic
48
- hooks: hooks,
49
- clientManifest,
50
- serverManifest,
51
- });
52
- const outPath = path.join(outputPaths.clientDir, `${pageName}.html`);
53
- await fs.promises.mkdir(path.dirname(outPath), { recursive: true });
54
- await fs.promises.writeFile(outPath, finalHtml, "utf-8");
55
- }
56
- return;
57
- }
58
- // SPA mode: single index.html
59
- const doc = generateHtml({
60
- template: path.resolve(cwd, config.html),
61
- js: clientManifest.assets.js,
62
- css: clientManifest.assets.css,
63
- });
64
- const finalHtml = await buildHtml({
65
- // biome-ignore lint/suspicious/noExplicitAny: DOM interfaces
66
- doc: doc,
67
- // biome-ignore lint/suspicious/noExplicitAny: Bundler-agnostic hook generic
68
- hooks: hooks,
69
- clientManifest,
70
- serverManifest,
71
- });
72
- const outPath = path.join(outputPaths.clientDir, "index.html");
73
- await fs.promises.mkdir(path.dirname(outPath), { recursive: true });
74
- await fs.promises.writeFile(outPath, finalHtml, "utf-8");
75
- }
76
- async function cleanServerOutput(cwd, serverEnabled) {
15
+ async function cleanServerOutput(cwd, serverEnabled, distDir) {
77
16
  if (!serverEnabled)
78
17
  return;
79
- const outputPaths = getOutputPaths(cwd, serverEnabled);
18
+ const outputPaths = getOutputPaths(cwd, serverEnabled, distDir);
80
19
  await fs.promises.rm(outputPaths.serverDir, {
81
20
  recursive: true,
82
21
  force: true,
83
22
  });
84
23
  }
85
- async function generateDevArtifacts(config, cwd, hooks) {
86
- const outputPaths = getOutputPaths(cwd, config.serverEnabled);
24
+ async function generateDevArtifacts(config, cwd, plan, onBuildFacts, options = {}) {
25
+ const outputPaths = getOutputPaths(cwd, config.serverEnabled, plan.distDir);
87
26
  const clientStatsPath = path.join(outputPaths.clientDir, "stats.json");
88
27
  if (!fs.existsSync(clientStatsPath))
89
- return;
28
+ return false;
90
29
  logger.info `Generating development manifest and HTML...`;
91
- const generator = new UtoopackManifestGenerator(cwd, config.serverEnabled);
92
- await generator.build();
93
- await generateAndEmitHtml(config, cwd, hooks);
30
+ const generator = new UtoopackManifestGenerator(cwd, config.serverEnabled, plan);
31
+ const facts = await generator.collectBuildFacts();
32
+ await onBuildFacts(facts, options);
33
+ return true;
94
34
  }
95
35
  export const utoopackAdapter = {
96
36
  name: "utoopack",
97
- async build(config, cwd, hooks) {
37
+ async build(ctx) {
38
+ const { config, cwd, hooks, plan } = ctx;
98
39
  const { createUtoopackConfig } = await import("./create-config.js");
99
- const utoopackConfig = await createUtoopackConfig(config, cwd, hooks);
40
+ const utoopackConfig = await createUtoopackConfig(config, plan, cwd, hooks);
100
41
  logger.info `Building for production with utoopack...`;
101
- await cleanServerOutput(cwd, config.serverEnabled);
42
+ await cleanServerOutput(cwd, config.serverEnabled, plan.distDir);
102
43
  const { build } = await import("@utoo/pack");
103
44
  await build({ config: utoopackConfig });
104
- logger.info `Extracting routes and generating client manifest...`;
105
- const generator = new UtoopackManifestGenerator(cwd, config.serverEnabled);
106
- await generator.build();
107
- logger.info `Generating and emitting HTML...`;
108
- await generateAndEmitHtml(config, cwd, hooks);
45
+ logger.info `Collecting utoopack build facts...`;
46
+ const generator = new UtoopackManifestGenerator(cwd, config.serverEnabled, plan);
109
47
  logger.info `Build complete!`;
48
+ return generator.collectBuildFacts();
110
49
  },
111
- async dev(config, cwd, callbacks, hooks) {
50
+ async dev(ctx) {
51
+ const { config, cwd, callbacks, hooks, plan } = ctx;
112
52
  const { createUtoopackConfig } = await import("./create-config.js");
113
- const utoopackConfig = await createUtoopackConfig(config, cwd, hooks);
53
+ const utoopackConfig = await createUtoopackConfig(config, plan, cwd, hooks);
54
+ let serverReadyWatcher;
114
55
  logger.info `Starting development server with utoopack...`;
115
56
  const { serve } = await import("@utoo/pack");
116
57
  await serve({ config: utoopackConfig });
117
- await generateDevArtifacts(config, cwd, hooks);
118
- // Watch for server bundle readiness (utoopack emits server output
119
- // to dist/server/ when "use server" modules are discovered)
120
- if (!config.serverEnabled)
121
- return;
122
- const outDir = getOutputPaths(cwd, config.serverEnabled).serverDir;
58
+ await generateDevArtifacts(config, cwd, plan, callbacks.onBuildFacts, {
59
+ isRebuild: false,
60
+ });
61
+ // Watch for server bundle readiness when "use server" modules are emitted.
62
+ if (!config.serverEnabled) {
63
+ return new UtoopackDevController({
64
+ config,
65
+ cwd,
66
+ onBuildFacts: callbacks.onBuildFacts,
67
+ closeWatcher() {
68
+ serverReadyWatcher?.close();
69
+ },
70
+ });
71
+ }
72
+ const outDir = getOutputPaths(cwd, config.serverEnabled, plan.distDir).serverDir;
123
73
  if (!fs.existsSync(outDir)) {
124
74
  fs.mkdirSync(outDir, { recursive: true });
125
75
  }
@@ -134,7 +84,7 @@ export const utoopackAdapter = {
134
84
  ready = true;
135
85
  try {
136
86
  await callbacks.onServerBundleReady();
137
- watcher?.close();
87
+ serverReadyWatcher?.close();
138
88
  }
139
89
  catch (err) {
140
90
  logger.error `Server bundle ready callback failed: ${err}`;
@@ -142,12 +92,81 @@ export const utoopackAdapter = {
142
92
  }
143
93
  }
144
94
  };
145
- const watcher = fs.watch(outDir, (_eventType, filename) => {
95
+ serverReadyWatcher = fs.watch(outDir, (_eventType, filename) => {
146
96
  if (filename)
147
97
  void checkReady(filename);
148
98
  });
149
99
  // Initial check in case it was written before the watcher attached
150
100
  await checkReady();
101
+ return new UtoopackDevController({
102
+ config,
103
+ cwd,
104
+ onBuildFacts: callbacks.onBuildFacts,
105
+ closeWatcher() {
106
+ serverReadyWatcher?.close();
107
+ },
108
+ });
151
109
  },
152
110
  };
111
+ class UtoopackDevController {
112
+ options;
113
+ constructor(options) {
114
+ this.options = options;
115
+ }
116
+ close() {
117
+ this.options.closeWatcher();
118
+ }
119
+ async updatePlan(update) {
120
+ if (isEmptyPlanUpdate(update))
121
+ return;
122
+ if (!isHtmlOnlyUpdate(update)) {
123
+ throw new Error(`[evjs] Utoopack dev cannot apply framework plan changes without restarting ev dev (${formatUnsupportedPlanUpdate(update)}). HTML-only framework plan updates are supported; entry additions, removals, server changes, and route metadata changes still require a lower-layer Utoopack update API.`);
124
+ }
125
+ const emitted = await generateDevArtifacts(this.options.config, this.options.cwd, update.next, this.options.onBuildFacts, { isRebuild: true });
126
+ if (!emitted) {
127
+ throw new Error("[evjs] Utoopack dev cannot regenerate framework artifacts before client build stats are available.");
128
+ }
129
+ }
130
+ }
131
+ function isEmptyPlanUpdate(update) {
132
+ return (!update.serverChanged &&
133
+ update.entries.added.length === 0 &&
134
+ update.entries.removed.length === 0 &&
135
+ update.entries.changed.length === 0 &&
136
+ update.html.added.length === 0 &&
137
+ update.html.removed.length === 0 &&
138
+ update.html.changed.length === 0);
139
+ }
140
+ function isHtmlOnlyUpdate(update) {
141
+ return (!update.serverChanged &&
142
+ update.entries.added.length === 0 &&
143
+ update.entries.removed.length === 0 &&
144
+ update.entries.changed.length === 0 &&
145
+ (update.html.added.length > 0 ||
146
+ update.html.removed.length > 0 ||
147
+ update.html.changed.length > 0));
148
+ }
149
+ function formatUnsupportedPlanUpdate(update) {
150
+ const changes = [
151
+ formatPlanItems("entry additions", update.entries.added, formatBuildEntry),
152
+ formatPlanItems("entry removals", update.entries.removed, formatBuildEntry),
153
+ formatPlanItems("entry changes", update.entries.changed, formatBuildEntry),
154
+ formatPlanItems("HTML additions", update.html.added, formatHtmlPlan),
155
+ formatPlanItems("HTML removals", update.html.removed, formatHtmlPlan),
156
+ formatPlanItems("HTML changes", update.html.changed, formatHtmlPlan),
157
+ update.serverChanged ? "server output changed" : undefined,
158
+ ].filter((change) => Boolean(change));
159
+ return changes.length > 0 ? changes.join("; ") : "unknown plan change";
160
+ }
161
+ function formatPlanItems(label, items, formatItem) {
162
+ if (items.length === 0)
163
+ return undefined;
164
+ return `${label}: ${items.map(formatItem).join(", ")}`;
165
+ }
166
+ function formatBuildEntry(entry) {
167
+ return `${entry.name} (${entry.kind})`;
168
+ }
169
+ function formatHtmlPlan(html) {
170
+ return `${html.id} -> ${html.fileName}`;
171
+ }
153
172
  //# sourceMappingURL=index.js.map