@donotdev/cli 0.0.19 → 0.0.20

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 (45) hide show
  1. package/dependencies-matrix.json +135 -47
  2. package/dist/bin/commands/bump.js +5 -2
  3. package/dist/bin/commands/create-app.js +1 -1
  4. package/dist/bin/commands/create-project.js +13 -2
  5. package/dist/bin/commands/deploy.js +18 -0
  6. package/dist/bin/commands/setup.js +3 -0
  7. package/dist/bin/commands/staging.js +18 -0
  8. package/dist/bin/commands/type-check.js +10 -4
  9. package/dist/bin/dndev.js +120 -179
  10. package/dist/bin/donotdev.js +120 -179
  11. package/dist/index.js +31 -2
  12. package/package.json +1 -1
  13. package/templates/app-demo/public/apple-touch-icon.png.example +0 -0
  14. package/templates/app-demo/public/favicon.svg.example +1 -0
  15. package/templates/app-demo/public/icon-192x192.png.example +0 -0
  16. package/templates/app-demo/public/icon-512x512.png.example +0 -0
  17. package/templates/app-demo/src/App.tsx.example +3 -1
  18. package/templates/app-demo/src/config/app.ts.example +1 -0
  19. package/templates/app-demo/src/entities/booking.ts.example +75 -0
  20. package/templates/app-demo/src/entities/onboarding.ts.example +160 -0
  21. package/templates/app-demo/src/entities/product.ts.example +12 -0
  22. package/templates/app-demo/src/entities/quote.ts.example +70 -0
  23. package/templates/app-demo/src/pages/ChangelogPage.tsx.example +28 -1
  24. package/templates/app-demo/src/pages/ConditionalFormPage.tsx.example +88 -0
  25. package/templates/app-demo/src/pages/DashboardPage.tsx.example +2 -0
  26. package/templates/app-demo/src/pages/HomePage.tsx.example +355 -2
  27. package/templates/app-demo/src/pages/OnboardingPage.tsx.example +47 -0
  28. package/templates/app-demo/src/pages/PricingPage.tsx.example +28 -1
  29. package/templates/app-demo/src/pages/ProductsPage.tsx.example +2 -0
  30. package/templates/app-demo/src/pages/ProfilePage.tsx.example +2 -0
  31. package/templates/app-demo/src/pages/SettingsPage.tsx.example +2 -0
  32. package/templates/app-demo/src/pages/ShowcaseDetailPage.tsx.example +22 -16
  33. package/templates/app-demo/src/pages/ShowcasePage.tsx.example +3 -1
  34. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +147 -51
  35. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +103 -21
  36. package/templates/app-demo/src/pages/components/componentConfig.ts.example +139 -59
  37. package/templates/app-demo/src/pages/legal/LegalPage.tsx.example +12 -1
  38. package/templates/app-demo/src/pages/legal/PrivacyPage.tsx.example +10 -1
  39. package/templates/app-demo/src/pages/legal/TermsPage.tsx.example +10 -1
  40. package/templates/app-demo/src/themes.css.example +289 -77
  41. package/templates/app-demo/stats.html.example +4949 -0
  42. package/templates/app-next/src/locales/home_en.json.example +6 -6
  43. package/templates/app-vite/src/locales/home_en.json.example +6 -6
  44. package/templates/root-consumer/guides/dndev/advanced/COOKIE_REFERENCE.md.example +252 -252
  45. package/templates/root-consumer/guides/dndev/advanced/VERSION_CONTROL.md.example +174 -174
@@ -2,7 +2,7 @@
2
2
  "$schema": "./dependencies-matrix.schema.json",
