everything-dev 1.45.0 → 1.46.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 (55) hide show
  1. package/dist/build.cjs +328 -0
  2. package/dist/build.cjs.map +1 -0
  3. package/dist/build.mjs +320 -0
  4. package/dist/build.mjs.map +1 -0
  5. package/dist/cli/init.cjs +1 -1
  6. package/dist/cli/init.mjs +1 -1
  7. package/dist/cli/sync.cjs +1 -1
  8. package/dist/cli/sync.mjs +1 -1
  9. package/dist/cli/upgrade.cjs +2 -2
  10. package/dist/cli/upgrade.mjs +2 -2
  11. package/dist/cli.cjs +2 -2
  12. package/dist/cli.mjs +2 -2
  13. package/dist/code-artifacts.cjs +25 -0
  14. package/dist/code-artifacts.cjs.map +1 -0
  15. package/dist/code-artifacts.mjs +24 -0
  16. package/dist/code-artifacts.mjs.map +1 -0
  17. package/dist/contract.cjs.map +1 -1
  18. package/dist/contract.d.cts +22 -21
  19. package/dist/contract.d.cts.map +1 -1
  20. package/dist/contract.d.mts +22 -21
  21. package/dist/contract.d.mts.map +1 -1
  22. package/dist/contract.mjs.map +1 -1
  23. package/dist/index.d.cts +2 -2
  24. package/dist/index.d.mts +2 -2
  25. package/dist/integrity.cjs +18 -55
  26. package/dist/integrity.cjs.map +1 -1
  27. package/dist/integrity.d.cts +3 -7
  28. package/dist/integrity.d.cts.map +1 -1
  29. package/dist/integrity.d.mts +3 -7
  30. package/dist/integrity.d.mts.map +1 -1
  31. package/dist/integrity.mjs +18 -53
  32. package/dist/integrity.mjs.map +1 -1
  33. package/dist/plugin.cjs +37 -571
  34. package/dist/plugin.cjs.map +1 -1
  35. package/dist/plugin.d.cts +9 -16
  36. package/dist/plugin.d.cts.map +1 -1
  37. package/dist/plugin.d.mts +9 -16
  38. package/dist/plugin.d.mts.map +1 -1
  39. package/dist/plugin.mjs +23 -556
  40. package/dist/plugin.mjs.map +1 -1
  41. package/dist/publish.cjs +220 -0
  42. package/dist/publish.cjs.map +1 -0
  43. package/dist/publish.mjs +217 -0
  44. package/dist/publish.mjs.map +1 -0
  45. package/dist/types.d.cts +2 -2
  46. package/dist/types.d.mts +2 -2
  47. package/dist/utils/run.cjs +21 -3
  48. package/dist/utils/run.cjs.map +1 -1
  49. package/dist/utils/run.mjs +21 -3
  50. package/dist/utils/run.mjs.map +1 -1
  51. package/dist/utils/string.cjs +9 -0
  52. package/dist/utils/string.cjs.map +1 -0
  53. package/dist/utils/string.mjs +8 -0
  54. package/dist/utils/string.mjs.map +1 -0
  55. package/package.json +1 -1
