@donotdev/cli 0.0.5 → 0.0.7

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 (102) hide show
  1. package/dependencies-matrix.json +76 -34
  2. package/dist/bin/commands/build.js +165 -161
  3. package/dist/bin/commands/bump.js +172 -160
  4. package/dist/bin/commands/cacheout.js +163 -157
  5. package/dist/bin/commands/create-app.js +205 -163
  6. package/dist/bin/commands/create-project.js +176 -161
  7. package/dist/bin/commands/deploy.js +480 -472
  8. package/dist/bin/commands/dev.js +164 -158
  9. package/dist/bin/commands/emu.js +164 -158
  10. package/dist/bin/commands/format.js +163 -157
  11. package/dist/bin/commands/lint.js +166 -157
  12. package/dist/bin/commands/make-admin.d.ts +11 -0
  13. package/dist/bin/commands/make-admin.d.ts.map +1 -0
  14. package/dist/bin/commands/make-admin.js +12 -0
  15. package/dist/bin/commands/make-admin.js.map +1 -0
  16. package/dist/bin/commands/preview.js +164 -158
  17. package/dist/bin/commands/sync-secrets.js +164 -158
  18. package/dist/bin/commands/wai.d.ts +11 -0
  19. package/dist/bin/commands/wai.d.ts.map +1 -0
  20. package/dist/bin/commands/wai.js +12 -0
  21. package/dist/bin/commands/wai.js.map +1 -0
  22. package/dist/bin/dndev.js +24 -8
  23. package/dist/bin/donotdev.js +24 -8
  24. package/dist/index.js +557 -514
  25. package/package.json +1 -1
  26. package/templates/app-demo/index.html.example +4 -0
  27. package/templates/app-demo/src/App.tsx.example +28 -10
  28. package/templates/app-demo/src/config/app.ts.example +68 -0
  29. package/templates/app-next/src/app/ClientLayout.tsx.example +4 -3
  30. package/templates/app-next/src/app/layout.tsx.example +17 -25
  31. package/templates/app-next/src/config/app.ts.example +75 -48
  32. package/templates/app-next/src/globals.css.example +10 -7
  33. package/templates/app-next/src/locales/dndev_en.json.example +68 -0
  34. package/templates/app-next/src/pages/locales/example_en.json.example +5 -0
  35. package/templates/app-vite/index.html.example +71 -34
  36. package/templates/app-vite/src/config/app.ts.example +75 -47
  37. package/templates/app-vite/src/globals.css.example +14 -6
  38. package/templates/app-vite/src/locales/dndev_en.json.example +68 -0
  39. package/templates/app-vite/src/pages/FormPageExample.tsx.example +152 -0
  40. package/templates/app-vite/src/pages/HomePage.tsx.example +81 -134
  41. package/templates/app-vite/src/pages/ListPageExample.tsx.example +88 -0
  42. package/templates/functions-firebase/README.md.example +25 -0
  43. package/templates/functions-firebase/build.mjs.example +8 -1
  44. package/templates/functions-firebase/functions-firebase/build.mjs.example +8 -1
  45. package/templates/functions-firebase/functions-firebase/src/index.ts.example +19 -25
  46. package/templates/functions-firebase/functions.config.js.example +35 -0
  47. package/templates/functions-firebase/tsconfig.json.example +3 -13
  48. package/templates/functions-vercel/tsconfig.json.example +1 -13
  49. package/templates/root-consumer/entities/ExampleEntity.ts.example +223 -0
  50. package/templates/root-consumer/entities/demo.ts.example +562 -0
  51. package/templates/root-consumer/entities/index.ts.example +15 -0
  52. package/templates/root-consumer/firebase.json.example +1 -1
  53. package/templates/root-consumer/guides/{AGENT_START_HERE.md.example → dndev/AGENT_START_HERE.md.example} +22 -0
  54. package/templates/root-consumer/guides/{COMPONENTS_ADV.md.example → dndev/COMPONENTS_ADV.md.example} +456 -360
  55. package/templates/root-consumer/guides/{COMPONENTS_ATOMIC.md.example → dndev/COMPONENTS_ATOMIC.md.example} +42 -0
  56. package/templates/root-consumer/guides/dndev/COMPONENTS_CRUD.md.example +231 -0
  57. package/templates/root-consumer/guides/{INDEX.md.example → dndev/INDEX.md.example} +3 -0
  58. package/templates/root-consumer/guides/{SETUP_APP_CONFIG.md.example → dndev/SETUP_APP_CONFIG.md.example} +5 -2
  59. package/templates/root-consumer/guides/{SETUP_AUTH.md.example → dndev/SETUP_AUTH.md.example} +30 -0
  60. package/templates/root-consumer/guides/{SETUP_BILLING.md.example → dndev/SETUP_BILLING.md.example} +44 -4
  61. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +473 -0
  62. package/templates/root-consumer/guides/dndev/SETUP_FUNCTIONS.md.example +116 -0
  63. package/templates/root-consumer/guides/{SETUP_PAGES.md.example → dndev/SETUP_PAGES.md.example} +17 -0
  64. package/templates/root-consumer/guides/dndev/SETUP_PWA.md.example +213 -0
  65. package/templates/root-consumer/guides/dndev/USE_ROUTING.md.example +503 -0
  66. package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +404 -0
  67. package/templates/root-consumer/guides/wai-way/agents/architect.md.example +78 -0
  68. package/templates/root-consumer/guides/wai-way/agents/builder.md.example +87 -0
  69. package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +325 -0
  70. package/templates/root-consumer/guides/wai-way/agents/polisher.md.example +100 -0
  71. package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +281 -0
  72. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +77 -0
  73. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +104 -0
  74. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +124 -0
  75. package/templates/root-consumer/guides/wai-way/blueprints/4_configure.md.example +165 -0
  76. package/templates/root-consumer/guides/wai-way/context_map.json.example +95 -0
  77. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +840 -0
  78. package/templates/root-consumer/guides/wai-way/page_patterns.md.example +686 -0
  79. package/templates/root-consumer/guides/wai-way/presets_guide.md.example +217 -0
  80. package/templates/root-consumer/guides/wai-way/spec_template.md.example +312 -0
  81. package/templates/root-consumer/vercel.json.example +315 -20
  82. package/templates/app-demo/src/Routes.tsx.example +0 -20
  83. package/templates/app-vite/src/Routes.tsx.example +0 -16
  84. package/templates/app-vite/src/pages/locales/README.md.example +0 -1
  85. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +0 -19
  86. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +0 -14
  87. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +0 -14
  88. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +0 -12
  89. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +0 -14
  90. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +0 -14
  91. package/templates/root-consumer/guides/COMPONENTS_CRUD.md.example +0 -70
  92. package/templates/root-consumer/guides/SETUP_FUNCTIONS.md.example +0 -62
  93. /package/templates/root-consumer/guides/{COMPONENTS_UI.md.example → dndev/COMPONENTS_UI.md.example} +0 -0
  94. /package/templates/root-consumer/guides/{ENV_SETUP.md.example → dndev/ENV_SETUP.md.example} +0 -0
  95. /package/templates/root-consumer/guides/{SETUP_I18N.md.example → dndev/SETUP_I18N.md.example} +0 -0
  96. /package/templates/root-consumer/guides/{SETUP_LAYOUTS.md.example → dndev/SETUP_LAYOUTS.md.example} +0 -0
  97. /package/templates/root-consumer/guides/{SETUP_OAUTH.md.example → dndev/SETUP_OAUTH.md.example} +0 -0
  98. /package/templates/root-consumer/guides/{SETUP_THEMES.md.example → dndev/SETUP_THEMES.md.example} +0 -0
  99. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/APP_CHECK.md.example +0 -0
  100. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/COOKIE_REFERENCE.md.example +0 -0
  101. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/EMULATORS.md.example +0 -0
  102. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/VERSION_CONTROL.md.example +0 -0
