everything-dev 1.44.0 → 1.44.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 (65) hide show
  1. package/dist/api-contract.cjs +26 -21
  2. package/dist/api-contract.cjs.map +1 -1
  3. package/dist/api-contract.mjs +27 -22
  4. package/dist/api-contract.mjs.map +1 -1
  5. package/dist/cli/catalog.cjs +2 -2
  6. package/dist/cli/catalog.cjs.map +1 -1
  7. package/dist/cli/catalog.mjs +2 -2
  8. package/dist/cli/catalog.mjs.map +1 -1
  9. package/dist/cli/infra.cjs +3 -0
  10. package/dist/cli/infra.cjs.map +1 -1
  11. package/dist/cli/infra.mjs +3 -0
  12. package/dist/cli/infra.mjs.map +1 -1
  13. package/dist/cli/init.cjs +5 -2
  14. package/dist/cli/init.cjs.map +1 -1
  15. package/dist/cli/init.d.cts +1 -1
  16. package/dist/cli/init.d.cts.map +1 -1
  17. package/dist/cli/init.d.mts +1 -1
  18. package/dist/cli/init.d.mts.map +1 -1
  19. package/dist/cli/init.mjs +5 -2
  20. package/dist/cli/init.mjs.map +1 -1
  21. package/dist/cli/status.cjs +8 -19
  22. package/dist/cli/status.cjs.map +1 -1
  23. package/dist/cli/status.mjs +8 -19
  24. package/dist/cli/status.mjs.map +1 -1
  25. package/dist/cli.cjs +9 -4
  26. package/dist/cli.cjs.map +1 -1
  27. package/dist/cli.mjs +9 -4
  28. package/dist/cli.mjs.map +1 -1
  29. package/dist/config.cjs +22 -11
  30. package/dist/config.cjs.map +1 -1
  31. package/dist/config.d.cts.map +1 -1
  32. package/dist/config.d.mts.map +1 -1
  33. package/dist/config.mjs +22 -11
  34. package/dist/config.mjs.map +1 -1
  35. package/dist/contract.cjs +6 -5
  36. package/dist/contract.cjs.map +1 -1
  37. package/dist/contract.d.cts +12 -4
  38. package/dist/contract.d.cts.map +1 -1
  39. package/dist/contract.d.mts +12 -4
  40. package/dist/contract.d.mts.map +1 -1
  41. package/dist/contract.mjs +6 -5
  42. package/dist/contract.mjs.map +1 -1
  43. package/dist/dev-session.cjs +3 -1
  44. package/dist/dev-session.cjs.map +1 -1
  45. package/dist/dev-session.mjs +3 -1
  46. package/dist/dev-session.mjs.map +1 -1
  47. package/dist/fastkv.cjs +2 -1
  48. package/dist/fastkv.cjs.map +1 -1
  49. package/dist/fastkv.mjs +2 -1
  50. package/dist/fastkv.mjs.map +1 -1
  51. package/dist/http-client.cjs +22 -2
  52. package/dist/http-client.cjs.map +1 -1
  53. package/dist/http-client.mjs +22 -2
  54. package/dist/http-client.mjs.map +1 -1
  55. package/dist/orchestrator.cjs +39 -23
  56. package/dist/orchestrator.cjs.map +1 -1
  57. package/dist/orchestrator.mjs +39 -23
  58. package/dist/orchestrator.mjs.map +1 -1
  59. package/dist/plugin.cjs +53 -63
  60. package/dist/plugin.cjs.map +1 -1
  61. package/dist/plugin.d.cts +4 -0
  62. package/dist/plugin.d.mts +4 -0
  63. package/dist/plugin.mjs +53 -63
  64. package/dist/plugin.mjs.map +1 -1
  65. package/package.json +1 -1
package/dist/plugin.mjs CHANGED
@@ -317,8 +317,10 @@ async function buildWorkspaceTargets(opts) {
317
317
  bosConfig: opts.bosConfig ?? void 0,
318
318
  extendsChain: []
319
319
  })).catalogChanged) await run("bun", ["install"], { cwd: opts.configDir });
320
- if (existing.some((entry) => entry.key === "api")) await buildEveryPluginQuietly(opts.configDir);
321
- await buildEverythingDevQuietly(opts.configDir);
320
+ const shouldBuildPlugin = existing.some((entry) => entry.key === "api");
321
+ const buildTasks = [buildEverythingDevQuietly(opts.configDir)];
322
+ if (shouldBuildPlugin) buildTasks.push(buildEveryPluginQuietly(opts.configDir));
323
+ await Promise.all(buildTasks);
322
324
  const env = {
323
325
  ...process.env,
324
326
  NODE_ENV: opts.deploy ? "production" : "development"
@@ -521,12 +523,9 @@ var plugin_default = createPlugin({
521
523
  };
522
524
  }),
