@donotdev/cli 0.0.7 → 0.0.9

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 (37) hide show
  1. package/README.md +3 -18
  2. package/dependencies-matrix.json +54 -45
  3. package/dist/bin/commands/build.js +19 -5
  4. package/dist/bin/commands/bump.js +30 -5
  5. package/dist/bin/commands/cacheout.js +36 -19
  6. package/dist/bin/commands/create-app.js +73 -7
  7. package/dist/bin/commands/create-project.js +90 -8
  8. package/dist/bin/commands/deploy.js +130 -27
  9. package/dist/bin/commands/dev.js +23 -7
  10. package/dist/bin/commands/emu.js +28 -12
  11. package/dist/bin/commands/format.js +39 -22
  12. package/dist/bin/commands/lint.js +36 -19
  13. package/dist/bin/commands/preview.js +24 -8
  14. package/dist/bin/commands/sync-secrets.js +19 -5
  15. package/dist/bin/dndev.js +7 -20
  16. package/dist/bin/donotdev.js +7 -20
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +209 -100
  20. package/dist/index.js.map +1 -1
  21. package/package.json +4 -3
  22. package/templates/app-next/src/config/app.ts.example +1 -1
  23. package/templates/app-vite/index.html.example +24 -2
  24. package/templates/app-vite/src/config/app.ts.example +1 -1
  25. package/templates/app-vite/src/pages/FormPageExample.tsx.example +8 -5
  26. package/templates/app-vite/src/pages/ListPageExample.tsx.example +4 -7
  27. package/templates/root-consumer/.firebaserc.example +5 -0
  28. package/templates/root-consumer/entities/ExampleEntity.ts.example +2 -1
  29. package/templates/root-consumer/entities/demo.ts.example +15 -1
  30. package/templates/root-consumer/eslint.config.js.example +2 -80
  31. package/templates/root-consumer/firestore.indexes.json.example +4 -0
  32. package/templates/root-consumer/firestore.rules.example +11 -0
  33. package/templates/root-consumer/guides/dndev/COMPONENTS_CRUD.md.example +9 -6
  34. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +376 -38
  35. package/templates/root-consumer/guides/dndev/SETUP_I18N.md.example +46 -0
  36. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +1 -1
  37. package/templates/root-consumer/storage.rules.example +8 -0
package/README.md CHANGED
@@ -157,7 +157,7 @@ dndev sync-secrets --dry-run
157
157
 
158
158
  ### `dndev format [files]`
159
159
 
160
- Format code using framework's ESLint and Prettier configurations.
160
+ Format code using Prettier.
161
161
 
