@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
@@ -467,155 +467,6 @@ var init_cli_output = __esm({
467
467
  }
468
468
  });
469
469
 
470
- // packages/core/config/constants.js
471
- function getPatternsFor(type, repoRoot = null) {
472
- const patterns = SCAN_PATTERNS[type];
473
- if (!patterns) {
474
- throw new Error(`Unknown pattern type: ${type}`);
475
- }
476
- if (repoRoot && patterns.framework) {
477
- return {
478
- ...patterns,
479
- framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
480
- };
481
- }
482
- return patterns;
483
- }
484
- function getGlobOptionsFor(type) {
485
- return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
486
- }
487
- var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
488
- var init_constants = __esm({
489
- "packages/core/config/constants.js"() {
490
- "use strict";
491
- init_utils();
492
- I18N_PATHS = {
493
- // Monorepo source structure (locales at root, not in src/)
494
- SOURCE_ROOT: "packages/core/i18n",
495
- SOURCE_LOCALES: "packages/core/i18n/locales",
496
- SOURCE_EAGER: "packages/core/i18n/locales/eager",
497
- SOURCE_LAZY: "packages/core/i18n/locales/lazy",
498
- // Published structure (same as source - no flattening needed)
499
- PUBLISHED_ROOT: "i18n",
500
- PUBLISHED_LOCALES: "i18n/locales",
501
- PUBLISHED_EAGER: "i18n/locales/eager",
502
- PUBLISHED_LAZY: "i18n/locales/lazy"
503
- };
504
- SCAN_PATTERNS = {
505
- routes: {
506
- consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
507
- exclude: [
508
- "**/node_modules/**",
509
- "**/dist/**",
510
- "**/build/**",
511
- "**/*.test.tsx",
512
- "**/*.stories.tsx"
513
- ],
514
- extensions: [".tsx"]
515
- },
516
- css: {
517
- consumer: ["src/**/*.css"],
518
- themes: ["src/**/*.css"],
519
- extensions: [".css", ".scss", ".sass"],
520
- framework: [
521
- "packages/ui/src/**/*.css",
522
- "packages/core/components/src/**/*.css",
523
- "packages/core/templates/src/**/*.css"
524
- ]
525
- },
526
- i18n: {
527
- eager: ["src/locales/*_*.json"],
528
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
529
- framework: {
530
- eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
531
- lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
532
- },
533
- extensions: [".json"]
534
- },
535
- assets: {
536
- consumer: ["public/**/*"],
537
- fallback: ["manifest.json"],
538
- modern: [
539
- "logo.svg",
540
- "favicon.svg",
541
- "apple-touch-icon.png",
542
- "android-chrome-192x192.png",
543
- "android-chrome-512x512.png"
544
- ],
545
- patterns: [
546
- "favicon.svg",
547
- "favicon.ico",
548
- "favicon-*.png",
549
- "logo.svg",
550
- "logo.png",
551
- "logo.webp",
552
- "logo.avif",
553
- "apple-touch-icon*.png",
554
- "android-chrome-*.png",
555
- "manifest.json"
556
- ],
557
- fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
558
- framework: ["packages/ui/assets/**/*"]
559
- },
560
- pwa: {
561
- consumer: [
562
- "public/manifest.json",
563
- "public/service-worker.js",
564
- "public/sw.js",
565
- "public/icon-192x192.png",
566
- "public/icon-512x512.png",
567
- "public/favicon.ico",
568
- "public/favicon.svg",
569
- "public/apple-touch-icon.png",
570
- "public/logo.svg"
571
- ],
572
- exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
573
- extensions: [".json", ".js", ".png", ".svg", ".ico"],
574
- framework: ["packages/ui/assets/**/*"]
575
- },
576
- globalIgnore: [
577
- "**/node_modules/**",
578
- "**/dist/**",
579
- "**/build/**",
580
- "**/.git/**",
581
- "**/coverage/**",
582
- "**/test/**"
583
- ]
584
- };
585
- GLOB_OPTIONS = {
586
- base: {
587
- absolute: true,
588
- onlyFiles: true,
589
- ignore: SCAN_PATTERNS.globalIgnore
590
- },
591
- css: {
592
- absolute: true,
593
- onlyFiles: true,
594
- ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
595
- },
596
- routes: {
597
- absolute: true,
598
- onlyFiles: true,
599
- ignore: [
600
- ...SCAN_PATTERNS.globalIgnore,
601
- "**/*.test.tsx",
602
- "**/*.stories.tsx"
603
- ]
604
- },
605
- i18n: {
606
- absolute: true,
607
- onlyFiles: true,
608
- ignore: SCAN_PATTERNS.globalIgnore
609
- },
610
- assets: {
611
- absolute: true,
612
- onlyFiles: true,
613
- ignore: SCAN_PATTERNS.globalIgnore
614
- }
615
- };
616
- }
617
- });
618
-
619
470
  // node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
