everything-dev 1.27.0 → 1.28.1

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 (114) hide show
  1. package/dist/cli/infra.cjs +1 -1
  2. package/dist/cli/infra.mjs +1 -1
  3. package/dist/cli/init.cjs +34 -9
  4. package/dist/cli/init.cjs.map +1 -1
  5. package/dist/cli/init.d.cts +2 -1
  6. package/dist/cli/init.d.cts.map +1 -1
  7. package/dist/cli/init.d.mts +2 -1
  8. package/dist/cli/init.d.mts.map +1 -1
  9. package/dist/cli/init.mjs +34 -9
  10. package/dist/cli/init.mjs.map +1 -1
  11. package/dist/cli/prompts.cjs +28 -24
  12. package/dist/cli/prompts.cjs.map +1 -1
  13. package/dist/cli/prompts.mjs +27 -24
  14. package/dist/cli/prompts.mjs.map +1 -1
  15. package/dist/cli/sync.cjs +40 -3
  16. package/dist/cli/sync.cjs.map +1 -1
  17. package/dist/cli/sync.mjs +40 -3
  18. package/dist/cli/sync.mjs.map +1 -1
  19. package/dist/cli.cjs +187 -12
  20. package/dist/cli.cjs.map +1 -1
  21. package/dist/cli.mjs +186 -11
  22. package/dist/cli.mjs.map +1 -1
  23. package/dist/config.cjs +1 -0
  24. package/dist/config.cjs.map +1 -1
  25. package/dist/config.d.cts.map +1 -1
  26. package/dist/config.d.mts.map +1 -1
  27. package/dist/config.mjs +1 -0
  28. package/dist/config.mjs.map +1 -1
  29. package/dist/contract.cjs +1 -1
  30. package/dist/contract.cjs.map +1 -1
  31. package/dist/contract.d.cts +38 -34
  32. package/dist/contract.d.cts.map +1 -1
  33. package/dist/contract.d.mts +38 -34
  34. package/dist/contract.d.mts.map +1 -1
  35. package/dist/contract.mjs +1 -0
  36. package/dist/contract.mjs.map +1 -1
  37. package/dist/dev-session.cjs +0 -1
  38. package/dist/dev-session.mjs +1 -1
  39. package/dist/index.cjs +0 -2
  40. package/dist/index.d.cts +2 -2
  41. package/dist/index.d.mts +2 -2
  42. package/dist/index.mjs +0 -1
  43. package/dist/near-cli.cjs +1 -1
  44. package/dist/near-cli.mjs +1 -1
  45. package/dist/orchestrator.cjs +1 -1
  46. package/dist/orchestrator.mjs +1 -1
  47. package/dist/plugin.cjs +183 -151
  48. package/dist/plugin.cjs.map +1 -1
  49. package/dist/plugin.d.cts +67 -34
  50. package/dist/plugin.d.cts.map +1 -1
  51. package/dist/plugin.d.mts +66 -34
  52. package/dist/plugin.d.mts.map +1 -1
  53. package/dist/plugin.mjs +173 -142
  54. package/dist/plugin.mjs.map +1 -1
  55. package/dist/service-descriptor.d.cts +34 -0
  56. package/dist/service-descriptor.d.cts.map +1 -0
  57. package/dist/service-descriptor.d.mts +36 -0
  58. package/dist/service-descriptor.d.mts.map +1 -0
  59. package/dist/types.d.cts +2 -2
  60. package/dist/types.d.mts +2 -2
  61. package/dist/utils/run.cjs +9 -20
  62. package/dist/utils/run.cjs.map +1 -1
  63. package/dist/utils/run.mjs +9 -20
  64. package/dist/utils/run.mjs.map +1 -1
  65. package/package.json +2 -2
  66. package/src/api-contract.ts +0 -623
  67. package/src/app.ts +0 -193
  68. package/src/cli/catalog.ts +0 -49
  69. package/src/cli/framework-version.ts +0 -61
  70. package/src/cli/help.ts +0 -13
  71. package/src/cli/infra.ts +0 -190
  72. package/src/cli/init.ts +0 -1145
  73. package/src/cli/parse.ts +0 -147
  74. package/src/cli/prompts.ts +0 -135
  75. package/src/cli/snapshot.ts +0 -46
  76. package/src/cli/status.ts +0 -99
  77. package/src/cli/sync.ts +0 -429
  78. package/src/cli/timing.ts +0 -63
  79. package/src/cli/upgrade.ts +0 -869
  80. package/src/cli.ts +0 -516
  81. package/src/components/dev-view.tsx +0 -352
  82. package/src/components/streaming-view.ts +0 -177
  83. package/src/config.ts +0 -893
  84. package/src/contract.meta.ts +0 -140
  85. package/src/contract.ts +0 -326
  86. package/src/dev-logs.ts +0 -92
  87. package/src/dev-session.ts +0 -283
  88. package/src/fastkv.ts +0 -181
  89. package/src/index.ts +0 -8
  90. package/src/integrity.ts +0 -138
  91. package/src/internal/manifest-normalizer.ts +0 -290
  92. package/src/merge.ts +0 -187
  93. package/src/mf.ts +0 -147
  94. package/src/near-cli.ts +0 -259
  95. package/src/network.ts +0 -3
  96. package/src/orchestrator.ts +0 -493
  97. package/src/plugin.ts +0 -1799
  98. package/src/sdk.ts +0 -14
  99. package/src/service-descriptor.ts +0 -281
  100. package/src/shared.ts +0 -249
  101. package/src/sidebar.ts +0 -140
  102. package/src/types.ts +0 -330
  103. package/src/ui/head.ts +0 -83
  104. package/src/ui/index.ts +0 -5
  105. package/src/ui/metadata.ts +0 -95
  106. package/src/ui/router.ts +0 -88
  107. package/src/ui/runtime.ts +0 -42
  108. package/src/ui/types.ts +0 -65
  109. package/src/utils/banner.ts +0 -21
  110. package/src/utils/linkify.ts +0 -11
  111. package/src/utils/path-match.ts +0 -16
  112. package/src/utils/run.ts +0 -31
  113. package/src/utils/save-config.ts +0 -20
  114. package/src/utils/theme.ts +0 -39