package/dist/build.mjs ADDED
@@ -0,0 +1,320 @@
1
+ import { resolveLocalDevelopmentPath } from "./config.mjs";
2
+ import { applyDeployResults, parseDeployLines } from "./integrity.mjs";
3
+ import { formatDuration } from "./cli/timing.mjs";
4
+ import { syncResolvedSharedDeps } from "./shared-deps.mjs";
5
+ import { run } from "./utils/run.mjs";
6
+ import { padRight } from "./utils/string.mjs";
7
+ import { colors, icons } from "./utils/theme.mjs";
8
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
9
+ import { join } from "node:path";
10
+ import process from "node:process";
11
+ import { access, readFile } from "node:fs/promises";
12
+
13
+ //#region src/build.ts
14
+ const buildCommands = {
15
+ host: {
16
+ cmd: "bun",
17
+ args: ["run", "build"]
18
+ },
19
+ ui: {
20
+ cmd: "bun",
21
+ args: ["run", "build"]
22
+ },
23
+ api: {
24
+ cmd: "bun",
25
+ args: ["run", "build"]
26
+ }
27
+ };
28
+ function getPluginRef(entry) {
29
+ if (!entry || typeof entry === "string") return null;
30
+ return entry;
31
+ }
32
+ async function fileExists(path) {
33
+ try {
34
+ await access(path);
35
+ return true;
36
+ } catch {
37
+ return false;
38
+ }
39
+ }
40
+ async function readJsonFile(path) {
41
+ return JSON.parse(await readFile(path, "utf8"));
42
+ }
43
+ function resolveWorkspaceTarget(key, bosConfig, runtimeConfig, configDir) {
44
+ if (bosConfig?.app && key in bosConfig.app) {
45
+ const appEntry = bosConfig.app[key];
46
+ const devPath = resolveLocalDevelopmentPath(appEntry?.development, configDir);
47
+ if (devPath) return {
48
+ key,
49
+ kind: "app",
50
+ path: devPath
51
+ };
52
+ return {
53
+ key,
54
+ kind: "app",
55
+ path: `${configDir}/${key}`
56
+ };
57
+ }
58
+ const pluginPath = (runtimeConfig?.plugins?.[key])?.localPath ?? resolveLocalDevelopmentPath(getPluginRef(bosConfig?.plugins?.[key])?.development, configDir);
59
+ if (pluginPath) return {
60
+ key,
61
+ kind: "plugin",
62
+ path: pluginPath
63
+ };
64
+ return null;
65
+ }
66
+ function selectWorkspaceTargets(packages, bosConfig) {
67
+ const allPackages = [...Object.keys(bosConfig?.app ?? {}), ...Object.keys(bosConfig?.plugins ?? {})];
68
+ if (packages === "all") return allPackages;
69
+ return packages.split(",").map((pkg) => pkg.trim()).filter((pkg) => allPackages.includes(pkg));
70
+ }
71
+ async function runBuildAttempt(cmd, args, cwd, env, verbose, wsKey) {
72
+ let zephyrAuthShown = false;
73
+ const result = await run(cmd, args, {
74
+ cwd,
75
+ env,
76
+ capture: true,
77
+ onChunk: (stream, chunk) => {
78
+ if (verbose) if (stream === "stdout") process.stdout.write(chunk);
79
+ else process.stderr.write(chunk);
80
+ if (zephyrAuthShown) return;
81
+ const text = chunk.toString("utf-8");
82
+ if (/Authentication required.*log in to Zephyr/i.test(text) || /auth\.zephyr-cloud\.io\/authorize/.test(text)) {
83
+ zephyrAuthShown = true;
84
+ const urlMatch = text.match(/https:\/\/auth\.zephyr-cloud\.io\/authorize\S+/);
85
+ console.log();
86
+ console.log(colors.yellow(` ⚠ Zephyr authentication required for ${wsKey}`));
87
+ if (urlMatch) console.log(` ${colors.cyan(urlMatch[0])}`);
88
+ console.log(colors.dim(" Waiting for authentication..."));
89
+ console.log();
90
+ }
91
+ }
92
+ });
93
+ const stdout = result?.stdout ?? "";
94
+ const stderr = result?.stderr ?? "";
95
+ const exitCode = result?.exitCode ?? 0;
96
+ const output = `${stdout}\n${stderr}`;
97
+ const deployEntries = parseDeployLines(output);
98
+ if (exitCode !== 0) return {
99
+ success: false,
100
+ error: `Build failed (exit code ${exitCode})\n${output.trim().split("\n").slice(-5).join("\n")}`,
101
+ exitCode,
102
+ output,
103
+ deployEntries
104
+ };
105
+ const zeMatch = output.match(/ZE\d+/);
106
+ if (zeMatch) return {
107
+ success: false,
108
+ error: `Zephyr upload failed (${zeMatch[0]})`,
109
+ exitCode: 0,
110
+ output,
111
+ deployEntries
112
+ };
113
+ if (deployEntries.length > 0) return {
114
+ success: true,
115
+ url: deployEntries[0]?.url,
116
+ exitCode: 0,
117
+ output,
118
+ deployEntries
119
+ };
120
+ const deployMatch = output.match(/🚀.*Deployed:\s*(https?:\S+)/);
121
+ if (deployMatch) return {
122
+ success: true,
123
+ url: deployMatch[1],
124
+ exitCode: 0,
125
+ output
126
+ };
127
+ if (env.DEPLOY === "true") return {
128
+ success: false,
129
+ error: "No deploy URL found (Zephyr may have failed)",
130
+ exitCode: 0,
131
+ output
132
+ };
133
+ return {
134
+ success: true,
135
+ exitCode: 0,
136
+ output
137
+ };
138
+ }
139
+ async function buildOneWorkspace(ws, env, opts) {
140
+ const pkgJson = await readJsonFile(`${ws.path}/package.json`);
141
+ const buildConfig = opts.deploy && pkgJson.scripts?.deploy ? {
142
+ cmd: "bun",
143
+ args: ["run", "deploy"]
144
+ } : buildCommands[ws.key] ?? {
145
+ cmd: "bun",
146
+ args: ["run", "build"]
147
+ };
148
+ const wsEnv = { ...env };
149
+ const startTime = Date.now();
150
+ let attempt = await runBuildAttempt(buildConfig.cmd, buildConfig.args, ws.path, wsEnv, opts.verbose ?? false, ws.key);
151
+ let retried = false;
152
+ if (!attempt.success && attempt.exitCode === 0 && opts.deploy) {
153
+ if (!opts.verbose) console.log(` ${colors.yellow("↻")} ${padRight(ws.key, 28)} retrying...`);
154
+ retried = true;
155
+ attempt = await runBuildAttempt(buildConfig.cmd, buildConfig.args, ws.path, wsEnv, opts.verbose ?? false, ws.key);
156
+ }
157
+ const durationMs = Date.now() - startTime;
158
+ const result = {
159
+ key: ws.key,
160
+ kind: ws.kind,
161
+ success: attempt.success,
162
+ url: attempt.url,
163
+ error: attempt.error,
164
+ deployEntries: attempt.deployEntries,
165
+ durationMs,
166
+ retried: retried ? true : void 0
167
+ };
168
+ if (!opts.verbose) {
169
+ const name = padRight(ws.key, 28);
170
+ if (result.success) {
171
+ const duration = formatDuration(durationMs);
172
+ const retryTag = retried ? " (retried)" : "";
173
+ console.log(` ${colors.green(icons.ok)} ${name} ${colors.dim(duration + retryTag)}`);
174
+ } else {
175
+ const errorLine = (result.error ?? "Failed").split("\n")[0];
176
+ console.log(` ${colors.error(icons.err)} ${name} ${errorLine}`);
177
+ }
178
+ }
179
+ return result;
180
+ }
181
+ async function buildWorkspaceTargets(opts) {
182
+ const existing = [];
183
+ const skipped = [];
184
+ for (const target of opts.targets) {
185
+ const resolved = resolveWorkspaceTarget(target, opts.bosConfig, opts.runtimeConfig, opts.configDir);
186
+ if (!resolved) {
187
+ skipped.push(target);
188
+ continue;
189
+ }
190
+ if (await fileExists(`${resolved.path}/package.json`)) existing.push(resolved);
191
+ else skipped.push(target);
192
+ }
193
+ if (existing.length === 0) return {
194
+ built: [],
195
+ skipped
196
+ };
197
+ if ((await syncResolvedSharedDeps({
198
+ configDir: opts.configDir,
199
+ hostMode: "local",
200
+ bosConfig: opts.bosConfig ?? void 0,
201
+ extendsChain: []
202
+ })).catalogChanged) await run("bun", ["install"], { cwd: opts.configDir });
203
+ const shouldBuildPlugin = existing.some((entry) => entry.key === "api");
204
+ const forceRebuild = opts.deploy;
205
+ const buildTasks = [buildEverythingDevQuietly(opts.configDir, forceRebuild)];
206
+ if (shouldBuildPlugin) buildTasks.push(buildEveryPluginQuietly(opts.configDir, forceRebuild));
207
+ await Promise.all(buildTasks);
208
+ const env = {
209
+ ...process.env,
210
+ NODE_ENV: opts.deploy ? "production" : "development"
211
+ };
212
+ if (opts.deploy) env.DEPLOY = "true";
213
+ else delete env.DEPLOY;
214
+ const bosConfigPath = join(opts.configDir, "bos.config.json");
215
+ let configSnapshot;
216
+ if (opts.deploy && existsSync(bosConfigPath)) configSnapshot = readFileSync(bosConfigPath, "utf-8");
217
+ const orderedExisting = opts.deploy ? [
218
+ ...existing.filter((entry) => entry.kind === "app" && entry.key !== "host"),
219
+ ...existing.filter((entry) => entry.kind === "plugin"),
220
+ ...existing.filter((entry) => entry.kind === "app" && entry.key === "host")
221
+ ] : existing;
222
+ const parallelGroup = opts.deploy ? orderedExisting.filter((e) => e.key !== "host") : orderedExisting;
223
+ const sequentialGroup = opts.deploy ? orderedExisting.filter((e) => e.key === "host") : [];
224
+ const built = [];
225
+ const deployResults = [];
226
+ if (opts.deploy && parallelGroup.length > 0) {
227
+ const total = parallelGroup.length + sequentialGroup.length;
228
+ console.log();
229
+ console.log(` Building ${total} workspace${total > 1 ? "s" : ""}...`);
230
+ console.log();
231
+ const results = await Promise.allSettled(parallelGroup.map((ws) => buildOneWorkspace(ws, env, opts)));
232
+ const allDeployEntries = [];
233
+ for (let i = 0; i < parallelGroup.length; i++) {
234
+ const ws = parallelGroup[i];
235
+ const result = results[i];
236
+ if (result.status === "fulfilled") {
237
+ if (result.value.success) built.push(ws.key);
238
+ if (result.value.deployEntries) allDeployEntries.push(...result.value.deployEntries);
239
+ const { deployEntries: _deployEntries, ...deployResult } = result.value;
240
+ deployResults.push(deployResult);
241
+ } else deployResults.push({
242
+ key: ws.key,
243
+ kind: ws.kind,
244
+ success: false,
245
+ error: result.reason?.message ?? "Unknown error"
246
+ });
247
+ }
248
+ if (configSnapshot && allDeployEntries.length > 0) {
249
+ const merged = applyDeployResults(JSON.parse(configSnapshot), allDeployEntries);
250
+ writeFileSync(bosConfigPath, `${JSON.stringify(merged, null, 2)}\n`);
251
+ }
252
+ for (const ws of sequentialGroup) {
253
+ const result = await buildOneWorkspace(ws, env, opts);
254
+ if (result.success) built.push(ws.key);
255
+ if (result.deployEntries) {
256
+ const hostEntries = result.deployEntries.filter((r) => r.urlField.startsWith("app.host"));
257
+ if (hostEntries.length > 0 && existsSync(bosConfigPath)) {
258
+ const merged = applyDeployResults(JSON.parse(readFileSync(bosConfigPath, "utf-8")), hostEntries);
259
+ writeFileSync(bosConfigPath, `${JSON.stringify(merged, null, 2)}\n`);
260
+ }
261
+ }
262
+ const { deployEntries: _deployEntries, ...sequentialResult } = result;
263
+ deployResults.push(sequentialResult);
264
+ }
265
+ console.log();
266
+ } else for (const resolved of orderedExisting) {
267
+ const buildConfig = buildCommands[resolved.key] ?? {
268
+ cmd: "bun",
269
+ args: ["run", "build"]
270
+ };
271
+ await run(buildConfig.cmd, buildConfig.args, {
272
+ cwd: resolved.path,
273
+ env
274
+ });
275
+ built.push(resolved.key);
276
+ }
277
+ return {
278
+ built,
279
+ skipped,
280
+ deployResults: opts.deploy ? deployResults : void 0
281
+ };
282
+ }
283
+ async function buildEveryPluginQuietly(cwd, force = false) {
284
+ if (!await fileExists(`${`${cwd}/packages/every-plugin`}/package.json`)) return;
285
+ if (await fileExists(`${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`) && !force) return;
286
+ const result = await run("bun", [
287
+ "run",
288
+ "--cwd",
289
+ "packages/every-plugin",
290
+ "build"
291
+ ], {
292
+ cwd,
293
+ capture: true
294
+ });
295
+ if (result.exitCode === 0) return;
296
+ if (result.stdout.trim()) process.stdout.write(result.stdout);
297
+ if (result.stderr.trim()) process.stderr.write(result.stderr);
298
+ throw new Error(`bun run --cwd packages/every-plugin build failed with exit code ${result.exitCode}`);
299
+ }
300
+ async function buildEverythingDevQuietly(cwd, force = false) {
301
+ if (!await fileExists(`${`${cwd}/packages/everything-dev`}/package.json`)) return;
302
+ if (await fileExists(`${cwd}/packages/everything-dev/dist/index.mjs`) && !force) return;
303
+ const result = await run("bun", [
304
+ "run",
305
+ "--cwd",
306
+ "packages/everything-dev",
307
+ "build"
308
+ ], {
309
+ cwd,
310
+ capture: true
311
+ });
312
+ if (result.exitCode === 0) return;
313
+ if (result.stdout.trim()) process.stdout.write(result.stdout);
314
+ if (result.stderr.trim()) process.stderr.write(result.stderr);
315
+ throw new Error(`bun run --cwd packages/everything-dev build failed with exit code ${result.exitCode}`);
316
+ }
317
+
318
+ //#endregion
319
+ export { buildEveryPluginQuietly, buildEverythingDevQuietly, buildWorkspaceTargets, fileExists, getPluginRef, readJsonFile, selectWorkspaceTargets };
320
+ //# sourceMappingURL=build.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.mjs","names":[],"sources":["../src/build.ts"],"sourcesContent":["import { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { access, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport { formatDuration } from \"./cli/timing\";\nimport { resolveLocalDevelopmentPath } from \"./config\";\nimport type { WorkspaceDeployResult } from \"./contract\";\nimport { applyDeployResults, type DeployResultEntry, parseDeployLines } from \"./integrity\";\nimport { syncResolvedSharedDeps } from \"./shared-deps\";\nimport type { BosConfig, BosPluginRef, RuntimeConfig } from \"./types\";\nimport { run } from \"./utils/run\";\nimport { padRight } from \"./utils/string\";\nimport { colors, icons } from \"./utils/theme\";\n\nconst buildCommands: Record<string, { cmd: string; args: string[] }> = {\n host: { cmd: \"bun\", args: [\"run\", \"build\"] },\n ui: { cmd: \"bun\", args: [\"run\", \"build\"] },\n api: { cmd: \"bun\", args: [\"run\", \"build\"] },\n};\n\ntype WorkspaceTarget = {\n key: string;\n kind: \"app\" | \"plugin\";\n path: string;\n};\n\nexport function getPluginRef(entry: string | BosPluginRef | undefined | null): BosPluginRef | null {\n if (!entry || typeof entry === \"string\") return null;\n return entry;\n}\n\nexport async function fileExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function readJsonFile<T>(path: string): Promise<T> {\n return JSON.parse(await readFile(path, \"utf8\")) as T;\n}\n\nfunction resolveWorkspaceTarget(\n key: string,\n bosConfig: BosConfig | null,\n runtimeConfig: RuntimeConfig | null,\n configDir: string,\n): WorkspaceTarget | null {\n if (bosConfig?.app && key in bosConfig.app) {\n const appEntry = (bosConfig.app as Record<string, { development?: string }>)[key];\n const devPath = resolveLocalDevelopmentPath(appEntry?.development, configDir);\n if (devPath) {\n return {\n key,\n kind: \"app\",\n path: devPath,\n };\n }\n return {\n key,\n kind: \"app\",\n path: `${configDir}/${key}`,\n };\n }\n\n const runtimePlugin = runtimeConfig?.plugins?.[key];\n const pluginPath =\n runtimePlugin?.localPath ??\n resolveLocalDevelopmentPath(getPluginRef(bosConfig?.plugins?.[key])?.development, configDir);\n if (pluginPath) {\n return {\n key,\n kind: \"plugin\",\n path: pluginPath,\n };\n }\n\n return null;\n}\n\nexport function selectWorkspaceTargets(packages: string, bosConfig: BosConfig | null): string[] {\n const allPackages = [\n ...Object.keys(bosConfig?.app ?? {}),\n ...Object.keys(bosConfig?.plugins ?? {}),\n ];\n if (packages === \"all\") {\n return allPackages;\n }\n\n return packages\n .split(\",\")\n .map((pkg) => pkg.trim())\n .filter((pkg) => allPackages.includes(pkg));\n}\n\ninterface BuildAttemptResult {\n success: boolean;\n url?: string;\n error?: string;\n exitCode: number;\n output: string;\n deployEntries?: DeployResultEntry[];\n}\n\nasync function runBuildAttempt(\n cmd: string,\n args: string[],\n cwd: string,\n env: Record<string, string>,\n verbose: boolean,\n wsKey: string,\n): Promise<BuildAttemptResult> {\n let zephyrAuthShown = false;\n const result = await run(cmd, args, {\n cwd,\n env,\n capture: true,\n onChunk: (stream, chunk) => {\n if (verbose) {\n if (stream === \"stdout\") process.stdout.write(chunk);\n else process.stderr.write(chunk);\n }\n if (zephyrAuthShown) return;\n const text = chunk.toString(\"utf-8\");\n if (\n /Authentication required.*log in to Zephyr/i.test(text) ||\n /auth\\.zephyr-cloud\\.io\\/authorize/.test(text)\n ) {\n zephyrAuthShown = true;\n const urlMatch = text.match(/https:\\/\\/auth\\.zephyr-cloud\\.io\\/authorize\\S+/);\n console.log();\n console.log(colors.yellow(` ⚠ Zephyr authentication required for ${wsKey}`));\n if (urlMatch) {\n console.log(` ${colors.cyan(urlMatch[0])}`);\n }\n console.log(colors.dim(\" Waiting for authentication...\"));\n console.log();\n }\n },\n });\n const stdout = result?.stdout ?? \"\";\n const stderr = result?.stderr ?? \"\";\n const exitCode = result?.exitCode ?? 0;\n const output = `${stdout}\\n${stderr}`;\n\n const deployEntries = parseDeployLines(output);\n\n if (exitCode !== 0) {\n const lastLines = output.trim().split(\"\\n\").slice(-5).join(\"\\n\");\n return {\n success: false,\n error: `Build failed (exit code ${exitCode})\\n${lastLines}`,\n exitCode,\n output,\n deployEntries,\n };\n }\n\n const zeMatch = output.match(/ZE\\d+/);\n if (zeMatch) {\n return {\n success: false,\n error: `Zephyr upload failed (${zeMatch[0]})`,\n exitCode: 0,\n output,\n deployEntries,\n };\n }\n\n if (deployEntries.length > 0) {\n return { success: true, url: deployEntries[0]?.url, exitCode: 0, output, deployEntries };\n }\n\n const deployMatch = output.match(/🚀.*Deployed:\\s*(https?:\\S+)/);\n if (deployMatch) {\n return { success: true, url: deployMatch[1], exitCode: 0, output };\n }\n\n if (env.DEPLOY === \"true\") {\n return {\n success: false,\n error: \"No deploy URL found (Zephyr may have failed)\",\n exitCode: 0,\n output,\n };\n }\n return { success: true, exitCode: 0, output };\n}\n\ninterface InternalWorkspaceResult extends WorkspaceDeployResult {\n deployEntries?: DeployResultEntry[];\n}\n\nasync function buildOneWorkspace(\n ws: WorkspaceTarget,\n env: Record<string, string>,\n opts: { deploy: boolean; verbose?: boolean },\n): Promise<InternalWorkspaceResult> {\n const pkgJson = await readJsonFile<{\n scripts?: Record<string, string>;\n }>(`${ws.path}/package.json`);\n const shouldDeployScript = opts.deploy && pkgJson.scripts?.deploy;\n const buildConfig = shouldDeployScript\n ? { cmd: \"bun\", args: [\"run\", \"deploy\"] }\n : (buildCommands[ws.key] ?? { cmd: \"bun\", args: [\"run\", \"build\"] });\n\n const wsEnv = { ...env };\n\n const startTime = Date.now();\n let attempt = await runBuildAttempt(\n buildConfig.cmd,\n buildConfig.args,\n ws.path,\n wsEnv,\n opts.verbose ?? false,\n ws.key,\n );\n\n let retried = false;\n\n if (!attempt.success && attempt.exitCode === 0 && opts.deploy) {\n if (!opts.verbose) {\n console.log(` ${colors.yellow(\"↻\")} ${padRight(ws.key, 28)} retrying...`);\n }\n retried = true;\n attempt = await runBuildAttempt(\n buildConfig.cmd,\n buildConfig.args,\n ws.path,\n wsEnv,\n opts.verbose ?? false,\n ws.key,\n );\n }\n\n const durationMs = Date.now() - startTime;\n const result: InternalWorkspaceResult = {\n key: ws.key,\n kind: ws.kind,\n success: attempt.success,\n url: attempt.url,\n error: attempt.error,\n deployEntries: attempt.deployEntries,\n durationMs,\n retried: retried ? true : undefined,\n };\n\n if (!opts.verbose) {\n const name = padRight(ws.key, 28);\n if (result.success) {\n const duration = formatDuration(durationMs);\n const retryTag = retried ? \" (retried)\" : \"\";\n console.log(` ${colors.green(icons.ok)} ${name} ${colors.dim(duration + retryTag)}`);\n } else {\n const errorLine = (result.error ?? \"Failed\").split(\"\\n\")[0];\n console.log(` ${colors.error(icons.err)} ${name} ${errorLine}`);\n }\n }\n\n return result;\n}\n\nexport async function buildWorkspaceTargets(opts: {\n configDir: string;\n bosConfig: BosConfig | null;\n runtimeConfig: RuntimeConfig | null;\n targets: string[];\n deploy: boolean;\n verbose?: boolean;\n}): Promise<{\n built: string[];\n skipped: string[];\n deployResults?: WorkspaceDeployResult[];\n}> {\n const existing: WorkspaceTarget[] = [];\n const skipped: string[] = [];\n\n for (const target of opts.targets) {\n const resolved = resolveWorkspaceTarget(\n target,\n opts.bosConfig,\n opts.runtimeConfig,\n opts.configDir,\n );\n if (!resolved) {\n skipped.push(target);\n continue;\n }\n\n const exists = await fileExists(`${resolved.path}/package.json`);\n if (exists) existing.push(resolved);\n else skipped.push(target);\n }\n\n if (existing.length === 0) {\n return { built: [], skipped };\n }\n\n const sharedSync = await syncResolvedSharedDeps({\n configDir: opts.configDir,\n hostMode: \"local\",\n bosConfig: opts.bosConfig ?? undefined,\n extendsChain: [],\n });\n if (sharedSync.catalogChanged) {\n await run(\"bun\", [\"install\"], { cwd: opts.configDir });\n }\n\n const shouldBuildPlugin = existing.some((entry) => entry.key === \"api\");\n\n const forceRebuild = opts.deploy;\n const buildTasks: Promise<void>[] = [buildEverythingDevQuietly(opts.configDir, forceRebuild)];\n if (shouldBuildPlugin) {\n buildTasks.push(buildEveryPluginQuietly(opts.configDir, forceRebuild));\n }\n await Promise.all(buildTasks);\n\n const env: Record<string, string> = {\n ...process.env,\n NODE_ENV: opts.deploy ? \"production\" : \"development\",\n };\n if (opts.deploy) {\n env.DEPLOY = \"true\";\n } else {\n delete env.DEPLOY;\n }\n\n const bosConfigPath = join(opts.configDir, \"bos.config.json\");\n let configSnapshot: string | undefined;\n if (opts.deploy && existsSync(bosConfigPath)) {\n configSnapshot = readFileSync(bosConfigPath, \"utf-8\");\n }\n\n const orderedExisting = opts.deploy\n ? [\n ...existing.filter((entry) => entry.kind === \"app\" && entry.key !== \"host\"),\n ...existing.filter((entry) => entry.kind === \"plugin\"),\n ...existing.filter((entry) => entry.kind === \"app\" && entry.key === \"host\"),\n ]\n : existing;\n\n const parallelGroup = opts.deploy\n ? orderedExisting.filter((e) => e.key !== \"host\")\n : orderedExisting;\n const sequentialGroup = opts.deploy ? orderedExisting.filter((e) => e.key === \"host\") : [];\n\n const built: string[] = [];\n const deployResults: WorkspaceDeployResult[] = [];\n\n if (opts.deploy && parallelGroup.length > 0) {\n const total = parallelGroup.length + sequentialGroup.length;\n console.log();\n console.log(` Building ${total} workspace${total > 1 ? \"s\" : \"\"}...`);\n console.log();\n\n const results = await Promise.allSettled(\n parallelGroup.map((ws) => buildOneWorkspace(ws, env, opts)),\n );\n\n const allDeployEntries: DeployResultEntry[] = [];\n for (let i = 0; i < parallelGroup.length; i++) {\n const ws = parallelGroup[i];\n const result = results[i];\n if (result.status === \"fulfilled\") {\n if (result.value.success) {\n built.push(ws.key);\n }\n if (result.value.deployEntries) {\n allDeployEntries.push(...result.value.deployEntries);\n }\n const { deployEntries: _deployEntries, ...deployResult } = result.value;\n deployResults.push(deployResult);\n } else {\n deployResults.push({\n key: ws.key,\n kind: ws.kind,\n success: false,\n error: result.reason?.message ?? \"Unknown error\",\n });\n }\n }\n\n if (configSnapshot && allDeployEntries.length > 0) {\n const config = JSON.parse(configSnapshot) as Record<string, unknown>;\n const merged = applyDeployResults(config, allDeployEntries);\n writeFileSync(bosConfigPath, `${JSON.stringify(merged, null, 2)}\\n`);\n }\n\n for (const ws of sequentialGroup) {\n const result = await buildOneWorkspace(ws, env, opts);\n if (result.success) {\n built.push(ws.key);\n }\n if (result.deployEntries) {\n const hostEntries = result.deployEntries.filter((r) => r.urlField.startsWith(\"app.host\"));\n if (hostEntries.length > 0 && existsSync(bosConfigPath)) {\n const currentConfig = JSON.parse(readFileSync(bosConfigPath, \"utf-8\")) as Record<\n string,\n unknown\n >;\n const merged = applyDeployResults(currentConfig, hostEntries);\n writeFileSync(bosConfigPath, `${JSON.stringify(merged, null, 2)}\\n`);\n }\n }\n const { deployEntries: _deployEntries, ...sequentialResult } = result;\n deployResults.push(sequentialResult);\n }\n\n console.log();\n } else {\n for (const resolved of orderedExisting) {\n const buildConfig = buildCommands[resolved.key] ?? {\n cmd: \"bun\",\n args: [\"run\", \"build\"],\n };\n\n await run(buildConfig.cmd, buildConfig.args, {\n cwd: resolved.path,\n env,\n });\n built.push(resolved.key);\n }\n }\n\n return { built, skipped, deployResults: opts.deploy ? deployResults : undefined };\n}\n\nexport async function buildEveryPluginQuietly(cwd: string, force = false) {\n const packageDir = `${cwd}/packages/every-plugin`;\n const packageExists = await fileExists(`${packageDir}/package.json`);\n if (!packageExists) {\n return;\n }\n\n const distPath = `${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`;\n const distExists = await fileExists(distPath);\n\n if (distExists && !force) {\n return;\n }\n\n const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/every-plugin\", \"build\"], {\n cwd,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (result.exitCode === 0) {\n return;\n }\n\n if (result.stdout.trim()) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr.trim()) {\n process.stderr.write(result.stderr);\n }\n\n throw new Error(\n `bun run --cwd packages/every-plugin build failed with exit code ${result.exitCode}`,\n );\n}\n\nexport async function buildEverythingDevQuietly(cwd: string, force = false) {\n const packageDir = `${cwd}/packages/everything-dev`;\n const packageExists = await fileExists(`${packageDir}/package.json`);\n if (!packageExists) {\n return;\n }\n\n const distPath = `${cwd}/packages/everything-dev/dist/index.mjs`;\n const distExists = await fileExists(distPath);\n\n if (distExists && !force) {\n return;\n }\n\n const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/everything-dev\", \"build\"], {\n cwd,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (result.exitCode === 0) {\n return;\n }\n\n if (result.stdout.trim()) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr.trim()) {\n process.stderr.write(result.stderr);\n }\n\n throw new Error(\n `bun run --cwd packages/everything-dev build failed with exit code ${result.exitCode}`,\n );\n}\n"],"mappings":"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"}
package/dist/cli/init.cjs CHANGED
@@ -9,10 +9,10 @@ const require_snapshot = require('./snapshot.cjs');
9
9
  let node_fs = require("node:fs");
