@donotdev/cli 0.0.6 → 0.0.8

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 (87) hide show
  1. package/README.md +3 -18
  2. package/dependencies-matrix.json +64 -121
  3. package/dist/bin/commands/build.js +173 -161
  4. package/dist/bin/commands/bump.js +181 -156
  5. package/dist/bin/commands/cacheout.js +188 -171
  6. package/dist/bin/commands/create-app.js +213 -156
  7. package/dist/bin/commands/create-project.js +183 -154
  8. package/dist/bin/commands/deploy.js +491 -477
  9. package/dist/bin/commands/dev.js +176 -160
  10. package/dist/bin/commands/emu.js +181 -165
  11. package/dist/bin/commands/format.js +191 -174
  12. package/dist/bin/commands/lint.js +191 -171
  13. package/dist/bin/commands/preview.js +177 -161
  14. package/dist/bin/commands/sync-secrets.js +172 -158
  15. package/dist/bin/commands/wai.d.ts +11 -0
  16. package/dist/bin/commands/wai.d.ts.map +1 -0
  17. package/dist/bin/commands/wai.js +12 -0
  18. package/dist/bin/commands/wai.js.map +1 -0
  19. package/dist/bin/dndev.js +24 -24
  20. package/dist/bin/donotdev.js +24 -24
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +661 -669
  24. package/dist/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/templates/app-demo/src/config/app.ts.example +12 -0
  27. package/templates/app-next/src/config/app.ts.example +75 -48
  28. package/templates/app-vite/index.html.example +71 -37
  29. package/templates/app-vite/src/config/app.ts.example +75 -47
  30. package/templates/app-vite/src/pages/FormPageExample.tsx.example +152 -0
  31. package/templates/app-vite/src/pages/HomePage.tsx.example +81 -134
  32. package/templates/app-vite/src/pages/ListPageExample.tsx.example +88 -0
  33. package/templates/functions-firebase/build.mjs.example +8 -1
  34. package/templates/functions-firebase/functions-firebase/build.mjs.example +8 -1
  35. package/templates/functions-firebase/functions-firebase/src/index.ts.example +19 -25
  36. package/templates/functions-firebase/functions.config.js.example +35 -0
  37. package/templates/root-consumer/entities/ExampleEntity.ts.example +223 -0
  38. package/templates/root-consumer/entities/demo.ts.example +576 -0
  39. package/templates/root-consumer/entities/index.ts.example +15 -0
  40. package/templates/root-consumer/eslint.config.js.example +2 -80
  41. package/templates/root-consumer/guides/{AGENT_START_HERE.md.example → dndev/AGENT_START_HERE.md.example} +22 -0
  42. package/templates/root-consumer/guides/dndev/COMPONENTS_CRUD.md.example +231 -0
  43. package/templates/root-consumer/guides/{SETUP_AUTH.md.example → dndev/SETUP_AUTH.md.example} +30 -0
  44. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +539 -0
  45. package/templates/root-consumer/guides/dndev/SETUP_FUNCTIONS.md.example +116 -0
  46. package/templates/root-consumer/guides/{SETUP_I18N.md.example → dndev/SETUP_I18N.md.example} +46 -0
  47. package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +404 -0
  48. package/templates/root-consumer/guides/wai-way/agents/architect.md.example +78 -0
  49. package/templates/root-consumer/guides/wai-way/agents/builder.md.example +87 -0
  50. package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +325 -0
  51. package/templates/root-consumer/guides/wai-way/agents/polisher.md.example +100 -0
  52. package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +281 -0
  53. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +77 -0
  54. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +104 -0
  55. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +124 -0
  56. package/templates/root-consumer/guides/wai-way/blueprints/4_configure.md.example +165 -0
  57. package/templates/root-consumer/guides/wai-way/context_map.json.example +95 -0
  58. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +840 -0
  59. package/templates/root-consumer/guides/wai-way/page_patterns.md.example +686 -0
  60. package/templates/root-consumer/guides/wai-way/presets_guide.md.example +217 -0
  61. package/templates/root-consumer/guides/wai-way/spec_template.md.example +312 -0
  62. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +0 -19
  63. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +0 -14
  64. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +0 -14
  65. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +0 -12
  66. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +0 -14
  67. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +0 -14
  68. package/templates/root-consumer/guides/COMPONENTS_CRUD.md.example +0 -70
  69. package/templates/root-consumer/guides/SETUP_CRUD.md.example +0 -1244
  70. package/templates/root-consumer/guides/SETUP_FUNCTIONS.md.example +0 -114
  71. /package/templates/root-consumer/guides/{COMPONENTS_ADV.md.example → dndev/COMPONENTS_ADV.md.example} +0 -0
  72. /package/templates/root-consumer/guides/{COMPONENTS_ATOMIC.md.example → dndev/COMPONENTS_ATOMIC.md.example} +0 -0
  73. /package/templates/root-consumer/guides/{COMPONENTS_UI.md.example → dndev/COMPONENTS_UI.md.example} +0 -0
  74. /package/templates/root-consumer/guides/{ENV_SETUP.md.example → dndev/ENV_SETUP.md.example} +0 -0
  75. /package/templates/root-consumer/guides/{INDEX.md.example → dndev/INDEX.md.example} +0 -0
  76. /package/templates/root-consumer/guides/{SETUP_APP_CONFIG.md.example → dndev/SETUP_APP_CONFIG.md.example} +0 -0
  77. /package/templates/root-consumer/guides/{SETUP_BILLING.md.example → dndev/SETUP_BILLING.md.example} +0 -0
  78. /package/templates/root-consumer/guides/{SETUP_LAYOUTS.md.example → dndev/SETUP_LAYOUTS.md.example} +0 -0
  79. /package/templates/root-consumer/guides/{SETUP_OAUTH.md.example → dndev/SETUP_OAUTH.md.example} +0 -0
  80. /package/templates/root-consumer/guides/{SETUP_PAGES.md.example → dndev/SETUP_PAGES.md.example} +0 -0
  81. /package/templates/root-consumer/guides/{SETUP_PWA.md.example → dndev/SETUP_PWA.md.example} +0 -0
  82. /package/templates/root-consumer/guides/{SETUP_THEMES.md.example → dndev/SETUP_THEMES.md.example} +0 -0
  83. /package/templates/root-consumer/guides/{USE_ROUTING.md.example → dndev/USE_ROUTING.md.example} +0 -0
  84. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/APP_CHECK.md.example +0 -0
  85. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/COOKIE_REFERENCE.md.example +0 -0
  86. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/EMULATORS.md.example +0 -0
  87. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/VERSION_CONTROL.md.example +0 -0