package/dist/plugin.cjs CHANGED
@@ -1,39 +1,74 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
1
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
3
  const require_fastkv = require('./fastkv.cjs');
3
4
  const require_network = require('./network.cjs');
4
5
  const require_config = require('./config.cjs');
5
- require('./sdk.cjs');
6
6
  const require_contract = require('./contract.cjs');
7
+ const require_sidebar = require('./sidebar.cjs');
8
+ const require_integrity = require('./integrity.cjs');
7
9
  const require_api_contract = require('./api-contract.cjs');
8
10
  const require_app = require('./app.cjs');
9
11
  const require_infra = require('./cli/infra.cjs');
10
12
  const require_save_config = require('./utils/save-config.cjs');
11
13
  const require_cli_init = require('./cli/init.cjs');
12
- const require_prompts = require('./cli/prompts.cjs');
13
14
  const require_status = require('./cli/status.cjs');
14
15
  const require_sync = require('./cli/sync.cjs');
15
- const require_timing = require('./cli/timing.cjs');
16
16
  const require_upgrade = require('./cli/upgrade.cjs');
17
- const require_integrity = require('./integrity.cjs');
18
17
  const require_near_cli = require('./near-cli.cjs');
19
18
  const require_service_descriptor = require('./service-descriptor.cjs');
20
19
  const require_shared = require('./shared.cjs');
21
- const require_sidebar = require('./sidebar.cjs');
22
20
  const require_run = require('./utils/run.cjs');
23
- const require_theme = require('./utils/theme.cjs');
24
21
  let node_fs = require("node:fs");
25
22
  let node_path = require("node:path");
23
+ let node_events = require("node:events");
24
+ let node_fs_promises = require("node:fs/promises");
26
25
  let node_process = require("node:process");
27
26
  node_process = require_runtime.__toESM(node_process, 1);
28
- let _clack_prompts = require("@clack/prompts");
29
- _clack_prompts = require_runtime.__toESM(_clack_prompts, 1);
30
27
  let effect = require("effect");
31
28
  let every_plugin = require("every-plugin");
32
29
  let zod = require("zod");
33
30
 
34
31
  //#region src/plugin.ts
