@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
  /**
@@ -7347,11 +7353,11 @@ var init_pathResolver = __esm({
7347
7353
  });
7348
7354
 
7349
7355
  // packages/tooling/src/bundler/utils.ts
7356
+ import { Buffer as Buffer2 } from "node:buffer";
7350
7357
  import { createRequire as createRequire2 } from "node:module";
7351
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7352
7358
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
7353
- import { Buffer as Buffer2 } from "node:buffer";
7354
7359
  import process from "node:process";
7360
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7355
7361
  var require2, __filename, __dirname;
7356
7362
  var init_utils = __esm({
7357
7363
  "packages/tooling/src/bundler/utils.ts"() {
@@ -7383,8 +7389,8 @@ init_utils();
7383
7389
 
7384
7390
  // packages/tooling/src/quality/format.ts
7385
7391
  init_utils();
7386
- init_errors();
7387
7392
  init_cli_output();
7393
+ init_errors();
7388
7394
  init_pathResolver();
7389
7395
  import { spawnSync } from "node:child_process";
7390
7396
  import { EOL } from "node:os";