523
525
  dev: builder.dev.handler(async ({ input }) => {
526
+ const devTimings = [];
524
527
  ensureEnvFile(deps.configDir);
525
528
  loadProjectEnv(deps.configDir);
526
- pluginEvents.emit("progress", {
527
- phase: "config",
528
- status: "running"
529
- });
530
529
  const localPackages = detectLocalPackages(deps.bosConfig ?? void 0, deps.runtimeConfig ?? void 0);
531
530
  const hostSource = localPackages.includes("host") ? parseSourceMode(input.host, "local") : "remote";
532
531
  const uiSource = localPackages.includes("ui") ? parseSourceMode(input.ui, "local") : "remote";
@@ -534,61 +533,44 @@ var plugin_default = createPlugin({
534
533
  const authSource = localPackages.includes("auth") ? parseSourceMode(input.auth, "local") : "remote";
535
534
  const ssr = input.ssr ?? false;
536
535
  const proxy = input.proxy ?? false;
537
- if ((await syncResolvedSharedDeps({
536
+ const sharedSync = await timePhase(devTimings, "shared deps", () => syncResolvedSharedDeps({
538
537
  configDir: deps.configDir,
539
538
  hostMode: hostSource,
540
539
  bosConfig: deps.bosConfig ?? void 0,
541
540
  extendsChain: []
542
- })).catalogChanged) {
543
- pluginEvents.emit("progress", {
544
- phase: "install",
545
- status: "running"
546
- });
547
- await run("bun", ["install"], { cwd: deps.configDir });
548
- pluginEvents.emit("progress", {
549
- phase: "install",
550
- status: "done"
551
- });
552
- }
553
- if (apiSource === "local" && !proxy || localPackages.some((pkg) => pkg.startsWith("plugin:"))) {
554
- pluginEvents.emit("progress", {
555
- phase: "build plugin",
556
- status: "running"
557
- });
558
- await buildEveryPluginQuietly(deps.configDir);
559
- pluginEvents.emit("progress", {
560
- phase: "build plugin",
561
- status: "done"
562
- });
541
+ }));
542
+ let configMayHaveChanged = false;
543
+ if (sharedSync.catalogChanged) {
544
+ await timePhase(devTimings, "install", () => run("bun", ["install"], { cwd: deps.configDir }));
545
+ configMayHaveChanged = true;
563
546
  }
564
- pluginEvents.emit("progress", {
565
- phase: "build",
566
- status: "running"
567
- });
568
- await buildEverythingDevQuietly(deps.configDir);
569
- pluginEvents.emit("progress", {
570
- phase: "build",
571
- status: "done"
572
- });
573
- pluginEvents.emit("progress", {
574
- phase: "config",
575
- status: "done"
547
+ const shouldBuildPlugin = apiSource === "local" && !proxy || localPackages.some((pkg) => pkg.startsWith("plugin:"));
548
+ await timePhase(devTimings, "build", async () => {
549
+ const buildTasks = [buildEverythingDevQuietly(deps.configDir)];
550
+ if (shouldBuildPlugin) buildTasks.push(buildEveryPluginQuietly(deps.configDir));
551
+ await Promise.all(buildTasks);
576
552
  });
577
- const refreshed = await loadResolvedConfig({
578
- cwd: deps.configDir,
579
- remotePlugins: input.remotePlugins
580
- });
581
- deps.bosConfig = refreshed?.config ?? deps.bosConfig;
582
- deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;
553
+ let devExtendsChain;
554
+ if (configMayHaveChanged || input.remotePlugins?.length) {
555
+ const refreshed = await timePhase(devTimings, "resolve config", () => loadResolvedConfig({
556
+ cwd: deps.configDir,
557
+ remotePlugins: input.remotePlugins
558
+ }));
559
+ deps.bosConfig = refreshed?.config ?? deps.bosConfig;
560
+ deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;
561
+ devExtendsChain = refreshed?.source.extended;
562
+ }
583
563
  if (!deps.bosConfig) return {
584
564
  status: "error",
585
565
  description: "No bos.config.json found",
586
- processes: []
566
+ processes: [],
567
+ timings: devTimings
587
568
  };
588
569
  if (proxy && !resolveProxyUrl(deps.bosConfig)) return {
589
570
  status: "error",
590
571
  description: "No valid proxy URL configured in bos.config.json",
591
- processes: []
572
+ processes: [],
573
+ timings: devTimings
592
574
  };
593
575
  const hostPort = input.port ?? getHostDevelopmentPort(deps.bosConfig.app.host.development);
594
576
  suppressWarnings();
@@ -602,20 +584,18 @@ var plugin_default = createPlugin({
602
584
  });
603
585
  drainConfigWarnings();
604
586
  resumeWarnings();
605
- const runtimeConfig = await prepareDevelopmentRuntimeConfig(developmentRuntime, {
587
+ const runtimeConfig = await timePhase(devTimings, "ports", () => prepareDevelopmentRuntimeConfig(developmentRuntime, {
606
588
  hostPort,
607
589
  ssr
608
- });
590
+ }));
609
591
  syncGeneratedInfra(deps.configDir, runtimeConfig);
610
- if (!existsSync(join(deps.configDir, ".env"))) {
611
- ensureEnvFile(deps.configDir);
612
- loadProjectEnv(deps.configDir);
613
- }
614
- await generateCodeArtifacts(deps.configDir, deps.bosConfig, {
592
+ ensureEnvFile(deps.configDir);
593
+ loadProjectEnv(deps.configDir);
594
+ await timePhase(devTimings, "generate artifacts", () => generateCodeArtifacts(deps.configDir, deps.bosConfig, {
615
595
  env: "development",
616
- extendsChain: refreshed?.source.extended,
596
+ extendsChain: devExtendsChain,
617
597
  runtimeConfig
618
- });
598
+ }));
619
599
  const services = buildServiceDescriptorMap(runtimeConfig, {
620
600
  ssr,
621
601
  proxy
@@ -647,7 +627,8 @@ var plugin_default = createPlugin({
647
627
  return {
648
628
  status: "started",
649
629
  description: orchestrator.description,
650
- processes: packages
630
+ processes: packages,
631
+ timings: devTimings
651
632
  };
652
633
  }),
653
634
  start: builder.start.handler(async ({ input }) => {
@@ -708,10 +689,8 @@ var plugin_default = createPlugin({
708
689
  if (isStaging && config.staging?.domain) runtimeConfig.domain = config.staging.domain;
709
690
  if (isStaging) runtimeConfig.env = "staging";
710
691
  syncGeneratedInfra(deps.configDir, runtimeConfig);
711
- if (!existsSync(join(deps.configDir, ".env"))) {
712
- ensureEnvFile(deps.configDir);
713
- loadProjectEnv(deps.configDir);
714
- }
692
+ ensureEnvFile(deps.configDir);
693
+ loadProjectEnv(deps.configDir);
715
694
  pluginEvents.emit("progress", {
716
695
  phase: "generate artifacts",
717
696
  status: "running"
@@ -1039,6 +1018,17 @@ var plugin_default = createPlugin({
1039
1018
  overrides = overrides?.length ? overrides : ["ui", "api"];
1040
1019
  if (overrides.includes("plugins") && plugins === void 0) plugins = parentPluginKeys;
1041
1020
  plugins = plugins ?? [];
1021
+ const pluginDirMap = {};
1022
+ if (parentConfig?.plugins) for (const plugin of plugins) {
1023
+ const entry = parentConfig.plugins?.[plugin];
1024
+ if (entry && typeof entry === "object") {
1025
+ const dev = entry.development;
1026
+ if (typeof dev === "string") {
1027
+ const match = dev.match(/^local:plugins\/(.+)$/);
1028
+ if (match?.[1] && match[1] !== plugin) pluginDirMap[plugin] = match[1];
1029
+ }
1030
+ }
1031
+ }
1042
1032
  directory = directory || domain || extendsGateway;
1043
1033
  const targetDir = resolve(directory);
1044
1034
  const extendsRef = `bos://${extendsAccount}/${extendsGateway}`;
@@ -1096,7 +1086,7 @@ var plugin_default = createPlugin({
1096
1086
  staging: parentConfig?.staging
1097
1087
  }));
1098
1088
  } else {
1099
- const patterns = buildInitPatterns(overrides, plugins);
1089
+ const patterns = buildInitPatterns(overrides, plugins, pluginDirMap);
1100
1090
  filesCopied = await timePhase(timings, "copy files", () => copyFilteredFiles(sourceDir, targetDir, patterns, {
1101
1091
  overrides,
1102
1092
  plugins