create-rudder-app 0.9.3 → 0.11.0
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/dist/agent-detect.d.ts +21 -0
- package/dist/agent-detect.d.ts.map +1 -0
- package/dist/agent-detect.js +36 -0
- package/dist/agent-detect.js.map +1 -0
- package/dist/cli-flags.d.ts +33 -0
- package/dist/cli-flags.d.ts.map +1 -0
- package/dist/cli-flags.js +164 -0
- package/dist/cli-flags.js.map +1 -0
- package/dist/index.js +335 -226
- package/dist/index.js.map +1 -1
- package/dist/templates/app/terminal-dashboard.d.ts +2 -0
- package/dist/templates/app/terminal-dashboard.d.ts.map +1 -0
- package/dist/templates/app/terminal-dashboard.js +22 -0
- package/dist/templates/app/terminal-dashboard.js.map +1 -0
- package/dist/templates/components/site-header.d.ts +4 -0
- package/dist/templates/components/site-header.d.ts.map +1 -0
- package/dist/templates/components/site-header.js +239 -0
- package/dist/templates/components/site-header.js.map +1 -0
- package/dist/templates/demos/avatar.d.ts.map +1 -1
- package/dist/templates/demos/avatar.js +2 -10
- package/dist/templates/demos/avatar.js.map +1 -1
- package/dist/templates/demos/cache.d.ts.map +1 -1
- package/dist/templates/demos/cache.js +2 -10
- package/dist/templates/demos/cache.js.map +1 -1
- package/dist/templates/demos/contact.d.ts.map +1 -1
- package/dist/templates/demos/contact.js +2 -9
- package/dist/templates/demos/contact.js.map +1 -1
- package/dist/templates/demos/fibonacci.d.ts.map +1 -1
- package/dist/templates/demos/fibonacci.js +2 -10
- package/dist/templates/demos/fibonacci.js.map +1 -1
- package/dist/templates/demos/http.d.ts.map +1 -1
- package/dist/templates/demos/http.js +2 -10
- package/dist/templates/demos/http.js.map +1 -1
- package/dist/templates/demos/index-view.d.ts.map +1 -1
- package/dist/templates/demos/index-view.js +2 -9
- package/dist/templates/demos/index-view.js.map +1 -1
- package/dist/templates/demos/localization.d.ts.map +1 -1
- package/dist/templates/demos/localization.js +2 -10
- package/dist/templates/demos/localization.js.map +1 -1
- package/dist/templates/demos/mail.d.ts.map +1 -1
- package/dist/templates/demos/mail.js +2 -10
- package/dist/templates/demos/mail.js.map +1 -1
- package/dist/templates/demos/notifications.d.ts.map +1 -1
- package/dist/templates/demos/notifications.js +2 -10
- package/dist/templates/demos/notifications.js.map +1 -1
- package/dist/templates/demos/pennant.d.ts.map +1 -1
- package/dist/templates/demos/pennant.js +15 -18
- package/dist/templates/demos/pennant.js.map +1 -1
- package/dist/templates/demos/polymorphic.d.ts.map +1 -1
- package/dist/templates/demos/polymorphic.js +2 -10
- package/dist/templates/demos/polymorphic.js.map +1 -1
- package/dist/templates/demos/queue.d.ts.map +1 -1
- package/dist/templates/demos/queue.js +2 -10
- package/dist/templates/demos/queue.js.map +1 -1
- package/dist/templates/demos/sync.d.ts.map +1 -1
- package/dist/templates/demos/sync.js +2 -9
- package/dist/templates/demos/sync.js.map +1 -1
- package/dist/templates/demos/system-info.d.ts.map +1 -1
- package/dist/templates/demos/system-info.js +2 -10
- package/dist/templates/demos/system-info.js.map +1 -1
- package/dist/templates/demos/todos.d.ts.map +1 -1
- package/dist/templates/demos/todos.js +2 -10
- package/dist/templates/demos/todos.js.map +1 -1
- package/dist/templates/demos/ws.d.ts.map +1 -1
- package/dist/templates/demos/ws.js +2 -9
- package/dist/templates/demos/ws.js.map +1 -1
- package/dist/templates/package-json.d.ts.map +1 -1
- package/dist/templates/package-json.js +4 -0
- package/dist/templates/package-json.js.map +1 -1
- package/dist/templates/pages/ai-chat.js +3 -3
- package/dist/templates/pages/demo.js +3 -3
- package/dist/templates/pages/error.js +3 -3
- package/dist/templates/pages/index.d.ts.map +1 -1
- package/dist/templates/pages/index.js +31 -12
- package/dist/templates/pages/index.js.map +1 -1
- package/dist/templates/routes/console.d.ts +2 -1
- package/dist/templates/routes/console.d.ts.map +1 -1
- package/dist/templates/routes/console.js +28 -20
- package/dist/templates/routes/console.js.map +1 -1
- package/dist/templates/routes/web.d.ts.map +1 -1
- package/dist/templates/routes/web.js +8 -23
- package/dist/templates/routes/web.js.map +1 -1
- package/dist/templates/views/welcome.d.ts +3 -3
- package/dist/templates/views/welcome.d.ts.map +1 -1
- package/dist/templates/views/welcome.js +22 -144
- package/dist/templates/views/welcome.js.map +1 -1
- package/dist/templates.d.ts +1 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +9 -1
- package/dist/templates.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect when create-rudder-app is running inside an AI coding agent.
|
|
3
|
+
*
|
|
4
|
+
* In agent contexts the interactive @clack/prompts UI degrades to garbage
|
|
5
|
+
* (TTY redraws, ANSI escapes the agent can't fill in), and the agent often
|
|
6
|
+
* just hangs or times out. When detected, the installer switches to a
|
|
7
|
+
* non-interactive flag-driven mode and emits a single line of JSON to stdout.
|
|
8
|
+
*
|
|
9
|
+
* Inspired by Laravel Installer v5.27 (Joe Tannenbaum, 2025).
|
|
10
|
+
*/
|
|
11
|
+
export interface AgentDetectionResult {
|
|
12
|
+
detected: boolean;
|
|
13
|
+
/** Friendly name of the detected agent, included in JSON output. */
|
|
14
|
+
name?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Inspect process.env for markers set by common agent runtimes.
|
|
18
|
+
* Returns the first match in declaration order.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectAgent(env?: NodeJS.ProcessEnv): AgentDetectionResult;
|
|
21
|
+
//# sourceMappingURL=agent-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-detect.d.ts","sourceRoot":"","sources":["../src/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,oEAAoE;IACpE,IAAI,CAAC,EAAK,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,oBAAoB,CA8BtF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inspect process.env for markers set by common agent runtimes.
|
|
3
|
+
* Returns the first match in declaration order.
|
|
4
|
+
*/
|
|
5
|
+
export function detectAgent(env = process.env) {
|
|
6
|
+
// Claude Code — sets CLAUDECODE=1 and CLAUDE_CODE_ENTRYPOINT
|
|
7
|
+
if (env['CLAUDECODE'] || env['CLAUDE_CODE_ENTRYPOINT']) {
|
|
8
|
+
return { detected: true, name: 'claude-code' };
|
|
9
|
+
}
|
|
10
|
+
// Cursor — sets CURSOR_TRACE_ID; also reports TERM_PROGRAM=cursor in the integrated terminal
|
|
11
|
+
if (env['CURSOR_TRACE_ID'] || env['TERM_PROGRAM'] === 'cursor') {
|
|
12
|
+
return { detected: true, name: 'cursor' };
|
|
13
|
+
}
|
|
14
|
+
// GitHub Copilot CLI
|
|
15
|
+
if (env['GITHUB_COPILOT_CLI']) {
|
|
16
|
+
return { detected: true, name: 'copilot' };
|
|
17
|
+
}
|
|
18
|
+
// OpenAI Codex CLI
|
|
19
|
+
if (env['CODEX_CLI'] || env['OPENAI_CODEX']) {
|
|
20
|
+
return { detected: true, name: 'codex' };
|
|
21
|
+
}
|
|
22
|
+
// Google Gemini CLI
|
|
23
|
+
if (env['GEMINI_CLI']) {
|
|
24
|
+
return { detected: true, name: 'gemini' };
|
|
25
|
+
}
|
|
26
|
+
// Windsurf
|
|
27
|
+
if (env['WINDSURF_AGENT'] || env['WINDSURF']) {
|
|
28
|
+
return { detected: true, name: 'windsurf' };
|
|
29
|
+
}
|
|
30
|
+
// Generic opt-in (CI, scripts, custom integrations)
|
|
31
|
+
if (env['RUDDER_NONINTERACTIVE'] === '1' || env['RUDDER_NONINTERACTIVE'] === 'true') {
|
|
32
|
+
return { detected: true, name: 'noninteractive' };
|
|
33
|
+
}
|
|
34
|
+
return { detected: false };
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=agent-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-detect.js","sourceRoot":"","sources":["../src/agent-detect.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC9D,6DAA6D;IAC7D,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAChD,CAAC;IACD,6FAA6F;IAC7F,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC3C,CAAC;IACD,qBAAqB;IACrB,IAAI,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IAC5C,CAAC;IACD,mBAAmB;IACnB,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC1C,CAAC;IACD,oBAAoB;IACpB,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC3C,CAAC;IACD,WAAW;IACX,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IAC7C,CAAC;IACD,oDAAoD;IACpD,IAAI,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,KAAK,MAAM,EAAE,CAAC;QACpF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;IACnD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC5B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { TemplateContext } from './templates.js';
|
|
2
|
+
export type Frameworks = ('react' | 'vue' | 'solid')[];
|
|
3
|
+
export type Orm = 'prisma' | 'drizzle' | false;
|
|
4
|
+
export type Db = 'sqlite' | 'postgresql' | 'mysql';
|
|
5
|
+
export interface Answers {
|
|
6
|
+
name: string;
|
|
7
|
+
orm: Orm;
|
|
8
|
+
db: Db;
|
|
9
|
+
packages: TemplateContext['packages'];
|
|
10
|
+
frameworks: Frameworks;
|
|
11
|
+
primary: 'react' | 'vue' | 'solid';
|
|
12
|
+
tailwind: boolean;
|
|
13
|
+
shadcn: boolean;
|
|
14
|
+
demos: string[];
|
|
15
|
+
install: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type PartialAnswers = Partial<Answers>;
|
|
18
|
+
export interface ParsedFlags {
|
|
19
|
+
name: string | undefined;
|
|
20
|
+
partial: PartialAnswers;
|
|
21
|
+
jsonRequested: boolean;
|
|
22
|
+
forceInteractive: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class FlagError extends Error {
|
|
25
|
+
}
|
|
26
|
+
export declare const PACKAGE_KEYS: ReadonlyArray<keyof TemplateContext['packages']>;
|
|
27
|
+
export declare const DB_GATED: Set<string>;
|
|
28
|
+
export declare function emptyPackages(): TemplateContext['packages'];
|
|
29
|
+
export declare function packagesFromList(list: string[], orm: Orm): TemplateContext['packages'];
|
|
30
|
+
export declare function parseFlags(argv: string[]): ParsedFlags;
|
|
31
|
+
export declare function validateJsonMode(name: string | undefined, p: PartialAnswers): string[];
|
|
32
|
+
export declare function resolveJsonAnswers(name: string, p: PartialAnswers): Answers;
|
|
33
|
+
//# sourceMappingURL=cli-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-flags.d.ts","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;AACtD,MAAM,MAAM,GAAG,GAAU,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;AACrD,MAAM,MAAM,EAAE,GAAW,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAQ,MAAM,CAAA;IAClB,GAAG,EAAS,GAAG,CAAA;IACf,EAAE,EAAU,EAAE,CAAA;IACd,QAAQ,EAAI,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB,KAAK,EAAO,MAAM,EAAE,CAAA;IACpB,OAAO,EAAK,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAc,MAAM,GAAG,SAAS,CAAA;IACpC,OAAO,EAAW,cAAc,CAAA;IAChC,aAAa,EAAK,OAAO,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,qBAAa,SAAU,SAAQ,KAAK;CAAG;AAEvC,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAQhE,CAAA;AAEV,eAAO,MAAM,QAAQ,aAA2C,CAAA;AAEhE,wBAAgB,aAAa,IAAI,eAAe,CAAC,UAAU,CAAC,CAI3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAWtF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CA2EtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAetF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAmB3E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { availableDemos, DEMOS } from './templates/demos/registry.js';
|
|
2
|
+
export class FlagError extends Error {
|
|
3
|
+
}
|
|
4
|
+
export const PACKAGE_KEYS = [
|
|
5
|
+
'auth', 'sanctum', 'passport', 'socialite',
|
|
6
|
+
'queue', 'storage', 'scheduler',
|
|
7
|
+
'image', 'mail', 'notifications', 'broadcast', 'sync',
|
|
8
|
+
'ai', 'mcp', 'boost',
|
|
9
|
+
'localization', 'pennant',
|
|
10
|
+
'telescope', 'pulse', 'horizon',
|
|
11
|
+
'crypt', 'http', 'process', 'concurrency', 'terminal',
|
|
12
|
+
];
|
|
13
|
+
export const DB_GATED = new Set(['auth', 'sanctum', 'passport']);
|
|
14
|
+
export function emptyPackages() {
|
|
15
|
+
const out = {};
|
|
16
|
+
for (const k of PACKAGE_KEYS)
|
|
17
|
+
out[k] = false;
|
|
18
|
+
return out;
|
|
19
|
+
}
|
|
20
|
+
export function packagesFromList(list, orm) {
|
|
21
|
+
const out = emptyPackages();
|
|
22
|
+
const wanted = list.includes('*')
|
|
23
|
+
? PACKAGE_KEYS.filter(k => orm !== false || !DB_GATED.has(k))
|
|
24
|
+
: list;
|
|
25
|
+
for (const k of wanted) {
|
|
26
|
+
if (PACKAGE_KEYS.includes(k)) {
|
|
27
|
+
;
|
|
28
|
+
out[k] = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
export function parseFlags(argv) {
|
|
34
|
+
let name;
|
|
35
|
+
const flags = {};
|
|
36
|
+
const bools = {};
|
|
37
|
+
for (const arg of argv) {
|
|
38
|
+
if (!arg.startsWith('--')) {
|
|
39
|
+
if (!name)
|
|
40
|
+
name = arg;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const eq = arg.indexOf('=');
|
|
44
|
+
if (eq !== -1)
|
|
45
|
+
flags[arg.slice(2, eq)] = arg.slice(eq + 1);
|
|
46
|
+
else
|
|
47
|
+
bools[arg.slice(2)] = true;
|
|
48
|
+
}
|
|
49
|
+
const partial = {};
|
|
50
|
+
if (flags['orm']) {
|
|
51
|
+
const v = flags['orm'];
|
|
52
|
+
if (v === 'none')
|
|
53
|
+
partial.orm = false;
|
|
54
|
+
else if (v === 'prisma' || v === 'drizzle')
|
|
55
|
+
partial.orm = v;
|
|
56
|
+
else
|
|
57
|
+
throw new FlagError(`--orm must be one of: prisma, drizzle, none (got "${v}")`);
|
|
58
|
+
}
|
|
59
|
+
if (flags['db']) {
|
|
60
|
+
const v = flags['db'];
|
|
61
|
+
if (v === 'sqlite' || v === 'postgresql' || v === 'mysql')
|
|
62
|
+
partial.db = v;
|
|
63
|
+
else
|
|
64
|
+
throw new FlagError(`--db must be one of: sqlite, postgresql, mysql (got "${v}")`);
|
|
65
|
+
}
|
|
66
|
+
if (flags['packages'] !== undefined) {
|
|
67
|
+
const list = flags['packages'].split(',').map(s => s.trim()).filter(Boolean);
|
|
68
|
+
const valid = new Set([...PACKAGE_KEYS, '*']);
|
|
69
|
+
for (const k of list) {
|
|
70
|
+
if (!valid.has(k))
|
|
71
|
+
throw new FlagError(`--packages: unknown package "${k}". Valid: ${[...valid].join(', ')}`);
|
|
72
|
+
}
|
|
73
|
+
partial.packages = packagesFromList(list, partial.orm ?? 'prisma');
|
|
74
|
+
}
|
|
75
|
+
if (flags['frameworks'] !== undefined) {
|
|
76
|
+
const list = flags['frameworks'].split(',').map(s => s.trim()).filter(Boolean);
|
|
77
|
+
for (const f of list) {
|
|
78
|
+
if (f !== 'react' && f !== 'vue' && f !== 'solid') {
|
|
79
|
+
throw new FlagError(`--frameworks: unknown framework "${f}". Valid: react, vue, solid`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (list.length === 0)
|
|
83
|
+
throw new FlagError('--frameworks must include at least one of: react, vue, solid');
|
|
84
|
+
partial.frameworks = list;
|
|
85
|
+
}
|
|
86
|
+
if (flags['primary-framework']) {
|
|
87
|
+
const v = flags['primary-framework'];
|
|
88
|
+
if (v !== 'react' && v !== 'vue' && v !== 'solid') {
|
|
89
|
+
throw new FlagError(`--primary-framework must be one of: react, vue, solid (got "${v}")`);
|
|
90
|
+
}
|
|
91
|
+
partial.primary = v;
|
|
92
|
+
}
|
|
93
|
+
if ('tailwind' in flags)
|
|
94
|
+
partial.tailwind = flags['tailwind'] === 'true';
|
|
95
|
+
if ('shadcn' in flags)
|
|
96
|
+
partial.shadcn = flags['shadcn'] === 'true';
|
|
97
|
+
if ('install' in flags)
|
|
98
|
+
partial.install = flags['install'] === 'true';
|
|
99
|
+
if (flags['demos'] !== undefined) {
|
|
100
|
+
const list = flags['demos'].split(',').map(s => s.trim()).filter(Boolean);
|
|
101
|
+
if (list.includes('*')) {
|
|
102
|
+
partial.demos = ['*'];
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const valid = new Set(DEMOS.map(d => d.value));
|
|
106
|
+
for (const d of list) {
|
|
107
|
+
if (!valid.has(d))
|
|
108
|
+
throw new FlagError(`--demos: unknown demo "${d}". Valid: ${[...valid].join(', ')}`);
|
|
109
|
+
}
|
|
110
|
+
partial.demos = list;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
name,
|
|
115
|
+
partial,
|
|
116
|
+
jsonRequested: bools['json'] ?? false,
|
|
117
|
+
forceInteractive: bools['interactive'] ?? false,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export function validateJsonMode(name, p) {
|
|
121
|
+
const missing = [];
|
|
122
|
+
if (!name)
|
|
123
|
+
missing.push('<project-name>');
|
|
124
|
+
if (p.orm === undefined)
|
|
125
|
+
missing.push('--orm');
|
|
126
|
+
if (p.orm !== false && !p.db)
|
|
127
|
+
missing.push('--db');
|
|
128
|
+
if (p.packages === undefined)
|
|
129
|
+
missing.push('--packages');
|
|
130
|
+
if (!p.frameworks)
|
|
131
|
+
missing.push('--frameworks');
|
|
132
|
+
if (p.frameworks && p.frameworks.length > 1 && !p.primary)
|
|
133
|
+
missing.push('--primary-framework');
|
|
134
|
+
if (p.tailwind === undefined)
|
|
135
|
+
missing.push('--tailwind');
|
|
136
|
+
if (p.frameworks?.includes('react') && p.tailwind === true && p.shadcn === undefined) {
|
|
137
|
+
missing.push('--shadcn');
|
|
138
|
+
}
|
|
139
|
+
if (p.demos === undefined)
|
|
140
|
+
missing.push('--demos');
|
|
141
|
+
if (p.install === undefined)
|
|
142
|
+
missing.push('--install');
|
|
143
|
+
return missing;
|
|
144
|
+
}
|
|
145
|
+
export function resolveJsonAnswers(name, p) {
|
|
146
|
+
const orm = p.orm;
|
|
147
|
+
const db = (orm === false ? 'sqlite' : p.db);
|
|
148
|
+
const packages = p.packages;
|
|
149
|
+
const frameworks = p.frameworks;
|
|
150
|
+
const primary = p.primary ?? frameworks[0];
|
|
151
|
+
const tailwind = p.tailwind;
|
|
152
|
+
const shadcn = p.shadcn ?? false;
|
|
153
|
+
let demos = [];
|
|
154
|
+
if (p.demos) {
|
|
155
|
+
if (p.demos.includes('*')) {
|
|
156
|
+
demos = primary === 'react' ? availableDemos(orm, packages).map(d => d.value) : [];
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
demos = p.demos;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { name, orm, db, packages, frameworks, primary, tailwind, shadcn, demos, install: p.install };
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=cli-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-flags.js","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AA4BrE,MAAM,OAAO,SAAU,SAAQ,KAAK;CAAG;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAqD;IAC5E,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW;IAC1C,OAAO,EAAE,SAAS,EAAE,WAAW;IAC/B,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM;IACrD,IAAI,EAAE,KAAK,EAAE,OAAO;IACpB,cAAc,EAAE,SAAS;IACzB,WAAW,EAAE,OAAO,EAAE,SAAS;IAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU;CAC7C,CAAA;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AAEhE,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,EAAiC,CAAA;IAC7C,KAAK,MAAM,CAAC,IAAI,YAAY;QAAG,GAA+B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;IACzE,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,GAAQ;IACvD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC/B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;QACvE,CAAC,CAAC,IAAI,CAAA;IACR,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAK,YAAsC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,CAAC;YAAC,GAA+B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,IAAI,IAAwB,CAAA;IAC5B,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,MAAM,KAAK,GAA4B,EAAE,CAAA;IAEzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAA;YACrB,SAAQ;QACV,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;;YACrD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACjC,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,CAAA;IAElC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACtB,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,CAAC,GAAG,GAAG,KAAK,CAAA;aAChC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;;YACtD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,IAAI,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;;YACpE,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,IAAI,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,YAAqC,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/G,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAe,CAAA;QAC5F,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBAClD,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,6BAA6B,CAAC,CAAA;YACzF,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAA;QAC1G,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAClD,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,IAAI,CAAC,CAAA;QAC3F,CAAC;QACD,OAAO,CAAC,OAAO,GAAG,CAAC,CAAA;IACrB,CAAC;IACD,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;IACxE,IAAI,QAAQ,IAAI,KAAK;QAAI,OAAO,CAAC,MAAM,GAAK,KAAK,CAAC,QAAQ,CAAC,KAAO,MAAM,CAAA;IACxE,IAAI,SAAS,IAAI,KAAK;QAAG,OAAO,CAAC,OAAO,GAAI,KAAK,CAAC,SAAS,CAAC,KAAM,MAAM,CAAA;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACzE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACzG,CAAC;YACD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,OAAO;QACP,aAAa,EAAK,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK;QACxC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK;KAChD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAwB,EAAE,CAAiB;IAC1E,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACzC,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;QAAS,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrD,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;QAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC1D,IAAI,CAAC,CAAC,CAAC,UAAU;QAAe,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC5D,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAC9F,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC1D,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACzD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,CAAiB;IAChE,MAAM,GAAG,GAAU,CAAC,CAAC,GAAI,CAAA;IACzB,MAAM,EAAE,GAAW,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,CAAO,CAAA;IAC3D,MAAM,QAAQ,GAAK,CAAC,CAAC,QAAS,CAAA;IAC9B,MAAM,UAAU,GAAG,CAAC,CAAC,UAAW,CAAA;IAChC,MAAM,OAAO,GAAM,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAE,CAAA;IAC9C,MAAM,QAAQ,GAAK,CAAC,CAAC,QAAS,CAAA;IAC9B,MAAM,MAAM,GAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAA;IAEpC,IAAI,KAAK,GAAa,EAAE,CAAA;IACxB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;QACjB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAQ,EAAE,CAAA;AACvG,CAAC"}
|