10
10
  let node_path = require("node:path");
11
11
  let node_crypto = require("node:crypto");
12
+ let execa = require("execa");
12
13
  let node_module = require("node:module");
13
14
  let node_os = require("node:os");
14
15
  let node_stream_promises = require("node:stream/promises");
15
- let execa = require("execa");
16
16
  let glob = require("glob");
17
17
 
18
18
  //#region src/cli/init.ts
package/dist/cli/init.mjs CHANGED
@@ -8,9 +8,9 @@ import { createRequire } from "node:module";
8
8
  import { createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
9
9
  import { dirname, join, relative, resolve } from "node:path";
10
10
  import { createHash } from "node:crypto";
11
+ import { execa } from "execa";
11
12
  import { tmpdir } from "node:os";
12
13
  import { pipeline } from "node:stream/promises";
13
- import { execa } from "execa";
14
14
  import { glob } from "glob";
15
15
 
16
16
  //#region src/cli/init.ts
package/dist/cli/sync.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
2
  const require_merge = require('../merge.cjs');
3
3
  const require_config = require('../config.cjs');
4
+ const require_shared_deps = require('../shared-deps.cjs');
4
5
  const require_infra = require('./infra.cjs');
5
6
  const require_snapshot = require('./snapshot.cjs');
6
7
  const require_cli_init = require('./init.cjs');
7
- const require_shared_deps = require('../shared-deps.cjs');
8
8
  let node_fs = require("node:fs");
9
9
  let node_path = require("node:path");
10
10
  let node_crypto = require("node:crypto");
package/dist/cli/sync.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import { isPlainObject, mergeBosConfigWithTemplate, resolveExtendsRef } from "../merge.mjs";
2
2
  import { loadResolvedConfig } from "../config.mjs";
3
+ import { syncResolvedSharedDeps } from "../shared-deps.mjs";
3
4
  import { writeGeneratedInfra } from "./infra.mjs";
4
5
  import { writeSnapshot } from "./snapshot.mjs";
5
6
  import { buildChildAgentsMd, extractSkillsBlock, personalizeConfig, resolveSourceDir, runBunInstall, runTypesGen } from "./init.mjs";
6
- import { syncResolvedSharedDeps } from "../shared-deps.mjs";
7
7
  import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8
8
  import { dirname, join } from "node:path";
9
9
  import { createHash } from "node:crypto";
@@ -1,12 +1,12 @@
1
1
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
2
  const require_merge = require('../merge.cjs');
3
3
  const require_config = require('../config.cjs');
4
+ const require_timing = require('./timing.cjs');
5
+ const require_shared_deps = require('../shared-deps.cjs');
4
6
  const require_save_config = require('../utils/save-config.cjs');
5
7
  const require_cli_init = require('./init.cjs');
6
8
  const require_framework_version = require('./framework-version.cjs');
7
- const require_shared_deps = require('../shared-deps.cjs');
8
9
  const require_sync = require('./sync.cjs');
9
- const require_timing = require('./timing.cjs');
10
10
  let node_fs = require("node:fs");
11
11
  let node_path = require("node:path");
12
12
  let node_process = require("node:process");
@@ -1,11 +1,11 @@
1
1
  import { resolveExtendsRef } from "../merge.mjs";
2
2
  import { loadResolvedConfig } from "../config.mjs";
3
+ import { timePhase } from "./timing.mjs";
4
+ import { syncResolvedSharedDeps } from "../shared-deps.mjs";
3
5
  import { saveBosConfig } from "../utils/save-config.mjs";
4
6
  import { buildChildRootScripts, fetchParentConfig, resolveCatalogChainSource, runBunInstallForUpgrade, runTypesGen } from "./init.mjs";
5
7
  import { readInstalledFrameworkVersion } from "./framework-version.mjs";
6
- import { syncResolvedSharedDeps } from "../shared-deps.mjs";
7
8
  import { syncTemplate } from "./sync.mjs";
8
- import { timePhase } from "./timing.mjs";
9
9
  import { existsSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
11
  import process from "node:process";
package/dist/cli.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
3
  const require_config = require('./config.cjs');
4
- const require_infra = require('./cli/infra.cjs');
5
- const require_cli_init = require('./cli/init.cjs');
6
4
  const require_timing = require('./cli/timing.cjs');
7
5
  const require_theme = require('./utils/theme.cjs');
6
+ const require_infra = require('./cli/infra.cjs');
7
+ const require_cli_init = require('./cli/init.cjs');
8
8
  const require_plugin = require('./plugin.cjs');
9
9
  const require_catalog = require('./cli/catalog.cjs');
10
10
  const require_help = require('./cli/help.cjs');
package/dist/cli.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { findConfigPath } from "./config.mjs";
3
3
  import { createPluginRuntime } from "./sdk.mjs";
4
- import { loadProjectEnv } from "./cli/infra.mjs";
5
- import { fetchParentConfig, runDockerComposeUp } from "./cli/init.mjs";
6
4
  import { formatDuration, sumPhaseDurations } from "./cli/timing.mjs";
7
5
  import { colors, frames, gradients, icons } from "./utils/theme.mjs";
6
+ import { loadProjectEnv } from "./cli/infra.mjs";
7
+ import { fetchParentConfig, runDockerComposeUp } from "./cli/init.mjs";
8
8
  import plugin_default, { consumeDevSession, pluginEvents } from "./plugin.mjs";
9
9
  import { findCommandDescriptor } from "./cli/catalog.mjs";
10
10
  import { printHelp } from "./cli/help.mjs";
@@ -0,0 +1,25 @@
1
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
+ const require_config = require('./config.cjs');
3
+ const require_api_contract = require('./api-contract.cjs');
4
+ let node_path = require("node:path");
5
+
6
+ //#region src/code-artifacts.ts
7
+ async function generateCodeArtifacts(configDir, config, opts) {
8
+ if (opts?.env) require_config.writeResolvedConfig(configDir, config, opts.env, opts.extendsChain);
9
+ const runtimeConfig = opts?.runtimeConfig ?? (await require_config.loadResolvedConfig({ cwd: configDir }))?.runtime;
10
+ if (!runtimeConfig) return null;
11
+ const bridge = await require_api_contract.syncApiContractBridge({
12
+ configDir,
13
+ runtimeConfig,
14
+ apiBaseUrl: runtimeConfig.api.url
15
+ });
16
+ return {
17
+ resolvedConfigPath: opts?.env ? (0, node_path.join)(configDir, ".bos/bos.resolved-config.json") : void 0,
18
+ contractBridgePath: bridge.bridgePath,
19
+ contractStatus: bridge.status
20
+ };
21
+ }
22
+
23
+ //#endregion
24
+ exports.generateCodeArtifacts = generateCodeArtifacts;
25
+ //# sourceMappingURL=code-artifacts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-artifacts.cjs","names":["loadResolvedConfig","syncApiContractBridge"],"sources":["../src/code-artifacts.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { type ContractBridgeStatus, syncApiContractBridge } from \"./api-contract\";\nimport { loadResolvedConfig, writeResolvedConfig } from \"./config\";\nimport type { BosEnv } from \"./merge\";\nimport type { BosConfig, RuntimeConfig } from \"./types\";\n\ninterface GeneratedArtifacts {\n resolvedConfigPath?: string;\n contractBridgePath: string;\n}\n\nexport async function generateCodeArtifacts(\n configDir: string,\n config: BosConfig,\n opts?: {\n env?: BosEnv;\n extendsChain?: string[];\n runtimeConfig?: RuntimeConfig;\n },\n): Promise<(GeneratedArtifacts & { contractStatus: ContractBridgeStatus[] }) | null> {\n if (opts?.env) {\n writeResolvedConfig(configDir, config, opts.env, opts.extendsChain);\n }\n\n const runtimeConfig =\n opts?.runtimeConfig ?? (await loadResolvedConfig({ cwd: configDir }))?.runtime;\n if (!runtimeConfig) return null;\n\n const bridge = await syncApiContractBridge({\n configDir,\n runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n });\n\n return {\n resolvedConfigPath: opts?.env ? join(configDir, \".bos/bos.resolved-config.json\") : undefined,\n contractBridgePath: bridge.bridgePath,\n contractStatus: bridge.status,\n };\n}\n"],"mappings":";;;;;;AAWA,eAAsB,sBACpB,WACA,QACA,MAKmF;AACnF,KAAI,MAAM,IACR,oCAAoB,WAAW,QAAQ,KAAK,KAAK,KAAK,aAAa;CAGrE,MAAM,gBACJ,MAAM,kBAAkB,MAAMA,kCAAmB,EAAE,KAAK,WAAW,CAAC,GAAG;AACzE,KAAI,CAAC,cAAe,QAAO;CAE3B,MAAM,SAAS,MAAMC,2CAAsB;EACzC;EACA;EACA,YAAY,cAAc,IAAI;EAC/B,CAAC;AAEF,QAAO;EACL,oBAAoB,MAAM,0BAAW,WAAW,gCAAgC,GAAG;EACnF,oBAAoB,OAAO;EAC3B,gBAAgB,OAAO;EACxB"}
@@ -0,0 +1,24 @@
1
+ import { loadResolvedConfig, writeResolvedConfig } from "./config.mjs";
2
+ import { syncApiContractBridge } from "./api-contract.mjs";
3
+ import { join } from "node:path";
4
+
5
+ //#region src/code-artifacts.ts
6
+ async function generateCodeArtifacts(configDir, config, opts) {
7
+ if (opts?.env) writeResolvedConfig(configDir, config, opts.env, opts.extendsChain);
8
+ const runtimeConfig = opts?.runtimeConfig ?? (await loadResolvedConfig({ cwd: configDir }))?.runtime;
9
+ if (!runtimeConfig) return null;
10
+ const bridge = await syncApiContractBridge({
11
+ configDir,
12
+ runtimeConfig,
13
+ apiBaseUrl: runtimeConfig.api.url
14
+ });
15
+ return {
16
+ resolvedConfigPath: opts?.env ? join(configDir, ".bos/bos.resolved-config.json") : void 0,
17
+ contractBridgePath: bridge.bridgePath,
18
+ contractStatus: bridge.status
19
+ };
20
+ }
21
+
22
+ //#endregion
23
+ export { generateCodeArtifacts };
24
+ //# sourceMappingURL=code-artifacts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-artifacts.mjs","names":[],"sources":["../src/code-artifacts.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { type ContractBridgeStatus, syncApiContractBridge } from \"./api-contract\";\nimport { loadResolvedConfig, writeResolvedConfig } from \"./config\";\nimport type { BosEnv } from \"./merge\";\nimport type { BosConfig, RuntimeConfig } from \"./types\";\n\ninterface GeneratedArtifacts {\n resolvedConfigPath?: string;\n contractBridgePath: string;\n}\n\nexport async function generateCodeArtifacts(\n configDir: string,\n config: BosConfig,\n opts?: {\n env?: BosEnv;\n extendsChain?: string[];\n runtimeConfig?: RuntimeConfig;\n },\n): Promise<(GeneratedArtifacts & { contractStatus: ContractBridgeStatus[] }) | null> {\n if (opts?.env) {\n writeResolvedConfig(configDir, config, opts.env, opts.extendsChain);\n }\n\n const runtimeConfig =\n opts?.runtimeConfig ?? (await loadResolvedConfig({ cwd: configDir }))?.runtime;\n if (!runtimeConfig) return null;\n\n const bridge = await syncApiContractBridge({\n configDir,\n runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n });\n\n return {\n resolvedConfigPath: opts?.env ? join(configDir, \".bos/bos.resolved-config.json\") : undefined,\n contractBridgePath: bridge.bridgePath,\n contractStatus: bridge.status,\n };\n}\n"],"mappings":";;;;;AAWA,eAAsB,sBACpB,WACA,QACA,MAKmF;AACnF,KAAI,MAAM,IACR,qBAAoB,WAAW,QAAQ,KAAK,KAAK,KAAK,aAAa;CAGrE,MAAM,gBACJ,MAAM,kBAAkB,MAAM,mBAAmB,EAAE,KAAK,WAAW,CAAC,GAAG;AACzE,KAAI,CAAC,cAAe,QAAO;CAE3B,MAAM,SAAS,MAAM,sBAAsB;EACzC;EACA;EACA,YAAY,cAAc,IAAI;EAC/B,CAAC;AAEF,QAAO;EACL,oBAAoB,MAAM,MAAM,KAAK,WAAW,gCAAgC,GAAG;EACnF,oBAAoB,OAAO;EAC3B,gBAAgB,OAAO;EACxB"}