3
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-02-24",
5
+ "lastUpdated": "2026-02-26",
6
6
  "migrationGuides": {
7
7
  "0.0→0.1": {
8
8
  "path": "docs/migration/v0.0-to-v0.1.md",
@@ -17,73 +17,73 @@
17
17
  "@donotdev/auth": {
18
18
  "description": "Authentication package",
19
19
  "packages": {
20
- "@donotdev/auth": "^0.0.11"
20
+ "@donotdev/auth": "^0.0.13"
21
21
  }
22
22
  },
23
23
  "@donotdev/billing": {
24
24
  "description": "Billing package",
25
25
  "packages": {
26
- "@donotdev/billing": "^0.0.10"
26
+ "@donotdev/billing": "^0.0.12"
27
27
  }
28
28
  },
29
29
  "@donotdev/components": {
30
30
  "description": "UI components package",
31
31
  "packages": {
32
- "@donotdev/components": "^0.0.21"
32
+ "@donotdev/components": "^0.0.23"
33
33
  }
34
34
  },
35
35
  "@donotdev/core": {
36
36
  "description": "Core framework package",
37
37
  "packages": {
38
- "@donotdev/core": "^0.0.27"
38
+ "@donotdev/core": "^0.0.29"
39
39
  }
40
40
  },
41
41
  "@donotdev/crud": {
42
42
  "description": "CRUD operations package",
43
43
  "packages": {
44
- "@donotdev/crud": "^0.0.18"
44
+ "@donotdev/crud": "^0.0.20"
45
45
  }
46
46
  },
47
47
  "@donotdev/firebase": {
48
48
  "description": "Firebase provider package",
49
49
  "packages": {
50
- "@donotdev/firebase": "^0.0.14"
50
+ "@donotdev/firebase": "^0.0.15"
51
51
  }
52
52
  },
53
53
  "@donotdev/functions": {
54
54
  "description": "Firebase Functions package",
55
55
  "packages": {
56
- "@donotdev/functions": "^0.0.14"
56
+ "@donotdev/functions": "^0.0.16"
57
57
  }
58
58
  },
59
59
  "@donotdev/oauth": {
60
60
  "description": "OAuth package",
61
61
  "packages": {
62
- "@donotdev/oauth": "^0.0.10"
62
+ "@donotdev/oauth": "^0.0.12"
63
63
  }
64
64
  },
65
65
  "@donotdev/templates": {
66
66
  "description": "Page templates package",
67
67
  "packages": {
68
- "@donotdev/templates": "^0.0.13"
68
+ "@donotdev/templates": "^0.0.15"
69
69
  }
70
70
  },
71
71
  "@donotdev/ui": {
72
72
  "description": "UI and routing package",
73
73
  "packages": {
74
- "@donotdev/ui": "^0.0.17"
74
+ "@donotdev/ui": "^0.0.19"
75
75
  }
76
76
  },
77
77
  "@donotdev/expo": {
78
78
  "description": "Expo/React Native components package",
79
79
  "packages": {
80
- "@donotdev/expo": "^0.0.4"
80
+ "@donotdev/expo": "^0.0.6"
81
81
  }
82
82
  },
83
83
  "@donotdev/supabase": {
84
84
  "description": "Supabase provider package",
85
85
  "packages": {
86
- "@donotdev/supabase": "^0.0.4"
86
+ "@donotdev/supabase": "^0.0.5"
87
87
  }
88
88
  },
89
89
  "supabase-js": {
@@ -433,13 +433,13 @@
433
433
  "@donotdev/cli": {
434
434
  "description": "Cli package",
435
435
  "packages": {
436
- "@donotdev/cli": "^0.0.18"
436
+ "@donotdev/cli": "^0.0.20"
437
437
  }
438
438
  },
439
439
  "@donotdev/mcp-server": {
440
440
  "description": "MCP server for component type lookups",
441
441
  "packages": {
442
- "@donotdev/mcp-server": "^0.0.8"
442
+ "@donotdev/mcp-server": "^0.0.10"
443
443
  }
444
444
  },
445
445
  "mcp-sdk": {
@@ -465,7 +465,7 @@
465
465
  "@donotdev/security": {
466
466
  "description": "Security package",
467
467
  "packages": {
468
- "@donotdev/security": "^0.0.4"
468
+ "@donotdev/security": "^0.0.6"
469
469
  }
470
470
  }
471
471
  },
@@ -490,11 +490,23 @@
490
490
  "core-vite-config",
491
491
  "postcss"
492
492
  ],
493
- "devDependencies": ["vite", "next", "typescript"]
493
+ "devDependencies": [
494
+ "vite",
495
+ "next",
496
+ "typescript"
497
+ ]
494
498
  },
495
499
  "@donotdev/components": {
496
- "dependencies": ["radix", "styling", "react-day-picker"],
497
- "peerDependencies": ["react", "shiki", "lucide-react"],
500
+ "dependencies": [
501
+ "radix",
502
+ "styling",
503
+ "react-day-picker"
504
+ ],
505
+ "peerDependencies": [
506
+ "react",
507
+ "shiki",
508
+ "lucide-react"
509
+ ],
498
510
  "peerDependenciesMeta": {
499
511
  "shiki": {
500
512
  "optional": true
@@ -510,7 +522,11 @@
510
522
  "routing",
511
523
  "validation"
512
524
  ],
513
- "dependencies": ["fontsource-themes", "forms", "seo"],
525
+ "dependencies": [
526
+ "fontsource-themes",
527
+ "forms",
528
+ "seo"
529
+ ],
514
530
  "peerDependenciesMeta": {
515
531
  "@donotdev/crud": {
516
532
  "optional": true
@@ -518,10 +534,17 @@
518
534
  }
519
535
  },
520
536
  "@donotdev/auth": {
521
- "peerDependencies": ["react", "firebase"]
537
+ "peerDependencies": [
538
+ "react",
539
+ "firebase"
540
+ ]
522
541
  },
523
542
  "@donotdev/billing": {
524
- "peerDependencies": ["react", "lucide-react", "stripe"]
543
+ "peerDependencies": [
544
+ "react",
545
+ "lucide-react",
546
+ "stripe"
547
+ ]
525
548
  },
526
549
  "@donotdev/crud": {
527
550
  "dependencies": [
@@ -531,7 +554,9 @@
531
554
  "@dnd-kit",
532
555
  "forms-resolvers"
533
556
  ],
534
- "devDependencies": ["tiptap"],
557
+ "devDependencies": [
558
+ "tiptap"
559
+ ],
535
560
  "peerDependencies": [
536
561
  "@donotdev/firebase",
537
562
  "react",
@@ -554,22 +579,38 @@
554
579
  }
555
580
  },
556
581
  "@donotdev/firebase": {
557
- "dependencies": ["browser-image-compression"],
558
- "peerDependencies": ["firebase"]
582
+ "dependencies": [
583
+ "browser-image-compression"
584
+ ],
585
+ "peerDependencies": [
586
+ "firebase"
587
+ ]
559
588
  },
560
589
  "@donotdev/supabase": {
561
- "dependencies": ["validation"],
562
- "peerDependencies": ["supabase-js"]
590
+ "dependencies": [
591
+ "validation"
592
+ ],
593
+ "peerDependencies": [
594
+ "supabase-js"
595
+ ]
563
596
  },
564
597
  "@donotdev/i18n": {
565
- "dependencies": ["i18n"],
566
- "peerDependencies": ["lucide-react"]
598
+ "dependencies": [
599
+ "i18n"
600
+ ],
601
+ "peerDependencies": [
602
+ "lucide-react"
603
+ ]
567
604
  },
568
605
  "@donotdev/stores": {
569
- "dependencies": ["zustand"]
606
+ "dependencies": [
607
+ "zustand"
608
+ ]
570
609
  },
571
610
  "@donotdev/schemas": {
572
- "dependencies": ["validation"]
611
+ "dependencies": [
612
+ "validation"
613
+ ]
573
614
  },
574
615
  "@donotdev/types": {
575
616
  "devDependencies": [
@@ -581,18 +622,34 @@
581
622
  ]
582
623
  },
583
624
  "@donotdev/utils": {
584
- "dependencies": ["zustand"],
585
- "peerDependencies": ["monitoring"],
586
- "devDependencies": ["validation", "firebase", "i18n"]
625
+ "dependencies": [
626
+ "zustand"
627
+ ],
628
+ "peerDependencies": [
629
+ "monitoring"
630
+ ],
631
+ "devDependencies": [
632
+ "validation",
633
+ "firebase",
634
+ "i18n"
635
+ ]
587
636
  },
588
637
  "@donotdev/hooks": {
589
- "dependencies": ["react-query"]
638
+ "dependencies": [
639
+ "react-query"
640
+ ]
590
641
  },
591
642
  "@donotdev/cli": {
592
- "dependencies": ["cli-prompts", "cli-commander", "fast-glob"]
643
+ "dependencies": [
644
+ "cli-prompts",
645
+ "cli-commander",
646
+ "fast-glob"
647
+ ]
593
648
  },
594
649
  "@donotdev/mcp-server": {
595
- "dependencies": ["mcp-sdk"]
650
+ "dependencies": [
651
+ "mcp-sdk"
652
+ ]
596
653
  },
597
654
  "@donotdev/tooling": {
598
655
  "dependencies": [
@@ -604,13 +661,19 @@
604
661
  "supabase-cli",
605
662
  "supabase-js"
606
663
  ],
607
- "devDependencies": ["yaml"]
664
+ "devDependencies": [
665
+ "yaml"
666
+ ]
608
667
  },
609
668
  "@donotdev/oauth": {
610
- "peerDependencies": ["react"]
669
+ "peerDependencies": [
670
+ "react"
671
+ ]
611
672
  },
612
673
  "@donotdev/functions": {
613
- "dependencies": ["@donotdev/core"],
674
+ "dependencies": [
675
+ "@donotdev/core"
676
+ ],
614
677
  "peerDependencies": [
615
678
  "firebase-functions",
616
679
  "firebase-admin",
@@ -778,7 +841,10 @@
778
841
  "validation",
779
842
  "lucide-react"
780
843
  ],
781
- "devDependencies": ["root-consumer-tooling", "supabase-cli"],
844
+ "devDependencies": [
845
+ "root-consumer-tooling",
846
+ "supabase-cli"
847
+ ],
782
848
  "conditional": {
783
849
  "provider-firebase": "platform===firebase",
784
850
  "provider-supabase": "platform===supabase",
@@ -834,7 +900,12 @@
834
900
  "i18n",
835
901
  "react-query"
836
902
  ],
837
- "devDependencies": ["next", "typescript", "types", "postcss"],
903
+ "devDependencies": [
904
+ "next",
905
+ "typescript",
906
+ "types",
907
+ "postcss"
908
+ ],
838
909
  "conditional": {
839
910
  "provider-firebase": "platform===firebase",
840
911
  "provider-supabase": "platform===supabase"
@@ -854,7 +925,12 @@
854
925
  "validation",
855
926
  "react-query"
856
927
  ],
857
- "devDependencies": ["expo", "typescript", "types-expo", "react-native"],
928
+ "devDependencies": [
929
+ "expo",
930
+ "typescript",
931
+ "types-expo",
932
+ "react-native"
933
+ ],
858
934
  "conditional": {
859
935
  "provider-firebase": "platform===firebase",
860
936
  "provider-supabase": "platform===supabase"
@@ -874,7 +950,12 @@
874
950
  "validation",
875
951
  "react-query"
876
952
  ],
877
- "devDependencies": ["expo", "typescript", "types-expo", "react-native"],
953
+ "devDependencies": [
954
+ "expo",
955
+ "typescript",
956
+ "types-expo",
957
+ "react-native"
958
+ ],
878
959
  "conditional": {
879
960
  "provider-firebase": "platform===firebase",
880
961
  "provider-supabase": "platform===supabase"
@@ -901,12 +982,19 @@
901
982
  "monitoring-node",
902
983
  "stripe"
903
984
  ],
904
- "devDependencies": ["vercel"]
985
+ "devDependencies": [
986
+ "vercel"
987
+ ]
905
988
  },
906
989
  "entities": {
907
990
  "description": "Entities workspace package",
908
- "dependencies": ["validation"],
909
- "devDependencies": ["eslint", "typescript"]
991
+ "dependencies": [
992
+ "validation"
993
+ ],
994
+ "devDependencies": [
995
+ "eslint",
996
+ "typescript"
997
+ ]
910
998
  },
911
999
  "demo": {
912
1000
  "description": "Demo app template (SaaS reference app)",
@@ -8166,7 +8166,7 @@ function getSourceTemplatesPath() {
8166
8166
  return null;
8167
8167
  }
8168
8168
  async function syncFile(sourcePath, destPath, preserveIfExists, appRoot) {
8169
- const destPathWithoutExample = destPath.endsWith(".example") ? destPath.slice(0, -8) : destPath;
8169
+ const destPathWithoutExample = destPath.endsWith(".example") && destPath.length > 8 ? destPath.slice(0, -8) : destPath;
8170
8170
  if (preserveIfExists && pathExists(destPathWithoutExample)) {
8171
8171
  const relativePath = getRelativePathBetween(
8172
8172
  appRoot,
@@ -8559,7 +8559,10 @@ ${majorUpdates.length} major update(s) available (manual review required):`
8559
8559
  }
8560
8560
  for (const [file, packageKeys] of updatedFiles) {
8561
8561
  const pkg = parsePackageJson(file);
8562
- if (!pkg) continue;
8562
+ if (!pkg) {
8563
+ log.warn(`Could not parse ${file} \u2014 skipping updates for this file`);
8564
+ continue;
8565
+ }
8563
8566
  let changed = false;
8564
8567
  for (const packageKey of packageKeys) {
8565
8568
  const [pkgName, field] = packageKey.split(":");
@@ -9103,7 +9103,7 @@ async function createApp(appName, appConfig, workspaceRoot, templatesRoot) {
9103
9103
  const firebaseJson = readSync(firebaseJsonDest, {
9104
9104
  format: "json"
9105
9105
  });
9106
- if (firebaseJson.hosting?.rewrites) {
9106
+ if (firebaseJson.hosting?.rewrites && Array.isArray(firebaseJson.hosting.rewrites)) {
9107
9107
  firebaseJson.hosting.rewrites = firebaseJson.hosting.rewrites.filter(
9108
9108
  (r2) => r2.destination !== "/index.html"
9109
9109
  );
@@ -9423,7 +9423,7 @@ async function createApp(appName, appConfig, workspaceRoot, templatesRoot) {
9423
9423
  const firebaseJson = readSync(firebaseJsonDest, {
9424
9424
  format: "json"
9425
9425
  });
9426
- if (firebaseJson.hosting?.rewrites) {
9426
+ if (firebaseJson.hosting?.rewrites && Array.isArray(firebaseJson.hosting.rewrites)) {
9427
9427
  firebaseJson.hosting.rewrites = firebaseJson.hosting.rewrites.filter(
9428
9428
  (r2) => r2.destination !== "/index.html"
9429
9429
  );
@@ -9670,6 +9670,14 @@ async function main(options) {
9670
9670
  process.exit(0);
9671
9671
  }
9672
9672
  if (action === "replace") {
9673
+ const confirmDelete = await askForConfirmation(
9674
+ `This will permanently delete "${projectDirNormalized}". Are you sure?`,
9675
+ false
9676
+ );
9677
+ if (!confirmDelete) {
9678
+ Se("Project creation cancelled.");
9679
+ process.exit(0);
9680
+ }
9673
9681
  const s2 = Y2();
9674
9682
  s2.start("Removing existing project...");
9675
9683
  await remove(projectDirNormalized);
@@ -10028,7 +10036,10 @@ async function main(options) {
10028
10036
  await createApp(appName, appConfig, projectDirNormalized, templatesRoot);
10029
10037
  }
10030
10038
  s.start("Updating root package.json with scripts...");
10031
- await updateRootPackageJson(projectDirNormalized, appNames);
10039
+ await updateRootPackageJson(
10040
+ projectDirNormalized,
10041
+ isMergeMode ? allAppNames : appNames
10042
+ );
10032
10043
  s.stop("Root package.json updated");
10033
10044
  Se("\u{1F389} Project created successfully!");
10034
10045
  const cdCommand = executionMode === "development" ? `cd ../${projectName}` : `cd ${projectName}`;
@@ -16701,6 +16701,14 @@ function generateCleanPackageJson(functionsDir) {
16701
16701
  }
16702
16702
  const cleanPackageJson = { ...packageJson };
16703
16703
  if (cleanPackageJson.dependencies) {
16704
+ const removedDeps = Object.entries(cleanPackageJson.dependencies).filter(
16705
+ ([, version]) => String(version).startsWith("file:") || String(version).startsWith("workspace:")
16706
+ );
16707
+ if (removedDeps.length > 0) {
16708
+ log.warn(
16709
+ `Filtering out ${removedDeps.length} workspace/file dep(s) from dependencies: ${removedDeps.map(([name]) => name).join(", ")}`
16710
+ );
16711
+ }
16704
16712
  cleanPackageJson.dependencies = Object.fromEntries(
16705
16713
  Object.entries(cleanPackageJson.dependencies).filter(
16706
16714
  ([, version]) => !String(version).startsWith("file:") && !String(version).startsWith("workspace:")
@@ -16708,6 +16716,16 @@ function generateCleanPackageJson(functionsDir) {
16708
16716
  );
16709
16717
  }
16710
16718
  if (cleanPackageJson.devDependencies) {
16719
+ const removedDevDeps = Object.entries(
16720
+ cleanPackageJson.devDependencies
16721
+ ).filter(
16722
+ ([, version]) => String(version).startsWith("file:") || String(version).startsWith("workspace:")
16723
+ );
16724
+ if (removedDevDeps.length > 0) {
16725
+ log.warn(
16726
+ `Filtering out ${removedDevDeps.length} workspace/file dep(s) from devDependencies: ${removedDevDeps.map(([name]) => name).join(", ")}`
16727
+ );
16728
+ }
16711
16729
  cleanPackageJson.devDependencies = Object.fromEntries(
16712
16730
  Object.entries(cleanPackageJson.devDependencies).filter(
16713
16731
  ([, version]) => !String(version).startsWith("file:") && !String(version).startsWith("workspace:")
@@ -9660,6 +9660,9 @@ function roleToSqlCondition(role) {
9660
9660
  case "super":
9661
9661
  return "(auth.jwt()->'app_metadata'->>'role') = 'super'";
9662
9662
  default:
9663
+ log.warn(
9664
+ `Unknown access role "${role}" \u2014 defaulting to deny (false). Use guest|user|admin|super.`
9665
+ );
9663
9666
  return "false";
9664
9667
  }
9665
9668
  }
@@ -16701,6 +16701,14 @@ function generateCleanPackageJson(functionsDir) {
16701
16701
  }
16702
16702
  const cleanPackageJson = { ...packageJson };
16703
16703
  if (cleanPackageJson.dependencies) {
16704
+ const removedDeps = Object.entries(cleanPackageJson.dependencies).filter(
16705
+ ([, version]) => String(version).startsWith("file:") || String(version).startsWith("workspace:")
16706
+ );
16707
+ if (removedDeps.length > 0) {
16708
+ log.warn(
16709
+ `Filtering out ${removedDeps.length} workspace/file dep(s) from dependencies: ${removedDeps.map(([name]) => name).join(", ")}`
16710
+ );
16711
+ }
16704
16712
  cleanPackageJson.dependencies = Object.fromEntries(
16705
16713
  Object.entries(cleanPackageJson.dependencies).filter(
16706
16714
  ([, version]) => !String(version).startsWith("file:") && !String(version).startsWith("workspace:")
@@ -16708,6 +16716,16 @@ function generateCleanPackageJson(functionsDir) {
16708
16716
  );
16709
16717
  }
16710
16718
  if (cleanPackageJson.devDependencies) {
16719
+ const removedDevDeps = Object.entries(
16720
+ cleanPackageJson.devDependencies
16721
+ ).filter(
16722
+ ([, version]) => String(version).startsWith("file:") || String(version).startsWith("workspace:")
16723
+ );
16724
+ if (removedDevDeps.length > 0) {
16725
+ log.warn(
16726
+ `Filtering out ${removedDevDeps.length} workspace/file dep(s) from devDependencies: ${removedDevDeps.map(([name]) => name).join(", ")}`
16727
+ );
16728
+ }
16711
16729
  cleanPackageJson.devDependencies = Object.fromEntries(
16712
16730
  Object.entries(cleanPackageJson.devDependencies).filter(
16713
16731
  ([, version]) => !String(version).startsWith("file:") && !String(version).startsWith("workspace:")
@@ -7510,7 +7510,7 @@ function globSync(pattern, options = {}) {
7510
7510
  });
7511
7511
  return results.map((p) => pathResolverInstance.normalizePath(p));
7512
7512
  }
7513
- var pathResolverInstance, getRepoRoot, normalizePath, pathExists, readSync, writeSync, removeSync, getDirname;
7513
+ var pathResolverInstance, getRepoRoot, normalizePath, pathExists, readSync, writeSync, removeSync, getDirname, joinPath;
7514
7514
  var init_pathResolver = __esm({
7515
7515
  "packages/tooling/src/utils/pathResolver.ts"() {
7516
7516
  "use strict";
@@ -7528,6 +7528,9 @@ var init_pathResolver = __esm({
7528
7528
  getDirname = (filePath) => {
7529
7529
  return normalizePath(dirname2(filePath));
7530
7530
  };
7531
+ joinPath = (...pathSegments) => {
7532
+ return normalizePath(...pathSegments);
7533
+ };
7531
7534
  }
7532
7535
  });
7533
7536
 
@@ -7959,7 +7962,7 @@ ${output}
7959
7962
  }
7960
7963
  }
7961
7964
  const logName2 = options.package ? `type-check-${options.package}.log` : `type-check-all.log`;
7962
- const logFilePath2 = normalizePath(repoRoot, logName2);
7965
+ const logFilePath2 = joinPath(repoRoot, logName2);
7963
7966
  const logContent = [
7964
7967
  `DoNotDev Type Check - Errors`,
7965
7968
  `Generated: ${(/* @__PURE__ */ new Date()).toISOString()}`,
@@ -7983,7 +7986,7 @@ ${output}
7983
7986
  return 1;
7984
7987
  }
7985
7988
  const logName = options.package ? `type-check-${options.package}.log` : `type-check-all.log`;
7986
- const logFilePath = normalizePath(repoRoot, logName);
7989
+ const logFilePath = joinPath(repoRoot, logName);
7987
7990
  if (pathExists(logFilePath, true)) {
7988
7991
  removeSync(logFilePath);
7989
7992
  }
@@ -8000,8 +8003,11 @@ ${output}
8000
8003
  displayDoNotDevError(doNotDevError);
8001
8004
  if (options.verbose && logEntries.length > 0) {
8002
8005
  const repoRoot = getRepoRoot();
8006
+ if (!repoRoot) {
8007
+ throw doNotDevError;
8008
+ }
8003
8009
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
8004
- const logFilePath = normalizePath(
8010
+ const logFilePath = joinPath(
8005
8011
  repoRoot,
8006
8012
  `type-check-error-${timestamp}.log`
8007
8013
  );