@donotdev/cli 0.0.4 → 0.0.6

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 (54) hide show
  1. package/dependencies-matrix.json +234 -114
  2. package/dist/bin/commands/build.js +9 -3
  3. package/dist/bin/commands/bump.js +119 -100
  4. package/dist/bin/commands/cacheout.js +9 -3
  5. package/dist/bin/commands/create-app.js +60 -34
  6. package/dist/bin/commands/create-project.js +61 -34
  7. package/dist/bin/commands/deploy.js +22 -14
  8. package/dist/bin/commands/dev.js +9 -3
  9. package/dist/bin/commands/emu.js +9 -3
  10. package/dist/bin/commands/format.js +9 -3
  11. package/dist/bin/commands/lint.js +9 -3
  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 +9 -3
  17. package/dist/bin/commands/sync-secrets.js +9 -3
  18. package/dist/index.js +72 -44
  19. package/package.json +1 -1
  20. package/templates/app-demo/index.html.example +4 -0
  21. package/templates/app-demo/src/App.tsx.example +28 -10
  22. package/templates/app-demo/src/config/app.ts.example +56 -0
  23. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +5 -5
  24. package/templates/app-next/src/app/ClientLayout.tsx.example +5 -4
  25. package/templates/app-next/src/app/layout.tsx.example +17 -25
  26. package/templates/app-next/src/globals.css.example +10 -7
  27. package/templates/app-next/src/locales/dndev_en.json.example +68 -0
  28. package/templates/app-next/src/pages/locales/example_en.json.example +5 -0
  29. package/templates/app-vite/index.html.example +3 -0
  30. package/templates/app-vite/src/App.tsx.example +1 -1
  31. package/templates/app-vite/src/globals.css.example +14 -6
  32. package/templates/app-vite/src/locales/dndev_en.json.example +68 -0
  33. package/templates/functions-firebase/README.md.example +25 -0
  34. package/templates/functions-firebase/tsconfig.json.example +3 -13
  35. package/templates/functions-vercel/tsconfig.json.example +1 -13
  36. package/templates/root-consumer/firebase.json.example +1 -1
  37. package/templates/root-consumer/guides/AGENT_START_HERE.md.example +229 -7
  38. package/templates/root-consumer/guides/COMPONENTS_ADV.md.example +456 -0
  39. package/templates/root-consumer/guides/COMPONENTS_ATOMIC.md.example +43 -1
  40. package/templates/root-consumer/guides/COMPONENTS_UI.md.example +6 -0
  41. package/templates/root-consumer/guides/INDEX.md.example +3 -0
  42. package/templates/root-consumer/guides/SETUP_APP_CONFIG.md.example +5 -2
  43. package/templates/root-consumer/guides/SETUP_BILLING.md.example +44 -4
  44. package/templates/root-consumer/guides/SETUP_CRUD.md.example +1244 -0
  45. package/templates/root-consumer/guides/SETUP_FUNCTIONS.md.example +52 -0
  46. package/templates/root-consumer/guides/SETUP_I18N.md.example +145 -6
  47. package/templates/root-consumer/guides/SETUP_LAYOUTS.md.example +18 -0
  48. package/templates/root-consumer/guides/SETUP_PAGES.md.example +25 -0
  49. package/templates/root-consumer/guides/SETUP_PWA.md.example +213 -0
  50. package/templates/root-consumer/guides/USE_ROUTING.md.example +503 -0
  51. package/templates/root-consumer/vercel.json.example +315 -20
  52. package/templates/app-demo/src/Routes.tsx.example +0 -20
  53. package/templates/app-vite/src/Routes.tsx.example +0 -16
  54. package/templates/app-vite/src/pages/locales/README.md.example +0 -1
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./dependencies-matrix.schema.json",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Centralized dependency versions for DoNotDev framework. Single source of truth for all external dependencies. ⚠️ SYNC REQUIRED: When adding/removing @donotdev/* feature packages (auth, billing, crud, oauth), also update packages/core/config/constants.js BUNDLING.optionalFeatures array.",
5
- "lastUpdated": "2025-12-16",
5
+ "lastUpdated": "2026-01-16",
6
6
  "migrationGuides": {
7
7
  "0.0→0.1": {
8
8
  "path": "docs/migration/v0.0-to-v0.1.md",
@@ -14,6 +14,72 @@
14
14
  }
15
15
  },