@@ -751,155 +751,6 @@ var init_cli_output = __esm({
751
751
  }
752
752
  });
753
753
 
754
- // packages/core/config/constants.js
755
- function getPatternsFor(type, repoRoot = null) {
756
- const patterns = SCAN_PATTERNS[type];
757
- if (!patterns) {
758
- throw new Error(`Unknown pattern type: ${type}`);
759
- }
760
- if (repoRoot && patterns.framework) {
761
- return {
762
- ...patterns,
763
- framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
764
- };
765
- }
766
- return patterns;
767
- }
768
- function getGlobOptionsFor(type) {
769
- return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
770
- }
771
- var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
772
- var init_constants = __esm({
773
- "packages/core/config/constants.js"() {
774
- "use strict";
775
- init_utils();
776
- I18N_PATHS = {
777
- // Monorepo source structure (locales at root, not in src/)
778
- SOURCE_ROOT: "packages/core/i18n",
779
- SOURCE_LOCALES: "packages/core/i18n/locales",
780
- SOURCE_EAGER: "packages/core/i18n/locales/eager",
781
- SOURCE_LAZY: "packages/core/i18n/locales/lazy",
782
- // Published structure (same as source - no flattening needed)
783
- PUBLISHED_ROOT: "i18n",
784
- PUBLISHED_LOCALES: "i18n/locales",
785
- PUBLISHED_EAGER: "i18n/locales/eager",
786
- PUBLISHED_LAZY: "i18n/locales/lazy"
787
- };
788
- SCAN_PATTERNS = {
789
- routes: {
790
- consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
791
- exclude: [
792
- "**/node_modules/**",
793
- "**/dist/**",
794
- "**/build/**",
795
- "**/*.test.tsx",
796
- "**/*.stories.tsx"
797
- ],
798
- extensions: [".tsx"]
799
- },
800
- css: {
801
- consumer: ["src/**/*.css"],
802
- themes: ["src/**/*.css"],
803
- extensions: [".css", ".scss", ".sass"],
804
- framework: [
805
- "packages/ui/src/**/*.css",
806
- "packages/core/components/src/**/*.css",
807
- "packages/core/templates/src/**/*.css"
808
- ]
809
- },
810
- i18n: {
811
- eager: ["src/locales/*_*.json"],
812
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
813
- framework: {
814
- eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
815
- lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
816
- },
817
- extensions: [".json"]
818
- },
819
- assets: {
820
- consumer: ["public/**/*"],
821
- fallback: ["manifest.json"],
822
- modern: [
823
- "logo.svg",
824
- "favicon.svg",
825
- "apple-touch-icon.png",
826
- "android-chrome-192x192.png",
827
- "android-chrome-512x512.png"
828
- ],
829
- patterns: [
830
- "favicon.svg",
831
- "favicon.ico",
832
- "favicon-*.png",
833
- "logo.svg",
834
- "logo.png",
835
- "logo.webp",
836
- "logo.avif",
837
- "apple-touch-icon*.png",
838
- "android-chrome-*.png",
839
- "manifest.json"
840
- ],
841
- fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
842
- framework: ["packages/ui/assets/**/*"]
843
- },
844
- pwa: {
845
- consumer: [
846
- "public/manifest.json",
847
- "public/service-worker.js",
848
- "public/sw.js",
849
- "public/icon-192x192.png",
850
- "public/icon-512x512.png",
851
- "public/favicon.ico",
852
- "public/favicon.svg",
853
- "public/apple-touch-icon.png",
854
- "public/logo.svg"
855
- ],
856
- exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
857
- extensions: [".json", ".js", ".png", ".svg", ".ico"],
858
- framework: ["packages/ui/assets/**/*"]
859
- },
860
- globalIgnore: [
861
- "**/node_modules/**",
862
- "**/dist/**",
863
- "**/build/**",
864
- "**/.git/**",
865
- "**/coverage/**",
866
- "**/test/**"
867
- ]
868
- };
869
- GLOB_OPTIONS = {
870
- base: {
871
- absolute: true,
872
- onlyFiles: true,
873
- ignore: SCAN_PATTERNS.globalIgnore
874
- },
875
- css: {
876
- absolute: true,
877
- onlyFiles: true,
878
- ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
879
- },
880
- routes: {
881
- absolute: true,
882
- onlyFiles: true,
883
- ignore: [
884
- ...SCAN_PATTERNS.globalIgnore,
885
- "**/*.test.tsx",
886
- "**/*.stories.tsx"
887
- ]
888
- },
889
- i18n: {
890
- absolute: true,
891
- onlyFiles: true,
892
- ignore: SCAN_PATTERNS.globalIgnore
893
- },
894
- assets: {
895
- absolute: true,
896
- onlyFiles: true,
897
- ignore: SCAN_PATTERNS.globalIgnore
898
- }
899
- };
900
- }
901
- });
902
-
903
754
  // node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