@@ -713,6 +713,7 @@ ${import_picocolors.default.gray(de + _2.repeat(s + 2) + pe)}
713
713
  });
714
714
 
715
715
  // packages/tooling/src/utils/cli-output.ts
716
+ import "node:os";
716
717
  function supportsColor() {
717
718
  if (process.env.NO_COLOR) return false;
718
719
  if (process.platform === "win32") {
@@ -858,155 +859,6 @@ var init_cli_output = __esm({
858
859
  }
859
860
  });
860
861
 
861
- // packages/core/config/constants.js
862
- function getPatternsFor(type, repoRoot = null) {
863
- const patterns = SCAN_PATTERNS[type];
864
- if (!patterns) {
865
- throw new Error(`Unknown pattern type: ${type}`);
866
- }
867
- if (repoRoot && patterns.framework) {
868
- return {
869
- ...patterns,
870
- framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
871
- };
872
- }
873
- return patterns;
874
- }
875
- function getGlobOptionsFor(type) {
876
- return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
877
- }
878
- var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
879
- var init_constants = __esm({
880
- "packages/core/config/constants.js"() {
881
- "use strict";
882
- init_utils();
883
- I18N_PATHS = {
884
- // Monorepo source structure (locales at root, not in src/)
885
- SOURCE_ROOT: "packages/core/i18n",
886
- SOURCE_LOCALES: "packages/core/i18n/locales",
887
- SOURCE_EAGER: "packages/core/i18n/locales/eager",
888
- SOURCE_LAZY: "packages/core/i18n/locales/lazy",
889
- // Published structure (same as source - no flattening needed)
890
- PUBLISHED_ROOT: "i18n",
891
- PUBLISHED_LOCALES: "i18n/locales",
892
- PUBLISHED_EAGER: "i18n/locales/eager",
893
- PUBLISHED_LAZY: "i18n/locales/lazy"
894
- };
895
- SCAN_PATTERNS = {
896
- routes: {
897
- consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
898
- exclude: [
899
- "**/node_modules/**",
900
- "**/dist/**",
901
- "**/build/**",
902
- "**/*.test.tsx",
903
- "**/*.stories.tsx"
904
- ],
905
- extensions: [".tsx"]
906
- },
907
- css: {
908
- consumer: ["src/**/*.css"],
909
- themes: ["src/**/*.css"],
910
- extensions: [".css", ".scss", ".sass"],
911
- framework: [
912
- "packages/ui/src/**/*.css",
913
- "packages/core/components/src/**/*.css",
914
- "packages/core/templates/src/**/*.css"
915
- ]
916
- },
917
- i18n: {
918
- eager: ["src/locales/*_*.json"],
919
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
920
- framework: {
921
- eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
922
- lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
923
- },
924
- extensions: [".json"]
925
- },
926
- assets: {
927
- consumer: ["public/**/*"],
928
- fallback: ["manifest.json"],
929
- modern: [
930
- "logo.svg",
931
- "favicon.svg",
932
- "apple-touch-icon.png",
933
- "android-chrome-192x192.png",
934
- "android-chrome-512x512.png"
935
- ],
936
- patterns: [
937
- "favicon.svg",
938
- "favicon.ico",
939
- "favicon-*.png",
940
- "logo.svg",
941
- "logo.png",
942
- "logo.webp",
943
- "logo.avif",
944
- "apple-touch-icon*.png",
945
- "android-chrome-*.png",
946
- "manifest.json"
947
- ],
948
- fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
949
- framework: ["packages/ui/assets/**/*"]
950
- },
951
- pwa: {
952
- consumer: [
953
- "public/manifest.json",
954
- "public/service-worker.js",
955
- "public/sw.js",
956
- "public/icon-192x192.png",
957
- "public/icon-512x512.png",
958
- "public/favicon.ico",
959
- "public/favicon.svg",
960
- "public/apple-touch-icon.png",
961
- "public/logo.svg"
962
- ],
963
- exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
964
- extensions: [".json", ".js", ".png", ".svg", ".ico"],
965
- framework: ["packages/ui/assets/**/*"]
966
- },
967
- globalIgnore: [
968
- "**/node_modules/**",
969
- "**/dist/**",
970
- "**/build/**",
971
- "**/.git/**",
972
- "**/coverage/**",
973
- "**/test/**"
974
- ]
975
- };
976
- GLOB_OPTIONS = {
977
- base: {
978
- absolute: true,
979
- onlyFiles: true,
980
- ignore: SCAN_PATTERNS.globalIgnore
981
- },
982
- css: {
983
- absolute: true,
984
- onlyFiles: true,
985
- ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
986
- },
987
- routes: {
988
- absolute: true,
989
- onlyFiles: true,
990
- ignore: [
991
- ...SCAN_PATTERNS.globalIgnore,
992
- "**/*.test.tsx",
993
- "**/*.stories.tsx"
994
- ]
995
- },
996
- i18n: {
997
- absolute: true,
998
- onlyFiles: true,
999
- ignore: SCAN_PATTERNS.globalIgnore
1000
- },
1001
- assets: {
1002
- absolute: true,
1003
- onlyFiles: true,
1004
- ignore: SCAN_PATTERNS.globalIgnore
1005
- }
1006
- };
1007
- }
1008
- });
1009
-
1010
862
  // node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
1011
863
  var require_array = __commonJS({
1012
864
  "node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports) {
@@ -6591,7 +6443,167 @@ var require_out4 = __commonJS({
6591
6443
  }
6592
6444
  });
6593
6445
 
6446
+ // packages/core/config/constants.js
6447
+ function getPatternsFor(type, repoRoot = null) {
6448
+ const patterns = SCAN_PATTERNS[type];
6449
+ if (!patterns) {
6450
+ throw new Error(`Unknown pattern type: ${type}`);
6451
+ }
6452
+ if (repoRoot && patterns.framework) {
6453
+ return {
6454
+ ...patterns,
6455
+ framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
6456
+ };
6457
+ }
6458
+ return patterns;
6459
+ }
6460
+ function getGlobOptionsFor(type) {
6461
+ return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
6462
+ }
6463
+ var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
6464
+ var init_constants = __esm({
6465
+ "packages/core/config/constants.js"() {
6466
+ "use strict";
6467
+ init_utils();
6468
+ I18N_PATHS = {
6469
+ // Monorepo source structure (locales at root, not in src/)
6470
+ SOURCE_ROOT: "packages/core/i18n",
6471
+ SOURCE_LOCALES: "packages/core/i18n/locales",
6472
+ SOURCE_EAGER: "packages/core/i18n/locales/eager",
6473
+ SOURCE_LAZY: "packages/core/i18n/locales/lazy",
6474
+ // Published structure (same as source - no flattening needed)
6475
+ PUBLISHED_ROOT: "i18n",
6476
+ PUBLISHED_LOCALES: "i18n/locales",
6477
+ PUBLISHED_EAGER: "i18n/locales/eager",
6478
+ PUBLISHED_LAZY: "i18n/locales/lazy"
6479
+ };
6480
+ SCAN_PATTERNS = {
6481
+ routes: {
6482
+ consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
6483
+ exclude: [
6484
+ "**/node_modules/**",
6485
+ "**/dist/**",
6486
+ "**/build/**",
6487
+ "**/*.test.tsx",
6488
+ "**/*.stories.tsx"
6489
+ ],
6490
+ extensions: [".tsx"]
6491
+ },
6492
+ css: {
6493
+ consumer: ["src/**/*.css"],
6494
+ themes: ["src/**/*.css"],
6495
+ extensions: [".css", ".scss", ".sass"],
6496
+ framework: [
6497
+ "packages/ui/src/**/*.css",
6498
+ "packages/core/components/src/**/*.css",
6499
+ "packages/core/templates/src/**/*.css"
6500
+ ]
6501
+ },
6502
+ i18n: {
6503
+ eager: ["src/locales/*_*.json"],
6504
+ lazy: [
6505
+ "src/**/locales/*_*.json",
6506
+ "!src/locales/*_*.json",
6507
+ // Auto-detect shared entity translations in monorepos (if exists, use it; if not, no problem)
6508
+ "../../entities/locales/*_*.json"
6509
+ ],
6510
+ // Additional paths from workspace packages (e.g., shared entities)
6511
+ // Consumers can still configure via i18n.additionalPaths in dndev/vite config for custom paths
6512
+ // Example: ['../../packages/shared/locales/*_*.json']
6513
+ additional: [],
6514
+ framework: {
6515
+ eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6516
+ lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
6517
+ },
6518
+ extensions: [".json"]
6519
+ },
6520
+ assets: {
6521
+ consumer: ["public/**/*"],
6522
+ fallback: ["manifest.json"],
6523
+ modern: [
6524
+ "logo.svg",
6525
+ "favicon.svg",
6526
+ "apple-touch-icon.png",
6527
+ "android-chrome-192x192.png",
6528
+ "android-chrome-512x512.png"
6529
+ ],
6530
+ patterns: [
6531
+ "favicon.svg",
6532
+ "favicon.ico",
6533
+ "favicon-*.png",
6534
+ "logo.svg",
6535
+ "logo.png",
6536
+ "logo.webp",
6537
+ "logo.avif",
6538
+ "apple-touch-icon*.png",
6539
+ "android-chrome-*.png",
6540
+ "manifest.json"
6541
+ ],
6542
+ fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
6543
+ framework: ["packages/ui/assets/**/*"]
6544
+ },
6545
+ pwa: {
6546
+ consumer: [
6547
+ "public/manifest.json",
6548
+ "public/service-worker.js",
6549
+ "public/sw.js",
6550
+ "public/icon-192x192.png",
6551
+ "public/icon-512x512.png",
6552
+ "public/favicon.ico",
6553
+ "public/favicon.svg",
6554
+ "public/apple-touch-icon.png",
6555
+ "public/logo.svg"
6556
+ ],
6557
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
6558
+ extensions: [".json", ".js", ".png", ".svg", ".ico"],
6559
+ framework: ["packages/ui/assets/**/*"]
6560
+ },
6561
+ globalIgnore: [
6562
+ "**/node_modules/**",
6563
+ "**/dist/**",
6564
+ "**/build/**",
6565
+ "**/.git/**",
6566
+ "**/coverage/**",
6567
+ "**/test/**"
6568
+ ]
6569
+ };
6570
+ GLOB_OPTIONS = {
6571
+ base: {
6572
+ absolute: true,
6573
+ onlyFiles: true,
6574
+ ignore: SCAN_PATTERNS.globalIgnore
6575
+ },
6576
+ css: {
6577
+ absolute: true,
6578
+ onlyFiles: true,
6579
+ ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
6580
+ },
6581
+ routes: {
6582
+ absolute: true,
6583
+ onlyFiles: true,
6584
+ ignore: [
6585
+ ...SCAN_PATTERNS.globalIgnore,
6586
+ "**/*.test.tsx",
6587
+ "**/*.stories.tsx"
6588
+ ]
6589
+ },
6590
+ i18n: {
6591
+ absolute: true,
6592
+ onlyFiles: true,
6593
+ ignore: SCAN_PATTERNS.globalIgnore
6594
+ },
6595
+ assets: {
6596
+ absolute: true,
6597
+ onlyFiles: true,
6598
+ ignore: SCAN_PATTERNS.globalIgnore
6599
+ }
6600
+ };
6601
+ }
6602
+ });
6603
+
6594
6604
  // packages/core/config/utils/PathResolver.ts
6605
+ import * as fs from "node:fs";
6606
+ import "node:fs";
6595
6607
  import { createRequire } from "node:module";
6596
6608
  import {
6597
6609
  resolve,
@@ -6603,7 +6615,6 @@ import {
6603
6615
  extname
6604
6616
  } from "node:path";
6605
6617
  import { fileURLToPath } from "node:url";
6606
- import * as fs from "node:fs";
6607
6618
  function safeExecuteAsync(fn, message) {
6608
6619
  return fn().catch((error2) => {
6609
6620
  throw new Error(
@@ -6616,8 +6627,8 @@ var init_PathResolver = __esm({
6616
6627
  "packages/core/config/utils/PathResolver.ts"() {
6617
6628
  "use strict";
6618
6629
  init_utils();
6619
- init_constants();
6620
6630
  import_fast_glob = __toESM(require_out4(), 1);
6631
+ init_constants();
6621
6632
  constants = {
6622
6633
  getGlobOptionsFor: getGlobOptionsFor || void 0,
6623
6634
  SCAN_PATTERNS: SCAN_PATTERNS || void 0,
@@ -7705,6 +7716,7 @@ var init_errors = __esm({
7705
7716
  });
7706
7717
 
7707
7718
  // packages/tooling/src/utils/pathResolver.ts
7719
+ import { createRequire as createRequire2 } from "node:module";
7708
7720
  import {
7709
7721
  join as join2,
7710
7722
  dirname as dirname2,
@@ -7714,6 +7726,7 @@ import {
7714
7726
  resolve as resolve2,
7715
7727
  isAbsolute as pathIsAbsolute
7716
7728
  } from "node:path";
7729
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7717
7730
  function readdirSync2(dirPath, options) {
7718
7731
  return pathResolverInstance.readdirSync(dirPath, options);
7719
7732
  }
@@ -7738,17 +7751,18 @@ var init_pathResolver = __esm({
7738
7751
  });
7739
7752
 
7740
7753
  // packages/tooling/src/bundler/utils.ts
7741
- import { createRequire as createRequire2 } from "node:module";
7742
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7743
- import { dirname as dirname3, resolve as resolve3 } from "node:path";
7744
7754
  import { Buffer as Buffer2 } from "node:buffer";
7755
+ import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
7756
+ import { createRequire as createRequire3 } from "node:module";
7757
+ import { dirname as dirname3, resolve as resolve3 } from "node:path";
7745
7758
  import process from "node:process";
7759
+ import { fileURLToPath as fileURLToPath3 } from "node:url";
7746
7760
  var require2, __filename, __dirname;
7747
7761
  var init_utils = __esm({
7748
7762
  "packages/tooling/src/bundler/utils.ts"() {
7749
7763
  "use strict";
7750
- require2 = createRequire2(import.meta.url);
7751
- __filename = fileURLToPath2(import.meta.url);
7764
+ require2 = createRequire3(import.meta.url);
7765
+ __filename = fileURLToPath3(import.meta.url);
7752
7766
  __dirname = dirname3(__filename);
7753
7767
  if (typeof globalThis !== "undefined") {
7754
7768
  globalThis.require = require2;
@@ -7779,7 +7793,6 @@ import { spawnSync, execSync } from "node:child_process";
7779
7793
  // packages/tooling/src/utils/app-selector.ts
7780
7794
  init_utils();
7781
7795
  init_dist2();
7782
- init_cli_output();
7783
7796
 
7784
7797
  // packages/tooling/src/utils/app-detection.ts
7785
7798
  init_utils();
@@ -7867,6 +7880,7 @@ function analyzeApp(appPath, appName) {
7867
7880
  }
7868
7881
 
7869
7882
  // packages/tooling/src/utils/app-selector.ts
7883
+ init_cli_output();
7870
7884
  async function selectApp(projectRoot, appName) {
7871
7885
  const apps = detectApps(projectRoot);
7872
7886
  if (apps.length === 0) {
@@ -7901,10 +7915,6 @@ async function selectApp(projectRoot, appName) {
7901
7915
  return apps.find((a) => a.name === selected) || null;
7902
7916
  }
7903
7917
 
7904
- // packages/tooling/src/apps/build.ts
7905
- init_errors();
7906
- init_cli_output();
7907
-
7908
7918
  // packages/tooling/src/utils/cli-input.ts
7909
7919
  init_utils();
7910
7920
  init_dist2();
@@ -7927,6 +7937,8 @@ async function askForSelection(message, choices, defaultValue = 0) {
7927
7937
  }
7928
7938
 
7929
7939
  // packages/tooling/src/apps/build.ts
7940
+ init_cli_output();
7941
+ init_errors();
7930
7942
  init_pathResolver();
7931
7943
  function validateFirebaseJson(appDir) {
7932
7944
  const firebaseJsonPath = joinPath(appDir, "firebase.json");