16
16
  "groups": {
17
+ "@donotdev/adv-comps": {
18
+ "description": "Advanced components package",
19
+ "packages": {
20
+ "@donotdev/adv-comps": "^0.0.8"
21
+ }
22
+ },
23
+ "@donotdev/auth": {
24
+ "description": "Authentication package",
25
+ "packages": {
26
+ "@donotdev/auth": "^0.0.5"
27
+ }
28
+ },
29
+ "@donotdev/billing": {
30
+ "description": "Billing package",
31
+ "packages": {
32
+ "@donotdev/billing": "^0.0.5"
33
+ }
34
+ },
35
+ "@donotdev/components": {
36
+ "description": "UI components package",
37
+ "packages": {
38
+ "@donotdev/components": "^0.0.12"
39
+ }
40
+ },
41
+ "@donotdev/core": {
42
+ "description": "Core framework package",
43
+ "packages": {
44
+ "@donotdev/core": "^0.0.12"
45
+ }
46
+ },
47
+ "@donotdev/crud": {
48
+ "description": "CRUD operations package",
49
+ "packages": {
50
+ "@donotdev/crud": "^0.0.5"
51
+ }
52
+ },
53
+ "@donotdev/firebase": {
54
+ "description": "Firebase provider package",
55
+ "packages": {
56
+ "@donotdev/firebase": "^0.0.5"
57
+ }
58
+ },
59
+ "@donotdev/functions": {
60
+ "description": "Firebase Functions package",
61
+ "packages": {
62
+ "@donotdev/functions": "^0.0.5"
63
+ }
64
+ },
65
+ "@donotdev/oauth": {
66
+ "description": "OAuth package",
67
+ "packages": {
68
+ "@donotdev/oauth": "^0.0.5"
69
+ }
70
+ },
71
+ "@donotdev/templates": {
72
+ "description": "Page templates package",
73
+ "packages": {
74
+ "@donotdev/templates": "^0.0.6"
75
+ }
76
+ },
77
+ "@donotdev/ui": {
78
+ "description": "UI and routing package",
79
+ "packages": {
80
+ "@donotdev/ui": "^0.0.8"
81
+ }
82
+ },
17
83
  "react": {
18
84
  "description": "Core React - consumers install explicitly",
19
85
  "packages": {
@@ -24,16 +90,16 @@
24
90
  "i18n": {
25
91
  "description": "i18n libraries - auto-installed as transitive deps",
26
92
  "packages": {
27
- "i18next": "^25.7.3",
93
+ "i18next": "^25.7.4",
28
94
  "i18next-browser-languagedetector": "^8.2.0",
29
95
  "i18next-http-backend": "^3.0.2",
30
- "react-i18next": "^16.5.1"
96
+ "react-i18next": "^16.5.2"
31
97
  }
32
98
  },
33
99
  "zustand": {
34
100
  "description": "State management - consumers install for custom stores",
35
101
  "packages": {
36
- "zustand": "^5.0.8"
102
+ "zustand": "^5.0.10"
37
103
  }
38
104
  },
39
105
  "react-query": {
@@ -106,7 +172,11 @@
106
172
  },
107
173
  "forms": {
108
174
  "packages": {
109
- "react-hook-form": "^7.68.0",
175
+ "react-hook-form": "^7.71.0"
176
+ }
177
+ },
178
+ "forms-resolvers": {
179
+ "packages": {
110
180
  "@hookform/resolvers": "^5.2.2"
111
181
  }
112
182
  },
@@ -116,7 +186,9 @@
116
186
  }
117
187
  },
118
188
  "markdown": {
189
+ "description": "Markdown parsing - marked for speed, html-react-parser for SSR",
119
190
  "packages": {
191
+ "html-react-parser": "^5.2.11",
120
192
  "marked": "^17.0.1"
121
193
  }
122
194
  },
@@ -130,6 +202,12 @@
130
202
  "firebase": "^12.5.0"
131
203
  }