904
755
  var require_array = __commonJS({
905
756
  "node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports) {
@@ -6484,7 +6335,157 @@ var require_out4 = __commonJS({
6484
6335
  }
6485
6336
  });
6486
6337
 
6338
+ // packages/core/config/constants.js
6339
+ function getPatternsFor(type, repoRoot = null) {
6340
+ const patterns = SCAN_PATTERNS[type];
6341
+ if (!patterns) {
6342
+ throw new Error(`Unknown pattern type: ${type}`);
6343
+ }
6344
+ if (repoRoot && patterns.framework) {
6345
+ return {
6346
+ ...patterns,
6347
+ framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
6348
+ };
6349
+ }
6350
+ return patterns;
6351
+ }
6352
+ function getGlobOptionsFor(type) {
6353
+ return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
6354
+ }
6355
+ var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
6356
+ var init_constants = __esm({
6357
+ "packages/core/config/constants.js"() {
6358
+ "use strict";
6359
+ init_utils();
6360
+ I18N_PATHS = {
6361
+ // Monorepo source structure (locales at root, not in src/)
6362
+ SOURCE_ROOT: "packages/core/i18n",
6363
+ SOURCE_LOCALES: "packages/core/i18n/locales",
6364
+ SOURCE_EAGER: "packages/core/i18n/locales/eager",
6365
+ SOURCE_LAZY: "packages/core/i18n/locales/lazy",
6366
+ // Published structure (same as source - no flattening needed)
6367
+ PUBLISHED_ROOT: "i18n",
6368
+ PUBLISHED_LOCALES: "i18n/locales",
6369
+ PUBLISHED_EAGER: "i18n/locales/eager",
6370
+ PUBLISHED_LAZY: "i18n/locales/lazy"
6371
+ };
6372
+ SCAN_PATTERNS = {
6373
+ routes: {
6374
+ consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
6375
+ exclude: [
6376
+ "**/node_modules/**",
6377
+ "**/dist/**",
6378
+ "**/build/**",
6379
+ "**/*.test.tsx",
6380
+ "**/*.stories.tsx"
6381
+ ],
6382
+ extensions: [".tsx"]
6383
+ },
6384
+ css: {
6385
+ consumer: ["src/**/*.css"],
6386
+ themes: ["src/**/*.css"],
6387
+ extensions: [".css", ".scss", ".sass"],
6388
+ framework: [
6389
+ "packages/ui/src/**/*.css",
6390
+ "packages/core/components/src/**/*.css",
6391
+ "packages/core/templates/src/**/*.css"
6392
+ ]
6393
+ },
6394
+ i18n: {
6395
+ eager: ["src/locales/*_*.json"],
6396
+ lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
6397
+ framework: {
6398
+ eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6399
+ lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
6400
+ },
6401
+ extensions: [".json"]
6402
+ },
6403
+ assets: {
6404
+ consumer: ["public/**/*"],
6405
+ fallback: ["manifest.json"],
6406
+ modern: [
6407
+ "logo.svg",
6408
+ "favicon.svg",
6409
+ "apple-touch-icon.png",
6410
+ "android-chrome-192x192.png",
6411
+ "android-chrome-512x512.png"
6412
+ ],
6413
+ patterns: [
6414
+ "favicon.svg",
6415
+ "favicon.ico",
6416
+ "favicon-*.png",
6417
+ "logo.svg",
6418
+ "logo.png",
6419
+ "logo.webp",
6420
+ "logo.avif",
6421
+ "apple-touch-icon*.png",
6422
+ "android-chrome-*.png",
6423
+ "manifest.json"
6424
+ ],
6425
+ fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
6426
+ framework: ["packages/ui/assets/**/*"]
6427
+ },
6428
+ pwa: {
6429
+ consumer: [
6430
+ "public/manifest.json",
6431
+ "public/service-worker.js",
6432
+ "public/sw.js",
6433
+ "public/icon-192x192.png",
6434
+ "public/icon-512x512.png",
6435
+ "public/favicon.ico",
6436
+ "public/favicon.svg",
6437
+ "public/apple-touch-icon.png",
6438
+ "public/logo.svg"
6439
+ ],
6440
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
6441
+ extensions: [".json", ".js", ".png", ".svg", ".ico"],
6442
+ framework: ["packages/ui/assets/**/*"]
6443
+ },
6444
+ globalIgnore: [
6445
+ "**/node_modules/**",
6446
+ "**/dist/**",
6447
+ "**/build/**",
6448
+ "**/.git/**",
6449
+ "**/coverage/**",
6450
+ "**/test/**"
6451
+ ]
6452
+ };
6453
+ GLOB_OPTIONS = {
6454
+ base: {
6455
+ absolute: true,
6456
+ onlyFiles: true,
6457
+ ignore: SCAN_PATTERNS.globalIgnore
6458
+ },
6459
+ css: {
6460
+ absolute: true,
6461
+ onlyFiles: true,
6462
+ ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
6463
+ },
6464
+ routes: {
6465
+ absolute: true,
6466
+ onlyFiles: true,
6467
+ ignore: [
6468
+ ...SCAN_PATTERNS.globalIgnore,
6469
+ "**/*.test.tsx",
6470
+ "**/*.stories.tsx"
6471
+ ]
6472
+ },
6473
+ i18n: {
6474
+ absolute: true,
6475
+ onlyFiles: true,
6476
+ ignore: SCAN_PATTERNS.globalIgnore
6477
+ },
6478
+ assets: {
6479
+ absolute: true,
6480
+ onlyFiles: true,
6481
+ ignore: SCAN_PATTERNS.globalIgnore
6482
+ }
6483
+ };
6484
+ }
6485
+ });
6486
+
6487
6487
  // packages/core/config/utils/PathResolver.ts
6488
+ import * as fs from "node:fs";
6488
6489
  import { createRequire } from "node:module";
6489
6490
  import {
6490
6491
  resolve,
@@ -6496,7 +6497,6 @@ import {
6496
6497
  extname
6497
6498
  } from "node:path";
6498
6499
  import { fileURLToPath } from "node:url";
6499
- import * as fs from "node:fs";
6500
6500
  function safeExecuteAsync(fn, message) {
6501
6501
  return fn().catch((error2) => {
6502
6502
  throw new Error(
@@ -6509,8 +6509,8 @@ var init_PathResolver = __esm({
6509
6509
  "packages/core/config/utils/PathResolver.ts"() {
6510
6510
  "use strict";
6511
6511
  init_utils();
6512
- init_constants();
6513
6512
  import_fast_glob = __toESM(require_out4(), 1);
6513
+ init_constants();
6514
6514
  constants = {
6515
6515
  getGlobOptionsFor: getGlobOptionsFor || void 0,
6516
6516
  SCAN_PATTERNS: SCAN_PATTERNS || void 0,
@@ -7425,11 +7425,17 @@ var init_PathResolver = __esm({
7425
7425
  /**
7426
7426
  * Get path to empty.js module for optional dependency aliasing
7427
7427
  * Used by Vite and Turbopack to alias missing optional deps
7428
- * @returns Absolute path to empty.js
7428
+ * @param returnPackageSpecifier - If true, returns package specifier '@donotdev/core/empty' for Turbopack. If false, returns absolute path for Vite.
7429
+ * @returns Package specifier or absolute path to empty.js
7429
7430
  */
7430
- getEmptyModulePath() {
7431
+ getEmptyModulePath(returnPackageSpecifier = false) {
7432
+ if (returnPackageSpecifier) {
7433
+ return "@donotdev/core/empty";
7434
+ }
7435
+ const resolved = this.resolvePackage("@donotdev/core/empty");
7436
+ if (resolved) return resolved;
7431
7437
  const thisDir = dirname(fileURLToPath(import.meta.url));
7432
- return this.normalizePath(join(thisDir, "../vite/empty.js"));
7438
+ return this.normalizePath(join(thisDir, "../empty.js"));
7433
7439
  }
7434
7440
  // === PRIVATE METHODS ===
7435
7441
  /**
@@ -7557,11 +7563,11 @@ var init_pathResolver = __esm({
7557
7563
  });
7558
7564
 
7559
7565
  // packages/tooling/src/bundler/utils.ts
7566
+ import { Buffer as Buffer2 } from "node:buffer";
7560
7567
  import { createRequire as createRequire3 } from "node:module";
7561
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7562
7568
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
7563
- import { Buffer as Buffer2 } from "node:buffer";
7564
7569
  import process from "node:process";
7570
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7565
7571
  var require2, __filename, __dirname;
7566
7572
  var init_utils = __esm({
7567
7573
  "packages/tooling/src/bundler/utils.ts"() {
@@ -7826,7 +7832,9 @@ async function main(options = {}) {
7826
7832
  const matrixResult = loadMatrix();
7827
7833
  const matrixVersions = matrixResult ? flattenGroups(matrixResult.matrix.groups) : {};
7828
7834
  if (!matrixResult && externalDeps.size > 0) {
7829
- log.info("Matrix not found - only updating @donotdev/* packages (external deps skipped)");
7835
+ log.info(
7836
+ "Matrix not found - only updating @donotdev/* packages (external deps skipped)"
7837
+ );
7830
7838
  }
7831
7839
  const updates = [];
7832
7840
  const majorUpdates = [];
@@ -7907,7 +7915,9 @@ ${majorUpdates.length} major update(s) available (manual review required):`
7907
7915
  const relativeFile = appRoot ? getRelativePathBetween(appRoot, u2.file) : u2.file;
7908
7916
  const normalizedLatest = normalizeVersion(u2.latest);
7909
7917
  const displayLatest = ensureCaretPrefix(normalizedLatest);
7910
- log.info(` ${relativeFile}: ${u2.pkg} ${u2.current} \u2192 ${displayLatest} (${u2.field})`);
7918
+ log.info(
7919
+ ` ${relativeFile}: ${u2.pkg} ${u2.current} \u2192 ${displayLatest} (${u2.field})`
7920
+ );
7911
7921
  }
7912
7922
  log.info("\n[DRY RUN] No files modified");
7913
7923
  } else {
@@ -7947,8 +7957,10 @@ ${majorUpdates.length} major update(s) available (manual review required):`
7947
7957
  }
7948
7958
  }
7949
7959
  if (updatedFiles.size > 0) {
7950
- log.success(`
7951
- Done. Updated ${updatedFiles.size} file(s). Run "bun install" to apply.`);
7960
+ log.success(
7961
+ `
7962
+ Done. Updated ${updatedFiles.size} file(s). Run "bun install" to apply.`
7963
+ );
7952
7964
  }
7953
7965
  } else {
7954
7966
  log.info("\nUpdates not applied");