@donotdev/cli 0.0.14 → 0.0.15
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 +356 -88
- package/dist/bin/commands/agent-setup.js +7 -1
- package/dist/bin/commands/build.js +118 -38
- package/dist/bin/commands/bump.js +74 -28
- package/dist/bin/commands/cacheout.js +37 -9
- package/dist/bin/commands/create-app.js +222 -115
- package/dist/bin/commands/create-project.js +455 -140
- package/dist/bin/commands/deploy.js +1736 -697
- package/dist/bin/commands/dev.js +138 -23
- package/dist/bin/commands/emu.js +215 -58
- package/dist/bin/commands/format.js +37 -9
- package/dist/bin/commands/lint.js +37 -9
- package/dist/bin/commands/preview.js +142 -23
- 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 +314 -0
- package/dist/bin/commands/type-check.js.map +1 -0
- package/dist/bin/commands/wai.js +3 -1
- package/dist/bin/dndev.js +27 -2
- package/dist/bin/donotdev.js +27 -2
- package/dist/index.js +3960 -3015
- package/package.json +2 -2
- 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 +64 -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/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/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/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/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 +1 -1
- package/templates/app-vite/src/themes.css.example +109 -79
- package/templates/app-vite/vercel.json.example +11 -0
- package/templates/functions-firebase/build.mjs.example +2 -72
- package/templates/functions-firebase/functions-firebase/.env.example.example +23 -25
- 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-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/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 +7 -0
- package/templates/overlay-supabase/env.fragment.expo.example +7 -0
- package/templates/overlay-supabase/env.fragment.nextjs.example +7 -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 +29 -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 +20 -0
- 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 +99 -30
- package/templates/root-consumer/guides/dndev/INDEX.md.example +3 -1
- package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +143 -12
- package/templates/root-consumer/guides/dndev/SETUP_FIREBASE.md.example +9 -3
- package/templates/root-consumer/guides/dndev/SETUP_SOC2.md.example +234 -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/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 +47 -11
- 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/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
|
@@ -7215,11 +7215,39 @@ var init_PathResolver = __esm({
|
|
|
7215
7215
|
});
|
|
7216
7216
|
|
|
7217
7217
|
// packages/tooling/src/utils/errors.ts
|
|
7218
|
-
var DoNotDevError;
|
|
7218
|
+
var DO_NOT_DEV_ERROR_CODES, DoNotDevError;
|
|
7219
7219
|
var init_errors = __esm({
|
|
7220
7220
|
"packages/tooling/src/utils/errors.ts"() {
|
|
7221
7221
|
"use strict";
|
|
7222
7222
|
init_utils();
|
|
7223
|
+
DO_NOT_DEV_ERROR_CODES = {
|
|
7224
|
+
CONFIGURATION_ERROR: "configuration-error",
|
|
7225
|
+
CONFIG_NOT_FOUND: "config-not-found",
|
|
7226
|
+
CONFIG_INVALID: "config-invalid",
|
|
7227
|
+
PATH_RESOLUTION_ERROR: "path-resolution-error",
|
|
7228
|
+
FILE_OPERATION_ERROR: "file-operation-error",
|
|
7229
|
+
FILE_NOT_FOUND: "file-not-found",
|
|
7230
|
+
PERMISSION_DENIED: "permission-denied",
|
|
7231
|
+
GENERATION_ERROR: "generation-error",
|
|
7232
|
+
TEMPLATE_ERROR: "template-error",
|
|
7233
|
+
TEMPLATE_NOT_FOUND: "template-not-found",
|
|
7234
|
+
CLI_EXECUTION_ERROR: "cli-execution-error",
|
|
7235
|
+
COMMAND_NOT_FOUND: "command-not-found",
|
|
7236
|
+
COMMAND_FAILED: "command-failed",
|
|
7237
|
+
VALIDATION_ERROR: "validation-error",
|
|
7238
|
+
SCHEMA_ERROR: "schema-error",
|
|
7239
|
+
DEPENDENCY_ERROR: "dependency-error",
|
|
7240
|
+
DEPENDENCY_NOT_FOUND: "dependency-not-found",
|
|
7241
|
+
DEPENDENCY_VERSION_ERROR: "dependency-version-error",
|
|
7242
|
+
INVALID_ARGUMENT: "invalid-argument",
|
|
7243
|
+
MISSING_ARGUMENT: "missing-argument",
|
|
7244
|
+
MISSING_PROJECT_ID: "missing-project-id",
|
|
7245
|
+
FIREBASE_CLI_ERROR: "firebase-cli-error",
|
|
7246
|
+
DEPLOYMENT_FAILED: "deployment-failed",
|
|
7247
|
+
OPERATION_CANCELLED: "operation-cancelled",
|
|
7248
|
+
TIMEOUT_ERROR: "timeout-error",
|
|
7249
|
+
UNKNOWN_ERROR: "unknown-error"
|
|
7250
|
+
};
|
|
7223
7251
|
DoNotDevError = class _DoNotDevError extends Error {
|
|
7224
7252
|
/** The error code categorizing this error */
|
|
7225
7253
|
code;
|
|
@@ -7239,7 +7267,7 @@ var init_errors = __esm({
|
|
|
7239
7267
|
* @param {Record<string, any>} [options.context] - Additional context data
|
|
7240
7268
|
* @param {boolean} [options.displayable=true] - Whether this error should be displayed to the user
|
|
7241
7269
|
*/
|
|
7242
|
-
constructor(message, code =
|
|
7270
|
+
constructor(message, code = DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR, options) {
|
|
7243
7271
|
super(message);
|
|
7244
7272
|
this.name = "DoNotDevError";
|
|
7245
7273
|
this.code = code;
|
|
@@ -7270,7 +7298,7 @@ var init_errors = __esm({
|
|
|
7270
7298
|
* @param {boolean} [options.displayable=true] - Whether this error should be displayed to the user
|
|
7271
7299
|
* @returns {DoNotDevError} New DoNotDev error wrapping the original
|
|
7272
7300
|
*/
|
|
7273
|
-
static from(error2, context, code =
|
|
7301
|
+
static from(error2, context, code = DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR, options) {
|
|
7274
7302
|
if (!(error2 instanceof Error)) {
|
|
7275
7303
|
return new _DoNotDevError(
|
|
7276
7304
|
`Unknown error: ${String(error2)}`,
|
|
@@ -7307,21 +7335,21 @@ var init_errors = __esm({
|
|
|
7307
7335
|
}
|
|
7308
7336
|
const message = error2.message.toLowerCase();
|
|
7309
7337
|
if (error2.name === "ValidationError" || message.includes("validation")) {
|
|
7310
|
-
return
|
|
7338
|
+
return DO_NOT_DEV_ERROR_CODES.VALIDATION_ERROR;
|
|
7311
7339
|
}
|
|
7312
7340
|
if (message.includes("not found") || message.includes("no such file")) {
|
|
7313
|
-
return
|
|
7341
|
+
return DO_NOT_DEV_ERROR_CODES.FILE_NOT_FOUND;
|
|
7314
7342
|
}
|
|
7315
7343
|
if (message.includes("permission") || message.includes("access denied")) {
|
|
7316
|
-
return
|
|
7344
|
+
return DO_NOT_DEV_ERROR_CODES.PERMISSION_DENIED;
|
|
7317
7345
|
}
|
|
7318
7346
|
if (message.includes("timeout") || message.includes("timed out")) {
|
|
7319
|
-
return
|
|
7347
|
+
return DO_NOT_DEV_ERROR_CODES.TIMEOUT_ERROR;
|
|
7320
7348
|
}
|
|
7321
7349
|
if (message.includes("dependency") || message.includes("module not found")) {
|
|
7322
|
-
return
|
|
7350
|
+
return DO_NOT_DEV_ERROR_CODES.DEPENDENCY_ERROR;
|
|
7323
7351
|
}
|
|
7324
|
-
return
|
|
7352
|
+
return DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR;
|
|
7325
7353
|
}
|
|
7326
7354
|
};
|
|
7327
7355
|
}
|
|
@@ -7215,11 +7215,39 @@ var init_PathResolver = __esm({
|
|
|
7215
7215
|
});
|
|
7216
7216
|
|
|
7217
7217
|
// packages/tooling/src/utils/errors.ts
|
|
7218
|
-
var DoNotDevError;
|
|
7218
|
+
var DO_NOT_DEV_ERROR_CODES, DoNotDevError;
|
|
7219
7219
|
var init_errors = __esm({
|
|
7220
7220
|
"packages/tooling/src/utils/errors.ts"() {
|
|
7221
7221
|
"use strict";
|
|
7222
7222
|
init_utils();
|
|
7223
|
+
DO_NOT_DEV_ERROR_CODES = {
|
|
7224
|
+
CONFIGURATION_ERROR: "configuration-error",
|
|
7225
|
+
CONFIG_NOT_FOUND: "config-not-found",
|
|
7226
|
+
CONFIG_INVALID: "config-invalid",
|
|
7227
|
+
PATH_RESOLUTION_ERROR: "path-resolution-error",
|
|
7228
|
+
FILE_OPERATION_ERROR: "file-operation-error",
|
|
7229
|
+
FILE_NOT_FOUND: "file-not-found",
|
|
7230
|
+
PERMISSION_DENIED: "permission-denied",
|
|
7231
|
+
GENERATION_ERROR: "generation-error",
|
|
7232
|
+
TEMPLATE_ERROR: "template-error",
|
|
7233
|
+
TEMPLATE_NOT_FOUND: "template-not-found",
|
|
7234
|
+
CLI_EXECUTION_ERROR: "cli-execution-error",
|
|
7235
|
+
COMMAND_NOT_FOUND: "command-not-found",
|
|
7236
|
+
COMMAND_FAILED: "command-failed",
|
|
7237
|
+
VALIDATION_ERROR: "validation-error",
|
|
7238
|
+
SCHEMA_ERROR: "schema-error",
|
|
7239
|
+
DEPENDENCY_ERROR: "dependency-error",
|
|
7240
|
+
DEPENDENCY_NOT_FOUND: "dependency-not-found",
|
|
7241
|
+
DEPENDENCY_VERSION_ERROR: "dependency-version-error",
|
|
7242
|
+
INVALID_ARGUMENT: "invalid-argument",
|
|
7243
|
+
MISSING_ARGUMENT: "missing-argument",
|
|
7244
|
+
MISSING_PROJECT_ID: "missing-project-id",
|
|
7245
|
+
FIREBASE_CLI_ERROR: "firebase-cli-error",
|
|
7246
|
+
DEPLOYMENT_FAILED: "deployment-failed",
|
|
7247
|
+
OPERATION_CANCELLED: "operation-cancelled",
|
|
7248
|
+
TIMEOUT_ERROR: "timeout-error",
|
|
7249
|
+
UNKNOWN_ERROR: "unknown-error"
|
|
7250
|
+
};
|
|
7223
7251
|
DoNotDevError = class _DoNotDevError extends Error {
|
|
7224
7252
|
/** The error code categorizing this error */
|
|
7225
7253
|
code;
|
|
@@ -7239,7 +7267,7 @@ var init_errors = __esm({
|
|
|
7239
7267
|
* @param {Record<string, any>} [options.context] - Additional context data
|
|
7240
7268
|
* @param {boolean} [options.displayable=true] - Whether this error should be displayed to the user
|
|
7241
7269
|
*/
|
|
7242
|
-
constructor(message, code =
|
|
7270
|
+
constructor(message, code = DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR, options) {
|
|
7243
7271
|
super(message);
|
|
7244
7272
|
this.name = "DoNotDevError";
|
|
7245
7273
|
this.code = code;
|
|
@@ -7270,7 +7298,7 @@ var init_errors = __esm({
|
|
|
7270
7298
|
* @param {boolean} [options.displayable=true] - Whether this error should be displayed to the user
|
|
7271
7299
|
* @returns {DoNotDevError} New DoNotDev error wrapping the original
|
|
7272
7300
|
*/
|
|
7273
|
-
static from(error2, context, code =
|
|
7301
|
+
static from(error2, context, code = DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR, options) {
|
|
7274
7302
|
if (!(error2 instanceof Error)) {
|
|
7275
7303
|
return new _DoNotDevError(
|
|
7276
7304
|
`Unknown error: ${String(error2)}`,
|
|
@@ -7307,21 +7335,21 @@ var init_errors = __esm({
|
|
|
7307
7335
|
}
|
|
7308
7336
|
const message = error2.message.toLowerCase();
|
|
7309
7337
|
if (error2.name === "ValidationError" || message.includes("validation")) {
|
|
7310
|
-
return
|
|
7338
|
+
return DO_NOT_DEV_ERROR_CODES.VALIDATION_ERROR;
|
|
7311
7339
|
}
|
|
7312
7340
|
if (message.includes("not found") || message.includes("no such file")) {
|
|
7313
|
-
return
|
|
7341
|
+
return DO_NOT_DEV_ERROR_CODES.FILE_NOT_FOUND;
|
|
7314
7342
|
}
|
|
7315
7343
|
if (message.includes("permission") || message.includes("access denied")) {
|
|
7316
|
-
return
|
|
7344
|
+
return DO_NOT_DEV_ERROR_CODES.PERMISSION_DENIED;
|
|
7317
7345
|
}
|
|
7318
7346
|
if (message.includes("timeout") || message.includes("timed out")) {
|
|
7319
|
-
return
|
|
7347
|
+
return DO_NOT_DEV_ERROR_CODES.TIMEOUT_ERROR;
|
|
7320
7348
|
}
|
|
7321
7349
|
if (message.includes("dependency") || message.includes("module not found")) {
|
|
7322
|
-
return
|
|
7350
|
+
return DO_NOT_DEV_ERROR_CODES.DEPENDENCY_ERROR;
|
|
7323
7351
|
}
|
|
7324
|
-
return
|
|
7352
|
+
return DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR;
|
|
7325
7353
|
}
|
|
7326
7354
|
};
|
|
7327
7355
|
}
|
|
@@ -7511,11 +7511,39 @@ var init_PathResolver = __esm({
|
|
|
7511
7511
|
});
|
|
7512
7512
|
|
|
7513
7513
|
// packages/tooling/src/utils/errors.ts
|
|
7514
|
-
var DoNotDevError;
|
|
7514
|
+
var DO_NOT_DEV_ERROR_CODES, DoNotDevError;
|
|
7515
7515
|
var init_errors = __esm({
|
|
7516
7516
|
"packages/tooling/src/utils/errors.ts"() {
|
|
7517
7517
|
"use strict";
|
|
7518
7518
|
init_utils();
|
|
7519
|
+
DO_NOT_DEV_ERROR_CODES = {
|
|
7520
|
+
CONFIGURATION_ERROR: "configuration-error",
|
|
7521
|
+
CONFIG_NOT_FOUND: "config-not-found",
|
|
7522
|
+
CONFIG_INVALID: "config-invalid",
|
|
7523
|
+
PATH_RESOLUTION_ERROR: "path-resolution-error",
|
|
7524
|
+
FILE_OPERATION_ERROR: "file-operation-error",
|
|
7525
|
+
FILE_NOT_FOUND: "file-not-found",
|
|
7526
|
+
PERMISSION_DENIED: "permission-denied",
|
|
7527
|
+
GENERATION_ERROR: "generation-error",
|
|
7528
|
+
TEMPLATE_ERROR: "template-error",
|
|
7529
|
+
TEMPLATE_NOT_FOUND: "template-not-found",
|
|
7530
|
+
CLI_EXECUTION_ERROR: "cli-execution-error",
|
|
7531
|
+
COMMAND_NOT_FOUND: "command-not-found",
|
|
7532
|
+
COMMAND_FAILED: "command-failed",
|
|
7533
|
+
VALIDATION_ERROR: "validation-error",
|
|
7534
|
+
SCHEMA_ERROR: "schema-error",
|
|
7535
|
+
DEPENDENCY_ERROR: "dependency-error",
|
|
7536
|
+
DEPENDENCY_NOT_FOUND: "dependency-not-found",
|
|
7537
|
+
DEPENDENCY_VERSION_ERROR: "dependency-version-error",
|
|
7538
|
+
INVALID_ARGUMENT: "invalid-argument",
|
|
7539
|
+
MISSING_ARGUMENT: "missing-argument",
|
|
7540
|
+
MISSING_PROJECT_ID: "missing-project-id",
|
|
7541
|
+
FIREBASE_CLI_ERROR: "firebase-cli-error",
|
|
7542
|
+
DEPLOYMENT_FAILED: "deployment-failed",
|
|
7543
|
+
OPERATION_CANCELLED: "operation-cancelled",
|
|
7544
|
+
TIMEOUT_ERROR: "timeout-error",
|
|
7545
|
+
UNKNOWN_ERROR: "unknown-error"
|
|
7546
|
+
};
|
|
7519
7547
|
DoNotDevError = class _DoNotDevError extends Error {
|
|
7520
7548
|
/** The error code categorizing this error */
|
|
7521
7549
|
code;
|
|
@@ -7535,7 +7563,7 @@ var init_errors = __esm({
|
|
|
7535
7563
|
* @param {Record<string, any>} [options.context] - Additional context data
|
|
7536
7564
|
* @param {boolean} [options.displayable=true] - Whether this error should be displayed to the user
|
|
7537
7565
|
*/
|
|
7538
|
-
constructor(message, code =
|
|
7566
|
+
constructor(message, code = DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR, options) {
|
|
7539
7567
|
super(message);
|
|
7540
7568
|
this.name = "DoNotDevError";
|
|
7541
7569
|
this.code = code;
|
|
@@ -7566,7 +7594,7 @@ var init_errors = __esm({
|
|
|
7566
7594
|
* @param {boolean} [options.displayable=true] - Whether this error should be displayed to the user
|
|
7567
7595
|
* @returns {DoNotDevError} New DoNotDev error wrapping the original
|
|
7568
7596
|
*/
|
|
7569
|
-
static from(error2, context, code =
|
|
7597
|
+
static from(error2, context, code = DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR, options) {
|
|
7570
7598
|
if (!(error2 instanceof Error)) {
|
|
7571
7599
|
return new _DoNotDevError(
|
|
7572
7600
|
`Unknown error: ${String(error2)}`,
|
|
@@ -7603,21 +7631,21 @@ var init_errors = __esm({
|
|
|
7603
7631
|
}
|
|
7604
7632
|
const message = error2.message.toLowerCase();
|
|
7605
7633
|
if (error2.name === "ValidationError" || message.includes("validation")) {
|
|
7606
|
-
return
|
|
7634
|
+
return DO_NOT_DEV_ERROR_CODES.VALIDATION_ERROR;
|
|
7607
7635
|
}
|
|
7608
7636
|
if (message.includes("not found") || message.includes("no such file")) {
|
|
7609
|
-
return
|
|
7637
|
+
return DO_NOT_DEV_ERROR_CODES.FILE_NOT_FOUND;
|
|
7610
7638
|
}
|
|
7611
7639
|
if (message.includes("permission") || message.includes("access denied")) {
|
|
7612
|
-
return
|
|
7640
|
+
return DO_NOT_DEV_ERROR_CODES.PERMISSION_DENIED;
|
|
7613
7641
|
}
|
|
7614
7642
|
if (message.includes("timeout") || message.includes("timed out")) {
|
|
7615
|
-
return
|
|
7643
|
+
return DO_NOT_DEV_ERROR_CODES.TIMEOUT_ERROR;
|
|
7616
7644
|
}
|
|
7617
7645
|
if (message.includes("dependency") || message.includes("module not found")) {
|
|
7618
|
-
return
|
|
7646
|
+
return DO_NOT_DEV_ERROR_CODES.DEPENDENCY_ERROR;
|
|
7619
7647
|
}
|
|
7620
|
-
return
|
|
7648
|
+
return DO_NOT_DEV_ERROR_CODES.UNKNOWN_ERROR;
|
|
7621
7649
|
}
|
|
7622
7650
|
};
|
|
7623
7651
|
}
|
|
@@ -7659,6 +7687,34 @@ var init_pathResolver = __esm({
|
|
|
7659
7687
|
}
|
|
7660
7688
|
});
|
|
7661
7689
|
|
|
7690
|
+
// packages/tooling/src/utils/typed-file-operations.ts
|
|
7691
|
+
function readPackageJson(filePath) {
|
|
7692
|
+
if (!pathExists(filePath)) {
|
|
7693
|
+
throw new DoNotDevError(
|
|
7694
|
+
`package.json not found: ${filePath}`,
|
|
7695
|
+
DO_NOT_DEV_ERROR_CODES.FILE_NOT_FOUND,
|
|
7696
|
+
{ context: { filePath } }
|
|
7697
|
+
);
|
|
7698
|
+
}
|
|
7699
|
+
const content = readSync(filePath, { format: "json" });
|
|
7700
|
+
if (!content || typeof content !== "object" || !("name" in content)) {
|
|
7701
|
+
throw new DoNotDevError(
|
|
7702
|
+
`Invalid package.json: ${filePath}`,
|
|
7703
|
+
DO_NOT_DEV_ERROR_CODES.CONFIG_INVALID,
|
|
7704
|
+
{ context: { filePath } }
|
|
7705
|
+
);
|
|
7706
|
+
}
|
|
7707
|
+
return content;
|
|
7708
|
+
}
|
|
7709
|
+
var init_typed_file_operations = __esm({
|
|
7710
|
+
"packages/tooling/src/utils/typed-file-operations.ts"() {
|
|
7711
|
+
"use strict";
|
|
7712
|
+
init_utils();
|
|
7713
|
+
init_pathResolver();
|
|
7714
|
+
init_errors();
|
|
7715
|
+
}
|
|
7716
|
+
});
|
|
7717
|
+
|
|
7662
7718
|
// packages/tooling/src/bundler/utils.ts
|
|
7663
7719
|
import { Buffer as Buffer2 } from "node:buffer";
|
|
7664
7720
|
import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
|
|
@@ -7702,6 +7758,7 @@ init_dist2();
|
|
|
7702
7758
|
// packages/tooling/src/utils/app-detection.ts
|
|
7703
7759
|
init_utils();
|
|
7704
7760
|
init_pathResolver();
|
|
7761
|
+
init_typed_file_operations();
|
|
7705
7762
|
function detectApps(projectRoot) {
|
|
7706
7763
|
const apps = [];
|
|
7707
7764
|
const appsDir = joinPath(projectRoot, "apps");
|
|
@@ -7722,9 +7779,7 @@ function detectApps(projectRoot) {
|
|
|
7722
7779
|
const packageJsonPath = joinPath(projectRoot, "package.json");
|
|
7723
7780
|
if (pathExists(packageJsonPath)) {
|
|
7724
7781
|
try {
|
|
7725
|
-
const packageJson =
|
|
7726
|
-
format: "json"
|
|
7727
|
-
});
|
|
7782
|
+
const packageJson = readPackageJson(packageJsonPath);
|
|
7728
7783
|
if (packageJson && (packageJson.dependencies?.vite || packageJson.devDependencies?.vite || packageJson.dependencies?.next || packageJson.devDependencies?.next)) {
|
|
7729
7784
|
const pathParts = projectRoot.split(/[/\\]/);
|
|
7730
7785
|
const appName = pathParts[pathParts.length - 1] || "app";
|
|
@@ -7744,10 +7799,10 @@ function analyzeApp(appPath, appName) {
|
|
|
7744
7799
|
if (!pathExists(packageJsonPath)) {
|
|
7745
7800
|
return null;
|
|
7746
7801
|
}
|
|
7747
|
-
let packageJson;
|
|
7802
|
+
let packageJson = null;
|
|
7748
7803
|
try {
|
|
7749
|
-
packageJson =
|
|
7750
|
-
if (!packageJson) {
|
|
7804
|
+
packageJson = readPackageJson(packageJsonPath);
|
|
7805
|
+
if (!packageJson.name) {
|
|
7751
7806
|
return null;
|
|
7752
7807
|
}
|
|
7753
7808
|
} catch {
|
|
@@ -7762,14 +7817,14 @@ function analyzeApp(appPath, appName) {
|
|
|
7762
7817
|
const functionsPath = joinPath(appPath, "functions");
|
|
7763
7818
|
const functionsStat = statSync2(functionsPath);
|
|
7764
7819
|
const hasFunctions = pathExists(functionsPath) && (functionsStat?.isDirectory() ?? false);
|
|
7765
|
-
let
|
|
7820
|
+
let platform2;
|
|
7766
7821
|
if (hasFunctions) {
|
|
7767
7822
|
const firebaseJsonPath = joinPath(functionsPath, "firebase.json");
|
|
7768
7823
|
const vercelJsonPath = joinPath(appPath, "vercel.json");
|
|
7769
7824
|
if (pathExists(firebaseJsonPath)) {
|
|
7770
|
-
|
|
7825
|
+
platform2 = "firebase";
|
|
7771
7826
|
} else if (pathExists(vercelJsonPath)) {
|
|
7772
|
-
|
|
7827
|
+
platform2 = "vercel";
|
|
7773
7828
|
}
|
|
7774
7829
|
}
|
|
7775
7830
|
return {
|
|
@@ -7780,7 +7835,7 @@ function analyzeApp(appPath, appName) {
|
|
|
7780
7835
|
framework,
|
|
7781
7836
|
hasFunctions,
|
|
7782
7837
|
functionsPath: hasFunctions ? functionsPath : void 0,
|
|
7783
|
-
platform
|
|
7838
|
+
platform: platform2
|
|
7784
7839
|
};
|
|
7785
7840
|
}
|
|
7786
7841
|
|
|
@@ -7832,10 +7887,21 @@ function createAppEnv(appPath) {
|
|
|
7832
7887
|
|
|
7833
7888
|
// packages/tooling/src/apps/preview.ts
|
|
7834
7889
|
init_utils();
|
|
7835
|
-
import {
|
|
7890
|
+
import {
|
|
7891
|
+
spawn,
|
|
7892
|
+
spawnSync as spawnSync2,
|
|
7893
|
+
execSync as execSync2
|
|
7894
|
+
} from "node:child_process";
|
|
7895
|
+
import { platform } from "node:os";
|
|
7836
7896
|
init_cli_output();
|
|
7837
7897
|
init_errors();
|
|
7838
7898
|
init_pathResolver();
|
|
7899
|
+
var SIGNAL_EXIT_CODES = {
|
|
7900
|
+
SIGINT: 130,
|
|
7901
|
+
// 128 + 2
|
|
7902
|
+
SIGTERM: 143
|
|
7903
|
+
// 128 + 15
|
|
7904
|
+
};
|
|
7839
7905
|
async function main() {
|
|
7840
7906
|
const args = process.argv.slice(2);
|
|
7841
7907
|
const appName = args[0] && args[0] !== "preview" ? args[0] : void 0;
|
|
@@ -7872,12 +7938,65 @@ async function main() {
|
|
|
7872
7938
|
log.info(`Previewing ${app.name}...
|
|
7873
7939
|
`);
|
|
7874
7940
|
const turboArgs = ["preview", "--filter", app.packageName];
|
|
7875
|
-
const
|
|
7941
|
+
const isWindows = platform() === "win32";
|
|
7942
|
+
const childProcess = spawn("bunx", ["turbo", ...turboArgs], {
|
|
7876
7943
|
stdio: "inherit",
|
|
7877
7944
|
env: createAppEnv(app.path),
|
|
7878
|
-
cwd: projectRoot
|
|
7945
|
+
cwd: projectRoot,
|
|
7946
|
+
shell: isWindows
|
|
7947
|
+
});
|
|
7948
|
+
const cleanup = (signal) => {
|
|
7949
|
+
if (!childProcess.pid) return;
|
|
7950
|
+
log.debug(`Received ${signal}, cleaning up processes...`);
|
|
7951
|
+
if (isWindows) {
|
|
7952
|
+
try {
|
|
7953
|
+
execSync2(`taskkill /F /T /PID ${childProcess.pid}`, {
|
|
7954
|
+
stdio: "ignore",
|
|
7955
|
+
timeout: 2e3
|
|
7956
|
+
});
|
|
7957
|
+
} catch {
|
|
7958
|
+
}
|
|
7959
|
+
} else {
|
|
7960
|
+
try {
|
|
7961
|
+
process.kill(childProcess.pid, signal);
|
|
7962
|
+
} catch {
|
|
7963
|
+
}
|
|
7964
|
+
try {
|
|
7965
|
+
execSync2(`pkill -P ${childProcess.pid}`, {
|
|
7966
|
+
stdio: "ignore",
|
|
7967
|
+
timeout: 1e3
|
|
7968
|
+
});
|
|
7969
|
+
} catch {
|
|
7970
|
+
}
|
|
7971
|
+
}
|
|
7972
|
+
};
|
|
7973
|
+
const signals = ["SIGINT", "SIGTERM"];
|
|
7974
|
+
const handlers = [];
|
|
7975
|
+
for (const signal of signals) {
|
|
7976
|
+
const handler = () => {
|
|
7977
|
+
cleanup(signal);
|
|
7978
|
+
handlers.forEach((h2) => h2());
|
|
7979
|
+
process.exit(SIGNAL_EXIT_CODES[signal] ?? 130);
|
|
7980
|
+
};
|
|
7981
|
+
process.on(signal, handler);
|
|
7982
|
+
handlers.push(() => process.removeListener(signal, handler));
|
|
7983
|
+
}
|
|
7984
|
+
return new Promise((resolve4) => {
|
|
7985
|
+
childProcess.on("exit", (code, signal) => {
|
|
7986
|
+
handlers.forEach((h2) => h2());
|
|
7987
|
+
if (signal) {
|
|
7988
|
+
log.debug(`Process killed by signal: ${signal}`);
|
|
7989
|
+
resolve4(SIGNAL_EXIT_CODES[signal] ?? 130);
|
|
7990
|
+
} else {
|
|
7991
|
+
resolve4(code ?? 0);
|
|
7992
|
+
}
|
|
7993
|
+
});
|
|
7994
|
+
childProcess.on("error", (error2) => {
|
|
7995
|
+
handlers.forEach((h2) => h2());
|
|
7996
|
+
log.error(`Failed to start preview server: ${error2.message}`);
|
|
7997
|
+
resolve4(1);
|
|
7998
|
+
});
|
|
7879
7999
|
});
|
|
7880
|
-
return result.status || 0;
|
|
7881
8000
|
}
|
|
7882
8001
|
export {
|
|
7883
8002
|
main
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-setup.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/supabase-setup.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// packages/cli/src/bin/commands/supabase-setup.ts
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Supabase Setup Command Wrapper
|
|
4
|
+
* @description Re-exports supabaseSetup from tooling for CLI bundling.
|
|
5
|
+
*/
|
|
6
|
+
export { supabaseSetup as main } from '@donotdev/tooling';
|
|
7
|
+
//# sourceMappingURL=supabase-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-setup.js","sourceRoot":"","sources":["../../../src/bin/commands/supabase-setup.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD;;;GAGG;AAEH,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC"}
|