132
204
  },
205
+ "browser-image-compression": {
206
+ "description": "Image compression library for browser",
207
+ "packages": {
208
+ "browser-image-compression": "^2.0.2"
209
+ }
210
+ },
133
211
  "stripe": {
134
212
  "packages": {
135
213
  "stripe": "^20.1.0"
@@ -148,8 +226,8 @@
148
226
  },
149
227
  "vercel-deps": {
150
228
  "packages": {
151
- "next": "^16.0.7",
152
- "vercel": "^50.1.3"
229
+ "next": "^16.1.4",
230
+ "vercel": "^50.3.0"
153
231
  }
154
232
  },
155
233
  "esbuild": {
@@ -186,75 +264,9 @@
186
264
  "fast-glob": "^3.3.3"
187
265
  }
188
266
  },
189
- "@donotdev/adv-comps": {
190
- "description": "Advanced components package",
191
- "packages": {
192
- "@donotdev/adv-comps": "^0.0.3"
193
- }
194
- },
195
- "@donotdev/auth": {
196
- "description": "Authentication package",
197
- "packages": {
198
- "@donotdev/auth": "^0.0.3"
199
- }
200
- },
201
- "@donotdev/billing": {
202
- "description": "Billing package",
203
- "packages": {
204
- "@donotdev/billing": "^0.0.3"
205
- }
206
- },
207
- "@donotdev/components": {
208
- "description": "UI components package",
209
- "packages": {
210
- "@donotdev/components": "^0.0.3"
211
- }
212
- },
213
- "@donotdev/core": {
214
- "description": "Core framework package",
215
- "packages": {
216
- "@donotdev/core": "^0.0.3"
217
- }
218
- },
219
- "@donotdev/crud": {
220
- "description": "CRUD operations package",
221
- "packages": {
222
- "@donotdev/crud": "^0.0.3"
223
- }
224
- },
225
- "@donotdev/firebase": {
226
- "description": "Firebase provider package",
227
- "packages": {
228
- "@donotdev/firebase": "^0.0.3"
229
- }
230
- },
231
- "@donotdev/functions": {
232
- "description": "Firebase Functions package",
233
- "packages": {
234
- "@donotdev/functions": "^0.0.3"
235
- }
236
- },
237
- "@donotdev/oauth": {
238
- "description": "OAuth package",
239
- "packages": {
240
- "@donotdev/oauth": "^0.0.3"
241
- }
242
- },
243
- "@donotdev/templates": {
244
- "description": "Page templates package",
245
- "packages": {
246
- "@donotdev/templates": "^0.0.3"
247
- }
248
- },
249
- "@donotdev/ui": {
250
- "description": "UI and routing package",
251
- "packages": {
252
- "@donotdev/ui": "^0.0.3"
253
- }
254
- },
255
267
  "vite": {
256
268
  "packages": {
257
- "vite": "^7.3.0"
269
+ "vite": "^7.3.1"
258
270
  }
259
271
  },
260
272
  "vite-deps": {
@@ -262,7 +274,7 @@
262
274
  "@vitejs/plugin-react": "^5.1.1",
263
275
  "react-refresh": "^0.18.0",
264
276
  "@vitejs/plugin-basic-ssl": "^2.1.0",
265
- "vite-tsconfig-paths": "^6.0.3",
277
+ "vite-tsconfig-paths": "^6.0.4",
266
278
  "@rollup/plugin-strip": "^3.0.4",
267
279
  "rollup-plugin-visualizer": "^6.0.5",
268
280
  "vite-plugin-pwa": "1.2.0"
@@ -270,12 +282,12 @@
270
282
  },
