@donotdev/cli 0.0.14 → 0.0.16
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.
- package/dependencies-matrix.json +372 -88
- package/dist/bin/commands/agent-setup.js +7 -1
- package/dist/bin/commands/build.js +141 -44
- package/dist/bin/commands/bump.js +81 -41
- package/dist/bin/commands/cacheout.js +37 -9
- package/dist/bin/commands/create-app.js +276 -121
- package/dist/bin/commands/create-project.js +506 -217
- package/dist/bin/commands/deploy.js +1785 -694
- package/dist/bin/commands/dev.js +177 -43
- package/dist/bin/commands/doctor.d.ts +6 -0
- package/dist/bin/commands/doctor.d.ts.map +1 -0
- package/dist/bin/commands/{lint.js → doctor.js} +1215 -156
- package/dist/bin/commands/doctor.js.map +1 -0
- package/dist/bin/commands/emu.js +451 -104
- package/dist/bin/commands/format.js +37 -9
- package/dist/bin/commands/make-admin.js +77499 -11
- package/dist/bin/commands/preview.js +181 -43
- package/dist/bin/commands/setup.d.ts +6 -0
- package/dist/bin/commands/setup.d.ts.map +1 -0
- package/dist/bin/commands/setup.js +11733 -0
- package/dist/bin/commands/setup.js.map +1 -0
- package/dist/bin/commands/supabase-setup.d.ts +6 -0
- package/dist/bin/commands/supabase-setup.d.ts.map +1 -0
- package/dist/bin/commands/supabase-setup.js +7 -0
- package/dist/bin/commands/supabase-setup.js.map +1 -0
- package/dist/bin/commands/sync-secrets.js +211 -34
- package/dist/bin/commands/type-check.d.ts +14 -0
- package/dist/bin/commands/type-check.d.ts.map +1 -0
- package/dist/bin/commands/type-check.js +2049 -0
- package/dist/bin/commands/type-check.js.map +1 -0
- package/dist/bin/commands/wai.js +3 -1
- package/dist/bin/dndev.js +73 -52
- package/dist/bin/donotdev.js +54 -45
- package/dist/index.js +4212 -3050
- package/package.json +3 -3
- package/templates/app-demo/src/App.tsx.example +1 -0
- package/templates/app-demo/src/pages/FullPage.tsx.example +2 -2
- package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +2 -2
- package/templates/app-demo/src/themes.css.example +5 -12
- package/templates/app-expo/.env.example +44 -0
- package/templates/app-expo/.expo/README.md.example +5 -0
- package/templates/app-expo/.gitignore.example +36 -0
- package/templates/app-expo/README.md.example +58 -0
- package/templates/app-expo/app/.gitkeep +2 -0
- package/templates/app-expo/app/_layout.tsx.example +41 -0
- package/templates/app-expo/app/form.tsx.example +52 -0
- package/templates/app-expo/app/index.tsx.example +89 -0
- package/templates/app-expo/app/list.tsx.example +32 -0
- package/templates/app-expo/app/profile.tsx.example +76 -0
- package/templates/app-expo/app/signin.tsx.example +53 -0
- package/templates/app-expo/app.json.example +39 -0
- package/templates/app-expo/assets/adaptive-icon.png +0 -0
- package/templates/app-expo/assets/favicon.png +0 -0
- package/templates/app-expo/assets/icon.png +0 -0
- package/templates/app-expo/assets/splash.png +0 -0
- package/templates/app-expo/babel.config.js.example +10 -0
- package/templates/app-expo/eas.json.example +20 -0
- package/templates/app-expo/expo-env.d.ts.example +4 -0
- package/templates/app-expo/metro.config.js.example +20 -0
- package/templates/app-expo/service-account-key.json.example +12 -0
- package/templates/app-expo/src/config/app.ts.example +46 -0
- package/templates/app-expo/src/config/providers.ts.example +7 -0
- package/templates/app-expo/tsconfig.json.example +19 -0
- package/templates/app-next/.env.example +4 -33
- package/templates/app-next/src/app/ClientLayout.tsx.example +2 -0
- package/templates/app-next/src/app/layout.tsx.example +7 -6
- package/templates/app-next/src/config/providers.ts.example +7 -0
- package/templates/app-next/src/globals.css.example +2 -11
- package/templates/app-next/src/pages/HomePage.tsx.example +1 -1
- package/templates/app-next/src/themes.css.example +10 -13
- package/templates/app-vite/.env.example +3 -32
- package/templates/app-vite/index.html.example +2 -24
- package/templates/app-vite/src/App.tsx.example +2 -0
- package/templates/app-vite/src/config/providers.ts.example +7 -0
- package/templates/app-vite/src/globals.css.example +2 -12
- package/templates/app-vite/src/pages/FormPageExample.tsx.example +1 -2
- package/templates/app-vite/src/pages/HomePage.tsx.example +2 -2
- package/templates/app-vite/src/themes.css.example +109 -79
- package/templates/app-vite/vercel.json.example +11 -0
- package/templates/functions-firebase/README.md.example +1 -1
- package/templates/functions-firebase/build.mjs.example +2 -72
- package/templates/functions-firebase/functions-firebase/.env.example.example +24 -26
- package/templates/functions-firebase/functions-firebase/README.md.example +1 -1
- package/templates/functions-firebase/functions-firebase/build.mjs.example +2 -72
- package/templates/functions-firebase/functions-firebase/tsconfig.json.example +1 -1
- package/templates/functions-firebase/functions.config.js.example +1 -1
- package/templates/functions-supabase/supabase/config.toml.example +59 -0
- package/templates/functions-supabase/supabase/functions/.env.example +13 -0
- package/templates/functions-supabase/supabase/functions/cancel-subscription/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/change-plan/index.ts.example +11 -0
- package/templates/functions-supabase/supabase/functions/create-checkout-session/index.ts.example +11 -0
- package/templates/functions-supabase/supabase/functions/create-customer-portal/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/crud/index.ts.example +16 -0
- package/templates/functions-supabase/supabase/functions/delete-account/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/deno.json.example +8 -0
- package/templates/functions-supabase/supabase/functions/get-custom-claims/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/get-user-auth-status/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/refresh-subscription-status/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/remove-custom-claims/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/functions/set-custom-claims/index.ts.example +7 -0
- package/templates/functions-supabase/supabase/migrations/20250101000000_idempotency.sql +24 -0
- package/templates/functions-supabase/supabase/migrations/20250101000001_rate_limits.sql +22 -0
- package/templates/functions-supabase/supabase/migrations/20250101000002_cleanup_jobs.sql +28 -0
- package/templates/functions-supabase/supabase/migrations/20250101000003_operation_metrics.sql +28 -0
- package/templates/functions-vercel/functions-vercel/tsconfig.json.example +1 -1
- package/templates/functions-vercel/functions-vercel/vercel.json.example +1 -1
- package/templates/functions-vercel/vercel.json.example +1 -1
- package/templates/github/github/workflows/firebase-deploy.yml.example +1 -1
- package/templates/github/workflows/firebase-deploy.yml.example +1 -1
- package/templates/overlay-firebase/env.fragment.example +34 -0
- package/templates/overlay-firebase/env.fragment.expo.example +34 -0
- package/templates/overlay-firebase/env.fragment.nextjs.example +34 -0
- package/templates/overlay-firebase/src/config/providers.expo.ts.example +49 -0
- package/templates/overlay-firebase/src/config/providers.ts.example +23 -0
- package/templates/overlay-supabase/env.fragment.example +12 -0
- package/templates/overlay-supabase/env.fragment.expo.example +12 -0
- package/templates/overlay-supabase/env.fragment.nextjs.example +12 -0
- package/templates/overlay-supabase/src/config/providers.expo.ts.example +35 -0
- package/templates/overlay-supabase/src/config/providers.ts.example +33 -0
- package/templates/overlay-supabase/vercel.headers.example +23 -0
- package/templates/overlay-supabase/vercel.json.example +22 -0
- package/templates/overlay-vercel/env.fragment.example +34 -0
- package/templates/overlay-vercel/env.fragment.nextjs.example +34 -0
- package/templates/overlay-vercel/src/config/providers.ts.example +24 -0
- package/templates/root-consumer/.claude/agents/architect.md.example +2 -310
- package/templates/root-consumer/.claude/agents/builder.md.example +2 -326
- package/templates/root-consumer/.claude/agents/coder.md.example +2 -83
- package/templates/root-consumer/.claude/agents/extractor.md.example +2 -231
- package/templates/root-consumer/.claude/agents/polisher.md.example +2 -132
- package/templates/root-consumer/.claude/agents/prompt-engineer.md.example +2 -81
- package/templates/root-consumer/.claude/commands/grill.md.example +30 -0
- package/templates/root-consumer/.claude/commands/techdebt.md.example +28 -0
- package/templates/root-consumer/.clinerules.example +1 -0
- package/templates/root-consumer/.cursor/rules/no-docs.mdc.example +15 -0
- package/templates/root-consumer/.cursorrules.example +1 -0
- package/templates/root-consumer/.github/copilot-instructions.md.example +1 -0
- package/templates/root-consumer/.windsurfrules.example +1 -0
- package/templates/root-consumer/AI.md.example +44 -123
- package/templates/root-consumer/CLAUDE.md.example +1 -134
- package/templates/root-consumer/CONVENTIONS.md.example +1 -0
- package/templates/root-consumer/GEMINI.md.example +1 -0
- package/templates/root-consumer/firebase.json.example +1 -1
- package/templates/root-consumer/guides/dndev/AGENT_START_HERE.md.example +22 -2
- package/templates/root-consumer/guides/dndev/COMPONENTS_ADV.md.example +0 -18
- package/templates/root-consumer/guides/dndev/COMPONENTS_UI.md.example +1 -1
- package/templates/root-consumer/guides/dndev/ENV_SETUP.md.example +101 -32
- package/templates/root-consumer/guides/dndev/INDEX.md.example +4 -2
- package/templates/root-consumer/guides/dndev/SETUP_APP_CONFIG.md.example +3 -3
- package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +241 -12
- package/templates/root-consumer/guides/dndev/SETUP_FIREBASE.md.example +13 -7
- package/templates/root-consumer/guides/dndev/SETUP_OAUTH_PROVIDERS.md.example +60 -0
- package/templates/root-consumer/guides/dndev/SETUP_SOC2.md.example +234 -0
- package/templates/root-consumer/guides/dndev/SETUP_STRIPE.md.example +62 -0
- package/templates/root-consumer/guides/dndev/SETUP_SUPABASE.md.example +124 -0
- package/templates/root-consumer/guides/dndev/SETUP_THEMES.md.example +6 -2
- package/templates/root-consumer/guides/dndev/SETUP_VERCEL.md.example +176 -0
- package/templates/root-consumer/guides/dndev/USE_ROUTING.md.example +5 -9
- package/templates/root-consumer/guides/dndev/essences_reference.css.example +174 -0
- package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +7 -8
- package/templates/root-consumer/guides/wai-way/agents/builder.md.example +10 -0
- package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +25 -5
- package/templates/root-consumer/guides/wai-way/agents/polisher.md.example +13 -2
- package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +2 -2
- package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +55 -15
- package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +15 -4
- package/templates/root-consumer/guides/wai-way/spec_template.md.example +7 -6
- package/dist/bin/commands/lint.d.ts +0 -11
- package/dist/bin/commands/lint.d.ts.map +0 -1
- package/dist/bin/commands/lint.js.map +0 -1
- package/dist/bin/commands/staging.d.ts +0 -11
- package/dist/bin/commands/staging.d.ts.map +0 -1
- package/dist/bin/commands/staging.js +0 -12
- package/dist/bin/commands/staging.js.map +0 -1
- package/templates/app-payload/.env.example +0 -28
- package/templates/app-payload/README.md.example +0 -233
- package/templates/app-payload/collections/Company.ts.example +0 -125
- package/templates/app-payload/collections/Hero.ts.example +0 -62
- package/templates/app-payload/collections/Media.ts.example +0 -41
- package/templates/app-payload/collections/Products.ts.example +0 -115
- package/templates/app-payload/collections/Services.ts.example +0 -104
- package/templates/app-payload/collections/Testimonials.ts.example +0 -92
- package/templates/app-payload/collections/Users.ts.example +0 -35
- package/templates/app-payload/src/server.ts.example +0 -79
- package/templates/app-payload/tsconfig.json.example +0 -24
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../../src/bin/commands/type-check.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/commands/wai.js
CHANGED
|
@@ -7305,7 +7305,9 @@ async function main() {
|
|
|
7305
7305
|
const aiMdPath = joinPath(projectRoot, "AI.md");
|
|
7306
7306
|
if (!pathExists(aiMdPath)) {
|
|
7307
7307
|
log.error("AI.md not found in project root.");
|
|
7308
|
-
log.warn(
|
|
7308
|
+
log.warn(
|
|
7309
|
+
'Run "dndev init" to scaffold a new project, or create AI.md manually.'
|
|
7310
|
+
);
|
|
7309
7311
|
return 1;
|
|
7310
7312
|
}
|
|
7311
7313
|
const content = readSync(aiMdPath);
|
package/dist/bin/dndev.js
CHANGED
|
@@ -32,8 +32,11 @@ var init_utils = __esm({
|
|
|
32
32
|
|
|
33
33
|
// packages/cli/src/bin/dndev.mjs
|
|
34
34
|
init_utils();
|
|
35
|
+
import { readFileSync } from "node:fs";
|
|
35
36
|
import { Command } from "commander";
|
|
36
|
-
var CLI_VERSION =
|
|
37
|
+
var CLI_VERSION = JSON.parse(
|
|
38
|
+
readFileSync(new URL("../../package.json", import.meta.url), "utf-8")
|
|
39
|
+
).version;
|
|
37
40
|
var args = process.argv.slice(2);
|
|
38
41
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v")) {
|
|
39
42
|
console.log(CLI_VERSION);
|
|
@@ -50,12 +53,15 @@ Commands:
|
|
|
50
53
|
dev [app] Start development server
|
|
51
54
|
build [app] Build for production
|
|
52
55
|
preview [app] Preview production build
|
|
53
|
-
emu [app] Start dev with
|
|
56
|
+
emu [app] Start dev with local backend
|
|
54
57
|
format Format code with Prettier
|
|
58
|
+
tc [app] Type-check TypeScript (all packages or specific app)
|
|
55
59
|
deploy [app] Deploy to Firebase
|
|
56
60
|
staging [subcommand] Deploy to staging/UAT (deploy, deploy:hosting, deploy:functions, seed, status)
|
|
57
|
-
sync-secrets Sync env vars to Firebase/Vercel
|
|
58
|
-
|
|
61
|
+
sync-secrets Sync env vars to Firebase/Vercel/GitHub Secrets
|
|
62
|
+
make-admin [userId] Set a user as admin (custom claims / app_metadata)
|
|
63
|
+
setup [provider] Set up provider credentials (firebase, supabase, vercel, stripe, oauth, auth)
|
|
64
|
+
doctor Check project health: validate provider connections and .env files
|
|
59
65
|
cacheout [app] Clear build caches
|
|
60
66
|
bump Update framework packages and peer dependencies
|
|
61
67
|
agent Configure MCP server for AI agents (Cursor, Claude, Gemini)
|
|
@@ -85,11 +91,11 @@ function extractCommonOptions(commanderOptions) {
|
|
|
85
91
|
const quiet = process.env.QUIET === "true" || process.env.QUIET === "1" || commanderOptions.quiet || false;
|
|
86
92
|
const debug = process.env.DEBUG === "true" || process.env.DEBUG === "1" || commanderOptions.debug || false;
|
|
87
93
|
const verbose = !debug && (process.env.VERBOSE === "true" || process.env.VERBOSE === "1" || commanderOptions.verbose || false);
|
|
88
|
-
const dryRun = process.env.DRY_RUN === "true" || process.env.DRY_RUN === "1" || commanderOptions.dryRun ||
|
|
94
|
+
const dryRun = process.env.DRY_RUN === "true" || process.env.DRY_RUN === "1" || commanderOptions.dryRun || false;
|
|
89
95
|
return { dryRun, quiet, verbose, debug };
|
|
90
96
|
}
|
|
91
97
|
function addCommonOptions(cmd) {
|
|
92
|
-
cmd.option("
|
|
98
|
+
cmd.option("-d, --dry-run", "Preview changes without applying").option("--verbose", "Verbose output").option("--debug", "Debug output").option("-q, --quiet", "Quiet output (errors only)");
|
|
93
99
|
}
|
|
94
100
|
program.command("init [name]").alias("create-project").description("Create a new DoNotDev project").action(async (name) => {
|
|
95
101
|
const { main } = await import("./commands/create-project.js");
|
|
@@ -117,7 +123,22 @@ formatCmd.action(async (commanderOptions) => {
|
|
|
117
123
|
const options = { ...commonOptions, ...commanderOptions };
|
|
118
124
|
try {
|
|
119
125
|
const { main } = await import("./commands/format.js");
|
|
120
|
-
await main(options);
|
|
126
|
+
process.exitCode = await main(options);
|
|
127
|
+
} catch (error) {
|
|
128
|
+
if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
|
|
129
|
+
process.exit(error.context?.exitCode || 1);
|
|
130
|
+
}
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
var tcCmd = program.command("tc [app]").alias("type-check").description("TypeScript type-check (runs bun run type-check in all packages)");
|
|
135
|
+
addCommonOptions(tcCmd);
|
|
136
|
+
tcCmd.action(async (app, commanderOptions) => {
|
|
137
|
+
const commonOptions = extractCommonOptions(commanderOptions);
|
|
138
|
+
const options = { ...commonOptions, app };
|
|
139
|
+
try {
|
|
140
|
+
const { main } = await import("./commands/type-check.js");
|
|
141
|
+
process.exit(await main(options));
|
|
121
142
|
} catch (error) {
|
|
122
143
|
if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
|
|
123
144
|
process.exit(error.context?.exitCode || 1);
|
|
@@ -134,7 +155,7 @@ cacheoutCmd.action(async (app, commanderOptions) => {
|
|
|
134
155
|
options.app = app;
|
|
135
156
|
}
|
|
136
157
|
const { main } = await import("./commands/cacheout.js");
|
|
137
|
-
await main(options);
|
|
158
|
+
process.exitCode = await main(options);
|
|
138
159
|
});
|
|
139
160
|
var bumpCmd = program.command("bump").description("Update framework packages and peer dependencies to latest compatible versions");
|
|
140
161
|
addCommonOptions(bumpCmd);
|
|
@@ -143,7 +164,7 @@ bumpCmd.action(async (commanderOptions) => {
|
|
|
143
164
|
const options = { ...commonOptions, ...commanderOptions };
|
|
144
165
|
try {
|
|
145
166
|
const { main } = await import("./commands/bump.js");
|
|
146
|
-
await main(options);
|
|
167
|
+
process.exitCode = await main(options);
|
|
147
168
|
} catch (error) {
|
|
148
169
|
if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
|
|
149
170
|
process.exit(error.context?.exitCode || 1);
|
|
@@ -167,59 +188,59 @@ deployCmd.action(async (app, commanderOptions) => {
|
|
|
167
188
|
const { main } = await import("./commands/deploy.js");
|
|
168
189
|
await main(options);
|
|
169
190
|
});
|
|
170
|
-
var syncSecretsCmd = program.command("sync-secrets").description("Sync env vars to Firebase/Vercel").option("-e, --env-file <file>", "environment file path").option("--platform <platform>", "platform (firebase|vercel)").option("-p, --project <project>", "project ID");
|
|
191
|
+
var syncSecretsCmd = program.command("sync-secrets").description("Sync env vars to Firebase/Vercel or GitHub Secrets").option("-e, --env-file <file>", "environment file path").option("--target <target>", "sync target: runtime (default) or github").option("--platform <platform>", "platform (firebase|vercel) for runtime target").option("-p, --project <project>", "project ID").option("--repo <repo>", "GitHub repo (owner/repo) for github target");
|
|
171
192
|
addCommonOptions(syncSecretsCmd);
|
|
172
193
|
syncSecretsCmd.action(async (commanderOptions) => {
|
|
173
194
|
const commonOptions = extractCommonOptions(commanderOptions);
|
|
174
195
|
const options = { ...commonOptions, ...commanderOptions };
|
|
196
|
+
if (options.project) {
|
|
197
|
+
options.projectId = options.project;
|
|
198
|
+
}
|
|
175
199
|
const { main } = await import("./commands/sync-secrets.js");
|
|
176
|
-
await main(options);
|
|
200
|
+
process.exitCode = await main(options);
|
|
177
201
|
});
|
|
178
|
-
var
|
|
179
|
-
addCommonOptions(
|
|
180
|
-
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (app) {
|
|
189
|
-
process.argv = [process.argv[0], process.argv[1], app];
|
|
190
|
-
} else {
|
|
191
|
-
process.argv = [process.argv[0], process.argv[1]];
|
|
192
|
-
}
|
|
193
|
-
process.exit(await main());
|
|
202
|
+
var makeAdminCmd = program.command("make-admin [userId]").alias("ma").description("Set a user as admin (custom claims / app_metadata)").option("--project <projectId>", "Project ID (Firebase or Supabase)").option("--project-id <projectId>", "Project ID (alias for --project)").option("--super", "Assign super role (isAdmin=true, isSuper=true, role=super)");
|
|
203
|
+
addCommonOptions(makeAdminCmd);
|
|
204
|
+
makeAdminCmd.action(async (userId, commanderOptions) => {
|
|
205
|
+
const args2 = [];
|
|
206
|
+
if (userId) args2.push(userId);
|
|
207
|
+
if (commanderOptions.project) args2.push(`--project=${commanderOptions.project}`);
|
|
208
|
+
if (commanderOptions.projectId) args2.push(`--project-id=${commanderOptions.projectId}`);
|
|
209
|
+
if (commanderOptions.super) args2.push("--super");
|
|
210
|
+
const { main } = await import("./commands/make-admin.js");
|
|
211
|
+
await main(args2);
|
|
194
212
|
});
|
|
195
|
-
program.command("
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
process.exit(await main());
|
|
213
|
+
var setupCmd = program.command("setup [provider]").description("Set up provider credentials and connections (firebase, supabase, vercel, stripe, oauth, auth)").option("-a, --app <app>", "app name (if multiple apps)").option("--skip-doctor", "Skip running doctor after setup");
|
|
214
|
+
addCommonOptions(setupCmd);
|
|
215
|
+
setupCmd.action(async (provider, commanderOptions) => {
|
|
216
|
+
const commonOptions = extractCommonOptions(commanderOptions);
|
|
217
|
+
const options = { ...commonOptions, provider, app: commanderOptions.app, skipDoctor: commanderOptions.skipDoctor };
|
|
218
|
+
const { main } = await import("./commands/setup.js");
|
|
219
|
+
process.exitCode = await main(options);
|
|
203
220
|
});
|
|
204
|
-
program.command("
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
process.exit(await main());
|
|
221
|
+
var doctorCmd = program.command("doctor").description("Check project health: validate provider connections and .env files").option("-a, --app <app>", "app name (if multiple apps)").option("-c, --check <check>", "run a single check (env, firebase, supabase, stripe, auth)");
|
|
222
|
+
addCommonOptions(doctorCmd);
|
|
223
|
+
doctorCmd.action(async (commanderOptions) => {
|
|
224
|
+
const commonOptions = extractCommonOptions(commanderOptions);
|
|
225
|
+
const options = { ...commonOptions, app: commanderOptions.app, check: commanderOptions.check };
|
|
226
|
+
const { main } = await import("./commands/doctor.js");
|
|
227
|
+
process.exit(await main(options));
|
|
212
228
|
});
|
|
213
|
-
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
process.
|
|
229
|
+
async function runAppCommand(commandPath, app) {
|
|
230
|
+
const savedArgv = process.argv;
|
|
231
|
+
process.argv = app ? [savedArgv[0], savedArgv[1], app] : [savedArgv[0], savedArgv[1]];
|
|
232
|
+
try {
|
|
233
|
+
const { main } = await import(commandPath);
|
|
234
|
+
process.exit(await main());
|
|
235
|
+
} finally {
|
|
236
|
+
process.argv = savedArgv;
|
|
219
237
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
program.command("
|
|
238
|
+
}
|
|
239
|
+
program.command("dev [app]").description("Start development server").action((app) => runAppCommand("./commands/dev.js", app));
|
|
240
|
+
program.command("emu [app]").description("Start dev with local backend").action((app) => runAppCommand("./commands/emu.js", app));
|
|
241
|
+
program.command("build [app]").description("Build for production").action((app) => runAppCommand("./commands/build.js", app));
|
|
242
|
+
program.command("preview [app]").description("Preview production build").action((app) => runAppCommand("./commands/preview.js", app));
|
|
243
|
+
program.command("agent").alias("agent:setup").description("Configure MCP server for all AI agents (Cursor, Claude Code, Gemini, Claude Desktop)").option("-d, --dry-run", "Preview changes without applying").action(async (commanderOptions) => {
|
|
223
244
|
const options = extractCommonOptions(commanderOptions);
|
|
224
245
|
const { main } = await import("./commands/agent-setup.js");
|
|
225
246
|
await main(options);
|
package/dist/bin/donotdev.js
CHANGED
|
@@ -32,8 +32,11 @@ var init_utils = __esm({
|
|
|
32
32
|
|
|
33
33
|
// packages/cli/src/bin/dndev.mjs
|
|
34
34
|
init_utils();
|
|
35
|
+
import { readFileSync } from "node:fs";
|
|
35
36
|
import { Command } from "commander";
|
|
36
|
-
var CLI_VERSION =
|
|
37
|
+
var CLI_VERSION = JSON.parse(
|
|
38
|
+
readFileSync(new URL("../../package.json", import.meta.url), "utf-8")
|
|
39
|
+
).version;
|
|
37
40
|
var args = process.argv.slice(2);
|
|
38
41
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v")) {
|
|
39
42
|
console.log(CLI_VERSION);
|
|
@@ -50,12 +53,14 @@ Commands:
|
|
|
50
53
|
dev [app] Start development server
|
|
51
54
|
build [app] Build for production
|
|
52
55
|
preview [app] Preview production build
|
|
53
|
-
emu [app] Start dev with
|
|
56
|
+
emu [app] Start dev with local backend
|
|
54
57
|
format Format code with Prettier
|
|
58
|
+
tc [app] Type-check TypeScript (all packages or specific app)
|
|
55
59
|
deploy [app] Deploy to Firebase
|
|
56
60
|
staging [subcommand] Deploy to staging/UAT (deploy, deploy:hosting, deploy:functions, seed, status)
|
|
57
|
-
sync-secrets Sync env vars to Firebase/Vercel
|
|
61
|
+
sync-secrets Sync env vars to Firebase/Vercel/GitHub Secrets
|
|
58
62
|
firebase:setup Set up Firebase project, web app, and .env config
|
|
63
|
+
supabase:setup Set up Supabase project URL and keys in .env
|
|
59
64
|
cacheout [app] Clear build caches
|
|
60
65
|
bump Update framework packages and peer dependencies
|
|
61
66
|
agent Configure MCP server for AI agents (Cursor, Claude, Gemini)
|
|
@@ -85,11 +90,11 @@ function extractCommonOptions(commanderOptions) {
|
|
|
85
90
|
const quiet = process.env.QUIET === "true" || process.env.QUIET === "1" || commanderOptions.quiet || false;
|
|
86
91
|
const debug = process.env.DEBUG === "true" || process.env.DEBUG === "1" || commanderOptions.debug || false;
|
|
87
92
|
const verbose = !debug && (process.env.VERBOSE === "true" || process.env.VERBOSE === "1" || commanderOptions.verbose || false);
|
|
88
|
-
const dryRun = process.env.DRY_RUN === "true" || process.env.DRY_RUN === "1" || commanderOptions.dryRun ||
|
|
93
|
+
const dryRun = process.env.DRY_RUN === "true" || process.env.DRY_RUN === "1" || commanderOptions.dryRun || false;
|
|
89
94
|
return { dryRun, quiet, verbose, debug };
|
|
90
95
|
}
|
|
91
96
|
function addCommonOptions(cmd) {
|
|
92
|
-
cmd.option("
|
|
97
|
+
cmd.option("-d, --dry-run", "Preview changes without applying").option("--verbose", "Verbose output").option("--debug", "Debug output").option("-q, --quiet", "Quiet output (errors only)");
|
|
93
98
|
}
|
|
94
99
|
program.command("init [name]").alias("create-project").description("Create a new DoNotDev project").action(async (name) => {
|
|
95
100
|
const { main } = await import("./commands/create-project.js");
|
|
@@ -117,7 +122,22 @@ formatCmd.action(async (commanderOptions) => {
|
|
|
117
122
|
const options = { ...commonOptions, ...commanderOptions };
|
|
118
123
|
try {
|
|
119
124
|
const { main } = await import("./commands/format.js");
|
|
120
|
-
await main(options);
|
|
125
|
+
process.exitCode = await main(options);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
|
|
128
|
+
process.exit(error.context?.exitCode || 1);
|
|
129
|
+
}
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
var tcCmd = program.command("tc [app]").alias("type-check").description("TypeScript type-check (runs bun run type-check in all packages)");
|
|
134
|
+
addCommonOptions(tcCmd);
|
|
135
|
+
tcCmd.action(async (app, commanderOptions) => {
|
|
136
|
+
const commonOptions = extractCommonOptions(commanderOptions);
|
|
137
|
+
const options = { ...commonOptions, app };
|
|
138
|
+
try {
|
|
139
|
+
const { main } = await import("./commands/type-check.js");
|
|
140
|
+
process.exit(await main(options));
|
|
121
141
|
} catch (error) {
|
|
122
142
|
if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
|
|
123
143
|
process.exit(error.context?.exitCode || 1);
|
|
@@ -134,7 +154,7 @@ cacheoutCmd.action(async (app, commanderOptions) => {
|
|
|
134
154
|
options.app = app;
|
|
135
155
|
}
|
|
136
156
|
const { main } = await import("./commands/cacheout.js");
|
|
137
|
-
await main(options);
|
|
157
|
+
process.exitCode = await main(options);
|
|
138
158
|
});
|
|
139
159
|
var bumpCmd = program.command("bump").description("Update framework packages and peer dependencies to latest compatible versions");
|
|
140
160
|
addCommonOptions(bumpCmd);
|
|
@@ -143,7 +163,7 @@ bumpCmd.action(async (commanderOptions) => {
|
|
|
143
163
|
const options = { ...commonOptions, ...commanderOptions };
|
|
144
164
|
try {
|
|
145
165
|
const { main } = await import("./commands/bump.js");
|
|
146
|
-
await main(options);
|
|
166
|
+
process.exitCode = await main(options);
|
|
147
167
|
} catch (error) {
|
|
148
168
|
if (error.code === "invalid-argument" || error.name === "DoNotDevError") {
|
|
149
169
|
process.exit(error.context?.exitCode || 1);
|
|
@@ -167,13 +187,16 @@ deployCmd.action(async (app, commanderOptions) => {
|
|
|
167
187
|
const { main } = await import("./commands/deploy.js");
|
|
168
188
|
await main(options);
|
|
169
189
|
});
|
|
170
|
-
var syncSecretsCmd = program.command("sync-secrets").description("Sync env vars to Firebase/Vercel").option("-e, --env-file <file>", "environment file path").option("--platform <platform>", "platform (firebase|vercel)").option("-p, --project <project>", "project ID");
|
|
190
|
+
var syncSecretsCmd = program.command("sync-secrets").description("Sync env vars to Firebase/Vercel or GitHub Secrets").option("-e, --env-file <file>", "environment file path").option("--target <target>", "sync target: runtime (default) or github").option("--platform <platform>", "platform (firebase|vercel) for runtime target").option("-p, --project <project>", "project ID").option("--repo <repo>", "GitHub repo (owner/repo) for github target");
|
|
171
191
|
addCommonOptions(syncSecretsCmd);
|
|
172
192
|
syncSecretsCmd.action(async (commanderOptions) => {
|
|
173
193
|
const commonOptions = extractCommonOptions(commanderOptions);
|
|
174
194
|
const options = { ...commonOptions, ...commanderOptions };
|
|
195
|
+
if (options.project) {
|
|
196
|
+
options.projectId = options.project;
|
|
197
|
+
}
|
|
175
198
|
const { main } = await import("./commands/sync-secrets.js");
|
|
176
|
-
await main(options);
|
|
199
|
+
process.exitCode = await main(options);
|
|
177
200
|
});
|
|
178
201
|
var firebaseSetupCmd = program.command("firebase:setup").description("Set up Firebase project, web app, and .env config").option("-a, --app <app>", "app name (if multiple apps)");
|
|
179
202
|
addCommonOptions(firebaseSetupCmd);
|
|
@@ -183,43 +206,29 @@ firebaseSetupCmd.action(async (commanderOptions) => {
|
|
|
183
206
|
const { main } = await import("./commands/firebase-setup.js");
|
|
184
207
|
await main(options);
|
|
185
208
|
});
|
|
186
|
-
program.command("
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
process.exit(await main());
|
|
194
|
-
});
|
|
195
|
-
program.command("emu [app]").description("Start dev with Firebase emulators").action(async (app) => {
|
|
196
|
-
const { main } = await import("./commands/emu.js");
|
|
197
|
-
if (app) {
|
|
198
|
-
process.argv = [process.argv[0], process.argv[1], app];
|
|
199
|
-
} else {
|
|
200
|
-
process.argv = [process.argv[0], process.argv[1]];
|
|
201
|
-
}
|
|
202
|
-
process.exit(await main());
|
|
203
|
-
});
|
|
204
|
-
program.command("build [app]").description("Build for production").action(async (app) => {
|
|
205
|
-
const { main } = await import("./commands/build.js");
|
|
206
|
-
if (app) {
|
|
207
|
-
process.argv = [process.argv[0], process.argv[1], app];
|
|
208
|
-
} else {
|
|
209
|
-
process.argv = [process.argv[0], process.argv[1]];
|
|
210
|
-
}
|
|
211
|
-
process.exit(await main());
|
|
209
|
+
var supabaseSetupCmd = program.command("supabase:setup").description("Set up Supabase project URL and keys in .env").option("-a, --app <app>", "app name (if multiple apps)");
|
|
210
|
+
addCommonOptions(supabaseSetupCmd);
|
|
211
|
+
supabaseSetupCmd.action(async (commanderOptions) => {
|
|
212
|
+
const commonOptions = extractCommonOptions(commanderOptions);
|
|
213
|
+
const options = { ...commonOptions, ...commanderOptions };
|
|
214
|
+
const { main } = await import("./commands/supabase-setup.js");
|
|
215
|
+
await main(options);
|
|
212
216
|
});
|
|
213
|
-
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
process.
|
|
217
|
+
async function runAppCommand(commandPath, app) {
|
|
218
|
+
const savedArgv = process.argv;
|
|
219
|
+
process.argv = app ? [savedArgv[0], savedArgv[1], app] : [savedArgv[0], savedArgv[1]];
|
|
220
|
+
try {
|
|
221
|
+
const { main } = await import(commandPath);
|
|
222
|
+
process.exit(await main());
|
|
223
|
+
} finally {
|
|
224
|
+
process.argv = savedArgv;
|
|
219
225
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
program.command("
|
|
226
|
+
}
|
|
227
|
+
program.command("dev [app]").description("Start development server").action((app) => runAppCommand("./commands/dev.js", app));
|
|
228
|
+
program.command("emu [app]").description("Start dev with local backend").action((app) => runAppCommand("./commands/emu.js", app));
|
|
229
|
+
program.command("build [app]").description("Build for production").action((app) => runAppCommand("./commands/build.js", app));
|
|
230
|
+
program.command("preview [app]").description("Preview production build").action((app) => runAppCommand("./commands/preview.js", app));
|
|
231
|
+
program.command("agent").alias("agent:setup").description("Configure MCP server for all AI agents (Cursor, Claude Code, Gemini, Claude Desktop)").option("-d, --dry-run", "Preview changes without applying").action(async (commanderOptions) => {
|
|
223
232
|
const options = extractCommonOptions(commanderOptions);
|
|
224
233
|
const { main } = await import("./commands/agent-setup.js");
|
|
225
234
|
await main(options);
|