@donotdev/cli 0.0.13 → 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 +357 -89
- package/dist/bin/commands/agent-setup.d.ts +6 -0
- package/dist/bin/commands/agent-setup.d.ts.map +1 -0
- package/dist/bin/commands/agent-setup.js +629 -0
- package/dist/bin/commands/agent-setup.js.map +1 -0
- package/dist/bin/commands/build.js +131 -50
- package/dist/bin/commands/bump.js +137 -49
- package/dist/bin/commands/cacheout.js +50 -21
- package/dist/bin/commands/create-app.js +270 -261
- package/dist/bin/commands/create-project.js +418 -197
- package/dist/bin/commands/deploy.js +1752 -712
- package/dist/bin/commands/dev.js +151 -35
- package/dist/bin/commands/emu.js +228 -70
- package/dist/bin/commands/format.js +50 -21
- package/dist/bin/commands/lint.js +50 -21
- package/dist/bin/commands/preview.js +155 -35
- 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 +224 -46
- 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 +7399 -11
- package/dist/bin/dndev.js +27 -2
- package/dist/bin/donotdev.js +27 -2
- package/dist/index.js +3960 -2996
- 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/brainstorm.md.example +1 -1
- package/templates/root-consumer/.claude/commands/build.md.example +1 -1
- package/templates/root-consumer/.claude/commands/design.md.example +1 -1
- package/templates/root-consumer/.claude/commands/grill.md.example +30 -0
- package/templates/root-consumer/.claude/commands/polish.md.example +1 -1
- 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/.dndev/args.json.example +6 -0
- package/templates/root-consumer/.gemini/settings.json.example +2 -2
- 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 +25 -108
- package/templates/root-consumer/CLAUDE.md.example +1 -128
- 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 +54 -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/GOTCHAS.md.example +186 -0
- package/templates/root-consumer/guides/dndev/INDEX.md.example +4 -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_FUNCTIONS.md.example +12 -7
- 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
|
@@ -1892,7 +1892,7 @@ var require_parse = __commonJS({
|
|
|
1892
1892
|
CHAR_NO_BREAK_SPACE,
|
|
1893
1893
|
CHAR_ZERO_WIDTH_NOBREAK_SPACE
|
|
1894
1894
|
} = require_constants();
|
|
1895
|
-
var
|
|
1895
|
+
var parse2 = (input, options = {}) => {
|
|
1896
1896
|
if (typeof input !== "string") {
|
|
1897
1897
|
throw new TypeError("Expected a string");
|
|
1898
1898
|
}
|
|
@@ -2092,7 +2092,7 @@ var require_parse = __commonJS({
|
|
|
2092
2092
|
push({ type: "eos" });
|
|
2093
2093
|
return ast;
|
|
2094
2094
|
};
|
|
2095
|
-
module.exports =
|
|
2095
|
+
module.exports = parse2;
|
|
2096
2096
|
}
|
|
2097
2097
|
});
|
|
2098
2098
|
|
|
@@ -2104,7 +2104,7 @@ var require_braces = __commonJS({
|
|
|
2104
2104
|
var stringify2 = require_stringify();
|
|
2105
2105
|
var compile = require_compile();
|
|
2106
2106
|
var expand = require_expand();
|
|
2107
|
-
var
|
|
2107
|
+
var parse2 = require_parse();
|
|
2108
2108
|
var braces = (input, options = {}) => {
|
|
2109
2109
|
let output = [];
|
|
2110
2110
|
if (Array.isArray(input)) {
|
|
@@ -2124,7 +2124,7 @@ var require_braces = __commonJS({
|
|
|
2124
2124
|
}
|
|
2125
2125
|
return output;
|
|
2126
2126
|
};
|
|
2127
|
-
braces.parse = (input, options = {}) =>
|
|
2127
|
+
braces.parse = (input, options = {}) => parse2(input, options);
|
|
2128
2128
|
braces.stringify = (input, options = {}) => {
|
|
2129
2129
|
if (typeof input === "string") {
|
|
2130
2130
|
return stringify2(braces.parse(input, options), options);
|
|
@@ -2781,7 +2781,7 @@ var require_parse2 = __commonJS({
|
|
|
2781
2781
|
var syntaxError = (type, char) => {
|
|
2782
2782
|
return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
|
|
2783
2783
|
};
|
|
2784
|
-
var
|
|
2784
|
+
var parse2 = (input, options) => {
|
|
2785
2785
|
if (typeof input !== "string") {
|
|
2786
2786
|
throw new TypeError("Expected a string");
|
|
2787
2787
|
}
|
|
@@ -2930,7 +2930,7 @@ var require_parse2 = __commonJS({
|
|
|
2930
2930
|
output = token.close = `)$))${extglobStar}`;
|
|
2931
2931
|
}
|
|
2932
2932
|
if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
|
|
2933
|
-
const expression =
|
|
2933
|
+
const expression = parse2(rest, { ...options, fastpaths: false }).output;
|
|
2934
2934
|
output = token.close = `)${expression})${extglobStar})`;
|
|
2935
2935
|
}
|
|
2936
2936
|
if (token.prev.type === "bos") {
|
|
@@ -3455,7 +3455,7 @@ var require_parse2 = __commonJS({
|
|
|
3455
3455
|
}
|
|
3456
3456
|
return state;
|
|
3457
3457
|
};
|
|
3458
|
-
|
|
3458
|
+
parse2.fastpaths = (input, options) => {
|
|
3459
3459
|
const opts = { ...options };
|
|
3460
3460
|
const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
|
|
3461
3461
|
const len = input.length;
|
|
@@ -3521,7 +3521,7 @@ var require_parse2 = __commonJS({
|
|
|
3521
3521
|
}
|
|
3522
3522
|
return source;
|
|
3523
3523
|
};
|
|
3524
|
-
module.exports =
|
|
3524
|
+
module.exports = parse2;
|
|
3525
3525
|
}
|
|
3526
3526
|
});
|
|
3527
3527
|
|
|
@@ -3532,7 +3532,7 @@ var require_picomatch = __commonJS({
|
|
|
3532
3532
|
init_utils();
|
|
3533
3533
|
var path = __require("path");
|
|
3534
3534
|
var scan = require_scan();
|
|
3535
|
-
var
|
|
3535
|
+
var parse2 = require_parse2();
|
|
3536
3536
|
var utils = require_utils2();
|
|
3537
3537
|
var constants2 = require_constants2();
|
|
3538
3538
|
var isObject = (val) => val && typeof val === "object" && !Array.isArray(val);
|
|
@@ -3620,7 +3620,7 @@ var require_picomatch = __commonJS({
|
|
|
3620
3620
|
picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
|
|
3621
3621
|
picomatch.parse = (pattern, options) => {
|
|
3622
3622
|
if (Array.isArray(pattern)) return pattern.map((p2) => picomatch.parse(p2, options));
|
|
3623
|
-
return
|
|
3623
|
+
return parse2(pattern, { ...options, fastpaths: false });
|
|
3624
3624
|
};
|
|
3625
3625
|
picomatch.scan = (input, options) => scan(input, options);
|
|
3626
3626
|
picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {
|
|
@@ -3646,10 +3646,10 @@ var require_picomatch = __commonJS({
|
|
|
3646
3646
|
}
|
|
3647
3647
|
let parsed = { negated: false, fastpaths: true };
|
|
3648
3648
|
if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) {
|
|
3649
|
-
parsed.output =
|
|
3649
|
+
parsed.output = parse2.fastpaths(input, options);
|
|
3650
3650
|
}
|
|
3651
3651
|
if (!parsed.output) {
|
|
3652
|
-
parsed =
|
|
3652
|
+
parsed = parse2(input, options);
|
|
3653
3653
|
}
|
|
3654
3654
|
return picomatch.compileRe(parsed, options, returnOutput, returnState);
|
|
3655
3655
|
};
|
|
@@ -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
|
}
|
|
@@ -7632,6 +7660,7 @@ import {
|
|
|
7632
7660
|
extname as extname2,
|
|
7633
7661
|
relative as relative2,
|
|
7634
7662
|
resolve as resolve2,
|
|
7663
|
+
parse,
|
|
7635
7664
|
isAbsolute as pathIsAbsolute
|
|
7636
7665
|
} from "node:path";
|
|
7637
7666
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
@@ -7658,6 +7687,34 @@ var init_pathResolver = __esm({
|
|
|
7658
7687
|
}
|
|
7659
7688
|
});
|
|
7660
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
|
+
|
|
7661
7718
|
// packages/tooling/src/bundler/utils.ts
|
|
7662
7719
|
import { Buffer as Buffer2 } from "node:buffer";
|
|
7663
7720
|
import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
|
|
@@ -7701,6 +7758,7 @@ init_dist2();
|
|
|
7701
7758
|
// packages/tooling/src/utils/app-detection.ts
|
|
7702
7759
|
init_utils();
|
|
7703
7760
|
init_pathResolver();
|
|
7761
|
+
init_typed_file_operations();
|
|
7704
7762
|
function detectApps(projectRoot) {
|
|
7705
7763
|
const apps = [];
|
|
7706
7764
|
const appsDir = joinPath(projectRoot, "apps");
|
|
@@ -7721,9 +7779,7 @@ function detectApps(projectRoot) {
|
|
|
7721
7779
|
const packageJsonPath = joinPath(projectRoot, "package.json");
|
|
7722
7780
|
if (pathExists(packageJsonPath)) {
|
|
7723
7781
|
try {
|
|
7724
|
-
const packageJson =
|
|
7725
|
-
format: "json"
|
|
7726
|
-
});
|
|
7782
|
+
const packageJson = readPackageJson(packageJsonPath);
|
|
7727
7783
|
if (packageJson && (packageJson.dependencies?.vite || packageJson.devDependencies?.vite || packageJson.dependencies?.next || packageJson.devDependencies?.next)) {
|
|
7728
7784
|
const pathParts = projectRoot.split(/[/\\]/);
|
|
7729
7785
|
const appName = pathParts[pathParts.length - 1] || "app";
|
|
@@ -7743,10 +7799,10 @@ function analyzeApp(appPath, appName) {
|
|
|
7743
7799
|
if (!pathExists(packageJsonPath)) {
|
|
7744
7800
|
return null;
|
|
7745
7801
|
}
|
|
7746
|
-
let packageJson;
|
|
7802
|
+
let packageJson = null;
|
|
7747
7803
|
try {
|
|
7748
|
-
packageJson =
|
|
7749
|
-
if (!packageJson) {
|
|
7804
|
+
packageJson = readPackageJson(packageJsonPath);
|
|
7805
|
+
if (!packageJson.name) {
|
|
7750
7806
|
return null;
|
|
7751
7807
|
}
|
|
7752
7808
|
} catch {
|
|
@@ -7761,14 +7817,14 @@ function analyzeApp(appPath, appName) {
|
|
|
7761
7817
|
const functionsPath = joinPath(appPath, "functions");
|
|
7762
7818
|
const functionsStat = statSync2(functionsPath);
|
|
7763
7819
|
const hasFunctions = pathExists(functionsPath) && (functionsStat?.isDirectory() ?? false);
|
|
7764
|
-
let
|
|
7820
|
+
let platform2;
|
|
7765
7821
|
if (hasFunctions) {
|
|
7766
7822
|
const firebaseJsonPath = joinPath(functionsPath, "firebase.json");
|
|
7767
7823
|
const vercelJsonPath = joinPath(appPath, "vercel.json");
|
|
7768
7824
|
if (pathExists(firebaseJsonPath)) {
|
|
7769
|
-
|
|
7825
|
+
platform2 = "firebase";
|
|
7770
7826
|
} else if (pathExists(vercelJsonPath)) {
|
|
7771
|
-
|
|
7827
|
+
platform2 = "vercel";
|
|
7772
7828
|
}
|
|
7773
7829
|
}
|
|
7774
7830
|
return {
|
|
@@ -7779,7 +7835,7 @@ function analyzeApp(appPath, appName) {
|
|
|
7779
7835
|
framework,
|
|
7780
7836
|
hasFunctions,
|
|
7781
7837
|
functionsPath: hasFunctions ? functionsPath : void 0,
|
|
7782
|
-
platform
|
|
7838
|
+
platform: platform2
|
|
7783
7839
|
};
|
|
7784
7840
|
}
|
|
7785
7841
|
|
|
@@ -7831,10 +7887,21 @@ function createAppEnv(appPath) {
|
|
|
7831
7887
|
|
|
7832
7888
|
// packages/tooling/src/apps/preview.ts
|
|
7833
7889
|
init_utils();
|
|
7834
|
-
import {
|
|
7890
|
+
import {
|
|
7891
|
+
spawn,
|
|
7892
|
+
spawnSync as spawnSync2,
|
|
7893
|
+
execSync as execSync2
|
|
7894
|
+
} from "node:child_process";
|
|
7895
|
+
import { platform } from "node:os";
|
|
7835
7896
|
init_cli_output();
|
|
7836
7897
|
init_errors();
|
|
7837
7898
|
init_pathResolver();
|
|
7899
|
+
var SIGNAL_EXIT_CODES = {
|
|
7900
|
+
SIGINT: 130,
|
|
7901
|
+
// 128 + 2
|
|
7902
|
+
SIGTERM: 143
|
|
7903
|
+
// 128 + 15
|
|
7904
|
+
};
|
|
7838
7905
|
async function main() {
|
|
7839
7906
|
const args = process.argv.slice(2);
|
|
7840
7907
|
const appName = args[0] && args[0] !== "preview" ? args[0] : void 0;
|
|
@@ -7871,12 +7938,65 @@ async function main() {
|
|
|
7871
7938
|
log.info(`Previewing ${app.name}...
|
|
7872
7939
|
`);
|
|
7873
7940
|
const turboArgs = ["preview", "--filter", app.packageName];
|
|
7874
|
-
const
|
|
7941
|
+
const isWindows = platform() === "win32";
|
|
7942
|
+
const childProcess = spawn("bunx", ["turbo", ...turboArgs], {
|
|
7875
7943
|
stdio: "inherit",
|
|
7876
7944
|
env: createAppEnv(app.path),
|
|
7877
|
-
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
|
+
});
|
|
7878
7999
|
});
|
|
7879
|
-
return result.status || 0;
|
|
7880
8000
|
}
|
|
7881
8001
|
export {
|
|
7882
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"}
|