271
283
  "vite-deps-minimal": {
272
284
  "packages": {
273
- "vite-tsconfig-paths": "^6.0.3"
285
+ "vite-tsconfig-paths": "^6.0.4"
274
286
  }
275
287
  },
276
288
  "next": {
277
289
  "packages": {
278
- "next": "^16.0.7"
290
+ "next": "^16.1.4"
279
291
  }
280
292
  },
281
293
  "typescript": {
@@ -285,12 +297,12 @@
285
297
  },
286
298
  "monitoring": {
287
299
  "packages": {
288
- "@sentry/react": "^10.25.0"
300
+ "@sentry/react": "^10.33.0"
289
301
  }
290
302
  },
291
303
  "monitoring-node": {
292
304
  "packages": {
293
- "@sentry/node": "^10.25.0"
305
+ "@sentry/node": "^10.33.0"
294
306
  }
295
307
  },
296
308
  "postcss": {
@@ -308,20 +320,32 @@
308
320
  },
309
321
  "types": {
310
322
  "packages": {
311
- "@types/node": "^24.10.4",
312
- "@types/react": "^19.2.7",
323
+ "@types/node": "^24.10.8",
324
+ "@types/react": "^19.2.8",
313
325
  "@types/react-dom": "^19.2.3"
314
326
  }
315
327
  },
316
328
  "root-consumer-tooling": {
317
329
  "packages": {
318
- "turbo": "^2.7.2",
330
+ "turbo": "^2.7.4",
319
331
  "sharp": "^0.34.5"
320
332
  }
321
333
  },
322
334
  "vercel": {
323
335
  "packages": {
324
- "vercel": "^50.1.3"
336
+ "vercel": "^50.3.0"
337
+ }
338
+ },
339
+ "@donotdev/cli": {
340
+ "description": "Cli package",
341
+ "packages": {
342
+ "@donotdev/cli": "^0.0.6"
343
+ }
344
+ },
345
+ "react-easy-crop": {
346
+ "description": "Image cropping - auto-installed as transitive dep for crud",
347
+ "packages": {
348
+ "react-easy-crop": "^5.5.6"
325
349
  }
326
350
  }
327
351
  },
@@ -337,12 +361,29 @@
337
361
  "lucide-react",
338
362
  "monitoring"
339
363
  ],
340
- "dependencies": ["i18n", "react-query", "fast-glob", "cli-prompts"],
341
- "devDependencies": ["vite", "next", "typescript"]
364
+ "dependencies": [
365
+ "i18n",
366
+ "react-query",
367
+ "fast-glob",
368
+ "cli-prompts"
369
+ ],
370
+ "devDependencies": [
371
+ "vite",
372
+ "next",
373
+ "typescript"
374
+ ]
342
375
  },
