@prisma/compute-sdk 0.26.0 → 0.27.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.
Files changed (62) hide show
  1. package/dist/artifact-stage.d.ts +24 -0
  2. package/dist/artifact-stage.d.ts.map +1 -0
  3. package/dist/artifact-stage.js +165 -0
  4. package/dist/artifact-stage.js.map +1 -0
  5. package/dist/astro-build.d.ts +2 -0
  6. package/dist/astro-build.d.ts.map +1 -1
  7. package/dist/astro-build.js +8 -0
  8. package/dist/astro-build.js.map +1 -1
  9. package/dist/auto-build.d.ts +7 -4
  10. package/dist/auto-build.d.ts.map +1 -1
  11. package/dist/auto-build.js +25 -33
  12. package/dist/auto-build.js.map +1 -1
  13. package/dist/build-settings.d.ts +55 -0
  14. package/dist/build-settings.d.ts.map +1 -0
  15. package/dist/build-settings.js +301 -0
  16. package/dist/build-settings.js.map +1 -0
  17. package/dist/build-strategy.d.ts +4 -0
  18. package/dist/build-strategy.d.ts.map +1 -1
  19. package/dist/build-strategy.js +13 -20
  20. package/dist/build-strategy.js.map +1 -1
  21. package/dist/build.d.ts +45 -0
  22. package/dist/build.d.ts.map +1 -0
  23. package/dist/build.js +86 -0
  24. package/dist/build.js.map +1 -0
  25. package/dist/bun-build.d.ts +8 -0
  26. package/dist/bun-build.d.ts.map +1 -1
  27. package/dist/bun-build.js +47 -23
  28. package/dist/bun-build.js.map +1 -1
  29. package/dist/config/frameworks.d.ts +1 -1
  30. package/dist/index.d.ts +4 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +4 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/nextjs-build.d.ts +12 -2
  35. package/dist/nextjs-build.d.ts.map +1 -1
  36. package/dist/nextjs-build.js +156 -75
  37. package/dist/nextjs-build.js.map +1 -1
  38. package/dist/nuxt-build.d.ts +2 -0
  39. package/dist/nuxt-build.d.ts.map +1 -1
  40. package/dist/nuxt-build.js +8 -0
  41. package/dist/nuxt-build.js.map +1 -1
  42. package/dist/tanstack-start-build.d.ts +6 -1
  43. package/dist/tanstack-start-build.d.ts.map +1 -1
  44. package/dist/tanstack-start-build.js +35 -15
  45. package/dist/tanstack-start-build.js.map +1 -1
  46. package/dist/workspace.d.ts +90 -0
  47. package/dist/workspace.d.ts.map +1 -0
  48. package/dist/workspace.js +205 -0
  49. package/dist/workspace.js.map +1 -0
  50. package/package.json +4 -3
  51. package/src/artifact-stage.ts +280 -0
  52. package/src/astro-build.ts +11 -1
  53. package/src/auto-build.ts +28 -34
  54. package/src/build-settings.ts +430 -0
  55. package/src/build-strategy.ts +22 -29
  56. package/src/build.ts +124 -0
  57. package/src/bun-build.ts +60 -27
  58. package/src/index.ts +28 -0
  59. package/src/nextjs-build.ts +206 -103
  60. package/src/nuxt-build.ts +11 -1
  61. package/src/tanstack-start-build.ts +44 -18
  62. package/src/workspace.ts +319 -0
