@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
@@ -822,6 +822,7 @@ __export(cli_output_exports, {
822
822
  success: () => success,
823
823
  warn: () => warn
824
824
  });
825
+ import "node:os";
825
826
  function supportsColor() {
826
827
  if (process.env.NO_COLOR) return false;
827
828
  if (process.platform === "win32") {
@@ -1013,155 +1014,6 @@ var init_cli_output = __esm({
1013
1014
  }
1014
1015
  });
1015
1016
 
1016
- // packages/core/config/constants.js
1017
- function getPatternsFor(type, repoRoot = null) {
1018
- const patterns = SCAN_PATTERNS[type];
1019
- if (!patterns) {
1020
- throw new Error(`Unknown pattern type: ${type}`);
1021
- }
1022
- if (repoRoot && patterns.framework) {
1023
- return {
1024
- ...patterns,
1025
- framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
1026
- };
1027
- }
1028
- return patterns;
1029
- }
1030
- function getGlobOptionsFor(type) {
1031
- return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
1032
- }
1033
- var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
1034
- var init_constants = __esm({
1035
- "packages/core/config/constants.js"() {
1036
- "use strict";
1037
- init_utils();
1038
- I18N_PATHS = {
1039
- // Monorepo source structure (locales at root, not in src/)
1040
- SOURCE_ROOT: "packages/core/i18n",
1041
- SOURCE_LOCALES: "packages/core/i18n/locales",
1042
- SOURCE_EAGER: "packages/core/i18n/locales/eager",
1043
- SOURCE_LAZY: "packages/core/i18n/locales/lazy",
1044
- // Published structure (same as source - no flattening needed)
1045
- PUBLISHED_ROOT: "i18n",
1046
- PUBLISHED_LOCALES: "i18n/locales",
1047
- PUBLISHED_EAGER: "i18n/locales/eager",
1048
- PUBLISHED_LAZY: "i18n/locales/lazy"
1049
- };
1050
- SCAN_PATTERNS = {
1051
- routes: {
1052
- consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
1053
- exclude: [
1054
- "**/node_modules/**",
1055
- "**/dist/**",
1056
- "**/build/**",
1057
- "**/*.test.tsx",
1058
- "**/*.stories.tsx"
1059
- ],
1060
- extensions: [".tsx"]
1061
- },
1062
- css: {
1063
- consumer: ["src/**/*.css"],
1064
- themes: ["src/**/*.css"],
1065
- extensions: [".css", ".scss", ".sass"],
1066
- framework: [
1067
- "packages/ui/src/**/*.css",
1068
- "packages/core/components/src/**/*.css",
1069
- "packages/core/templates/src/**/*.css"
1070
- ]
1071
- },
1072
- i18n: {
1073
- eager: ["src/locales/*_*.json"],
1074
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
1075
- framework: {
1076
- eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
1077
- lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
1078
- },
1079
- extensions: [".json"]
1080
- },
1081
- assets: {
1082
- consumer: ["public/**/*"],
1083
- fallback: ["manifest.json"],
1084
- modern: [
1085
- "logo.svg",
1086
- "favicon.svg",
1087
- "apple-touch-icon.png",
1088
- "android-chrome-192x192.png",
1089
- "android-chrome-512x512.png"
1090
- ],
1091
- patterns: [
1092
- "favicon.svg",
1093
- "favicon.ico",
1094
- "favicon-*.png",
1095
- "logo.svg",
1096
- "logo.png",
1097
- "logo.webp",
1098
- "logo.avif",
1099
- "apple-touch-icon*.png",
1100
- "android-chrome-*.png",
1101
- "manifest.json"
1102
- ],
1103
- fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
1104
- framework: ["packages/ui/assets/**/*"]
1105
- },
1106
- pwa: {
1107
- consumer: [
1108
- "public/manifest.json",
1109
- "public/service-worker.js",
1110
- "public/sw.js",
1111
- "public/icon-192x192.png",
1112
- "public/icon-512x512.png",
1113
- "public/favicon.ico",
1114
- "public/favicon.svg",
1115
- "public/apple-touch-icon.png",
1116
- "public/logo.svg"
1117
- ],
1118
- exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
1119
- extensions: [".json", ".js", ".png", ".svg", ".ico"],
1120
- framework: ["packages/ui/assets/**/*"]
1121
- },
1122
- globalIgnore: [
1123
- "**/node_modules/**",
1124
- "**/dist/**",
1125
- "**/build/**",
1126
- "**/.git/**",
1127
- "**/coverage/**",
1128
- "**/test/**"
1129
- ]
1130
- };
1131
- GLOB_OPTIONS = {
1132
- base: {
1133
- absolute: true,
1134
- onlyFiles: true,
1135
- ignore: SCAN_PATTERNS.globalIgnore
1136
- },
1137
- css: {
1138
- absolute: true,
1139
- onlyFiles: true,
1140
- ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
1141
- },
1142
- routes: {
1143
- absolute: true,
1144
- onlyFiles: true,
1145
- ignore: [
1146
- ...SCAN_PATTERNS.globalIgnore,
1147
- "**/*.test.tsx",
1148
- "**/*.stories.tsx"
1149
- ]
1150
- },
1151
- i18n: {
1152
- absolute: true,
1153
- onlyFiles: true,
1154
- ignore: SCAN_PATTERNS.globalIgnore
1155
- },
1156
- assets: {
1157
- absolute: true,
1158
- onlyFiles: true,
1159
- ignore: SCAN_PATTERNS.globalIgnore
1160
- }
1161
- };
1162
- }
1163
- });
1164
-
1165
1017
  // node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
1166
1018
  var require_array = __commonJS({
1167
1019
  "node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports) {
@@ -6746,7 +6598,167 @@ var require_out4 = __commonJS({
6746
6598
  }
6747
6599
  });
6748
6600
 
6601
+ // packages/core/config/constants.js
6602
+ function getPatternsFor(type, repoRoot = null) {
6603
+ const patterns = SCAN_PATTERNS[type];
6604
+ if (!patterns) {
6605
+ throw new Error(`Unknown pattern type: ${type}`);
6606
+ }
6607
+ if (repoRoot && patterns.framework) {
6608
+ return {
6609
+ ...patterns,
6610
+ framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
6611
+ };
6612
+ }
6613
+ return patterns;
6614
+ }
6615
+ function getGlobOptionsFor(type) {
6616
+ return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
6617
+ }
6618
+ var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
6619
+ var init_constants = __esm({
6620
+ "packages/core/config/constants.js"() {
6621
+ "use strict";
6622
+ init_utils();
6623
+ I18N_PATHS = {
6624
+ // Monorepo source structure (locales at root, not in src/)
6625
+ SOURCE_ROOT: "packages/core/i18n",
6626
+ SOURCE_LOCALES: "packages/core/i18n/locales",
6627
+ SOURCE_EAGER: "packages/core/i18n/locales/eager",
6628
+ SOURCE_LAZY: "packages/core/i18n/locales/lazy",
6629
+ // Published structure (same as source - no flattening needed)
6630
+ PUBLISHED_ROOT: "i18n",
6631
+ PUBLISHED_LOCALES: "i18n/locales",
6632
+ PUBLISHED_EAGER: "i18n/locales/eager",
6633
+ PUBLISHED_LAZY: "i18n/locales/lazy"
6634
+ };
6635
+ SCAN_PATTERNS = {
6636
+ routes: {
6637
+ consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
6638
+ exclude: [
6639
+ "**/node_modules/**",
6640
+ "**/dist/**",
6641
+ "**/build/**",
6642
+ "**/*.test.tsx",
6643
+ "**/*.stories.tsx"
6644
+ ],
6645
+ extensions: [".tsx"]
6646
+ },
6647
+ css: {
6648
+ consumer: ["src/**/*.css"],
6649
+ themes: ["src/**/*.css"],
6650
+ extensions: [".css", ".scss", ".sass"],
6651
+ framework: [
6652
+ "packages/ui/src/**/*.css",
6653
+ "packages/core/components/src/**/*.css",
6654
+ "packages/core/templates/src/**/*.css"
6655
+ ]
6656
+ },
6657
+ i18n: {
6658
+ eager: ["src/locales/*_*.json"],
6659
+ lazy: [
6660
+ "src/**/locales/*_*.json",
6661
+ "!src/locales/*_*.json",
6662
+ // Auto-detect shared entity translations in monorepos (if exists, use it; if not, no problem)
6663
+ "../../entities/locales/*_*.json"
6664
+ ],
6665
+ // Additional paths from workspace packages (e.g., shared entities)
6666
+ // Consumers can still configure via i18n.additionalPaths in dndev/vite config for custom paths
6667
+ // Example: ['../../packages/shared/locales/*_*.json']
6668
+ additional: [],
6669
+ framework: {
6670
+ eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6671
+ lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
6672
+ },
6673
+ extensions: [".json"]
6674
+ },
6675
+ assets: {
6676
+ consumer: ["public/**/*"],
6677
+ fallback: ["manifest.json"],
6678
+ modern: [
6679
+ "logo.svg",
6680
+ "favicon.svg",
6681
+ "apple-touch-icon.png",
6682
+ "android-chrome-192x192.png",
6683
+ "android-chrome-512x512.png"
6684
+ ],
6685
+ patterns: [
6686
+ "favicon.svg",
6687
+ "favicon.ico",
6688
+ "favicon-*.png",
6689
+ "logo.svg",
6690
+ "logo.png",
6691
+ "logo.webp",
6692
+ "logo.avif",
6693
+ "apple-touch-icon*.png",
6694
+ "android-chrome-*.png",
6695
+ "manifest.json"
6696
+ ],
6697
+ fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
6698
+ framework: ["packages/ui/assets/**/*"]
6699
+ },
6700
+ pwa: {
6701
+ consumer: [
6702
+ "public/manifest.json",
6703
+ "public/service-worker.js",
6704
+ "public/sw.js",
6705
+ "public/icon-192x192.png",
6706
+ "public/icon-512x512.png",
6707
+ "public/favicon.ico",
6708
+ "public/favicon.svg",
6709
+ "public/apple-touch-icon.png",
6710
+ "public/logo.svg"
6711
+ ],
6712
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
6713
+ extensions: [".json", ".js", ".png", ".svg", ".ico"],
6714
+ framework: ["packages/ui/assets/**/*"]
6715
+ },
6716
+ globalIgnore: [
6717
+ "**/node_modules/**",
6718
+ "**/dist/**",
6719
+ "**/build/**",
6720
+ "**/.git/**",
6721
+ "**/coverage/**",
6722
+ "**/test/**"
6723
+ ]
6724
+ };
6725
+ GLOB_OPTIONS = {
6726
+ base: {
6727
+ absolute: true,
6728
+ onlyFiles: true,
6729
+ ignore: SCAN_PATTERNS.globalIgnore
6730
+ },
6731
+ css: {
6732
+ absolute: true,
6733
+ onlyFiles: true,
6734
+ ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
6735
+ },
6736
+ routes: {
6737
+ absolute: true,
6738
+ onlyFiles: true,
6739
+ ignore: [
6740
+ ...SCAN_PATTERNS.globalIgnore,
6741
+ "**/*.test.tsx",
6742
+ "**/*.stories.tsx"
6743
+ ]
6744
+ },
6745
+ i18n: {
6746
+ absolute: true,
6747
+ onlyFiles: true,
6748
+ ignore: SCAN_PATTERNS.globalIgnore
6749
+ },
6750
+ assets: {
6751
+ absolute: true,
6752
+ onlyFiles: true,
6753
+ ignore: SCAN_PATTERNS.globalIgnore
6754
+ }
6755
+ };
6756
+ }
6757
+ });
6758
+
6749
6759
  // packages/core/config/utils/PathResolver.ts
6760
+ import * as fs from "node:fs";
6761
+ import "node:fs";
6750
6762
  import { createRequire } from "node:module";
6751
6763
  import {
6752
6764
  resolve,
@@ -6758,7 +6770,6 @@ import {
6758
6770
  extname
6759
6771
  } from "node:path";
6760
6772
  import { fileURLToPath } from "node:url";
6761
- import * as fs from "node:fs";
6762
6773
  function safeExecuteAsync(fn, message) {
6763
6774
  return fn().catch((error2) => {
6764
6775
  throw new Error(
@@ -6771,8 +6782,8 @@ var init_PathResolver = __esm({
6771
6782
  "packages/core/config/utils/PathResolver.ts"() {
6772
6783
  "use strict";
6773
6784
  init_utils();
6774
- init_constants();
6775
6785
  import_fast_glob = __toESM(require_out4(), 1);
6786
+ init_constants();
6776
6787
  constants = {
6777
6788
  getGlobOptionsFor: getGlobOptionsFor || void 0,
6778
6789
  SCAN_PATTERNS: SCAN_PATTERNS || void 0,
@@ -8214,11 +8225,12 @@ var init_pathResolver = __esm({
8214
8225
  });
8215
8226
 
8216
8227
  // packages/tooling/src/bundler/utils.ts
8228
+ import { Buffer as Buffer2 } from "node:buffer";
8229
+ import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
8217
8230
  import { createRequire as createRequire3 } from "node:module";
8218
- import { fileURLToPath as fileURLToPath3 } from "node:url";
8219
8231
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
8220
- import { Buffer as Buffer2 } from "node:buffer";
8221
8232
  import process from "node:process";
8233
+ import { fileURLToPath as fileURLToPath3 } from "node:url";
8222
8234
  var require2, __filename, __dirname;
8223
8235
  var init_utils = __esm({
8224
8236
  "packages/tooling/src/bundler/utils.ts"() {
@@ -8294,8 +8306,8 @@ async function askForSelection(message, choices, defaultValue = 0) {
8294
8306
 
8295
8307
  // packages/tooling/src/utils/create-utils.ts
8296
8308
  init_utils();
8297
- init_pathResolver();
8298
8309
  init_cli_output();
8310
+ init_pathResolver();
8299
8311
  async function copyTemplateFiles(sourceDir, destDir, replacements) {
8300
8312
  if (!pathExists(sourceDir)) {
8301
8313
  log.warn(`Warning: Template directory does not exist: ${sourceDir}`);
@@ -8904,6 +8916,23 @@ function generatePackageJson(templateName, mode, options = {}) {
8904
8916
  }
8905
8917
  }
8906
8918
  }
8919
+ if (mode === "published") {
8920
+ const overrides = {};
8921
+ for (const [groupName, group] of Object.entries(matrix.groups || {})) {
8922
+ if (groupName.startsWith("@donotdev/")) {
8923
+ const version = group.packages?.[groupName];
8924
+ if (version) {
8925
+ overrides[groupName] = version.replace(/^\^/, "");
8926
+ }
8927
+ }
8928
+ }
8929
+ if (matrix.overrides) {
8930
+ Object.assign(overrides, matrix.overrides);
8931
+ }
8932
+ if (Object.keys(overrides).length > 0) {
8933
+ result.overrides = overrides;
8934
+ }
8935
+ }
8907
8936
  return result;
8908
8937
  }
8909
8938