162
162
  ```bash
163
163
  dndev format
@@ -166,23 +166,8 @@ dndev format src/**/*.ts
166
166
 
167
167
  **Features:**
168
168
 
169
- - Uses @donotdev/core ESLint rules
170
- - Auto-fixes violations
171
- - Enforces framework conventions
172
- - Import order sorting
173
- - Type safety checks
174
-
175
- **Setup:**
176
- Create `eslint.config.js` in your project:
177
-
178
- ```javascript
179
- import dndevConfig from '@donotdev/core/eslint';
180
-
181
- export default [
182
- ...dndevConfig,
183
- // Your custom rules
184
- ];
185
- ```
169
+ - Auto-formats code with Prettier
170
+ - Consistent code style
186
171
 
187
172
  ### `dndev clean`
188
173
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./dependencies-matrix.schema.json",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
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": "2026-01-23",
5
+ "lastUpdated": "2026-02-04",
6
6
  "migrationGuides": {
7
7
  "0.0→0.1": {
8
8
  "path": "docs/migration/v0.0-to-v0.1.md",
@@ -17,7 +17,7 @@
17
17
  "@donotdev/adv-comps": {
18
18
  "description": "Advanced components package",
19
19
  "packages": {
20
- "@donotdev/adv-comps": "^0.0.8"
20
+ "@donotdev/adv-comps": "^0.0.9"
21
21
  }
22
22
  },
23
23
  "@donotdev/auth": {
@@ -35,31 +35,31 @@
35
35
  "@donotdev/components": {
36
36
  "description": "UI components package",
37
37
  "packages": {
38
- "@donotdev/components": "^0.0.12"
38
+ "@donotdev/components": "^0.0.15"
39
39
  }
40
40
  },
41
41
  "@donotdev/core": {
42
42
  "description": "Core framework package",
43
43
  "packages": {
44
- "@donotdev/core": "^0.0.14"
44
+ "@donotdev/core": "^0.0.19"
45
45
  }
46
46
  },
47
47
  "@donotdev/crud": {
48
48
  "description": "CRUD operations package",
49
49
  "packages": {
50
- "@donotdev/crud": "^0.0.7"
50
+ "@donotdev/crud": "^0.0.10"
51
51
  }
52
52
  },
53
53
  "@donotdev/firebase": {
54
54
  "description": "Firebase provider package",
55
55
  "packages": {
56
- "@donotdev/firebase": "^0.0.5"
56
+ "@donotdev/firebase": "^0.0.8"
57
57
  }
58
58
  },
59
59
  "@donotdev/functions": {
60
60
  "description": "Firebase Functions package",
61
61
  "packages": {
62
- "@donotdev/functions": "^0.0.7"
62
+ "@donotdev/functions": "^0.0.9"
63
63
  }
64
64
  },
65
65
  "@donotdev/oauth": {
@@ -71,41 +71,41 @@
71
71
  "@donotdev/templates": {
72
72
  "description": "Page templates package",
73
73
  "packages": {
74
- "@donotdev/templates": "^0.0.6"
74
+ "@donotdev/templates": "^0.0.7"
75
75
  }
76
76
  },
77
77
  "@donotdev/ui": {
78
78
  "description": "UI and routing package",
79
79
  "packages": {
80
- "@donotdev/ui": "^0.0.8"
80
+ "@donotdev/ui": "^0.0.11"
81
81
  }
82
82
  },
83
83
  "react": {
84
84
  "description": "Core React - consumers install explicitly",
85
85
  "packages": {
86
- "react": "^19.2.3",
87
- "react-dom": "^19.2.3"
86
+ "react": "^19.2.4",
87
+ "react-dom": "^19.2.4"
88
88
  }
89
89
  },
90
90
  "i18n": {
91
91
  "description": "i18n libraries - auto-installed as transitive deps",
92
92
  "packages": {
93
- "i18next": "^25.7.4",
93
+ "i18next": "^25.8.1",
94
94
  "i18next-browser-languagedetector": "^8.2.0",
95
95
  "i18next-http-backend": "^3.0.2",
96
- "react-i18next": "^16.5.2"
96
+ "react-i18next": "^16.5.4"
97
97
  }
98
98
  },
99
99
  "zustand": {
100
100
  "description": "State management - consumers install for custom stores",
101
101
  "packages": {
102
- "zustand": "^5.0.10"
102
+ "zustand": "^5.0.11"
103
103
  }
104
104
  },
105
105
  "react-query": {
106
106
  "description": "Data fetching - auto-installed as transitive dep",
107
107
  "packages": {
108
- "@tanstack/react-query": "^5.90.7"
108
+ "@tanstack/react-query": "^5.90.20"
109
109
  }
110
110
  },
111
111
  "validation": {
@@ -117,7 +117,7 @@
117
117
  "lucide-react": {
118
118
  "description": "Icons - consumers install and use directly",
119
119
  "packages": {
120
- "lucide-react": "^0.562.0"
120
+ "lucide-react": "^0.563.0"
121
121
  }
122
122
  },
123
123
  "react-day-picker": {
@@ -167,12 +167,12 @@
167
167
  },
168
168
  "shiki": {
169
169
  "packages": {
170
- "shiki": "^3.20.0"
170
+ "shiki": "^3.22.0"
171
171
  }
172
172
  },
173
173
  "forms": {
174
174
  "packages": {
175
- "react-hook-form": "^7.71.0"
175
+ "react-hook-form": "^7.71.1"
176
176
  }
177
177
  },
178
178
  "forms-resolvers": {
@@ -188,18 +188,18 @@
188
188
  "markdown": {
189
189
  "description": "Markdown parsing - marked for speed, html-react-parser for SSR",
190
190
  "packages": {
191
- "html-react-parser": "^5.2.11",
191
+ "html-react-parser": "^5.2.16",
192
192
  "marked": "^17.0.1"
193
193
  }
194
194
  },
195
195
  "routing": {
196
196
  "packages": {
197
- "react-router-dom": "^7.1.3"
197
+ "react-router-dom": "^7.13.0"
198
198
  }
199
199
  },
200
200
  "firebase": {
201
201
  "packages": {
202
- "firebase": "^12.5.0"
202
+ "firebase": "^12.8.0"
203
203
  }
204
204
  },
205
205
  "browser-image-compression": {
@@ -211,21 +211,21 @@
211
211
  "tiptap": {
212
212
  "description": "Rich text editor - optional peer dependency. Required: @tiptap/react, @tiptap/pm, @tiptap/starter-kit. Optional: @tiptap/extension-placeholder for placeholder text.",
213
213
  "packages": {
214
- "@tiptap/react": "^3.16.0",
215
- "@tiptap/pm": "^3.16.0",
216
- "@tiptap/starter-kit": "^3.16.0",
217
- "@tiptap/extension-placeholder": "^3.16.0"
214
+ "@tiptap/react": "^3.19.0",
215
+ "@tiptap/pm": "^3.19.0",
216
+ "@tiptap/starter-kit": "^3.19.0",
217
+ "@tiptap/extension-placeholder": "^3.19.0"
218
218
  }
219
219
  },
220
220
  "stripe": {
221
221
  "packages": {
222
- "stripe": "^20.1.0"
222
+ "stripe": "^20.3.0"
223
223
  }
224
224
  },
225
225
  "firebase-functions": {
226
226
  "packages": {
227
227
  "firebase-admin": "^13.6.0",
228
- "firebase-functions": "^7.0.1"
228
+ "firebase-functions": "^7.0.5"
229
229
  }
230
230
  },
231
231
  "firebase-admin": {
@@ -235,8 +235,8 @@
235
235
  },
236
236
  "vercel-deps": {
237
237
  "packages": {
238
- "next": "^16.1.4",
239
- "vercel": "^50.3.0"
238
+ "next": "^16.1.6",
239
+ "vercel": "^50.10.0"
240
240
  }
241
241
  },
242
242
  "esbuild": {
@@ -246,7 +246,7 @@
246
246
  },
247
247
  "rollup": {
248
248
  "packages": {
249
- "rollup": "^4.53.3",
249
+ "rollup": "^4.57.1",
250
250
  "rollup-plugin-dts": "^6.3.0"
251
251
  }
252
252
  },
@@ -264,7 +264,7 @@
264
264
  "cli-commander": {
265
265
  "description": "CLI command framework - CLI package only",
266
266
  "packages": {
267
- "commander": "^14.0.2"
267
+ "commander": "^14.0.3"
268
268
  }
269
269
  },
270
270
  "fast-glob": {
@@ -280,10 +280,10 @@
280
280
  },
281
281
  "vite-deps": {
282
282
  "packages": {
283
- "@vitejs/plugin-react": "^5.1.1",
283
+ "@vitejs/plugin-react": "^5.1.3",
284
284
  "react-refresh": "^0.18.0",
285
- "@vitejs/plugin-basic-ssl": "^2.1.0",
286
- "vite-tsconfig-paths": "^6.0.4",
285
+ "@vitejs/plugin-basic-ssl": "^2.1.4",
286
+ "vite-tsconfig-paths": "^6.0.5",
287
287
  "@rollup/plugin-strip": "^3.0.4",
288
288
  "rollup-plugin-visualizer": "^6.0.5",
289
289
  "vite-plugin-pwa": "1.2.0"
@@ -291,12 +291,12 @@
291
291
  },
292
292
  "vite-deps-minimal": {
293
293
  "packages": {
294
- "vite-tsconfig-paths": "^6.0.4"
294
+ "vite-tsconfig-paths": "^6.0.5"
295
295
  }
296
296
  },
297
297
  "next": {
298
298
  "packages": {
299
- "next": "^16.1.4"
299
+ "next": "^16.1.6"
300
300
  }
301
301
  },
302
302
  "typescript": {
@@ -306,12 +306,12 @@
306
306
  },
307
307
  "monitoring": {
308
308
  "packages": {
309
- "@sentry/react": "^10.33.0"
309
+ "@sentry/react": "^10.38.0"
310
310
  }
311
311
  },
312
312
  "monitoring-node": {
313
313
  "packages": {
314
- "@sentry/node": "^10.33.0"
314
+ "@sentry/node": "^10.38.0"
315
315
  }
316
316
  },
317
317
  "postcss": {
@@ -319,7 +319,7 @@
319
319
  "postcss": "^8.5.6",
320
320
  "postcss-import": "^16.1.1",
321
321
  "postcss-nesting": "^13.0.2",
322
- "autoprefixer": "^10.4.23"
322
+ "autoprefixer": "^10.4.24"
323
323
  }
324
324
  },
325
325
  "eslint": {
@@ -329,26 +329,26 @@
329
329
  },
330
330
  "types": {
331
331
  "packages": {
332
- "@types/node": "^24.10.8",
333
- "@types/react": "^19.2.8",
332
+ "@types/node": "^24.10.10",
333
+ "@types/react": "^19.2.10",
334
334
  "@types/react-dom": "^19.2.3"
335
335
  }
336
336
  },
337
337
  "root-consumer-tooling": {
338
338
  "packages": {
339
- "turbo": "^2.7.4",
339
+ "turbo": "^2.8.3",
340
340
  "sharp": "^0.34.5"
341
341
  }
342
342
  },
343
343
  "vercel": {
344
344
  "packages": {
345
- "vercel": "^50.3.0"
345
+ "vercel": "^50.10.0"
346
346
  }
347
347
  },
348
348
  "@donotdev/cli": {
349
349
  "description": "Cli package",
350
350
  "packages": {
351
- "@donotdev/cli": "^0.0.6"
351
+ "@donotdev/cli": "^0.0.9"
352
352
  }
353
353
  },
354
354
  "react-easy-crop": {
@@ -356,6 +356,14 @@
356
356
  "packages": {
357
357
  "react-easy-crop": "^5.5.6"
358
358
  }
359
+ },
360
+ "@dnd-kit": {
361
+ "description": "Drag and drop library - auto-installed as transitive dep for crud",
362
+ "packages": {
363
+ "@dnd-kit/core": "^6.3.1",
364
+ "@dnd-kit/sortable": "^10.0.0",
365
+ "@dnd-kit/utilities": "^3.2.2"
366
+ }
359
367
  }
360
368
  },
361
369
  "overrides": {
@@ -436,6 +444,7 @@
436
444
  "@donotdev/components",
437
445
  "@donotdev/core",
438
446
  "react-easy-crop",
447
+ "@dnd-kit",
439
448
  "forms-resolvers"
440
449
  ],
441
450
  "devDependencies": [
@@ -713,6 +713,7 @@ ${import_picocolors.default.gray(de + _2.repeat(s + 2) + pe)}
713
713
  });
714
714
 
715
715
  // packages/tooling/src/utils/cli-output.ts
716
+ import "node:os";
716
717
  function supportsColor() {
717
718
  if (process.env.NO_COLOR) return false;
718
719
  if (process.platform === "win32") {
@@ -6500,7 +6501,16 @@ var init_constants = __esm({
6500
6501
  },
6501
6502
  i18n: {
6502
6503
  eager: ["src/locales/*_*.json"],
6503
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
6504
+ lazy: [
6505
+ "src/**/locales/*_*.json",
6506
+ "!src/locales/*_*.json",
6507
+ // Auto-detect shared entity translations in monorepos (if exists, use it; if not, no problem)
6508
+ "../../entities/locales/*_*.json"
6509
+ ],
6510
+ // Additional paths from workspace packages (e.g., shared entities)
6511
+ // Consumers can still configure via i18n.additionalPaths in dndev/vite config for custom paths
6512
+ // Example: ['../../packages/shared/locales/*_*.json']
6513
+ additional: [],
6504
6514
  framework: {
6505
6515
  eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6506
6516
  lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
@@ -6593,6 +6603,7 @@ var init_constants = __esm({
6593
6603
 
6594
6604
  // packages/core/config/utils/PathResolver.ts
6595
6605
  import * as fs from "node:fs";
6606
+ import "node:fs";
6596
6607
  import { createRequire } from "node:module";
6597
6608
  import {
6598
6609
  resolve,
@@ -7705,6 +7716,7 @@ var init_errors = __esm({
7705
7716
  });
7706
7717
 
7707
7718
  // packages/tooling/src/utils/pathResolver.ts
7719
+ import { createRequire as createRequire2 } from "node:module";
7708
7720
  import {
7709
7721
  join as join2,
7710
7722
  dirname as dirname2,
@@ -7714,6 +7726,7 @@ import {
7714
7726
  resolve as resolve2,
7715
7727
  isAbsolute as pathIsAbsolute
7716
7728
  } from "node:path";
7729
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7717
7730
  function readdirSync2(dirPath, options) {
7718
7731
  return pathResolverInstance.readdirSync(dirPath, options);
7719
7732
  }
@@ -7739,16 +7752,17 @@ var init_pathResolver = __esm({
7739
7752
 
7740
7753
  // packages/tooling/src/bundler/utils.ts
7741
7754
  import { Buffer as Buffer2 } from "node:buffer";
7742
- import { createRequire as createRequire2 } from "node:module";
7755
+ import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
7756
+ import { createRequire as createRequire3 } from "node:module";
7743
7757
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
7744
7758
  import process from "node:process";
7745
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7759
+ import { fileURLToPath as fileURLToPath3 } from "node:url";
7746
7760
  var require2, __filename, __dirname;
7747
7761
  var init_utils = __esm({
7748
7762
  "packages/tooling/src/bundler/utils.ts"() {
7749
7763
  "use strict";
7750
- require2 = createRequire2(import.meta.url);
7751
- __filename = fileURLToPath2(import.meta.url);
7764
+ require2 = createRequire3(import.meta.url);
7765
+ __filename = fileURLToPath3(import.meta.url);
7752
7766
  __dirname = dirname3(__filename);
7753
7767
  if (typeof globalThis !== "undefined") {
7754
7768
  globalThis.require = require2;
@@ -496,6 +496,7 @@ var init_dist = __esm({
496
496
  });
497
497
 
498
498
  // node_modules/.bun/@clack+prompts@0.11.0/node_modules/@clack/prompts/dist/index.mjs
499
+ import { stripVTControlCharacters as S2 } from "node:util";
499
500
  import y2 from "node:process";
500
501
  function ce() {
501
502
  return y2.platform !== "win32" ? y2.env.TERM !== "linux" : !!y2.env.CI || !!y2.env.WT_SESSION || !!y2.env.TERMINUS_SUBLIME || y2.env.ConEmuTask === "{cmd::Cmder}" || y2.env.TERM_PROGRAM === "Terminus-Sublime" || y2.env.TERM_PROGRAM === "vscode" || y2.env.TERM === "xterm-256color" || y2.env.TERM === "alacritty" || y2.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
@@ -606,6 +607,7 @@ ${import_picocolors.default.gray(d2)} ${t}
606
607
  });
607
608
 
608
609
  // packages/tooling/src/utils/cli-output.ts
610
+ import "node:os";
609
611
  function supportsColor() {
610
612
  if (process.env.NO_COLOR) return false;
611
613
  if (process.platform === "win32") {
@@ -6393,7 +6395,16 @@ var init_constants = __esm({
6393
6395
  },
6394
6396
  i18n: {
6395
6397
  eager: ["src/locales/*_*.json"],
6396
- lazy: ["src/**/locales/*_*.json", "!src/locales/*_*.json"],
6398
+ lazy: [
6399
+ "src/**/locales/*_*.json",
6400
+ "!src/locales/*_*.json",
6401
+ // Auto-detect shared entity translations in monorepos (if exists, use it; if not, no problem)
6402
+ "../../entities/locales/*_*.json"
6403
+ ],
6404
+ // Additional paths from workspace packages (e.g., shared entities)
6405
+ // Consumers can still configure via i18n.additionalPaths in dndev/vite config for custom paths
6406
+ // Example: ['../../packages/shared/locales/*_*.json']
6407
+ additional: [],
6397
6408
  framework: {
6398
6409
  eager: [`${I18N_PATHS.SOURCE_EAGER}/*_*.json`],
6399
6410
  lazy: [`${I18N_PATHS.SOURCE_LAZY}/*_*.json`]
@@ -6486,6 +6497,7 @@ var init_constants = __esm({
6486
6497
 
6487
6498
  // packages/core/config/utils/PathResolver.ts
6488
6499
  import * as fs from "node:fs";
6500
+ import "node:fs";
6489
6501
  import { createRequire } from "node:module";
6490
6502
  import {
6491
6503
  resolve,
@@ -7495,6 +7507,7 @@ import {
7495
7507
  resolve as resolve2,
7496
7508
  isAbsolute as pathIsAbsolute
7497
7509
  } from "node:path";
7510
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
7498
7511
  function detectExecutionMode() {
7499
7512
  const currentDir = process.cwd();
7500
7513
  const toolingPath = joinPath(currentDir, PACKAGE_PATHS.TOOLING);
@@ -7564,16 +7577,17 @@ var init_pathResolver = __esm({
7564
7577
 
7565
7578
  // packages/tooling/src/bundler/utils.ts
7566
7579
  import { Buffer as Buffer2 } from "node:buffer";
7580
+ import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
7567
7581
  import { createRequire as createRequire3 } from "node:module";
7568
7582
  import { dirname as dirname3, resolve as resolve3 } from "node:path";
7569
7583
  import process from "node:process";
7570
- import { fileURLToPath as fileURLToPath2 } from "node:url";
7584
+ import { fileURLToPath as fileURLToPath3 } from "node:url";
7571
7585
  var require2, __filename, __dirname;
7572
7586
  var init_utils = __esm({
7573
7587
  "packages/tooling/src/bundler/utils.ts"() {
7574
7588
  "use strict";
7575
7589
  require2 = createRequire3(import.meta.url);
7576
- __filename = fileURLToPath2(import.meta.url);
7590
+ __filename = fileURLToPath3(import.meta.url);
7577
7591
  __dirname = dirname3(__filename);
7578
7592
  if (typeof globalThis !== "undefined") {
7579
7593
  globalThis.require = require2;
@@ -7717,6 +7731,7 @@ function writePackageJson(filePath, pkg) {
7717
7731
  sorted.devDependencies = sortObj(pkg.devDependencies);
7718
7732
  if (pkg.peerDependencies)
7719
7733
  sorted.peerDependencies = sortObj(pkg.peerDependencies);
7734
+ if (pkg.overrides) sorted.overrides = sortObj(pkg.overrides);
7720
7735
  if (pkg.peerDependenciesMeta)
7721
7736
  sorted.peerDependenciesMeta = sortObj(pkg.peerDependenciesMeta);
7722
7737
  writeSync(filePath, JSON.stringify(sorted, null, 2) + "\n", {
@@ -7786,7 +7801,8 @@ function detectProjectDeps(files) {
7786
7801
  for (const [field, deps] of [
7787
7802
  ["dependencies", pkg.dependencies],
7788
7803
  ["devDependencies", pkg.devDependencies],
7789
- ["peerDependencies", pkg.peerDependencies]
7804
+ ["peerDependencies", pkg.peerDependencies],
7805
+ ["overrides", pkg.overrides]
7790
7806
  ]) {
7791
7807
  if (!deps) continue;
7792
7808
  for (const [name, version] of Object.entries(deps)) {
@@ -7946,10 +7962,19 @@ ${majorUpdates.length} major update(s) available (manual review required):`
7946
7962
  const deps = pkg[field];
7947
7963
  if (deps?.[pkgName]) {
7948
7964
  const normalizedLatest = normalizeVersion(update.latest);
7949
- deps[pkgName] = ensureCaretPrefix(normalizedLatest);
7965
+ deps[pkgName] = field === "overrides" ? normalizedLatest : ensureCaretPrefix(normalizedLatest);
7950
7966
  changed = true;
7951
7967
  }
7952
7968
  }
7969
+ if (pkg.overrides) {
7970
+ for (const u2 of updates) {
7971
+ if (u2.file === file && u2.pkg.startsWith("@donotdev/") && u2.field !== "overrides" && pkg.overrides[u2.pkg]) {
7972
+ const normalizedLatest = normalizeVersion(u2.latest);
7973
+ pkg.overrides[u2.pkg] = normalizedLatest;
7974
+ changed = true;
7975
+ }
7976
+ }
7977
+ }
7953
7978
  if (changed) {
7954
7979
  writePackageJson(file, pkg);
7955
7980
  const relativeFile = appRoot ? getRelativePathBetween(appRoot, file) : file;