@@ -0,0 +1,301 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { parseModule } from "magicast";
4
+ import { readBuildScript, readPackageManifest, resolvePackageManager, } from "./workspace.js";
5
+ /**
6
+ * Resolves build settings from framework inference: the user's
7
+ * `package.json` build script (run via the detected package manager) over the
8
+ * framework default, plus the framework's output directory (reading
9
+ * `next.config` `distDir` for Next.js).
10
+ */
11
+ export async function resolveBuildSettings(options) {
12
+ switch (options.buildType) {
13
+ // Nuxt and Astro run their framework CLI and stage fixed output; these
14
+ // settings only describe that for display.
15
+ case "nuxt":
16
+ return {
17
+ buildCommand: "nuxt build",
18
+ buildCommandSource: "Nuxt default",
19
+ outputDirectory: ".output",
20
+ outputDirectorySource: "Nuxt output",
21
+ };
22
+ case "astro":
23
+ return {
24
+ buildCommand: "astro build",
25
+ buildCommandSource: "Astro default",
26
+ outputDirectory: "dist",
27
+ outputDirectorySource: "Astro output",
28
+ };
29
+ case "nextjs": {
30
+ const manifest = await readPackageManifest(options.appPath, options.signal);
31
+ const buildCommand = await resolveFrameworkBuildCommand(options.appPath, manifest, { command: "next build", source: "Next.js default" }, options.signal);
32
+ const outputRoot = await resolveNextOutputRoot(options.appPath, options.signal);
33
+ return {
34
+ buildCommand: buildCommand.command,
35
+ buildCommandSource: buildCommand.source,
36
+ outputDirectory: joinPosix(outputRoot, "standalone"),
37
+ outputDirectorySource: outputRoot === ".next" ? "Next.js output" : "next.config distDir",
38
+ };
39
+ }
40
+ case "tanstack-start": {
41
+ const manifest = await readPackageManifest(options.appPath, options.signal);
42
+ const buildCommand = await resolveFrameworkBuildCommand(options.appPath, manifest, { command: "vite build", source: "TanStack Start default" }, options.signal);
43
+ return {
44
+ buildCommand: buildCommand.command,
45
+ buildCommandSource: buildCommand.source,
46
+ outputDirectory: ".output",
47
+ outputDirectorySource: "TanStack Start output",
48
+ };
49
+ }
50
+ case "bun": {
51
+ const manifest = await readPackageManifest(options.appPath, options.signal);
52
+ const buildCommand = await resolveFrameworkBuildCommand(options.appPath, manifest, { command: null, source: null }, options.signal);
53
+ return {
54
+ buildCommand: buildCommand.command,
55
+ buildCommandSource: buildCommand.source,
56
+ outputDirectory: ".",
57
+ outputDirectorySource: "app root",
58
+ };
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Build settings when committed config owns them: configured fields win,
64
+ * omitted fields fall back to framework inference. `source` labels configured
65
+ * values with the config filename so a consumer can show provenance.
66
+ */
67
+ export async function resolveConfiguredBuildSettings(options) {
68
+ const needsFallback = options.configured.command === undefined ||
69
+ options.configured.outputDirectory === undefined;
70
+ const fallback = needsFallback ? await resolveBuildSettings(options) : null;
71
+ return {
72
+ buildCommand: options.configured.command !== undefined
73
+ ? options.configured.command
74
+ : fallback.buildCommand,
75
+ buildCommandSource: options.configured.command !== undefined
76
+ ? options.source
77
+ : fallback.buildCommandSource,
78
+ outputDirectory: options.configured.outputDirectory ??
79
+ fallback.outputDirectory,
80
+ outputDirectorySource: options.configured.outputDirectory !== undefined
81
+ ? options.source
82
+ : fallback.outputDirectorySource,
83
+ };
84
+ }
85
+ async function resolveFrameworkBuildCommand(appPath, manifest, fallback, signal) {
86
+ const buildScript = readBuildScript(manifest);
87
+ if (buildScript) {
88
+ const packageManager = await resolvePackageManager(appPath, signal);
89
+ return {
90
+ command: packageManager ? `${packageManager} run build` : buildScript,
91
+ source: "package.json scripts.build",
92
+ };
93
+ }
94
+ return fallback;
95
+ }
96
+ /** Joins posix-style path segments, collapsing duplicate separators. */
97
+ export function joinPosix(...parts) {
98
+ return parts.join("/").replace(/\/+/g, "/");
99
+ }
100
+ /**
101
+ * Maps a Next.js standalone output directory (e.g. ".next/standalone") back to
102
+ * its output root (".next"), so static assets can be staged alongside it.
103
+ */
104
+ export function nextOutputRootFromStandaloneDirectory(outputDirectory) {
105
+ const normalized = outputDirectory.replace(/\/+$/g, "");
106
+ if (normalized === "standalone") {
107
+ return ".";
108
+ }
109
+ if (normalized.endsWith("/standalone")) {
110
+ const outputRoot = normalized.slice(0, -"/standalone".length);
111
+ return outputRoot.length > 0 ? outputRoot : ".";
112
+ }
113
+ const dirname = path.posix.dirname(normalized);
114
+ return dirname === "." ? "." : dirname;
115
+ }
116
+ const NEXT_CONFIG_FILENAMES = [
117
+ "next.config.js",
118
+ "next.config.mjs",
119
+ "next.config.ts",
120
+ "next.config.mts",
121
+ ];
122
+ async function resolveNextOutputRoot(appPath, signal) {
123
+ const config = await readNextConfig(appPath, signal);
124
+ return config.distDir ?? ".next";
125
+ }
126
+ async function readNextConfig(appPath, signal) {
127
+ for (const fileName of NEXT_CONFIG_FILENAMES) {
128
+ signal?.throwIfAborted();
129
+ let content;
130
+ try {
131
+ content = await readFile(path.join(appPath, fileName), {
132
+ encoding: "utf8",
133
+ signal,
134
+ });
135
+ }
136
+ catch (error) {
137
+ if (error.code === "ENOENT") {
138
+ continue;
139
+ }
140
+ throw error;
141
+ }
142
+ return readStaticNextConfig(content);
143
+ }
144
+ return {};
145
+ }
146
+ /** Best-effort static read of `distDir`/`output` from a next.config source. */
147
+ export function readStaticNextConfig(content) {
148
+ try {
149
+ const module = parseModule(content);
150
+ const program = asAstNode(module.$ast);
151
+ const bindings = program
152
+ ? collectStaticBindings(program)
153
+ : new Map();
154
+ const configObject = program
155
+ ? findExportedConfigObject(program, bindings)
156
+ : null;
157
+ if (!configObject) {
158
+ return {};
159
+ }
160
+ const rawDistDir = readStaticStringProperty(configObject, "distDir");
161
+ const output = readStaticStringProperty(configObject, "output");
162
+ return {
163
+ distDir: rawDistDir ? normalizeRelativePath(rawDistDir) : undefined,
164
+ output: output === "standalone" || output === "export" ? output : undefined,
165
+ };
166
+ }
167
+ catch {
168
+ return {};
169
+ }
170
+ }
171
+ function normalizeRelativePath(value) {
172
+ const raw = value.trim().replace(/\\/g, "/");
173
+ if (raw.length === 0 || raw.split("/").includes("..")) {
174
+ return undefined;
175
+ }
176
+ if (/^[A-Za-z]:/.test(raw)) {
177
+ return undefined;
178
+ }
179
+ const normalized = path.posix.normalize(raw);
180
+ if (path.win32.isAbsolute(value) ||
181
+ path.posix.isAbsolute(normalized) ||
182
+ normalized.split("/").includes("..")) {
183
+ return undefined;
184
+ }
185
+ return normalized === "." ? "." : normalized;
186
+ }
187
+ function asAstNode(value) {
188
+ if (!value || typeof value !== "object") {
189
+ return null;
190
+ }
191
+ const type = value.type;
192
+ return typeof type === "string" ? value : null;
193
+ }
194
+ function astNodes(value) {
195
+ if (!Array.isArray(value)) {
196
+ return [];
197
+ }
198
+ return value.map(asAstNode).filter((node) => Boolean(node));
199
+ }
200
+ function collectStaticBindings(program) {
201
+ const bindings = new Map();
202
+ for (const statement of astNodes(program.body)) {
203
+ if (statement.type !== "VariableDeclaration") {
204
+ continue;
205
+ }
206
+ for (const declaration of astNodes(statement.declarations)) {
207
+ const id = asAstNode(declaration.id);
208
+ const init = asAstNode(declaration.init);
209
+ if (id?.type === "Identifier" && typeof id.name === "string" && init) {
210
+ bindings.set(id.name, init);
211
+ }
212
+ }
213
+ }
214
+ return bindings;
215
+ }
216
+ function findExportedConfigObject(program, bindings) {
217
+ for (const statement of astNodes(program.body)) {
218
+ if (statement.type === "ExportDefaultDeclaration") {
219
+ return resolveConfigObject(statement.declaration, bindings);
220
+ }
221
+ if (statement.type !== "ExpressionStatement") {
222
+ continue;
223
+ }
224
+ const expression = asAstNode(statement.expression);
225
+ if (expression?.type !== "AssignmentExpression" ||
226
+ expression.operator !== "=") {
227
+ continue;
228
+ }
229
+ if (isModuleExports(expression.left)) {
230
+ return resolveConfigObject(expression.right, bindings);
231
+ }
232
+ }
233
+ return null;
234
+ }
235
+ function resolveConfigObject(value, bindings, depth = 0) {
236
+ if (depth > 4) {
237
+ return null;
238
+ }
239
+ const node = unwrapStaticExpression(asAstNode(value));
240
+ if (!node) {
241
+ return null;
242
+ }
243
+ if (node.type === "ObjectExpression") {
244
+ return node;
245
+ }
246
+ if (node.type === "Identifier" && typeof node.name === "string") {
247
+ return resolveConfigObject(bindings.get(node.name), bindings, depth + 1);
248
+ }
249
+ if (node.type === "CallExpression") {
250
+ return resolveConfigObject(astNodes(node.arguments)[0], bindings, depth + 1);
251
+ }
252
+ return null;
253
+ }
254
+ function unwrapStaticExpression(node) {
255
+ let current = node;
256
+ while (current?.type === "TSAsExpression" ||
257
+ current?.type === "TSSatisfiesExpression" ||
258
+ current?.type === "TSNonNullExpression") {
259
+ current = asAstNode(current.expression);
260
+ }
261
+ return current;
262
+ }
263
+ function isModuleExports(value) {
264
+ const node = asAstNode(value);
265
+ if (node?.type !== "MemberExpression" || node.computed === true) {
266
+ return false;
267
+ }
268
+ const object = asAstNode(node.object);
269
+ const property = asAstNode(node.property);
270
+ return (object?.type === "Identifier" &&
271
+ object.name === "module" &&
272
+ property?.type === "Identifier" &&
273
+ property.name === "exports");
274
+ }
275
+ function readStaticStringProperty(objectExpression, propertyName) {
276
+ for (const property of astNodes(objectExpression.properties)) {
277
+ if (property.type !== "ObjectProperty" || property.computed === true) {
278
+ continue;
279
+ }
280
+ if (propertyKeyName(property.key) !== propertyName) {
281
+ continue;
282
+ }
283
+ const value = unwrapStaticExpression(asAstNode(property.value));
284
+ if (value?.type === "StringLiteral" && typeof value.value === "string") {
285
+ const trimmed = value.value.trim();
286
+ return trimmed.length > 0 ? trimmed : undefined;
287
+ }
288
+ }
289
+ return undefined;
290
+ }
291
+ function propertyKeyName(value) {
292
+ const key = asAstNode(value);
293
+ if (key?.type === "Identifier" && typeof key.name === "string") {
294
+ return key.name;
295
+ }
296
+ if (key?.type === "StringLiteral" && typeof key.value === "string") {
297
+ return key.value;
298
+ }
299
+ return undefined;
300
+ }
301
+ //# sourceMappingURL=build-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-settings.js","sourceRoot":"","sources":["../src/build-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAgB,WAAW,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAEL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAexB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAI1C;IACC,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,uEAAuE;QACvE,2CAA2C;QAC3C,KAAK,MAAM;YACT,OAAO;gBACL,YAAY,EAAE,YAAY;gBAC1B,kBAAkB,EAAE,cAAc;gBAClC,eAAe,EAAE,SAAS;gBAC1B,qBAAqB,EAAE,aAAa;aACrC,CAAC;QACJ,KAAK,OAAO;YACV,OAAO;gBACL,YAAY,EAAE,aAAa;gBAC3B,kBAAkB,EAAE,eAAe;gBACnC,eAAe,EAAE,MAAM;gBACvB,qBAAqB,EAAE,cAAc;aACtC,CAAC;QACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,4BAA4B,CACrD,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,EACpD,OAAO,CAAC,MAAM,CACf,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAC5C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;YACF,OAAO;gBACL,YAAY,EAAE,YAAY,CAAC,OAAO;gBAClC,kBAAkB,EAAE,YAAY,CAAC,MAAM;gBACvC,eAAe,EAAE,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC;gBACpD,qBAAqB,EACnB,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB;aACpE,CAAC;QACJ,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,4BAA4B,CACrD,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAC3D,OAAO,CAAC,MAAM,CACf,CAAC;YACF,OAAO;gBACL,YAAY,EAAE,YAAY,CAAC,OAAO;gBAClC,kBAAkB,EAAE,YAAY,CAAC,MAAM;gBACvC,eAAe,EAAE,SAAS;gBAC1B,qBAAqB,EAAE,uBAAuB;aAC/C,CAAC;QACJ,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,4BAA4B,CACrD,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAC/B,OAAO,CAAC,MAAM,CACf,CAAC;YACF,OAAO;gBACL,YAAY,EAAE,YAAY,CAAC,OAAO;gBAClC,kBAAkB,EAAE,YAAY,CAAC,MAAM;gBACvC,eAAe,EAAE,GAAG;gBACpB,qBAAqB,EAAE,UAAU;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAUpD;IACC,MAAM,aAAa,GACjB,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS;QACxC,OAAO,CAAC,UAAU,CAAC,eAAe,KAAK,SAAS,CAAC;IACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5E,OAAO;QACL,YAAY,EACV,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS;YACtC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;YAC5B,CAAC,CAAE,QAA0B,CAAC,YAAY;QAC9C,kBAAkB,EAChB,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS;YACtC,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAE,QAA0B,CAAC,kBAAkB;QACpD,eAAe,EACb,OAAO,CAAC,UAAU,CAAC,eAAe;YACjC,QAA0B,CAAC,eAAe;QAC7C,qBAAqB,EACnB,OAAO,CAAC,UAAU,CAAC,eAAe,KAAK,SAAS;YAC9C,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAE,QAA0B,CAAC,qBAAqB;KACxD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,OAAe,EACf,QAAgC,EAChC,QAA2D,EAC3D,MAAoB;IAEpB,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,YAAY,CAAC,CAAC,CAAC,WAAW;YACrE,MAAM,EAAE,4BAA4B;SACrC,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,GAAG,KAAe;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qCAAqC,CACnD,eAAuB;IAEvB,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAOD,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;CACT,CAAC;AAEX,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,MAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAe,EACf,MAAoB;IAEpB,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC7C,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;gBACrD,QAAQ,EAAE,MAAM;gBAChB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,IAAI,GAAG,EAAmB,CAAC;QAC/B,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,wBAAwB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;YACnE,MAAM,EACJ,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,IACE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/C,CAAC;AAID,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB;IAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,IAAI,SAAS,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,EAAE,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAgB,EAChB,QAA8B;IAE9B,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAClD,OAAO,mBAAmB,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnD,IACE,UAAU,EAAE,IAAI,KAAK,sBAAsB;YAC3C,UAAU,CAAC,QAAQ,KAAK,GAAG,EAC3B,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,mBAAmB,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAc,EACd,QAA8B,EAC9B,KAAK,GAAG,CAAC;IAET,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,mBAAmB,CACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC3B,QAAQ,EACR,KAAK,GAAG,CAAC,CACV,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAoB;IAClD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OACE,OAAO,EAAE,IAAI,KAAK,gBAAgB;QAClC,OAAO,EAAE,IAAI,KAAK,uBAAuB;QACzC,OAAO,EAAE,IAAI,KAAK,qBAAqB,EACvC,CAAC;QACD,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,CACL,MAAM,EAAE,IAAI,KAAK,YAAY;QAC7B,MAAM,CAAC,IAAI,KAAK,QAAQ;QACxB,QAAQ,EAAE,IAAI,KAAK,YAAY;QAC/B,QAAQ,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAyB,EACzB,YAAoB;IAEpB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7D,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QACD,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC;YACnD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,IAAI,KAAK,EAAE,IAAI,KAAK,eAAe,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,EAAE,IAAI,KAAK,eAAe,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -69,6 +69,10 @@ export declare function runPackageCli(opts: {
69
69
  failurePrefix: string;
70
70
  /** Thrown when no launcher is available. */
71
71
  missingMessage: string;
72
+ /** Extra environment merged over `process.env` for the build child. */
73
+ env?: NodeJS.ProcessEnv;
74
+ /** Per-line tap for build output (stdout/stderr). */
75
+ onOutput?: (line: string, source: "stdout" | "stderr") => void;
72
76
  signal?: AbortSignal;
73
77
  }): Promise<void>;
74
78
  //# sourceMappingURL=build-strategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-strategy.d.ts","sourceRoot":"","sources":["../src/build-strategy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAEjC;;;;OAIG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;;GAGG;AACH,qBAAa,QAAS,YAAW,aAAa;;gBAIhC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAKtD,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAyB5D;AAQD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB"}
1
+ {"version":3,"file":"build-strategy.d.ts","sourceRoot":"","sources":["../src/build-strategy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAEjC;;;;OAIG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;;GAGG;AACH,qBAAa,QAAS,YAAW,aAAa;;gBAIhC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAKtD,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAyB5D;AAQD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB"}
@@ -1,6 +1,6 @@
1
- import { execFile } from "node:child_process";
2
1
  import { readdir, readFile, stat } from "node:fs/promises";
3
2
  import path from "node:path";
3
+ import { buildCommandEnv, runChildProcess } from "./workspace.js";
4
4
  /**
5
5
  * Reads directly from a pre-built application directory without copying.
6
6
  * Validates the entrypoint exists.
@@ -91,6 +91,9 @@ export async function hasPackageDependency(appPath, packageNames, signal) {
91
91
  * Throws with `missingMessage` if none of the launchers is available.
92
92
  */
93
93
  export async function runPackageCli(opts) {
94
+ // Every ancestor `node_modules/.bin` on PATH plus any injected deploy vars,
95
+ // so a workspace-hoisted CLI resolves and the build sees its deploy env.
96
+ const env = await buildCommandEnv(opts.appPath, { ...process.env, ...opts.env }, opts.signal);
94
97
  const localBin = path.join(opts.appPath, "node_modules", ".bin", opts.cliName);
95
98
  const candidates = [
96
99
  { command: localBin, args: opts.args },
@@ -100,7 +103,15 @@ export async function runPackageCli(opts) {
100
103
  for (const { command, args } of candidates) {
101
104
  opts.signal?.throwIfAborted();
102
105
  try {
103
- await exec(command, args, opts.appPath, opts.failurePrefix, opts.signal);
106
+ await runChildProcess({
107
+ command,
108
+ args,
109
+ cwd: opts.appPath,
110
+ env,
111
+ failurePrefix: opts.failurePrefix,
112
+ onOutput: opts.onOutput,
113
+ signal: opts.signal,
114
+ });
104
115
  return;
105
116
  }
106
117
  catch (error) {
@@ -119,22 +130,4 @@ function isENOENT(error) {
119
130
  "code" in error &&
120
131
  error.code === "ENOENT");
121
132
  }
122
- function exec(command, args, cwd, failurePrefix, signal) {
123
- return new Promise((resolve, reject) => {
124
- execFile(command, args, { cwd, signal }, (error, _stdout, stderr) => {
125
- if (error) {
126
- if ("code" in error && error.code === "ENOENT") {
127
- reject(Object.assign(new Error(`${command} not found`), {
128
- code: "ENOENT",
129
- }));
130
- return;
131
- }
132
- const message = stderr.trim() || error.message;
133
- reject(new Error(`${failurePrefix} build failed:\n${message}`));
134
- return;
135
- }
136
- resolve();
137
- });
138
- });
139
- }
140
133
  //# sourceMappingURL=build-strategy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-strategy.js","sourceRoot":"","sources":["../src/build-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-strategy.js","sourceRoot":"","sources":["../src/build-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { BuildSettings } from "./build-settings.ts";
2
+ import type { BuildStrategy } from "./build-strategy.ts";
3
+ import { type FrameworkBuildType } from "./config/frameworks.ts";
4
+ import type { BuildCommandIo } from "./workspace.ts";
5
+ /** A concrete framework build type, or `"auto"` to detect it. */
6
+ export type BuildType = FrameworkBuildType | "auto";
7
+ /**
8
+ * Consumer hooks shared across `createBuildStrategy` / `resolveBuildStrategy`.
9
+ * All optional: the CLI passes none, while a headless consumer injects build
10
+ * `env`, taps output, and requires standalone Next output.
11
+ */
12
+ export interface BuildStrategyHooks {
13
+ /** Build `env` and per-line output tap, forwarded to the build command. */
14
+ io?: BuildCommandIo;
15
+ /** Fail instead of falling back to the full-tree Next `next start` artifact. */
16
+ requireStandalone?: boolean;
17
+ }
18
+ /**
19
+ * Constructs the build strategy for an explicit framework build type, wiring
20
+ * through optional committed build settings and (for bun) the entrypoint.
21
+ */
22
+ export declare function createBuildStrategy(options: {
23
+ appPath: string;
24
+ buildType: FrameworkBuildType;
25
+ entrypoint?: string;
26
+ buildSettings?: BuildSettings;
27
+ } & BuildStrategyHooks): BuildStrategy;
28
+ /**
29
+ * Resolves the build strategy and the concrete build type for an app. With an
30
+ * explicit `buildType` the matching strategy is returned directly; with
31
+ * `"auto"` (or omitted) each framework is tried in detection order and the
32
+ * first match wins, with bun as the fallback. Returning the resolved build
33
+ * type lets a consumer report what it detected.
34
+ */
35
+ export declare function resolveBuildStrategy(options: {
36
+ appPath: string;
37
+ buildType?: BuildType;
38
+ entrypoint?: string;
39
+ buildSettings?: BuildSettings;
40
+ signal?: AbortSignal;
41
+ } & BuildStrategyHooks): Promise<{
42
+ strategy: BuildStrategy;
43
+ buildType: FrameworkBuildType;
44
+ }>;
45
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,iEAAiE;AACjE,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,kBAAkB,GACrB,aAAa,CAwBf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,kBAAkB,GACrB,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAkCrE"}
package/dist/build.js ADDED
@@ -0,0 +1,86 @@
1
+ import { AstroBuild } from "./astro-build.js";
2
+ import { BunBuild } from "./bun-build.js";
3
+ import { FRAMEWORKS } from "./config/frameworks.js";
4
+ import { NextjsBuild } from "./nextjs-build.js";
5
+ import { NuxtBuild } from "./nuxt-build.js";
6
+ import { TanstackStartBuild } from "./tanstack-start-build.js";
7
+ /**
8
+ * Detection order, derived from the framework registry so a new framework is
9
+ * picked up automatically. `bun` is forced last — it is the universal fallback
10
+ * (its `canBuild` always returns true).
11
+ */
12
+ const DETECTION_ORDER = (() => {
13
+ const buildTypes = [
14
+ ...new Set(FRAMEWORKS.map((framework) => framework.buildType)),
15
+ ];
16
+ return [...buildTypes.filter((type) => type !== "bun"), "bun"];
17
+ })();
18
+ /**
19
+ * Constructs the build strategy for an explicit framework build type, wiring
20
+ * through optional committed build settings and (for bun) the entrypoint.
21
+ */
22
+ export function createBuildStrategy(options) {
23
+ const { appPath, buildSettings, io } = options;
24
+ switch (options.buildType) {
25
+ case "nextjs":
26
+ return new NextjsBuild({
27
+ appPath,
28
+ buildSettings,
29
+ io,
30
+ requireStandalone: options.requireStandalone,
31
+ });
32
+ case "nuxt":
33
+ return new NuxtBuild({ appPath, io });
34
+ case "astro":
35
+ return new AstroBuild({ appPath, io });
36
+ case "tanstack-start":
37
+ return new TanstackStartBuild({ appPath, buildSettings, io });
38
+ case "bun":
39
+ return new BunBuild({
40
+ appPath,
41
+ entrypoint: options.entrypoint,
42
+ buildSettings,
43
+ io,
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Resolves the build strategy and the concrete build type for an app. With an
49
+ * explicit `buildType` the matching strategy is returned directly; with
50
+ * `"auto"` (or omitted) each framework is tried in detection order and the
51
+ * first match wins, with bun as the fallback. Returning the resolved build
52
+ * type lets a consumer report what it detected.
53
+ */
54
+ export async function resolveBuildStrategy(options) {
55
+ const shared = {
56
+ appPath: options.appPath,
57
+ entrypoint: options.entrypoint,
58
+ buildSettings: options.buildSettings,
59
+ io: options.io,
60
+ requireStandalone: options.requireStandalone,
61
+ };
62
+ if (options.buildType && options.buildType !== "auto") {
63
+ return {
64
+ buildType: options.buildType,
65
+ strategy: createBuildStrategy({
66
+ ...shared,
67
+ buildType: options.buildType,
68
+ }),
69
+ };
70
+ }
71
+ for (const buildType of DETECTION_ORDER) {
72
+ if (buildType === "bun") {
73
+ break;
74
+ }
75
+ const strategy = createBuildStrategy({ ...shared, buildType });
76
+ options.signal?.throwIfAborted();
77
+ if (await strategy.canBuild(options.signal)) {
78
+ return { buildType, strategy };
79
+ }
80
+ }
81
+ return {
82
+ buildType: "bun",
83
+ strategy: createBuildStrategy({ ...shared, buildType: "bun" }),
84
+ };
85
+ }
86
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
+ import type { BuildSettings } from "./build-settings.ts";
1
2
  import type { BuildArtifact, BuildStrategy } from "./build-strategy.ts";
3
+ import { type BuildCommandIo } from "./workspace.ts";
2
4
  /**
3
5
  * Build strategy that runs `bun build` CLI and manages its own temp output directory.
4
6
  * Owns entrypoint resolution from explicit arg or package.json main field.
7
+ *
8
+ * When build settings carry a build command (a `package.json` build script),
9
+ * it runs first — so a Bun app can compile assets or generate code before the
10
+ * entrypoint is bundled.
5
11
  */
6
12
  export declare class BunBuild implements BuildStrategy {
7
13
  #private;
8
14
  constructor(options: {
9
15
  appPath: string;
10
16
  entrypoint?: string;
17
+ buildSettings?: BuildSettings;
18
+ io?: BuildCommandIo;
11
19
  });
12
20
  canBuild(_signal?: AbortSignal): Promise<boolean>;
13
21
  execute(signal?: AbortSignal): Promise<BuildArtifact>;
@@ -1 +1 @@
1
- {"version":3,"file":"bun-build.d.ts","sourceRoot":"","sources":["../src/bun-build.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGxE;;;GAGG;AACH,qBAAa,QAAS,YAAW,aAAa;;gBAIhC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvD,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAqK5D"}
1
+ {"version":3,"file":"bun-build.d.ts","sourceRoot":"","sources":["../src/bun-build.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,aAAa;;gBAMhC,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,EAAE,CAAC,EAAE,cAAc,CAAC;KACrB;IAOK,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAmL5D"}