343
376
  "@donotdev/components": {
344
- "dependencies": ["radix", "styling", "react-day-picker"],
345
- "peerDependencies": ["react", "shiki", "lucide-react"],
377
+ "dependencies": [
378
+ "radix",
379
+ "styling",
380
+ "react-day-picker"
381
+ ],
382
+ "peerDependencies": [
383
+ "react",
384
+ "shiki",
385
+ "lucide-react"
386
+ ],
346
387
  "peerDependenciesMeta": {
347
388
  "shiki": {
348
389
  "optional": true
@@ -358,7 +399,10 @@
358
399
  "routing",
359
400
  "validation"
360
401
  ],
361
- "dependencies": ["forms", "seo", "markdown"],
402
+ "dependencies": [
403
+ "forms",
404
+ "seo"
405
+ ],
362
406
  "peerDependenciesMeta": {
363
407
  "@donotdev/crud": {
364
408
  "optional": true
@@ -366,14 +410,27 @@
366
410
  }
367
411
  },
368
412
  "@donotdev/auth": {
369
- "peerDependencies": ["react", "firebase"]
413
+ "peerDependencies": [
414
+ "react",
415
+ "firebase"
416
+ ]
370
417
  },
371
418
  "@donotdev/billing": {
372
- "peerDependencies": ["react", "lucide-react", "stripe"]
419
+ "peerDependencies": [
420
+ "react",
421
+ "lucide-react",
422
+ "stripe"
423
+ ]
373
424
  },
374
425
  "@donotdev/crud": {
375
- "dependencies": ["@donotdev/components", "@donotdev/core"],
426
+ "dependencies": [
427
+ "@donotdev/components",
428
+ "@donotdev/core",
429
+ "react-easy-crop",
430
+ "forms-resolvers"
431
+ ],
376
432
  "peerDependencies": [
433
+ "@donotdev/firebase",
377
434
  "react",
378
435
  "forms",
379
436
  "firebase",
@@ -382,31 +439,64 @@
382
439
  ]
383
440
  },
384
441
  "@donotdev/firebase": {
385
- "peerDependencies": ["firebase"]
442
+ "dependencies": [
443
+ "browser-image-compression"
444
+ ],
445
+ "peerDependencies": [
446
+ "firebase"
447
+ ]
386
448
  },
387
449
  "@donotdev/i18n": {
388
- "dependencies": ["i18n"],
389
- "peerDependencies": ["lucide-react"]
450
+ "dependencies": [
451
+ "i18n"
452
+ ],
453
+ "peerDependencies": [
454
+ "lucide-react"
455
+ ]
390
456
  },
391
457
  "@donotdev/stores": {
392
- "dependencies": ["zustand"]
458
+ "dependencies": [
459
+ "zustand"
460
+ ]
393
461
  },
394
462
  "@donotdev/schemas": {
395
- "dependencies": ["validation"]
463
+ "dependencies": [
464
+ "validation"
465
+ ]
396
466
  },
397
467
  "@donotdev/types": {
398
- "devDependencies": ["react", "validation", "i18n", "forms"]
468
+ "devDependencies": [
469
+ "react",
470
+ "validation",
471
+ "i18n",
472
+ "forms",
473
+ "forms-resolvers"
474
+ ]
399
475
  },
400
476
  "@donotdev/utils": {
401
- "dependencies": ["zustand"],
402
- "peerDependencies": ["monitoring"],
403
- "devDependencies": ["validation", "firebase", "i18n"]
477
+ "dependencies": [
478
+ "zustand"
479
+ ],
480
+ "peerDependencies": [
481
+ "monitoring"
482
+ ],
483
+ "devDependencies": [
484
+ "validation",
485
+ "firebase",
486
+ "i18n"
487
+ ]
404
488
  },
405
489
  "@donotdev/hooks": {
406
- "dependencies": ["react-query"]
490
+ "dependencies": [
491
+ "react-query"
492
+ ]
407
493
  },
408
494
  "@donotdev/cli": {
409
- "dependencies": ["cli-prompts", "cli-commander", "fast-glob"]
495
+ "dependencies": [
496
+ "cli-prompts",
497
+ "cli-commander",
498
+ "fast-glob"
499
+ ]
410
500
  },
411
501
  "@donotdev/tooling": {
412
502
  "dependencies": [
@@ -416,13 +506,19 @@
416
506
  "esbuild",
417
507
  "rollup"
418
508
  ],
419
- "devDependencies": ["yaml"]
509
+ "devDependencies": [
510
+ "yaml"
511
+ ]
420
512
  },
421
513
  "@donotdev/oauth": {
422
- "peerDependencies": ["react"]
514
+ "peerDependencies": [
515
+ "react"
516
+ ]
423
517
  },
424
518
  "@donotdev/functions": {
425
- "dependencies": ["@donotdev/core"],
519
+ "dependencies": [
520
+ "@donotdev/core"
521
+ ],
426
522
  "peerDependencies": [
427
523
  "firebase-functions",
428
524
  "stripe",
@@ -432,7 +528,10 @@
432
528
  ]
433
529
  },
434
530
  "@donotdev/adv-comps": {
435
- "peerDependencies": ["react", "shiki"],
531
+ "peerDependencies": [
532
+ "react",
533
+ "shiki"
534
+ ],
436
535
  "dependencies": [],
437
536
  "peerDependenciesMeta": {
438
537
  "shiki": {
@@ -448,6 +547,7 @@
448
547
  "@donotdev/crud",
449
548
  "@donotdev/ui",
450
549
  "forms",
550
+ "forms-resolvers",
451
551
  "markdown"
452
552
  ],
453
553
  "peerDependencies": [
@@ -568,7 +668,9 @@
568
668
  "lucide-react",
569
669
  "firebase"
570
670
  ],
571
- "devDependencies": ["root-consumer-tooling"]
671
+ "devDependencies": [
672
+ "root-consumer-tooling"
673
+ ]
572
674
  },
573
675
  "consumer-vite": {
574
676
  "description": "Vite app for consumers (filter inlined packages)",
@@ -592,7 +694,13 @@
592
694
  "i18n",
593
695
  "react-query"
594
696
  ],
595
- "devDependencies": ["vite", "typescript", "types", "vite-deps", "postcss"]
697
+ "devDependencies": [
698
+ "vite",
699
+ "typescript",
700
+ "types",
701
+ "vite-deps",
702
+ "postcss"
703
+ ]
596
704
  },
597
705
  "consumer-nextjs": {
598
706
  "description": "Nextjs app for consumers (filter inlined packages)",
@@ -615,7 +723,12 @@
615
723
  "i18n",
616
724
  "react-query"
617
725
  ],
618
- "devDependencies": ["next", "typescript", "types", "postcss"]
726
+ "devDependencies": [
727
+ "next",
728
+ "typescript",
729
+ "types",
730
+ "postcss"
731
+ ]
619
732
  },
620
733
  "functions-firebase": {
621
734
  "description": "Firebase Functions app",
@@ -638,12 +751,19 @@
638
751
  "monitoring-node",
639
752
  "stripe"
640
753
  ],
641
- "devDependencies": ["vercel"]
754
+ "devDependencies": [
755
+ "vercel"
756
+ ]
642
757
  },
