create-rudder 1.4.0 → 1.5.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/README.md +23 -5
- 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 +60 -0
- package/dist/cli-flags.d.ts.map +1 -0
- package/dist/cli-flags.js +251 -0
- package/dist/cli-flags.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +642 -0
- package/dist/index.js.map +1 -0
- package/dist/logo.d.ts +6 -0
- package/dist/logo.d.ts.map +1 -0
- package/dist/logo.js +52 -0
- package/dist/logo.js.map +1 -0
- package/dist/templates/app/auth-controller.d.ts +2 -0
- package/dist/templates/app/auth-controller.d.ts.map +1 -0
- package/dist/templates/app/auth-controller.js +53 -0
- package/dist/templates/app/auth-controller.js.map +1 -0
- package/dist/templates/app/mcp-echo-server.d.ts +2 -0
- package/dist/templates/app/mcp-echo-server.d.ts.map +1 -0
- package/dist/templates/app/mcp-echo-server.js +13 -0
- package/dist/templates/app/mcp-echo-server.js.map +1 -0
- package/dist/templates/app/mcp-echo-tool.d.ts +2 -0
- package/dist/templates/app/mcp-echo-tool.d.ts.map +1 -0
- package/dist/templates/app/mcp-echo-tool.js +20 -0
- package/dist/templates/app/mcp-echo-tool.js.map +1 -0
- package/dist/templates/app/service-provider.d.ts +3 -0
- package/dist/templates/app/service-provider.d.ts.map +1 -0
- package/dist/templates/app/service-provider.js +33 -0
- package/dist/templates/app/service-provider.js.map +1 -0
- 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/app/user-model.d.ts +2 -0
- package/dist/templates/app/user-model.d.ts.map +1 -0
- package/dist/templates/app/user-model.js +19 -0
- package/dist/templates/app/user-model.js.map +1 -0
- package/dist/templates/bootstrap/app.d.ts +3 -0
- package/dist/templates/bootstrap/app.d.ts.map +1 -0
- package/dist/templates/bootstrap/app.js +41 -0
- package/dist/templates/bootstrap/app.js.map +1 -0
- package/dist/templates/bootstrap/providers.d.ts +3 -0
- package/dist/templates/bootstrap/providers.d.ts.map +1 -0
- package/dist/templates/bootstrap/providers.js +27 -0
- package/dist/templates/bootstrap/providers.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 +233 -0
- package/dist/templates/components/site-header.js.map +1 -0
- package/dist/templates/configs/ai.d.ts +2 -0
- package/dist/templates/configs/ai.d.ts.map +1 -0
- package/dist/templates/configs/ai.js +32 -0
- package/dist/templates/configs/ai.js.map +1 -0
- package/dist/templates/configs/app.d.ts +2 -0
- package/dist/templates/configs/app.d.ts.map +1 -0
- package/dist/templates/configs/app.js +12 -0
- package/dist/templates/configs/app.js.map +1 -0
- package/dist/templates/configs/auth.d.ts +3 -0
- package/dist/templates/configs/auth.d.ts.map +1 -0
- package/dist/templates/configs/auth.js +16 -0
- package/dist/templates/configs/auth.js.map +1 -0
- package/dist/templates/configs/cache.d.ts +2 -0
- package/dist/templates/configs/cache.d.ts.map +1 -0
- package/dist/templates/configs/cache.js +28 -0
- package/dist/templates/configs/cache.js.map +1 -0
- package/dist/templates/configs/crypt.d.ts +2 -0
- package/dist/templates/configs/crypt.d.ts.map +1 -0
- package/dist/templates/configs/crypt.js +16 -0
- package/dist/templates/configs/crypt.js.map +1 -0
- package/dist/templates/configs/database.d.ts +3 -0
- package/dist/templates/configs/database.d.ts.map +1 -0
- package/dist/templates/configs/database.js +28 -0
- package/dist/templates/configs/database.js.map +1 -0
- package/dist/templates/configs/hash.d.ts +2 -0
- package/dist/templates/configs/hash.d.ts.map +1 -0
- package/dist/templates/configs/hash.js +12 -0
- package/dist/templates/configs/hash.js.map +1 -0
- package/dist/templates/configs/horizon.d.ts +2 -0
- package/dist/templates/configs/horizon.d.ts.map +1 -0
- package/dist/templates/configs/horizon.js +30 -0
- package/dist/templates/configs/horizon.js.map +1 -0
- package/dist/templates/configs/index.d.ts +3 -0
- package/dist/templates/configs/index.d.ts.map +1 -0
- package/dist/templates/configs/index.js +92 -0
- package/dist/templates/configs/index.js.map +1 -0
- package/dist/templates/configs/localization.d.ts +2 -0
- package/dist/templates/configs/localization.d.ts.map +1 -0
- package/dist/templates/configs/localization.js +13 -0
- package/dist/templates/configs/localization.js.map +1 -0
- package/dist/templates/configs/log.d.ts +2 -0
- package/dist/templates/configs/log.d.ts.map +1 -0
- package/dist/templates/configs/log.js +40 -0
- package/dist/templates/configs/log.js.map +1 -0
- package/dist/templates/configs/mail.d.ts +2 -0
- package/dist/templates/configs/mail.d.ts.map +1 -0
- package/dist/templates/configs/mail.js +33 -0
- package/dist/templates/configs/mail.js.map +1 -0
- package/dist/templates/configs/passport.d.ts +2 -0
- package/dist/templates/configs/passport.d.ts.map +1 -0
- package/dist/templates/configs/passport.js +22 -0
- package/dist/templates/configs/passport.js.map +1 -0
- package/dist/templates/configs/pennant.d.ts +2 -0
- package/dist/templates/configs/pennant.d.ts.map +1 -0
- package/dist/templates/configs/pennant.js +16 -0
- package/dist/templates/configs/pennant.js.map +1 -0
- package/dist/templates/configs/pulse.d.ts +2 -0
- package/dist/templates/configs/pulse.d.ts.map +1 -0
- package/dist/templates/configs/pulse.js +21 -0
- package/dist/templates/configs/pulse.js.map +1 -0
- package/dist/templates/configs/queue.d.ts +2 -0
- package/dist/templates/configs/queue.d.ts.map +1 -0
- package/dist/templates/configs/queue.js +28 -0
- package/dist/templates/configs/queue.js.map +1 -0
- package/dist/templates/configs/sanctum.d.ts +2 -0
- package/dist/templates/configs/sanctum.d.ts.map +1 -0
- package/dist/templates/configs/sanctum.js +19 -0
- package/dist/templates/configs/sanctum.js.map +1 -0
- package/dist/templates/configs/server.d.ts +2 -0
- package/dist/templates/configs/server.d.ts.map +1 -0
- package/dist/templates/configs/server.js +15 -0
- package/dist/templates/configs/server.js.map +1 -0
- package/dist/templates/configs/session.d.ts +2 -0
- package/dist/templates/configs/session.d.ts.map +1 -0
- package/dist/templates/configs/session.js +26 -0
- package/dist/templates/configs/session.js.map +1 -0
- package/dist/templates/configs/socialite.d.ts +2 -0
- package/dist/templates/configs/socialite.d.ts.map +1 -0
- package/dist/templates/configs/socialite.js +27 -0
- package/dist/templates/configs/socialite.js.map +1 -0
- package/dist/templates/configs/storage.d.ts +2 -0
- package/dist/templates/configs/storage.d.ts.map +1 -0
- package/dist/templates/configs/storage.js +35 -0
- package/dist/templates/configs/storage.js.map +1 -0
- package/dist/templates/configs/sync.d.ts +3 -0
- package/dist/templates/configs/sync.d.ts.map +1 -0
- package/dist/templates/configs/sync.js +17 -0
- package/dist/templates/configs/sync.js.map +1 -0
- package/dist/templates/configs/telescope.d.ts +2 -0
- package/dist/templates/configs/telescope.d.ts.map +1 -0
- package/dist/templates/configs/telescope.js +25 -0
- package/dist/templates/configs/telescope.js.map +1 -0
- package/dist/templates/css/index.d.ts +3 -0
- package/dist/templates/css/index.d.ts.map +1 -0
- package/dist/templates/css/index.js +140 -0
- package/dist/templates/css/index.js.map +1 -0
- package/dist/templates/css/plain.d.ts +2 -0
- package/dist/templates/css/plain.d.ts.map +1 -0
- package/dist/templates/css/plain.js +373 -0
- package/dist/templates/css/plain.js.map +1 -0
- package/dist/templates/css/tailwind.d.ts +2 -0
- package/dist/templates/css/tailwind.d.ts.map +1 -0
- package/dist/templates/css/tailwind.js +176 -0
- package/dist/templates/css/tailwind.js.map +1 -0
- package/dist/templates/env.d.ts +7 -0
- package/dist/templates/env.d.ts.map +1 -0
- package/dist/templates/env.js +113 -0
- package/dist/templates/env.js.map +1 -0
- package/dist/templates/package-json.d.ts +3 -0
- package/dist/templates/package-json.d.ts.map +1 -0
- package/dist/templates/package-json.js +204 -0
- package/dist/templates/package-json.js.map +1 -0
- package/dist/templates/package-managers.d.ts +14 -0
- package/dist/templates/package-managers.d.ts.map +1 -0
- package/dist/templates/package-managers.js +49 -0
- package/dist/templates/package-managers.js.map +1 -0
- package/dist/templates/pages/ai-chat.d.ts +7 -0
- package/dist/templates/pages/ai-chat.d.ts.map +1 -0
- package/dist/templates/pages/ai-chat.js +285 -0
- package/dist/templates/pages/ai-chat.js.map +1 -0
- package/dist/templates/pages/demo.d.ts +4 -0
- package/dist/templates/pages/demo.d.ts.map +1 -0
- package/dist/templates/pages/demo.js +71 -0
- package/dist/templates/pages/demo.js.map +1 -0
- package/dist/templates/pages/error.d.ts +7 -0
- package/dist/templates/pages/error.d.ts.map +1 -0
- package/dist/templates/pages/error.js +148 -0
- package/dist/templates/pages/error.js.map +1 -0
- package/dist/templates/pages/index.d.ts +22 -0
- package/dist/templates/pages/index.d.ts.map +1 -0
- package/dist/templates/pages/index.js +374 -0
- package/dist/templates/pages/index.js.map +1 -0
- package/dist/templates/prisma/auth.d.ts +2 -0
- package/dist/templates/prisma/auth.d.ts.map +1 -0
- package/dist/templates/prisma/auth.js +22 -0
- package/dist/templates/prisma/auth.js.map +1 -0
- package/dist/templates/prisma/base.d.ts +3 -0
- package/dist/templates/prisma/base.d.ts.map +1 -0
- package/dist/templates/prisma/base.js +14 -0
- package/dist/templates/prisma/base.js.map +1 -0
- package/dist/templates/prisma/config.d.ts +3 -0
- package/dist/templates/prisma/config.d.ts.map +1 -0
- package/dist/templates/prisma/config.js +15 -0
- package/dist/templates/prisma/config.js.map +1 -0
- package/dist/templates/prisma/notification.d.ts +2 -0
- package/dist/templates/prisma/notification.d.ts.map +1 -0
- package/dist/templates/prisma/notification.js +16 -0
- package/dist/templates/prisma/notification.js.map +1 -0
- package/dist/templates/prisma/passport.d.ts +2 -0
- package/dist/templates/prisma/passport.d.ts.map +1 -0
- package/dist/templates/prisma/passport.js +69 -0
- package/dist/templates/prisma/passport.js.map +1 -0
- package/dist/templates/routes/api.d.ts +3 -0
- package/dist/templates/routes/api.d.ts.map +1 -0
- package/dist/templates/routes/api.js +76 -0
- package/dist/templates/routes/api.js.map +1 -0
- package/dist/templates/routes/console.d.ts +3 -0
- package/dist/templates/routes/console.d.ts.map +1 -0
- package/dist/templates/routes/console.js +29 -0
- package/dist/templates/routes/console.js.map +1 -0
- package/dist/templates/routes/web.d.ts +4 -0
- package/dist/templates/routes/web.d.ts.map +1 -0
- package/dist/templates/routes/web.js +77 -0
- package/dist/templates/routes/web.js.map +1 -0
- package/dist/templates/routes-manifest.d.ts +28 -0
- package/dist/templates/routes-manifest.d.ts.map +1 -0
- package/dist/templates/routes-manifest.js +48 -0
- package/dist/templates/routes-manifest.js.map +1 -0
- package/dist/templates/server.d.ts +2 -0
- package/dist/templates/server.d.ts.map +1 -0
- package/dist/templates/server.js +10 -0
- package/dist/templates/server.js.map +1 -0
- package/dist/templates/tsconfig.d.ts +3 -0
- package/dist/templates/tsconfig.d.ts.map +1 -0
- package/dist/templates/tsconfig.js +33 -0
- package/dist/templates/tsconfig.js.map +1 -0
- package/dist/templates/views/welcome.d.ts +19 -0
- package/dist/templates/views/welcome.d.ts.map +1 -0
- package/dist/templates/views/welcome.js +338 -0
- package/dist/templates/views/welcome.js.map +1 -0
- package/dist/templates/vite.d.ts +3 -0
- package/dist/templates/vite.d.ts.map +1 -0
- package/dist/templates/vite.js +66 -0
- package/dist/templates/vite.js.map +1 -0
- package/dist/templates.d.ts +45 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +202 -0
- package/dist/templates.js.map +1 -0
- package/package.json +27 -7
- package/bin/index.mjs +0 -18
package/README.md
CHANGED
|
@@ -8,7 +8,13 @@ cd my-app && pnpm dev
|
|
|
8
8
|
# → http://localhost:3000 — welcome page + register/login working end-to-end
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The installer asks four to six questions, then runs `pnpm install`, generates the Prisma client, pushes the schema (for SQLite) or asks first (for Postgres/MySQL), publishes auth views, generates Passport keys (when selected), and initializes git — all in one shot.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
All four major package managers work. The installer detects which one you used and adapts every generated file, install command, and post-scaffold hint.
|
|
12
18
|
|
|
13
19
|
```bash
|
|
14
20
|
pnpm create rudder [name]
|
|
@@ -17,13 +23,15 @@ yarn create rudder [name]
|
|
|
17
23
|
bunx create-rudder [name]
|
|
18
24
|
```
|
|
19
25
|
|
|
20
|
-
Skip `[name]` to be prompted for one.
|
|
26
|
+
Skip `[name]` to be prompted for one.
|
|
27
|
+
|
|
28
|
+
> The legacy `create-rudder-app` invocation (`pnpm create rudder-app …`) still works — it now prints a one-line nudge to switch to `create-rudder` and otherwise scaffolds identically.
|
|
21
29
|
|
|
22
30
|
---
|
|
23
31
|
|
|
24
32
|
## Full documentation
|
|
25
33
|
|
|
26
|
-
|
|
34
|
+
The detailed scaffolder docs — recipe table, prompt-by-prompt walkthrough, generated structure, non-interactive (CI/AI agent) flag list, after-scaffold cascade — live with the framework guide:
|
|
27
35
|
|
|
28
36
|
- **Installation guide**: <https://github.com/rudderjs/rudder/blob/main/docs/guide/installation.md>
|
|
29
37
|
- **Main framework**: <https://github.com/rudderjs/rudder>
|
|
@@ -31,9 +39,19 @@ Recipe table, prompt-by-prompt walkthrough, generated structure, non-interactive
|
|
|
31
39
|
|
|
32
40
|
---
|
|
33
41
|
|
|
34
|
-
##
|
|
42
|
+
## Contributing to the scaffolder
|
|
43
|
+
|
|
44
|
+
The scaffolder source lives at `create-rudder/` in the framework monorepo (the `create-rudder-app` package is a thin stub that re-spawns this one):
|
|
35
45
|
|
|
36
|
-
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/rudderjs/rudder.git
|
|
48
|
+
cd rudder/create-rudder
|
|
49
|
+
pnpm install
|
|
50
|
+
pnpm build
|
|
51
|
+
node dist/index.js # launches the interactive CLI from source
|
|
52
|
+
pnpm test # template tests + snapshot baseline
|
|
53
|
+
pnpm smoke # default end-to-end smoke
|
|
54
|
+
```
|
|
37
55
|
|
|
38
56
|
---
|
|
39
57
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect when create-rudder 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,60 @@
|
|
|
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 type Recipe = 'web-app' | 'saas' | 'api-service' | 'realtime' | 'minimal' | 'custom';
|
|
6
|
+
export type Styling = 'tailwind+shadcn' | 'tailwind' | 'plain';
|
|
7
|
+
export interface Answers {
|
|
8
|
+
name: string;
|
|
9
|
+
recipe: Recipe;
|
|
10
|
+
orm: Orm;
|
|
11
|
+
db: Db;
|
|
12
|
+
packages: TemplateContext['packages'];
|
|
13
|
+
/** Single framework picked in the new flow; multi-framework only via legacy --frameworks flag. */
|
|
14
|
+
frameworks: Frameworks;
|
|
15
|
+
primary: 'react' | 'vue' | 'solid';
|
|
16
|
+
tailwind: boolean;
|
|
17
|
+
shadcn: boolean;
|
|
18
|
+
/** Whether to run `git init` + initial commit after scaffolding. */
|
|
19
|
+
git: boolean;
|
|
20
|
+
/** Whether the user's DB is currently reachable — set to false to skip `db:push`. */
|
|
21
|
+
dbReady: boolean;
|
|
22
|
+
install: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Recipe → packages preset. Each recipe is a curated bundle that covers
|
|
26
|
+
* what the named scenario actually needs. "Custom" carries no preset —
|
|
27
|
+
* the user picks packages via the (legacy) multiselect.
|
|
28
|
+
*/
|
|
29
|
+
export declare const RECIPES: Record<Exclude<Recipe, 'custom'>, {
|
|
30
|
+
packages: ReadonlyArray<keyof TemplateContext['packages']>;
|
|
31
|
+
needsOrm: boolean;
|
|
32
|
+
needsFrontend: boolean;
|
|
33
|
+
}>;
|
|
34
|
+
export type PartialAnswers = Partial<Answers>;
|
|
35
|
+
export interface ParsedFlags {
|
|
36
|
+
name: string | undefined;
|
|
37
|
+
partial: PartialAnswers;
|
|
38
|
+
jsonRequested: boolean;
|
|
39
|
+
forceInteractive: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare class FlagError extends Error {
|
|
42
|
+
}
|
|
43
|
+
export declare const PACKAGE_KEYS: ReadonlyArray<keyof TemplateContext['packages']>;
|
|
44
|
+
export declare const DB_GATED: Set<string>;
|
|
45
|
+
export declare function emptyPackages(): TemplateContext['packages'];
|
|
46
|
+
export declare function packagesFromList(list: string[], orm: Orm): TemplateContext['packages'];
|
|
47
|
+
export declare function parseFlags(argv: string[]): ParsedFlags;
|
|
48
|
+
/**
|
|
49
|
+
* JSON-mode required-flags validation.
|
|
50
|
+
*
|
|
51
|
+
* Two valid call shapes:
|
|
52
|
+
* 1. Recipe shortcut — `--recipe + --db + --install` (and `--framework`
|
|
53
|
+
* when the recipe has `needsFrontend: true`). Everything else inferred.
|
|
54
|
+
* 2. Legacy explicit — `--orm + --packages + --frameworks + --tailwind +
|
|
55
|
+
* --install` (the pre-recipe contract; still supported for older
|
|
56
|
+
* scripts/CI).
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateJsonMode(name: string | undefined, p: PartialAnswers): string[];
|
|
59
|
+
export declare function resolveJsonAnswers(name: string, p: PartialAnswers): Answers;
|
|
60
|
+
//# 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;AAErD,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;AAC1D,MAAM,MAAM,MAAM,GAAO,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC/F,MAAM,MAAM,OAAO,GAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAA;AAEjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAQ,MAAM,CAAA;IAClB,MAAM,EAAM,MAAM,CAAA;IAClB,GAAG,EAAS,GAAG,CAAA;IACf,EAAE,EAAU,EAAE,CAAA;IACd,QAAQ,EAAI,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,kGAAkG;IAClG,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB,oEAAoE;IACpE,GAAG,EAAS,OAAO,CAAA;IACnB,qFAAqF;IACrF,OAAO,EAAK,OAAO,CAAA;IACnB,OAAO,EAAK,OAAO,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;IACtD,QAAQ,EAAK,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC,CAAA;IAC7D,QAAQ,EAAK,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB,CAMS,CAAA;AAEV,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,CAmGtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CA4BtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAmD3E"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe → packages preset. Each recipe is a curated bundle that covers
|
|
3
|
+
* what the named scenario actually needs. "Custom" carries no preset —
|
|
4
|
+
* the user picks packages via the (legacy) multiselect.
|
|
5
|
+
*/
|
|
6
|
+
export const RECIPES = {
|
|
7
|
+
'web-app': { packages: ['auth'], needsOrm: true, needsFrontend: true },
|
|
8
|
+
'saas': { packages: ['auth', 'queue', 'mail', 'notifications'], needsOrm: true, needsFrontend: true },
|
|
9
|
+
'api-service': { packages: ['auth', 'http'], needsOrm: true, needsFrontend: false },
|
|
10
|
+
'realtime': { packages: ['auth', 'broadcast', 'sync'], needsOrm: true, needsFrontend: true },
|
|
11
|
+
'minimal': { packages: [], needsOrm: false, needsFrontend: false },
|
|
12
|
+
};
|
|
13
|
+
export class FlagError extends Error {
|
|
14
|
+
}
|
|
15
|
+
export const PACKAGE_KEYS = [
|
|
16
|
+
'auth', 'sanctum', 'passport', 'socialite',
|
|
17
|
+
'queue', 'storage', 'scheduler',
|
|
18
|
+
'image', 'mail', 'notifications', 'broadcast', 'sync',
|
|
19
|
+
'ai', 'mcp', 'boost',
|
|
20
|
+
'localization', 'pennant',
|
|
21
|
+
'telescope', 'pulse', 'horizon',
|
|
22
|
+
'crypt', 'http', 'process', 'concurrency', 'terminal',
|
|
23
|
+
];
|
|
24
|
+
export const DB_GATED = new Set(['auth', 'sanctum', 'passport']);
|
|
25
|
+
export function emptyPackages() {
|
|
26
|
+
const out = {};
|
|
27
|
+
for (const k of PACKAGE_KEYS)
|
|
28
|
+
out[k] = false;
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
export function packagesFromList(list, orm) {
|
|
32
|
+
const out = emptyPackages();
|
|
33
|
+
const wanted = list.includes('*')
|
|
34
|
+
? PACKAGE_KEYS.filter(k => orm !== false || !DB_GATED.has(k))
|
|
35
|
+
: list;
|
|
36
|
+
for (const k of wanted) {
|
|
37
|
+
if (PACKAGE_KEYS.includes(k)) {
|
|
38
|
+
;
|
|
39
|
+
out[k] = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
export function parseFlags(argv) {
|
|
45
|
+
let name;
|
|
46
|
+
const flags = {};
|
|
47
|
+
const bools = {};
|
|
48
|
+
for (const arg of argv) {
|
|
49
|
+
if (!arg.startsWith('--')) {
|
|
50
|
+
if (!name)
|
|
51
|
+
name = arg;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const eq = arg.indexOf('=');
|
|
55
|
+
if (eq !== -1)
|
|
56
|
+
flags[arg.slice(2, eq)] = arg.slice(eq + 1);
|
|
57
|
+
else
|
|
58
|
+
bools[arg.slice(2)] = true;
|
|
59
|
+
}
|
|
60
|
+
const partial = {};
|
|
61
|
+
if (flags['orm']) {
|
|
62
|
+
const v = flags['orm'];
|
|
63
|
+
if (v === 'none')
|
|
64
|
+
partial.orm = false;
|
|
65
|
+
else if (v === 'prisma' || v === 'drizzle')
|
|
66
|
+
partial.orm = v;
|
|
67
|
+
else
|
|
68
|
+
throw new FlagError(`--orm must be one of: prisma, drizzle, none (got "${v}")`);
|
|
69
|
+
}
|
|
70
|
+
if (flags['db']) {
|
|
71
|
+
const v = flags['db'];
|
|
72
|
+
if (v === 'sqlite' || v === 'postgresql' || v === 'mysql')
|
|
73
|
+
partial.db = v;
|
|
74
|
+
else
|
|
75
|
+
throw new FlagError(`--db must be one of: sqlite, postgresql, mysql (got "${v}")`);
|
|
76
|
+
}
|
|
77
|
+
if (flags['packages'] !== undefined) {
|
|
78
|
+
const list = flags['packages'].split(',').map(s => s.trim()).filter(Boolean);
|
|
79
|
+
const valid = new Set([...PACKAGE_KEYS, '*']);
|
|
80
|
+
for (const k of list) {
|
|
81
|
+
if (!valid.has(k))
|
|
82
|
+
throw new FlagError(`--packages: unknown package "${k}". Valid: ${[...valid].join(', ')}`);
|
|
83
|
+
}
|
|
84
|
+
partial.packages = packagesFromList(list, partial.orm ?? 'prisma');
|
|
85
|
+
}
|
|
86
|
+
if (flags['frameworks'] !== undefined) {
|
|
87
|
+
const list = flags['frameworks'].split(',').map(s => s.trim()).filter(Boolean);
|
|
88
|
+
for (const f of list) {
|
|
89
|
+
if (f !== 'react' && f !== 'vue' && f !== 'solid') {
|
|
90
|
+
throw new FlagError(`--frameworks: unknown framework "${f}". Valid: react, vue, solid`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (list.length === 0)
|
|
94
|
+
throw new FlagError('--frameworks must include at least one of: react, vue, solid');
|
|
95
|
+
partial.frameworks = list;
|
|
96
|
+
}
|
|
97
|
+
if (flags['primary-framework']) {
|
|
98
|
+
const v = flags['primary-framework'];
|
|
99
|
+
if (v !== 'react' && v !== 'vue' && v !== 'solid') {
|
|
100
|
+
throw new FlagError(`--primary-framework must be one of: react, vue, solid (got "${v}")`);
|
|
101
|
+
}
|
|
102
|
+
partial.primary = v;
|
|
103
|
+
}
|
|
104
|
+
if ('tailwind' in flags)
|
|
105
|
+
partial.tailwind = flags['tailwind'] === 'true';
|
|
106
|
+
if ('shadcn' in flags)
|
|
107
|
+
partial.shadcn = flags['shadcn'] === 'true';
|
|
108
|
+
if ('install' in flags)
|
|
109
|
+
partial.install = flags['install'] === 'true';
|
|
110
|
+
if ('git' in flags)
|
|
111
|
+
partial.git = flags['git'] === 'true';
|
|
112
|
+
if ('db-ready' in flags)
|
|
113
|
+
partial.dbReady = flags['db-ready'] === 'true';
|
|
114
|
+
// --recipe — preset that derives orm/packages/needsFrontend.
|
|
115
|
+
if (flags['recipe']) {
|
|
116
|
+
const v = flags['recipe'];
|
|
117
|
+
const valid = new Set(['web-app', 'saas', 'api-service', 'realtime', 'minimal', 'custom']);
|
|
118
|
+
if (!valid.has(v)) {
|
|
119
|
+
throw new FlagError(`--recipe must be one of: ${[...valid].join(', ')} (got "${v}")`);
|
|
120
|
+
}
|
|
121
|
+
partial.recipe = v;
|
|
122
|
+
}
|
|
123
|
+
// --framework — singular shortcut. Maps to --frameworks=react + --primary-framework=react.
|
|
124
|
+
if (flags['framework']) {
|
|
125
|
+
const v = flags['framework'];
|
|
126
|
+
if (v !== 'react' && v !== 'vue' && v !== 'solid' && v !== 'none') {
|
|
127
|
+
throw new FlagError(`--framework must be one of: react, vue, solid, none (got "${v}")`);
|
|
128
|
+
}
|
|
129
|
+
if (v === 'none') {
|
|
130
|
+
partial.frameworks = [];
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
partial.frameworks = [v];
|
|
134
|
+
partial.primary = v;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// --styling — collapses --tailwind + --shadcn into one. Explicit --tailwind/--shadcn override.
|
|
138
|
+
if (flags['styling']) {
|
|
139
|
+
const v = flags['styling'];
|
|
140
|
+
if (v !== 'tailwind+shadcn' && v !== 'tailwind' && v !== 'plain') {
|
|
141
|
+
throw new FlagError(`--styling must be one of: tailwind+shadcn, tailwind, plain (got "${v}")`);
|
|
142
|
+
}
|
|
143
|
+
if (partial.tailwind === undefined)
|
|
144
|
+
partial.tailwind = v !== 'plain';
|
|
145
|
+
if (partial.shadcn === undefined)
|
|
146
|
+
partial.shadcn = v === 'tailwind+shadcn';
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
name,
|
|
150
|
+
partial,
|
|
151
|
+
jsonRequested: bools['json'] ?? false,
|
|
152
|
+
forceInteractive: bools['interactive'] ?? false,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* JSON-mode required-flags validation.
|
|
157
|
+
*
|
|
158
|
+
* Two valid call shapes:
|
|
159
|
+
* 1. Recipe shortcut — `--recipe + --db + --install` (and `--framework`
|
|
160
|
+
* when the recipe has `needsFrontend: true`). Everything else inferred.
|
|
161
|
+
* 2. Legacy explicit — `--orm + --packages + --frameworks + --tailwind +
|
|
162
|
+
* --install` (the pre-recipe contract; still supported for older
|
|
163
|
+
* scripts/CI).
|
|
164
|
+
*/
|
|
165
|
+
export function validateJsonMode(name, p) {
|
|
166
|
+
const missing = [];
|
|
167
|
+
if (!name)
|
|
168
|
+
missing.push('<project-name>');
|
|
169
|
+
if (p.recipe) {
|
|
170
|
+
// Recipe path — most fields inferred from the preset.
|
|
171
|
+
if (p.recipe !== 'custom' && p.recipe !== 'minimal' && !p.db)
|
|
172
|
+
missing.push('--db');
|
|
173
|
+
const preset = p.recipe === 'custom' ? null : RECIPES[p.recipe];
|
|
174
|
+
if (preset?.needsFrontend && !p.frameworks?.length && !p.primary) {
|
|
175
|
+
missing.push('--framework');
|
|
176
|
+
}
|
|
177
|
+
if (p.recipe === 'custom' && p.packages === undefined)
|
|
178
|
+
missing.push('--packages');
|
|
179
|
+
if (p.install === undefined)
|
|
180
|
+
missing.push('--install');
|
|
181
|
+
return missing;
|
|
182
|
+
}
|
|
183
|
+
// Legacy explicit path
|
|
184
|
+
if (p.orm === undefined)
|
|
185
|
+
missing.push('--orm');
|
|
186
|
+
if (p.orm !== false && !p.db)
|
|
187
|
+
missing.push('--db');
|
|
188
|
+
if (p.packages === undefined)
|
|
189
|
+
missing.push('--packages');
|
|
190
|
+
if (!p.frameworks)
|
|
191
|
+
missing.push('--frameworks');
|
|
192
|
+
if (p.frameworks && p.frameworks.length > 1 && !p.primary)
|
|
193
|
+
missing.push('--primary-framework');
|
|
194
|
+
if (p.tailwind === undefined)
|
|
195
|
+
missing.push('--tailwind');
|
|
196
|
+
if (p.frameworks?.includes('react') && p.tailwind === true && p.shadcn === undefined) {
|
|
197
|
+
missing.push('--shadcn');
|
|
198
|
+
}
|
|
199
|
+
if (p.install === undefined)
|
|
200
|
+
missing.push('--install');
|
|
201
|
+
return missing;
|
|
202
|
+
}
|
|
203
|
+
export function resolveJsonAnswers(name, p) {
|
|
204
|
+
// Recipe path — derive everything from the preset, with explicit flags as overrides.
|
|
205
|
+
if (p.recipe) {
|
|
206
|
+
const recipe = p.recipe;
|
|
207
|
+
const preset = recipe === 'custom' ? null : RECIPES[recipe];
|
|
208
|
+
const orm = p.orm !== undefined
|
|
209
|
+
? p.orm
|
|
210
|
+
: (preset?.needsOrm ? 'prisma' : false);
|
|
211
|
+
const db = (orm === false ? 'sqlite' : (p.db ?? 'sqlite'));
|
|
212
|
+
const packages = recipe === 'custom'
|
|
213
|
+
? p.packages
|
|
214
|
+
: packagesFromList([...(preset?.packages ?? [])], orm);
|
|
215
|
+
// Allow explicit overrides on top of the recipe
|
|
216
|
+
if (recipe !== 'custom' && p.packages) {
|
|
217
|
+
for (const k of Object.keys(p.packages)) {
|
|
218
|
+
if (p.packages[k])
|
|
219
|
+
packages[k] = true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
const wantsFrontend = preset ? preset.needsFrontend : (p.frameworks?.length ?? 0) > 0;
|
|
223
|
+
const frameworks = wantsFrontend
|
|
224
|
+
? (p.frameworks?.length ? p.frameworks : ['react'])
|
|
225
|
+
: [];
|
|
226
|
+
const primary = (frameworks[0] ?? p.primary ?? 'react');
|
|
227
|
+
const tailwind = p.tailwind ?? wantsFrontend;
|
|
228
|
+
const shadcn = p.shadcn ?? (wantsFrontend && primary === 'react' && tailwind);
|
|
229
|
+
return {
|
|
230
|
+
name, recipe, orm, db, packages, frameworks, primary, tailwind, shadcn,
|
|
231
|
+
git: p.git ?? true,
|
|
232
|
+
dbReady: p.dbReady ?? (db === 'sqlite'),
|
|
233
|
+
install: p.install,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
// Legacy explicit path (pre-recipe)
|
|
237
|
+
const orm = p.orm;
|
|
238
|
+
const db = (orm === false ? 'sqlite' : p.db);
|
|
239
|
+
const packages = p.packages;
|
|
240
|
+
const frameworks = p.frameworks;
|
|
241
|
+
const primary = p.primary ?? frameworks[0];
|
|
242
|
+
const tailwind = p.tailwind;
|
|
243
|
+
const shadcn = p.shadcn ?? false;
|
|
244
|
+
return {
|
|
245
|
+
name, recipe: 'custom', orm, db, packages, frameworks, primary, tailwind, shadcn,
|
|
246
|
+
git: p.git ?? true,
|
|
247
|
+
dbReady: p.dbReady ?? (db === 'sqlite'),
|
|
248
|
+
install: p.install,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=cli-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-flags.js","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"AA0BA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAIf;IACH,SAAS,EAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAwC,QAAQ,EAAE,IAAI,EAAG,aAAa,EAAE,IAAI,EAAG;IAClH,MAAM,EAAS,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAM,QAAQ,EAAE,IAAI,EAAG,aAAa,EAAE,IAAI,EAAG;IAClH,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAgC,QAAQ,EAAE,IAAI,EAAG,aAAa,EAAE,KAAK,EAAE;IAClH,UAAU,EAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAmB,QAAQ,EAAE,IAAI,EAAG,aAAa,EAAE,IAAI,EAAG;IAClH,SAAS,EAAM,EAAE,QAAQ,EAAE,EAAE,EAA8C,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;CAC1G,CAAA;AAWV,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,IAAI,KAAK;QAAO,OAAO,CAAC,GAAG,GAAQ,KAAK,CAAC,KAAK,CAAC,KAAU,MAAM,CAAA;IACxE,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,CAAC,OAAO,GAAI,KAAK,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;IAExE,6DAA6D;IAC7D,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;QAClG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAW,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvF,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAW,CAAA;IAC9B,CAAC;IAED,2FAA2F;IAC3F,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;QAC5B,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YAClE,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,IAAI,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;YACxB,OAAO,CAAC,OAAO,GAAM,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,+FAA+F;IAC/F,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1B,IAAI,CAAC,KAAK,iBAAiB,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACjE,MAAM,IAAI,SAAS,CAAC,oEAAoE,CAAC,IAAI,CAAC,CAAA;QAChG,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,OAAO,CAAA;QACpE,IAAI,OAAO,CAAC,MAAM,KAAO,SAAS;YAAE,OAAO,CAAC,MAAM,GAAK,CAAC,KAAK,iBAAiB,CAAA;IAChF,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;;;;;;;;;GASG;AACH,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;IAEzC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,sDAAsD;QACtD,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAC/D,IAAI,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACjF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACtD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,uBAAuB;IACvB,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,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,qFAAqF;IACrF,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;QACvB,MAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,GAAG,GAAQ,CAAC,CAAC,GAAG,KAAK,SAAS;YAClC,CAAC,CAAC,CAAC,CAAC,GAAG;YACP,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,EAAE,GAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAO,CAAA;QAEpE,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ;YAClC,CAAC,CAAC,CAAC,CAAC,QAAS;YACb,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAa,EAAE,GAAG,CAAC,CAAA;QACpE,gDAAgD;QAChD,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAA0C,EAAE,CAAC;gBACjF,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAG,QAAoC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YACpE,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACrF,MAAM,UAAU,GAAe,aAAa;YAC1C,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,OAAO,GAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAA8B,CAAA;QACvF,MAAM,QAAQ,GAAK,CAAC,CAAC,QAAQ,IAAI,aAAa,CAAA;QAC9C,MAAM,MAAM,GAAO,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAA;QAEjF,OAAO;YACL,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;YACtE,GAAG,EAAM,CAAC,CAAC,GAAG,IAAQ,IAAI;YAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC;YACvC,OAAO,EAAE,CAAC,CAAC,OAAQ;SACpB,CAAA;IACH,CAAC;IAED,oCAAoC;IACpC,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,OAAO;QACL,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;QAChF,GAAG,EAAM,CAAC,CAAC,GAAG,IAAQ,IAAI;QAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,OAAQ;KACpB,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|