620
471
  var require_array = __commonJS({
621
472
  "node_modules/.bun/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js"(exports) {
@@ -6200,7 +6051,157 @@ var require_out4 = __commonJS({
6200
6051
  }
6201
6052
  });
6202
6053
 
6054
+ // packages/core/config/constants.js
6055
+ function getPatternsFor(type, repoRoot = null) {
6056
+ const patterns = SCAN_PATTERNS[type];
6057
+ if (!patterns) {
6058
+ throw new Error(`Unknown pattern type: ${type}`);
6059
+ }
6060
+ if (repoRoot && patterns.framework) {
6061
+ return {
6062
+ ...patterns,
6063
+ framework: patterns.framework.map((pattern) => `${repoRoot}/${pattern}`)
6064
+ };
6065
+ }
6066
+ return patterns;
6067
+ }
6068
+ function getGlobOptionsFor(type) {
6069
+ return GLOB_OPTIONS[type] || GLOB_OPTIONS.base;
6070
+ }
6071
+ var I18N_PATHS, SCAN_PATTERNS, GLOB_OPTIONS;
6072
+ var init_constants = __esm({
6073
+ "packages/core/config/constants.js"() {
6074
+ "use strict";
6075
+ init_utils();
6076
+ I18N_PATHS = {
6077
+ // Monorepo source structure (locales at root, not in src/)
6078
+ SOURCE_ROOT: "packages/core/i18n",
6079
+ SOURCE_LOCALES: "packages/core/i18n/locales",
6080
+ SOURCE_EAGER: "packages/core/i18n/locales/eager",
6081
+ SOURCE_LAZY: "packages/core/i18n/locales/lazy",
6082
+ // Published structure (same as source - no flattening needed)
6083
+ PUBLISHED_ROOT: "i18n",
6084
+ PUBLISHED_LOCALES: "i18n/locales",
6085
+ PUBLISHED_EAGER: "i18n/locales/eager",
6086
+ PUBLISHED_LAZY: "i18n/locales/lazy"
6087
+ };
6088
+ SCAN_PATTERNS = {
6089
+ routes: {
6090
+ consumer: ["src/**/*Page.tsx", "src/pages/**/*Page.tsx"],
6091
+ exclude: [
6092
+ "**/node_modules/**",
6093
+ "**/dist/**",
6094
+ "**/build/**",
6095
+ "**/*.test.tsx",
6096
+ "**/*.stories.tsx"
6097
+ ],
6098
+ extensions: [".tsx"]
6099
+ },
6100
+ css: {
6101
+ consumer: ["src/**/*.css"],
6102
+ themes: ["src/**/*.css"],
6103
+ extensions: [".css", ".scss", ".sass"],
6104
+ framework: [
6105
+ "packages/ui/src/**/*.css",
6106
+ "packages/core/components/src/**/*.css",
6107
+ "packages/core/templates/src/**/*.css"
6108
+ ]
6109
+ },
6110
+ i18n: {
6111
+ eager: ["src/locales/*_*.json"],
6112
+ lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
6113
+ framework: {
6114
+ eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6115
+ lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
6116
+ },
6117
+ extensions: [".json"]
6118
+ },
6119
+ assets: {
6120
+ consumer: ["public/**/*"],
6121
+ fallback: ["manifest.json"],
6122
+ modern: [
6123
+ "logo.svg",
6124
+ "favicon.svg",
6125
+ "apple-touch-icon.png",
6126
+ "android-chrome-192x192.png",
6127
+ "android-chrome-512x512.png"
6128
+ ],
6129
+ patterns: [
6130
+ "favicon.svg",
6131
+ "favicon.ico",
6132
+ "favicon-*.png",
6133
+ "logo.svg",
6134
+ "logo.png",
6135
+ "logo.webp",
6136
+ "logo.avif",
6137
+ "apple-touch-icon*.png",
6138
+ "android-chrome-*.png",
6139
+ "manifest.json"
6140
+ ],
6141
+ fonts: ["fonts/**/*.woff2", "fonts/**/*.woff", "fonts/**/*.ttf"],
6142
+ framework: ["packages/ui/assets/**/*"]
6143
+ },
6144
+ pwa: {
6145
+ consumer: [
6146
+ "public/manifest.json",
6147
+ "public/service-worker.js",
6148
+ "public/sw.js",
6149
+ "public/icon-192x192.png",
6150
+ "public/icon-512x512.png",
6151
+ "public/favicon.ico",
6152
+ "public/favicon.svg",
6153
+ "public/apple-touch-icon.png",
6154
+ "public/logo.svg"
6155
+ ],
6156
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**"],
6157
+ extensions: [".json", ".js", ".png", ".svg", ".ico"],
6158
+ framework: ["packages/ui/assets/**/*"]
6159
+ },
6160
+ globalIgnore: [
6161
+ "**/node_modules/**",
6162
+ "**/dist/**",
6163
+ "**/build/**",
6164
+ "**/.git/**",
6165
+ "**/coverage/**",
6166
+ "**/test/**"
6167
+ ]
6168
+ };
6169
+ GLOB_OPTIONS = {
6170
+ base: {
6171
+ absolute: true,
6172
+ onlyFiles: true,
6173
+ ignore: SCAN_PATTERNS.globalIgnore
6174
+ },
6175
+ css: {
6176
+ absolute: true,
6177
+ onlyFiles: true,
6178
+ ignore: [...SCAN_PATTERNS.globalIgnore, "**/*.test.css"]
6179
+ },
6180
+ routes: {
6181
+ absolute: true,
6182
+ onlyFiles: true,
6183
+ ignore: [
6184
+ ...SCAN_PATTERNS.globalIgnore,
6185
+ "**/*.test.tsx",
6186
+ "**/*.stories.tsx"
6187
+ ]
6188
+ },
6189
+ i18n: {
6190
+ absolute: true,
6191
+ onlyFiles: true,
6192
+ ignore: SCAN_PATTERNS.globalIgnore
6193
+ },
6194
+ assets: {
6195
+ absolute: true,
6196
+ onlyFiles: true,
6197
+ ignore: SCAN_PATTERNS.globalIgnore
6198
+ }
6199
+ };
6200
+ }
6201
+ });
6202
+
6203
6203
  // packages/core/config/utils/PathResolver.ts
6204
+ import * as fs from "node:fs";
6204
6205
  import { createRequire } from "node:module";
6205
6206
  import {
6206
6207
  resolve,
@@ -6212,7 +6213,6 @@ import {
6212
6213
  extname
6213
6214
  } from "node:path";
6214
6215
  import { fileURLToPath } from "node:url";
6215
- import * as fs from "node:fs";
6216
6216
  function safeExecuteAsync(fn, message) {
6217
6217
  return fn().catch((error2) => {
6218
6218
  throw new Error(
@@ -6225,8 +6225,8 @@ var init_PathResolver = __esm({
6225
6225
  "packages/core/config/utils/PathResolver.ts"() {
6226
6226
  "use strict";
6227
6227
  init_utils();
6228
- init_constants();
6229
6228
  import_fast_glob = __toESM(require_out4(), 1);
6229
+ init_constants();
6230
6230
  constants = {
6231
6231
  getGlobOptionsFor: getGlobOptionsFor || void 0,
6232
6232
  SCAN_PATTERNS: SCAN_PATTERNS || void 0,
@@ -7141,11 +7141,17 @@ var init_PathResolver = __esm({
7141
7141
  /**
7142
7142
  * Get path to empty.js module for optional dependency aliasing
7143
7143
  * Used by Vite and Turbopack to alias missing optional deps
7144
- * @returns Absolute path to empty.js
7144
+ * @param returnPackageSpecifier - If true, returns package specifier '@donotdev/core/empty' for Turbopack. If false, returns absolute path for Vite.
7145
+ * @returns Package specifier or absolute path to empty.js
7145
7146
  */
7146
- getEmptyModulePath() {
7147
+ getEmptyModulePath(returnPackageSpecifier = false) {
7148
+ if (returnPackageSpecifier) {
7149
+ return "@donotdev/core/empty";
7150
+ }
7151
+ const resolved = this.resolvePackage("@donotdev/core/empty");
7152
+ if (resolved) return resolved;
7147
7153
  const thisDir = dirname(fileURLToPath(import.meta.url));
7148
- return this.normalizePath(join(thisDir, "../vite/empty.js"));
7154
+ return this.normalizePath(join(thisDir, "../empty.js"));
7149
7155
  }
7150
7156
  // === PRIVATE METHODS ===
7151
7157
  /**
@@ -7370,11 +7376,11 @@ var init_pathResolver = __esm({
7370
7376
  });
7371
7377
 
7372
7378
  // packages/tooling/src/bundler/utils.ts
7379
+ import { Buffer as Buffer2 } from "node:buffer";
7373
7380
  import { createRequire as createRequire2 } from "node:module";
7374
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7375
7381
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
7376
- import { Buffer as Buffer2 } from "node:buffer";
7377
7382
  import process from "node:process";
7383
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7378
7384
  var require2, __filename, __dirname;
7379
7385
  var init_utils = __esm({
7380
7386
  "packages/tooling/src/bundler/utils.ts"() {
@@ -7406,8 +7412,8 @@ init_utils();
7406
7412
 
7407
7413
  // packages/tooling/src/maintenance/cacheout.ts
7408
7414
  init_utils();
7409
- init_errors();
7410
7415
  init_cli_output();
7416
+ init_errors();
7411
7417
  init_pathResolver();
7412
7418
  async function findCacheItems(targetDir, verbose) {
7413
7419
  const matches = /* @__PURE__ */ new Set();