643
758
  "entities": {
644
759
  "description": "Entities workspace package",
645
- "dependencies": ["validation"],
646
- "devDependencies": ["eslint", "typescript"]
760
+ "dependencies": [
761
+ "validation"
762
+ ],
763
+ "devDependencies": [
764
+ "eslint",
765
+ "typescript"
766
+ ]
647
767
  },
648
768
  "demo": {
649
769
  "description": "Demo app template (components only)",
@@ -679,4 +799,4 @@
679
799
  "rule": "If imported in code that gets bundled → dependencies. If externalized in esbuild → devDependencies. If optional/consumer-provided → peerDependencies"
680
800
  }
681
801
  }
682
- }
802
+ }
@@ -7532,11 +7532,17 @@ var init_PathResolver = __esm({
7532
7532
  /**
7533
7533
  * Get path to empty.js module for optional dependency aliasing
7534
7534
  * Used by Vite and Turbopack to alias missing optional deps
7535
- * @returns Absolute path to empty.js
7535
+ * @param returnPackageSpecifier - If true, returns package specifier '@donotdev/core/empty' for Turbopack. If false, returns absolute path for Vite.
7536
+ * @returns Package specifier or absolute path to empty.js
7536
7537
  */
7537
- getEmptyModulePath() {
7538
+ getEmptyModulePath(returnPackageSpecifier = false) {
7539
+ if (returnPackageSpecifier) {
7540
+ return "@donotdev/core/empty";
7541
+ }
7542
+ const resolved = this.resolvePackage("@donotdev/core/empty");
7543
+ if (resolved) return resolved;
7538
7544
  const thisDir = dirname(fileURLToPath(import.meta.url));
7539
- return this.normalizePath(join(thisDir, "../vite/empty.js"));
7545
+ return this.normalizePath(join(thisDir, "../empty.js"));
7540
7546
  }
7541
7547
  // === PRIVATE METHODS ===
7542
7548
  /**