35
- async function loadDevSession() {
36
- return Promise.resolve().then(() => require("./dev-session.cjs"));
32
+ const pluginEvents = new node_events.EventEmitter();
33
+ let pendingSession = null;
34
+ let pendingStartSummary = null;
35
+ function consumeDevSession() {
36
+ const data = pendingSession;
37
+ const summary = pendingStartSummary;
38
+ pendingSession = null;
39
+ pendingStartSummary = null;
40
+ if (!data) return null;
41
+ return summary ? {
42
+ ...data,
43
+ summary
44
+ } : data;
45
+ }
46
+ async function timePhase(timings, name, fn) {
47
+ pluginEvents.emit("progress", {
48
+ phase: name,
49
+ status: "running"
50
+ });
51
+ const startedAt = Date.now();
52
+ try {
53
+ const result = await fn();
54
+ timings.push({
55
+ name,
56
+ durationMs: Date.now() - startedAt
57
+ });
58
+ pluginEvents.emit("progress", {
59
+ phase: name,
60
+ status: "done",
61
+ durationMs: Date.now() - startedAt
62
+ });
63
+ return result;
64
+ } catch (error) {
65
+ pluginEvents.emit("progress", {
66
+ phase: name,
67
+ status: "error",
68
+ durationMs: Date.now() - startedAt
69
+ });
70
+ throw error;
71
+ }
37
72
  }
38
73
  const buildCommands = {
39
74
  host: {
@@ -66,6 +101,17 @@ function buildConfigResult(bosConfig) {
66
101
  remotes: packages.filter((name) => name !== "host")
67
102
  };
68
103
  }
104
+ async function fileExists(path) {
105
+ try {
106
+ await (0, node_fs_promises.access)(path);
107
+ return true;
108
+ } catch {
109
+ return false;
110
+ }
111
+ }
112
+ async function readJsonFile(path) {
113
+ return JSON.parse(await (0, node_fs_promises.readFile)(path, "utf8"));
114
+ }
69
115
  function resolveWorkspaceTarget(key, bosConfig, runtimeConfig, configDir) {
70
116
  if (bosConfig?.app && key in bosConfig.app) {
71
117
  const appEntry = bosConfig.app[key];
@@ -161,10 +207,8 @@ function extractPublishedUrl(output) {
161
207
  return match[match.length - 1] ?? null;
162
208
  }
163
209
  async function buildEveryPluginQuietly(cwd) {
164
- const packageDir = `${cwd}/packages/every-plugin`;
165
- if (!await Bun.file(`${packageDir}/package.json`).exists()) return;
166
- const distPath = `${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`;
167
- if (await Bun.file(distPath).exists()) return;
210
+ if (!await fileExists(`${`${cwd}/packages/every-plugin`}/package.json`)) return;
211
+ if (await fileExists(`${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`)) return;
168
212
  const result = await require_run.run("bun", [
169
213
  "run",
170
214
  "--cwd",
@@ -183,10 +227,8 @@ async function buildEveryPluginQuietly(cwd) {
183
227
  throw new Error(`bun run --cwd packages/every-plugin build failed with exit code ${result.exitCode}`);
184
228
  }
185
229
  async function buildEverythingDevQuietly(cwd) {
186
- const packageDir = `${cwd}/packages/everything-dev`;
187
- if (!await Bun.file(`${packageDir}/package.json`).exists()) return;
188
- const distPath = `${cwd}/packages/everything-dev/dist/index.mjs`;
189
- if (await Bun.file(distPath).exists()) return;
230
+ if (!await fileExists(`${`${cwd}/packages/everything-dev`}/package.json`)) return;
231
+ if (await fileExists(`${cwd}/packages/everything-dev/dist/index.mjs`)) return;
190
232
  const result = await require_run.run("bun", [
191
233
  "run",
192
234
  "--cwd",
@@ -225,7 +267,7 @@ async function buildWorkspaceTargets(opts) {
225
267
  skipped.push(target);
226
268
  continue;
227
269
  }
228
- if (await Bun.file(`${resolved.path}/package.json`).exists()) existing.push(resolved);
270
+ if (await fileExists(`${resolved.path}/package.json`)) existing.push(resolved);
229
271
  else skipped.push(target);
230
272
  }
231
273
  if (existing.length === 0) return {
@@ -253,7 +295,7 @@ async function buildWorkspaceTargets(opts) {
253
295
  ] : existing;
254
296
  const built = [];
255
297
  for (const resolved of orderedExisting) {
256
- const pkgJson = JSON.parse(await Bun.file(`${resolved.path}/package.json`).text());
298
+ const pkgJson = await readJsonFile(`${resolved.path}/package.json`);
257
299
  const buildConfig = opts.deploy && pkgJson.scripts?.deploy ? {
258
300
  cmd: "bun",
259
301
  args: ["run", "deploy"]
@@ -379,12 +421,12 @@ var plugin_default = (0, every_plugin.createPlugin)({
379
421
  error: `Plugin '${input.key}' does not have a local development path`
380
422
  };
381
423
  const pkgPath = (0, node_path.join)(localPath, "package.json");
382
- if (!await Bun.file(pkgPath).exists()) return {
424
+ if (!await fileExists(pkgPath)) return {
383
425
  status: "error",
384
426
  key: input.key,
385
427
  error: `Missing package.json at ${localPath}`
386
428
  };
387
- const pkgJson = await Bun.file(pkgPath).json();
429
+ const pkgJson = await readJsonFile(pkgPath);
388
430
  const script = pkgJson.scripts?.deploy ? "deploy" : "build";
389
431
  const { stdout, stderr, exitCode } = await require_run.run("bun", ["run", script], {
390
432
  cwd: localPath,
@@ -440,6 +482,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
440
482
  }),
441
483
  dev: builder.dev.handler(async ({ input }) => {
442
484
  require_infra.ensureEnvFile(deps.configDir);
485
+ pluginEvents.emit("progress", {
486
+ phase: "config",
487
+ status: "running"
488
+ });
443
489
  const localPackages = require_app.detectLocalPackages(deps.bosConfig ?? void 0, deps.runtimeConfig ?? void 0);
444
490
  const hostSource = localPackages.includes("host") ? parseSourceMode(input.host, "local") : "remote";
445
491
  const uiSource = localPackages.includes("ui") ? parseSourceMode(input.ui, "local") : "remote";
@@ -452,9 +498,41 @@ var plugin_default = (0, every_plugin.createPlugin)({
452
498
  hostMode: hostSource,
453
499
  bosConfig: deps.bosConfig ?? void 0,
454
500
  extendsChain: []
455
- })).catalogChanged) await require_run.run("bun", ["install"], { cwd: deps.configDir });
456
- if (apiSource === "local" && !proxy || localPackages.some((pkg) => pkg.startsWith("plugin:"))) await buildEveryPluginQuietly(deps.configDir);
501
+ })).catalogChanged) {
502
+ pluginEvents.emit("progress", {
503
+ phase: "install",
504
+ status: "running"
505
+ });
506
+ await require_run.run("bun", ["install"], { cwd: deps.configDir });
507
+ pluginEvents.emit("progress", {
508
+ phase: "install",
509
+ status: "done"
510
+ });
511
+ }
512
+ if (apiSource === "local" && !proxy || localPackages.some((pkg) => pkg.startsWith("plugin:"))) {
513
+ pluginEvents.emit("progress", {
514
+ phase: "build plugin",
515
+ status: "running"
516
+ });
517
+ await buildEveryPluginQuietly(deps.configDir);
518
+ pluginEvents.emit("progress", {
519
+ phase: "build plugin",
520
+ status: "done"
521
+ });
522
+ }
523
+ pluginEvents.emit("progress", {
524
+ phase: "build",
525
+ status: "running"
526
+ });
457
527
  await buildEverythingDevQuietly(deps.configDir);
528
+ pluginEvents.emit("progress", {
529
+ phase: "build",
530
+ status: "done"
531
+ });
532
+ pluginEvents.emit("progress", {
533
+ phase: "config",
534
+ status: "done"
535
+ });
458
536
  const refreshed = await require_config.loadConfig({ cwd: deps.configDir });
459
537
  deps.bosConfig = refreshed?.config ?? deps.bosConfig;
460
538
  deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;
@@ -502,8 +580,11 @@ var plugin_default = (0, every_plugin.createPlugin)({
502
580
  port: runtimeConfig.host.port,
503
581
  interactive: input.interactive
504
582
  };
505
- const { devApp } = await loadDevSession();
506
- devApp(orchestrator, services, runtimeConfig);
583
+ pendingSession = {
584
+ orchestrator,
585
+ services,
586
+ runtimeConfig
587
+ };
507
588
  return {
508
589
  status: "started",
509
590
  description: orchestrator.description,
@@ -512,6 +593,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
512
593
  }),
513
594
  start: builder.start.handler(async ({ input }) => {
514
595
  require_infra.ensureEnvFile(deps.configDir);
596
+ pluginEvents.emit("progress", {
597
+ phase: "config",
598
+ status: "running"
599
+ });
515
600
  const account = input.account ?? node_process.default.env.BOS_ACCOUNT;
516
601
  const domain = input.domain ?? node_process.default.env.BOS_GATEWAY;
517
602
  let config = null;
@@ -546,10 +631,18 @@ var plugin_default = (0, every_plugin.createPlugin)({
546
631
  env: "production",
547
632
  plugins: runtimePlugins
548
633
  });
634
+ pluginEvents.emit("progress", {
635
+ phase: "generate artifacts",
636
+ status: "running"
637
+ });
549
638
  await generateCodeArtifacts(deps.configDir, config, {
550
639
  env: "production",
551
640
  runtimeConfig
552
641
  });
642
+ pluginEvents.emit("progress", {
643
+ phase: "generate artifacts",
644
+ status: "done"
645
+ });
553
646
  const productionEnv = {};
554
647
  const warnings = [];
555
648
  if (!node_process.default.env.CORS_ORIGIN && config.domain) {
@@ -569,32 +662,40 @@ var plugin_default = (0, every_plugin.createPlugin)({
569
662
  if (missingSecrets.length > 0) warnings.push(`Missing ${missingSecrets.length} secret(s): ${missingSecrets.join(", ")}`);
570
663
  const services = require_service_descriptor.buildServiceDescriptorMap(runtimeConfig);
571
664
  const stagingEnvVars = isStaging ? { BOS_GATEWAY: config.staging?.domain ?? config.domain ?? "" } : {};
572
- const configSource = remoteConfig ? `bos://${account}/${domain}` : require_config.findConfigPath() ?? "bos.config.json";
573
- const configSourceHttp = remoteConfig && account && domain ? require_fastkv.buildRegistryConfigUrl(account, domain) : void 0;
574
- const summaryLines = ["", ` ${require_theme.colors.dim("Config Source:")} ${configSource}`];
575
- if (configSourceHttp) summaryLines.push(` ${require_theme.colors.dim(configSourceHttp)}`);
576
- summaryLines.push(` ${require_theme.colors.dim("Account:")} ${config.account}`, ` ${require_theme.colors.dim("Domain:")} ${config.domain ?? "not configured"}`, "", ` ${require_theme.colors.dim("Modules:")}`, ` ${require_theme.colors.dim("HOST")} → ${runtimeConfig.host.remoteUrl ?? runtimeConfig.host.url ?? "local"}`, ` ${require_theme.colors.dim("UI")} → ${runtimeConfig.ui.url ?? "local"}`, ` ${require_theme.colors.dim("API")} → ${runtimeConfig.api.url ?? "local"}`);
577
- if (runtimeConfig.auth) summaryLines.push(` ${require_theme.colors.dim("AUTH")} → ${runtimeConfig.auth.url ?? "local"}`);
578
- if (warnings.length > 0) {
579
- summaryLines.push("");
580
- for (const w of warnings) summaryLines.push(` ${require_theme.colors.yellow(w)}`);
581
- }
582
- summaryLines.push("");
583
- console.log(summaryLines.join("\n"));
584
- const orchestrator = {
585
- packages: ["host"],
586
- env: {
587
- NODE_ENV: "production",
588
- ...productionEnv,
589
- ...stagingEnvVars
665
+ const summary = {
666
+ configSource: remoteConfig ? `bos://${account}/${domain}` : require_config.findConfigPath() ?? "bos.config.json",
667
+ configSourceHttp: remoteConfig && account && domain ? require_fastkv.buildRegistryConfigUrl(account, domain) : void 0,
668
+ account: config.account,
669
+ domain: config.domain ?? void 0,
670
+ modules: {
671
+ host: runtimeConfig.host.remoteUrl ?? runtimeConfig.host.url ?? "local",
672
+ ui: runtimeConfig.ui.url ?? "local",
673
+ api: runtimeConfig.api.url ?? "local",
674
+ auth: runtimeConfig.auth?.url ?? void 0
675
+ },
676
+ warnings
677
+ };
678
+ pendingSession = {
679
+ orchestrator: {
680
+ packages: ["host"],
681
+ env: {
682
+ NODE_ENV: "production",
683
+ ...productionEnv,
684
+ ...stagingEnvVars
685
+ },
686
+ description: `${isStaging ? "Staging" : "Production"} Mode (${config.account})`,
687
+ port,
688
+ interactive: input.interactive,
689
+ noLogs: true
590
690
  },
591
- description: `${isStaging ? "Staging" : "Production"} Mode (${config.account})`,
592
- port,
593
- interactive: input.interactive,
594
- noLogs: true
691
+ services,
692
+ runtimeConfig
595
693
  };
596
- const { startApp } = await loadDevSession();
597
- startApp(orchestrator, services, runtimeConfig);
694
+ pendingStartSummary = summary;
695
+ pluginEvents.emit("progress", {
696
+ phase: "config",
697
+ status: "done"
698
+ });
598
699
  return {
599
700
  status: "running",
600
701
  url: `http://localhost:${port}`
@@ -784,8 +885,8 @@ var plugin_default = (0, every_plugin.createPlugin)({
784
885
  let extendsAccount = "";
785
886
  let extendsGateway = "";
786
887
  let directory = input.directory;
787
- let account = input.account;
788
- let domain = input.domain;
888
+ const account = input.account;
889
+ const domain = input.domain;
789
890
  let overrides = input.overrides;
790
891
  let plugins = input.plugins;
791
892
  if (input.extends) {
@@ -797,77 +898,22 @@ var plugin_default = (0, every_plugin.createPlugin)({
797
898
  }
798
899
  extendsAccount = extendsAccount || "dev.everything.near";
799
900
  extendsGateway = extendsGateway || "everything.dev";
800
- const s = _clack_prompts.spinner();
801
- s.start("Initializing project");
802
901
  let parentPluginKeys = [];
803
902
  let parentConfig = null;
804
903
  try {
805
- parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway), s);
904
+ parentConfig = await timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway));
806
905
  if (parentConfig?.plugins && typeof parentConfig.plugins === "object") parentPluginKeys = Object.keys(parentConfig.plugins);
807
906
  } catch {}
808
- if (!input.noInteractive) {
809
- s.stop("Config fetched");
810
- const initialExtendsAccount = extendsAccount;
811
- const initialExtendsGateway = extendsGateway;
812
- const prompted = await require_prompts.promptInitOptions({
813
- extends: `bos://${extendsAccount}/${extendsGateway}`,
814
- directory,
815
- account,
816
- domain,
817
- plugins,
818
- overrides,
819
- parentPluginKeys
820
- });
821
- extendsAccount = prompted.extendsAccount;
822
- extendsGateway = prompted.extendsGateway;
823
- directory = prompted.directory;
824
- account = prompted.account;
825
- domain = prompted.domain;
826
- plugins = prompted.plugins;
827
- overrides = prompted.overrides;
828
- if (!parentConfig || prompted.extendsAccount !== initialExtendsAccount || prompted.extendsGateway !== initialExtendsGateway) {
829
- try {
830
- parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(prompted.extendsAccount, prompted.extendsGateway), s);
831
- if (parentConfig?.plugins && typeof parentConfig.plugins === "object") parentPluginKeys = Object.keys(parentConfig.plugins);
832
- else parentPluginKeys = [];
833
- } catch {
834
- return {
835
- status: "error",
836
- directory,
837
- extendsRef: `bos://${prompted.extendsAccount}/${prompted.extendsGateway}`,
838
- account,
839
- domain,
840
- extends: `bos://${prompted.extendsAccount}/${prompted.extendsGateway}`,
841
- plugins,
842
- overrides,
843
- filesCopied: 0,
844
- timings,
845
- error: `No config found at bos://${prompted.extendsAccount}/${prompted.extendsGateway} — are you sure this is the right parent?`
846
- };
847
- }
848
- s.stop("Config fetched");
849
- }
850
- if (typeof parentConfig?.title === "string" && parentConfig.title.trim() && typeof parentConfig.description === "string" && parentConfig.description.trim()) {
851
- const shouldContinue = await _clack_prompts.confirm({
852
- message: `You will be extending ${parentConfig.title} - ${parentConfig.description}. Continue?`,
853
- initialValue: true
854
- });
855
- if (_clack_prompts.isCancel(shouldContinue) || !shouldContinue) node_process.default.exit(0);
856
- }
857
- s.start("Setting up project");
858
- }
859
907
  overrides = overrides?.length ? overrides : ["ui", "api"];
860
- if (overrides.includes("plugins") && !plugins?.length) plugins = parentPluginKeys;
908
+ if (overrides.includes("plugins") && plugins === void 0) plugins = parentPluginKeys;
861
909
  plugins = plugins ?? [];
862
910
  directory = directory || domain || extendsGateway;
863
911
  const targetDir = (0, node_path.resolve)(directory);
864
912
  const extendsRef = `bos://${extendsAccount}/${extendsGateway}`;
865
- if (overrides.includes("plugins") && !plugins.length) {}
866
913
  const repository = await require_cli_init.detectGitRemoteUrl(node_process.default.cwd()).catch(() => void 0) ?? parentConfig?.repository;
867
914
  if (!parentConfig) try {
868
- parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway), s);
915
+ parentConfig = await timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway));
869
916
  } catch {
870
- s.stop("Failed");
871
917
  return {
872
918
  status: "error",
873
919
  directory,
@@ -882,17 +928,17 @@ var plugin_default = (0, every_plugin.createPlugin)({
882
928
  error: `No config found at ${extendsRef} — are you sure this is the right parent?`
883
929
  };
884
930
  }
885
- const { sourceDir, parentConfig: resolvedParentConfig, cleanup } = await require_timing.timePhase(timings, "template source", () => require_cli_init.resolveSourceDir({
931
+ const { sourceDir, parentConfig: resolvedParentConfig, cleanup } = await timePhase(timings, "template source", () => require_cli_init.resolveSourceDir({
886
932
  extendsAccount,
887
933
  extendsGateway,
888
934
  source: input.source
889
- }), s);
935
+ }));
890
936
  parentConfig = resolvedParentConfig;
891
937
  const isMinimalScaffold = sourceDir === "";
892
938
  try {
893
939
  let filesCopied;
894
940
  if (isMinimalScaffold) {
895
- filesCopied = await require_timing.timePhase(timings, "scaffold project", () => require_cli_init.scaffoldMinimalProject(targetDir, parentConfig, {
941
+ filesCopied = await timePhase(timings, "scaffold project", () => require_cli_init.scaffoldMinimalProject(targetDir, parentConfig, {
896
942
  extendsAccount,
897
943
  extendsGateway,
898
944
  account: account || extendsAccount,
@@ -902,8 +948,8 @@ var plugin_default = (0, every_plugin.createPlugin)({
902
948
  repository,
903
949
  title: parentConfig?.title,
904
950
  description: parentConfig?.description
905
- }), s);
906
- await require_timing.timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
951
+ }));
952
+ await timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
907
953
  extendsAccount,
908
954
  extendsGateway,
909
955
  account: account || extendsAccount,
@@ -916,14 +962,14 @@ var plugin_default = (0, every_plugin.createPlugin)({
916
962
  description: parentConfig?.description,
917
963
  testnet: parentConfig?.testnet,
918
964
  staging: parentConfig?.staging
919
- }), s);
965
+ }));
920
966
  } else {
921
967
  const patterns = require_cli_init.buildInitPatterns(overrides, plugins);
922
- filesCopied = await require_timing.timePhase(timings, "copy files", () => require_cli_init.copyFilteredFiles(sourceDir, targetDir, patterns, {
968
+ filesCopied = await timePhase(timings, "copy files", () => require_cli_init.copyFilteredFiles(sourceDir, targetDir, patterns, {
923
969
  overrides,
924
970
  plugins
925
- }), s);
926
- await require_timing.timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
971
+ }));
972
+ await timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
927
973
  extendsAccount,
928
974
  extendsGateway,
929
975
  account: account || extendsAccount,
@@ -936,45 +982,28 @@ var plugin_default = (0, every_plugin.createPlugin)({
936
982
  description: parentConfig?.description,
937
983
  testnet: parentConfig?.testnet,
938
984
  staging: parentConfig?.staging
939
- }), s);
940
- await require_timing.timePhase(timings, "write snapshot", () => require_cli_init.writeInitSnapshot(targetDir, extendsAccount, extendsGateway, sourceDir, patterns, {
985
+ }));
986
+ await timePhase(timings, "write snapshot", () => require_cli_init.writeInitSnapshot(targetDir, extendsAccount, extendsGateway, sourceDir, patterns, {
941
987
  overrides,
942
988
  plugins
943
- }), s);
989
+ }));
944
990
  }
945
991
  const lockfilePath = (0, node_path.join)(targetDir, "bun.lock");
946
992
  require_cli_init.stripOrphanedWorkspacesFromLockfile(lockfilePath, computeAllowedWorkspaces(overrides, plugins));
947
993
  require_cli_init.removeInitLockfile(lockfilePath);
948
- const initConfig = await require_timing.timePhase(timings, "resolve config", () => require_config.loadConfig({ cwd: targetDir }), s);
949
- if (initConfig?.runtime) await require_timing.timePhase(timings, "generate env/docker", async () => {
994
+ const initConfig = await timePhase(timings, "resolve config", () => require_config.loadConfig({ cwd: targetDir }));
995
+ if (initConfig?.runtime) await timePhase(timings, "generate env/docker", async () => {
950
996
  require_infra.writeGeneratedInfra(targetDir, initConfig.runtime);
951
- }, s);
952
- await require_timing.timePhase(timings, "create env file", async () => {
997
+ });
998
+ await timePhase(timings, "create env file", async () => {
953
999
  require_infra.ensureEnvFile(targetDir);
954
- }, s);
1000
+ });
955
1001
  if (!input.noInstall) {
956
- await require_timing.timePhase(timings, "install dependencies", () => require_cli_init.runBunInstall(targetDir, s ?? void 0));
957
- await require_timing.timePhase(timings, "generate types", () => require_cli_init.runTypesGen(targetDir, s ?? void 0));
958
- await require_timing.timePhase(timings, "generate migrations", () => require_cli_init.generateDatabaseMigrations(targetDir), s);
959
- }
960
- if (input.noInstall && initConfig?.config) await require_timing.timePhase(timings, "generate code artifacts", () => generateCodeArtifacts(targetDir, initConfig.config), s);
961
- s.stop("Project initialized");
962
- if (!input.noInteractive) {
963
- if (await _clack_prompts.confirm({
964
- message: "Run docker compose up -d --wait?",
965
- initialValue: true
966
- }) === true) {
967
- const dockerSpinner = _clack_prompts.spinner();
968
- dockerSpinner.start("Starting Docker services");
969
- try {
970
- await require_timing.timePhase(timings, "docker compose up", () => require_cli_init.runDockerComposeUp(targetDir));
971
- dockerSpinner.stop("Docker services ready");
972
- } catch (error) {
973
- dockerSpinner.stop("Docker services not started");
974
- _clack_prompts.log.warn(`docker compose up -d --wait failed: ${error instanceof Error ? error.message : error}`);
975
- }
976
- }
1002
+ await timePhase(timings, "install dependencies", () => require_cli_init.runBunInstall(targetDir));
1003
+ await timePhase(timings, "generate types", () => require_cli_init.runTypesGen(targetDir));
1004
+ await timePhase(timings, "generate migrations", () => require_cli_init.generateDatabaseMigrations(targetDir));
977
1005
  }
1006
+ if (input.noInstall && initConfig?.config) await timePhase(timings, "generate code artifacts", () => generateCodeArtifacts(targetDir, initConfig.config));
978
1007
  return {
979
1008
  status: "initialized",
980
1009
  directory,
@@ -985,7 +1014,8 @@ var plugin_default = (0, every_plugin.createPlugin)({
985
1014
  plugins,
986
1015
  overrides,
987
1016
  filesCopied,
988
- timings
1017
+ timings,
1018
+ targetDir
989
1019
  };
990
1020
  } finally {
991
1021
  await cleanup();
@@ -1160,10 +1190,12 @@ function computeAllowedWorkspaces(overrides, plugins) {
1160
1190
  if (section === "ui") workspaces.push("ui");
1161
1191
  if (section === "api") workspaces.push("api");
1162
1192
  }
1163
- if (plugins) for (const plugin of plugins) workspaces.push(`plugins/${plugin}`);
1193
+ if (plugins && plugins.length > 0) workspaces.push("plugins/*");
1164
1194
  return workspaces;
1165
1195
  }
1166
1196
 
1167
1197
  //#endregion
1168
- module.exports = plugin_default;
1198
+ exports.consumeDevSession = consumeDevSession;
1199
+ exports.default = plugin_default;
1200
+ exports.pluginEvents = pluginEvents;
1169
1201
  //# sourceMappingURL=plugin.cjs.map