create-rudder-app 1.0.3 → 1.1.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 +74 -61
- package/dist/cli-flags.d.ts +36 -0
- package/dist/cli-flags.d.ts.map +1 -1
- package/dist/cli-flags.js +118 -23
- package/dist/cli-flags.js.map +1 -1
- package/dist/index.js +321 -160
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# create-rudder-app
|
|
2
2
|
|
|
3
|
-
**Spin up a production-ready [RudderJS](https://github.com/rudderjs/rudder) app in under 60 seconds** —
|
|
3
|
+
**Spin up a production-ready [RudderJS](https://github.com/rudderjs/rudder) app in under 60 seconds** — pick a recipe, the installer handles deps, database, auth views, and git init for you.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
pnpm create rudder-app my-app
|
|
7
|
-
cd my-app
|
|
8
|
-
pnpm exec prisma generate && pnpm exec prisma db push
|
|
9
|
-
pnpm dev
|
|
7
|
+
cd my-app && pnpm dev
|
|
10
8
|
# → http://localhost:3000 — welcome page + register/login working end-to-end
|
|
11
9
|
```
|
|
12
10
|
|
|
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. No copy-pasting commands from the "Next Steps" panel.
|
|
12
|
+
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
## Install
|
|
@@ -29,47 +29,56 @@ Skip `[name]` to be prompted for one.
|
|
|
29
29
|
|
|
30
30
|
## What you get out of the box
|
|
31
31
|
|
|
32
|
-
With the **
|
|
32
|
+
With the **Web app recipe** (Prisma + SQLite + Auth + React + Tailwind + shadcn/ui), you get a working fullstack app you can register into, log into, and sign out of — without writing any code:
|
|
33
33
|
|
|
34
34
|
- **Welcome page at `/`** — controller-returned view, Tailwind + shadcn styled, with Log in / Register links or a signed-in user + Sign out button.
|
|
35
35
|
- **Auth flow that works** — `/login`, `/register`, `/forgot-password`, `/reset-password` pages vendored into `app/Views/Auth/` (so you can customize them freely) and wired to `POST /auth/sign-in/email` / `sign-up/email` / `sign-out` / `request-password-reset` / `reset-password` endpoints.
|
|
36
|
-
- **Database ready** — Prisma schema with a `User` + `PasswordResetToken` model, SQLite by default, a `User` ORM model.
|
|
36
|
+
- **Database ready** — Prisma schema with a `User` + `PasswordResetToken` model, SQLite by default, a `User` ORM model. Schema pushed automatically on install.
|
|
37
37
|
- **Session-based auth** — cookie sessions via `@rudderjs/session`, `AuthMiddleware` applied to the `web` group, ghost-user-safe (see the [Request Lifecycle guide](https://github.com/rudderjs/rudder/blob/main/docs/guide/lifecycle.md)).
|
|
38
38
|
- **Rate limiting** — 60 req/min globally, 10 req/min on auth endpoints out of the box.
|
|
39
39
|
- **Bootstrap you can read** — `bootstrap/app.ts` in 25 lines, `bootstrap/providers.ts` shows auto-discovery, `config/` has one file per concern.
|
|
40
40
|
- **Rudder CLI** — `pnpm rudder --help` lists framework commands; `routes/console.ts` shows you how to add your own.
|
|
41
|
-
-
|
|
41
|
+
- **Git initialized** — initial commit made for you (use `--git=false` to skip).
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
Pick the **SaaS recipe** and you also get queue + mail + notifications. **Realtime** adds broadcast + sync. **API service** drops the frontend entirely. **Custom** lets you check exactly the packages you want from the full 25-package menu.
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
47
|
## Prompts
|
|
48
48
|
|
|
49
|
-
The installer
|
|
49
|
+
The installer asks at most six questions on the happy path:
|
|
50
50
|
|
|
51
51
|
| # | Prompt | Options | Default | Condition |
|
|
52
52
|
|---|--------|---------|---------|-----------|
|
|
53
53
|
| 1 | Project name | any string | — | always (skipped if passed as argv) |
|
|
54
|
-
| 2 |
|
|
55
|
-
| 3 | Database
|
|
56
|
-
| 4 |
|
|
57
|
-
| 5 | Frontend
|
|
58
|
-
| 6 |
|
|
59
|
-
| 7 |
|
|
60
|
-
| 8 |
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
| 2 | What are you building? *(recipe)* | Web app · SaaS · API service · Realtime · Minimal · Custom | Web app | always |
|
|
55
|
+
| 3 | Database | Prisma · Drizzle *(+ None for Minimal/Custom)* | Prisma | unless recipe is `minimal` |
|
|
56
|
+
| 4 | Database driver | SQLite · PostgreSQL · MySQL | SQLite | only when an ORM is selected |
|
|
57
|
+
| 5 | Frontend framework | React · Vue · Solid · None | React | unless recipe is `api-service`/`minimal` |
|
|
58
|
+
| 6 | Styling | Tailwind+shadcn · Tailwind · Plain CSS | Tailwind+shadcn (React) / Tailwind (Vue/Solid) | only when a framework is selected |
|
|
59
|
+
| 7 | Is your DB running now? | yes / no | yes | only for PostgreSQL/MySQL |
|
|
60
|
+
| 8 | Install and run setup? | yes / no | yes | always |
|
|
61
|
+
|
|
62
|
+
> **Not sure what to pick?** Accept every default — Web app with Prisma + SQLite + React + Tailwind + shadcn/ui is the best-tested path. You can [add packages later](#adding-packages-later).
|
|
63
|
+
|
|
64
|
+
### Recipes (prompt 2)
|
|
65
|
+
|
|
66
|
+
| Recipe | Adds on top of the framework core | Needs ORM | Needs frontend |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| **Web app** *(default)* | `auth` | yes | yes |
|
|
69
|
+
| **SaaS** | `auth` + `queue` + `mail` + `notifications` | yes | yes |
|
|
70
|
+
| **API service** | `auth` + `http` | yes | no |
|
|
71
|
+
| **Realtime** | `auth` + `broadcast` + `sync` | yes | yes |
|
|
72
|
+
| **Minimal** | nothing beyond the framework core | no | no |
|
|
73
|
+
| **Custom** | *(prompts you with the full 25-package multiselect)* | optional | optional |
|
|
74
|
+
|
|
75
|
+
Each recipe is a curated bundle. **Custom** is the escape hatch — if you want a specific mix, pick Custom and select exactly the packages you want from the legacy multiselect (8 categories, 25 packages).
|
|
65
76
|
|
|
66
77
|
### Tier A — silent install
|
|
67
78
|
|
|
68
79
|
`@rudderjs/session`, `@rudderjs/hash`, and `@rudderjs/cache` are installed unconditionally. They're required by the default bootstrap (rate-limit middleware needs cache; auth needs hash + session) so making them explicit-but-silent prevents broken projects when you don't tick Authentication.
|
|
69
80
|
|
|
70
|
-
###
|
|
71
|
-
|
|
72
|
-
Eight categories, 24 visible rows, one pre-checked. Picking ORM=none filters out the three DB-gated rows (Authentication, Sanctum, Passport). Category labels mirror the framework README.
|
|
81
|
+
### Custom recipe — full package list
|
|
73
82
|
|
|
74
83
|
```
|
|
75
84
|
─── Auth & Security ───
|
|
@@ -117,33 +126,16 @@ Package-specific behavior:
|
|
|
117
126
|
|
|
118
127
|
- **AI** — generates `config/ai.ts`, AI chat demo at `/ai-chat`, `POST /api/ai/chat`.
|
|
119
128
|
- **MCP** — generates `app/Mcp/EchoServer.ts` + `EchoTool.ts` and wires `POST /mcp/echo`.
|
|
120
|
-
- **Passport** — generates `config/passport.ts`, OAuth 2 routes (`/oauth/authorize`, `/oauth/token`, etc.), and `OAuthClient` + `OAuthAccessToken` Prisma models. Filtered out when ORM=none.
|
|
121
|
-
|
|
122
|
-
### Demos (prompt 9)
|
|
123
|
-
|
|
124
|
-
Each demo is a small view + one API endpoint, gated on the relevant package. The list is sourced from a single registry at `src/templates/demos/registry.ts` (also exported as `create-rudder-app/demos-registry` so the framework's own playground consumes it).
|
|
125
|
-
|
|
126
|
-
| Demo | Gate | What it shows |
|
|
127
|
-
|------|------|---------------|
|
|
128
|
-
| Contact form | always | CSRF + Zod validation, FormRequest-style errors |
|
|
129
|
-
| Cache counter | always | `Cache.get` + `Cache.set` round-trip |
|
|
130
|
-
| Todos | ORM | CRUD wired through ORM model + interactive UI |
|
|
131
|
-
| Queue dispatch | Queue | `ExampleJob.dispatch().send()` → handler logs |
|
|
132
|
-
| Mail send | Mail | `Mail.to(addr).send(new DemoMail(...))` via log driver |
|
|
133
|
-
| Notifications | Notifications + Mail | `notify(Notification.route('mail', addr), ...)` |
|
|
134
|
-
| Localization | Localization | locale switcher + `runWithLocale` + `trans()` |
|
|
135
|
-
| HTTP client | HTTP | `Http.retry(3, 200).timeout(5000).get(url)` against a public API |
|
|
136
|
-
| Avatar resize | Storage + Image | upload → 256×256 WebP via `@rudderjs/image` |
|
|
137
|
-
| Worker threads | Concurrency | sequential vs parallel `fib(n)` via `Concurrency.run()` |
|
|
138
|
-
| System info | Process | three shell commands via `Process.run()` and `Process.pool()` |
|
|
139
|
-
| Feature flags | Pennant + Auth | boolean / value / scoped / Lottery features + `FeatureMiddleware` |
|
|
140
|
-
| WebSocket chat | Broadcast | real-time chat + presence over a single WS |
|
|
141
|
-
| Yjs collaboration | Sync | CRDT live document with awareness cursors |
|
|
142
|
-
|
|
143
|
-
Demos are silently skipped when the primary framework isn't React (the templates ship React only for now).
|
|
129
|
+
- **Passport** — generates `config/passport.ts`, OAuth 2 routes (`/oauth/authorize`, `/oauth/token`, etc.), and `OAuthClient` + `OAuthAccessToken` Prisma models. Filtered out when ORM=none. The installer runs `pnpm rudder passport:keys` automatically to generate the RSA keypair.
|
|
144
130
|
|
|
145
131
|
Always-included base packages: `core`, `router`, `server-hono`, `middleware`, `vite`, `console`, `cli`, `log`, plus the Tier A trio above.
|
|
146
132
|
|
|
133
|
+
### What about demos?
|
|
134
|
+
|
|
135
|
+
Demos are no longer scaffolded into your project — they live in the [framework playground](https://github.com/rudderjs/rudder/tree/main/playground) and at [rudderjs.com/examples](https://rudderjs.com/examples). The previous "demos multiselect" added 1–15 demo pages under `app/Views/Demos/`; new users found that confusing ("is this my code?") and easy to forget to delete before deploying. The trade-off in favor of a clean scaffold won out.
|
|
136
|
+
|
|
137
|
+
If you want a guided tour, the playground runs every demo at once and is meant to be cloned + explored.
|
|
138
|
+
|
|
147
139
|
---
|
|
148
140
|
|
|
149
141
|
## Generated structure
|
|
@@ -239,19 +231,40 @@ Demos use the same semantic class vocabulary across all three variants — `.pag
|
|
|
239
231
|
|
|
240
232
|
## After scaffolding
|
|
241
233
|
|
|
242
|
-
|
|
234
|
+
When **Install and run setup** is `yes` (the default), the installer runs the whole cascade for you — `pnpm install`, `rudder providers:discover`, `rudder db:generate`, `rudder db:push` (for SQLite, or after confirming for Postgres/MySQL), `rudder vendor:publish --tag=auth-views-*` (if needed), `rudder passport:keys` (when Passport is selected), and `git init` + an initial commit. On the happy path the final panel says exactly one thing:
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
cd my-app && pnpm dev
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
If you said **no** to install, or a cascade step failed (e.g. your Postgres wasn't reachable), the panel prints only the steps you still need to run manually. Common ones:
|
|
243
241
|
|
|
244
242
|
| Step | pnpm | npm | yarn | bun |
|
|
245
243
|
|------|------|-----|------|-----|
|
|
246
|
-
| Install
|
|
247
|
-
| Discover providers
|
|
248
|
-
|
|
|
249
|
-
|
|
|
250
|
-
|
|
|
251
|
-
| Passport keys
|
|
244
|
+
| Install | `pnpm install` | `npm install` | `yarn install` | `bun install` |
|
|
245
|
+
| Discover providers | `pnpm rudder providers:discover` | `npm run rudder providers:discover` | `yarn rudder providers:discover` | `bun rudder providers:discover` |
|
|
246
|
+
| DB schema | `pnpm rudder db:push` | `npm run rudder db:push` | `yarn rudder db:push` | `bun rudder db:push` |
|
|
247
|
+
| Generate client (Prisma) | `pnpm rudder db:generate` | `npm run rudder db:generate` | `yarn rudder db:generate` | `bun rudder db:generate` |
|
|
248
|
+
| Publish auth views | `pnpm rudder vendor:publish --tag=auth-views-react` | `npm run rudder vendor:publish --tag=auth-views-react` | `yarn rudder vendor:publish --tag=auth-views-react` | `bun rudder vendor:publish --tag=auth-views-react` |
|
|
249
|
+
| Passport keys | `pnpm rudder passport:keys` | `npm run rudder passport:keys` | `yarn rudder passport:keys` | `bun rudder passport:keys` |
|
|
252
250
|
| Start dev server | `pnpm dev` | `npm run dev` | `yarn dev` | `bun dev` |
|
|
253
251
|
|
|
254
|
-
|
|
252
|
+
## Adding packages later
|
|
253
|
+
|
|
254
|
+
Scaffolding gives you a minimal default. When you want to grow:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
pnpm rudder add queue # installs @rudderjs/queue, generates config/queue.ts,
|
|
258
|
+
# wires it into config/index.ts, refreshes the manifest
|
|
259
|
+
|
|
260
|
+
pnpm rudder add ai # ANTHROPIC_API_KEY etc. — see the printed hint
|
|
261
|
+
pnpm rudder add telescope # debug dashboard at /telescope
|
|
262
|
+
pnpm rudder add passport # validates: passport requires auth + Prisma
|
|
263
|
+
|
|
264
|
+
pnpm rudder remove queue # uninstall + delete config/queue.ts + unregister
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Both commands are **idempotent** — re-running is safe. `add` refuses to overwrite an existing config file. `remove` refuses to break the dep graph (e.g. removing `auth` while `sanctum`/`passport` are installed prints a friendly error). See the [CLI guide](https://github.com/rudderjs/rudder/blob/main/docs/guide/rudder.md) for the full list of aliases.
|
|
255
268
|
|
|
256
269
|
---
|
|
257
270
|
|
|
@@ -270,11 +283,11 @@ pnpm rudder providers:discover
|
|
|
270
283
|
<details>
|
|
271
284
|
<summary><strong>Register or login returns 500 with a Prisma error</strong></summary>
|
|
272
285
|
|
|
273
|
-
Usually means the schema wasn't pushed.
|
|
286
|
+
Usually means the schema wasn't pushed. The installer normally does this for you on SQLite, and after you confirm "Is your DB running?" for Postgres/MySQL. To run it yourself:
|
|
274
287
|
|
|
275
288
|
```bash
|
|
276
|
-
pnpm
|
|
277
|
-
pnpm
|
|
289
|
+
pnpm rudder db:generate
|
|
290
|
+
pnpm rudder db:push
|
|
278
291
|
```
|
|
279
292
|
</details>
|
|
280
293
|
|
|
@@ -336,13 +349,13 @@ cd rudder/create-rudder-app
|
|
|
336
349
|
pnpm install
|
|
337
350
|
pnpm build
|
|
338
351
|
node dist/index.js # launches the interactive CLI from source
|
|
339
|
-
pnpm test #
|
|
352
|
+
pnpm test # template tests + snapshot baseline
|
|
340
353
|
pnpm smoke # default end-to-end smoke
|
|
354
|
+
pnpm smoke --profile=minimal # ORM=none + nothing else
|
|
341
355
|
pnpm smoke --profile=no-db # ORM=none + observability survivability
|
|
342
|
-
pnpm smoke --profile=demos-all # every demo at once
|
|
343
356
|
```
|
|
344
357
|
|
|
345
|
-
Template logic lives in `src/templates.ts` (pure — returns `Record<path, content>`, no filesystem) plus modular `src/templates/{configs,
|
|
358
|
+
Template logic lives in `src/templates.ts` (pure — returns `Record<path, content>`, no filesystem) plus modular `src/templates/{configs,prisma,…}/`. The entrypoint `src/index.ts` handles prompts + writes + the post-install cascade. Adding a new package option touches `templates/configs/`, `templates/package-json.ts`, and the `PACKAGE_GROUPS` map in `src/index.ts`. Adding a new recipe touches the `RECIPES` map in `src/cli-flags.ts` and (if a new prompt arm is needed) `src/index.ts`.
|
|
346
359
|
|
|
347
360
|
---
|
|
348
361
|
|
package/dist/cli-flags.d.ts
CHANGED
|
@@ -2,18 +2,44 @@ import type { TemplateContext } from './templates.js';
|
|
|
2
2
|
export type Frameworks = ('react' | 'vue' | 'solid')[];
|
|
3
3
|
export type Orm = 'prisma' | 'drizzle' | false;
|
|
4
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';
|
|
5
7
|
export interface Answers {
|
|
6
8
|
name: string;
|
|
9
|
+
recipe: Recipe;
|
|
7
10
|
orm: Orm;
|
|
8
11
|
db: Db;
|
|
9
12
|
packages: TemplateContext['packages'];
|
|
13
|
+
/** Single framework picked in the new flow; multi-framework only via legacy --frameworks flag. */
|
|
10
14
|
frameworks: Frameworks;
|
|
11
15
|
primary: 'react' | 'vue' | 'solid';
|
|
12
16
|
tailwind: boolean;
|
|
13
17
|
shadcn: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Demos selected for scaffolding.
|
|
20
|
+
*
|
|
21
|
+
* Deprecated as a user-facing concept: the recipe-driven flow always sets
|
|
22
|
+
* this to `[]`. Kept on the Answers shape so the templates pipeline and
|
|
23
|
+
* pre-recipe tests don't need to branch — `getTemplates` still iterates
|
|
24
|
+
* it, finds nothing, and skips every demo block.
|
|
25
|
+
*/
|
|
14
26
|
demos: string[];
|
|
27
|
+
/** Whether to run `git init` + initial commit after scaffolding. */
|
|
28
|
+
git: boolean;
|
|
29
|
+
/** Whether the user's DB is currently reachable — set to false to skip `db:push`. */
|
|
30
|
+
dbReady: boolean;
|
|
15
31
|
install: boolean;
|
|
16
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Recipe → packages preset. Each recipe is a curated bundle that covers
|
|
35
|
+
* what the named scenario actually needs. "Custom" carries no preset —
|
|
36
|
+
* the user picks packages via the (legacy) multiselect.
|
|
37
|
+
*/
|
|
38
|
+
export declare const RECIPES: Record<Exclude<Recipe, 'custom'>, {
|
|
39
|
+
packages: ReadonlyArray<keyof TemplateContext['packages']>;
|
|
40
|
+
needsOrm: boolean;
|
|
41
|
+
needsFrontend: boolean;
|
|
42
|
+
}>;
|
|
17
43
|
export type PartialAnswers = Partial<Answers>;
|
|
18
44
|
export interface ParsedFlags {
|
|
19
45
|
name: string | undefined;
|
|
@@ -28,6 +54,16 @@ export declare const DB_GATED: Set<string>;
|
|
|
28
54
|
export declare function emptyPackages(): TemplateContext['packages'];
|
|
29
55
|
export declare function packagesFromList(list: string[], orm: Orm): TemplateContext['packages'];
|
|
30
56
|
export declare function parseFlags(argv: string[]): ParsedFlags;
|
|
57
|
+
/**
|
|
58
|
+
* JSON-mode required-flags validation.
|
|
59
|
+
*
|
|
60
|
+
* Two valid call shapes:
|
|
61
|
+
* 1. Recipe shortcut — `--recipe + --db + --install` (and `--framework`
|
|
62
|
+
* when the recipe has `needsFrontend: true`). Everything else inferred.
|
|
63
|
+
* 2. Legacy explicit — `--orm + --packages + --frameworks + --tailwind +
|
|
64
|
+
* --install` (the pre-recipe contract; still supported for older
|
|
65
|
+
* scripts/CI).
|
|
66
|
+
*/
|
|
31
67
|
export declare function validateJsonMode(name: string | undefined, p: PartialAnswers): string[];
|
|
32
68
|
export declare function resolveJsonAnswers(name: string, p: PartialAnswers): Answers;
|
|
33
69
|
//# sourceMappingURL=cli-flags.d.ts.map
|
package/dist/cli-flags.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;;;;;;;OAOG;IACH,KAAK,EAAO,MAAM,EAAE,CAAA;IACpB,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,CAwGtD;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,CAqD3E"}
|
package/dist/cli-flags.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
|
|
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
|
+
};
|
|
2
13
|
export class FlagError extends Error {
|
|
3
14
|
}
|
|
4
15
|
export const PACKAGE_KEYS = [
|
|
@@ -96,20 +107,50 @@ export function parseFlags(argv) {
|
|
|
96
107
|
partial.shadcn = flags['shadcn'] === 'true';
|
|
97
108
|
if ('install' in flags)
|
|
98
109
|
partial.install = flags['install'] === 'true';
|
|
99
|
-
if (
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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 = [];
|
|
103
131
|
}
|
|
104
132
|
else {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (!valid.has(d))
|
|
108
|
-
throw new FlagError(`--demos: unknown demo "${d}". Valid: ${[...valid].join(', ')}`);
|
|
109
|
-
}
|
|
110
|
-
partial.demos = list;
|
|
133
|
+
partial.frameworks = [v];
|
|
134
|
+
partial.primary = v;
|
|
111
135
|
}
|
|
112
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
|
+
// --demos kept as a silent no-op for backwards compatibility — demos were dropped
|
|
149
|
+
// from the scaffolder default. Old scripts/CI passing `--demos=...` continue to
|
|
150
|
+
// work without error; nothing is scaffolded under /demos.
|
|
151
|
+
if (flags['demos'] !== undefined) {
|
|
152
|
+
partial.demos = [];
|
|
153
|
+
}
|
|
113
154
|
return {
|
|
114
155
|
name,
|
|
115
156
|
partial,
|
|
@@ -117,10 +158,35 @@ export function parseFlags(argv) {
|
|
|
117
158
|
forceInteractive: bools['interactive'] ?? false,
|
|
118
159
|
};
|
|
119
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* JSON-mode required-flags validation.
|
|
163
|
+
*
|
|
164
|
+
* Two valid call shapes:
|
|
165
|
+
* 1. Recipe shortcut — `--recipe + --db + --install` (and `--framework`
|
|
166
|
+
* when the recipe has `needsFrontend: true`). Everything else inferred.
|
|
167
|
+
* 2. Legacy explicit — `--orm + --packages + --frameworks + --tailwind +
|
|
168
|
+
* --install` (the pre-recipe contract; still supported for older
|
|
169
|
+
* scripts/CI).
|
|
170
|
+
*/
|
|
120
171
|
export function validateJsonMode(name, p) {
|
|
121
172
|
const missing = [];
|
|
122
173
|
if (!name)
|
|
123
174
|
missing.push('<project-name>');
|
|
175
|
+
if (p.recipe) {
|
|
176
|
+
// Recipe path — most fields inferred from the preset.
|
|
177
|
+
if (p.recipe !== 'custom' && p.recipe !== 'minimal' && !p.db)
|
|
178
|
+
missing.push('--db');
|
|
179
|
+
const preset = p.recipe === 'custom' ? null : RECIPES[p.recipe];
|
|
180
|
+
if (preset?.needsFrontend && !p.frameworks?.length && !p.primary) {
|
|
181
|
+
missing.push('--framework');
|
|
182
|
+
}
|
|
183
|
+
if (p.recipe === 'custom' && p.packages === undefined)
|
|
184
|
+
missing.push('--packages');
|
|
185
|
+
if (p.install === undefined)
|
|
186
|
+
missing.push('--install');
|
|
187
|
+
return missing;
|
|
188
|
+
}
|
|
189
|
+
// Legacy explicit path
|
|
124
190
|
if (p.orm === undefined)
|
|
125
191
|
missing.push('--orm');
|
|
126
192
|
if (p.orm !== false && !p.db)
|
|
@@ -136,13 +202,45 @@ export function validateJsonMode(name, p) {
|
|
|
136
202
|
if (p.frameworks?.includes('react') && p.tailwind === true && p.shadcn === undefined) {
|
|
137
203
|
missing.push('--shadcn');
|
|
138
204
|
}
|
|
139
|
-
if (p.demos === undefined)
|
|
140
|
-
missing.push('--demos');
|
|
141
205
|
if (p.install === undefined)
|
|
142
206
|
missing.push('--install');
|
|
143
207
|
return missing;
|
|
144
208
|
}
|
|
145
209
|
export function resolveJsonAnswers(name, p) {
|
|
210
|
+
// Recipe path — derive everything from the preset, with explicit flags as overrides.
|
|
211
|
+
if (p.recipe) {
|
|
212
|
+
const recipe = p.recipe;
|
|
213
|
+
const preset = recipe === 'custom' ? null : RECIPES[recipe];
|
|
214
|
+
const orm = p.orm !== undefined
|
|
215
|
+
? p.orm
|
|
216
|
+
: (preset?.needsOrm ? 'prisma' : false);
|
|
217
|
+
const db = (orm === false ? 'sqlite' : (p.db ?? 'sqlite'));
|
|
218
|
+
const packages = recipe === 'custom'
|
|
219
|
+
? p.packages
|
|
220
|
+
: packagesFromList([...(preset?.packages ?? [])], orm);
|
|
221
|
+
// Allow explicit overrides on top of the recipe
|
|
222
|
+
if (recipe !== 'custom' && p.packages) {
|
|
223
|
+
for (const k of Object.keys(p.packages)) {
|
|
224
|
+
if (p.packages[k])
|
|
225
|
+
packages[k] = true;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const wantsFrontend = preset ? preset.needsFrontend : (p.frameworks?.length ?? 0) > 0;
|
|
229
|
+
const frameworks = wantsFrontend
|
|
230
|
+
? (p.frameworks?.length ? p.frameworks : ['react'])
|
|
231
|
+
: [];
|
|
232
|
+
const primary = (frameworks[0] ?? p.primary ?? 'react');
|
|
233
|
+
const tailwind = p.tailwind ?? wantsFrontend;
|
|
234
|
+
const shadcn = p.shadcn ?? (wantsFrontend && primary === 'react' && tailwind);
|
|
235
|
+
return {
|
|
236
|
+
name, recipe, orm, db, packages, frameworks, primary, tailwind, shadcn,
|
|
237
|
+
demos: [],
|
|
238
|
+
git: p.git ?? true,
|
|
239
|
+
dbReady: p.dbReady ?? (db === 'sqlite'),
|
|
240
|
+
install: p.install,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
// Legacy explicit path (pre-recipe)
|
|
146
244
|
const orm = p.orm;
|
|
147
245
|
const db = (orm === false ? 'sqlite' : p.db);
|
|
148
246
|
const packages = p.packages;
|
|
@@ -150,15 +248,12 @@ export function resolveJsonAnswers(name, p) {
|
|
|
150
248
|
const primary = p.primary ?? frameworks[0];
|
|
151
249
|
const tailwind = p.tailwind;
|
|
152
250
|
const shadcn = p.shadcn ?? false;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return { name, orm, db, packages, frameworks, primary, tailwind, shadcn, demos, install: p.install };
|
|
251
|
+
return {
|
|
252
|
+
name, recipe: 'custom', orm, db, packages, frameworks, primary, tailwind, shadcn,
|
|
253
|
+
demos: [],
|
|
254
|
+
git: p.git ?? true,
|
|
255
|
+
dbReady: p.dbReady ?? (db === 'sqlite'),
|
|
256
|
+
install: p.install,
|
|
257
|
+
};
|
|
163
258
|
}
|
|
164
259
|
//# sourceMappingURL=cli-flags.js.map
|
package/dist/cli-flags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-flags.js","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-flags.js","sourceRoot":"","sources":["../src/cli-flags.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { intro, outro, text, select,
|
|
2
|
+
import { intro, outro, text, select, groupMultiselect, confirm, spinner, log, isCancel, cancel, } from '@clack/prompts';
|
|
3
3
|
import fs from 'node:fs/promises';
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { spawn } from 'node:child_process';
|
|
7
7
|
import { randomBytes } from 'node:crypto';
|
|
8
8
|
import { createRequire } from 'node:module';
|
|
9
|
-
import { getTemplates, detectPackageManager,
|
|
10
|
-
import { availableDemos } from './templates/demos/registry.js';
|
|
9
|
+
import { getTemplates, detectPackageManager, pmRun, pmInstall } from './templates.js';
|
|
11
10
|
import { detectAgent } from './agent-detect.js';
|
|
12
|
-
import { parseFlags, validateJsonMode, resolveJsonAnswers, packagesFromList, FlagError, DB_GATED, } from './cli-flags.js';
|
|
11
|
+
import { parseFlags, validateJsonMode, resolveJsonAnswers, packagesFromList, FlagError, DB_GATED, RECIPES, } from './cli-flags.js';
|
|
13
12
|
// ──────────────────────────────────────────────────────────────
|
|
14
13
|
// Interactive prompt flow — only prompts for what's missing
|
|
15
14
|
// ──────────────────────────────────────────────────────────────
|
|
@@ -33,17 +32,49 @@ async function gatherInteractive(name, p) {
|
|
|
33
32
|
}
|
|
34
33
|
resolvedName = answer.trim();
|
|
35
34
|
}
|
|
35
|
+
// ── Recipe (the one-question replacement for the 25-option multiselect) ──
|
|
36
|
+
let recipe;
|
|
37
|
+
if (p.recipe)
|
|
38
|
+
recipe = p.recipe;
|
|
39
|
+
else {
|
|
40
|
+
const recipeAnswer = await select({
|
|
41
|
+
message: 'What are you building?',
|
|
42
|
+
options: [
|
|
43
|
+
{ value: 'web-app', label: 'Web app', hint: 'auth + ORM + frontend' },
|
|
44
|
+
{ value: 'saas', label: 'SaaS', hint: '+ queue + mail + notifications' },
|
|
45
|
+
{ value: 'api-service', label: 'API service', hint: 'ORM + auth + http, no frontend' },
|
|
46
|
+
{ value: 'realtime', label: 'Realtime', hint: '+ broadcast + sync (WebSocket)' },
|
|
47
|
+
{ value: 'minimal', label: 'Minimal', hint: 'just the framework — no extras' },
|
|
48
|
+
{ value: 'custom', label: 'Custom', hint: 'pick packages yourself' },
|
|
49
|
+
],
|
|
50
|
+
initialValue: 'web-app',
|
|
51
|
+
});
|
|
52
|
+
if (isCancel(recipeAnswer)) {
|
|
53
|
+
cancel('Cancelled.');
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
recipe = recipeAnswer;
|
|
57
|
+
}
|
|
58
|
+
const preset = recipe === 'custom' ? null : RECIPES[recipe];
|
|
59
|
+
// ── Database ORM + driver ──
|
|
36
60
|
let orm;
|
|
37
61
|
if (p.orm !== undefined)
|
|
38
62
|
orm = p.orm;
|
|
63
|
+
else if (preset && !preset.needsOrm)
|
|
64
|
+
orm = false;
|
|
39
65
|
else {
|
|
40
66
|
const ormAnswer = await select({
|
|
41
|
-
message: 'Database
|
|
42
|
-
options:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
67
|
+
message: 'Database',
|
|
68
|
+
options: recipe === 'minimal' || recipe === 'custom'
|
|
69
|
+
? [
|
|
70
|
+
{ value: 'prisma', label: 'Prisma' },
|
|
71
|
+
{ value: 'drizzle', label: 'Drizzle' },
|
|
72
|
+
{ value: 'none', label: 'None', hint: 'no database' },
|
|
73
|
+
]
|
|
74
|
+
: [
|
|
75
|
+
{ value: 'prisma', label: 'Prisma' },
|
|
76
|
+
{ value: 'drizzle', label: 'Drizzle' },
|
|
77
|
+
],
|
|
47
78
|
});
|
|
48
79
|
if (isCancel(ormAnswer)) {
|
|
49
80
|
cancel('Cancelled.');
|
|
@@ -56,10 +87,11 @@ async function gatherInteractive(name, p) {
|
|
|
56
87
|
const dbAnswer = await select({
|
|
57
88
|
message: 'Database driver',
|
|
58
89
|
options: [
|
|
59
|
-
{ value: 'sqlite', label: 'SQLite' },
|
|
90
|
+
{ value: 'sqlite', label: 'SQLite', hint: 'recommended — no setup' },
|
|
60
91
|
{ value: 'postgresql', label: 'PostgreSQL' },
|
|
61
92
|
{ value: 'mysql', label: 'MySQL / MariaDB' },
|
|
62
93
|
],
|
|
94
|
+
initialValue: 'sqlite',
|
|
63
95
|
});
|
|
64
96
|
if (isCancel(dbAnswer)) {
|
|
65
97
|
cancel('Cancelled.');
|
|
@@ -67,171 +99,192 @@ async function gatherInteractive(name, p) {
|
|
|
67
99
|
}
|
|
68
100
|
db = dbAnswer;
|
|
69
101
|
}
|
|
102
|
+
// ── Packages: recipe preset OR explicit Custom multiselect ──
|
|
70
103
|
let packages;
|
|
71
104
|
if (p.packages !== undefined)
|
|
72
105
|
packages = p.packages;
|
|
106
|
+
else if (recipe !== 'custom') {
|
|
107
|
+
packages = packagesFromList([...(preset?.packages ?? [])], orm);
|
|
108
|
+
}
|
|
73
109
|
else {
|
|
74
|
-
|
|
75
|
-
'Auth & Security': [
|
|
76
|
-
{ value: 'auth', label: 'Authentication', hint: 'login, register, sessions' },
|
|
77
|
-
{ value: 'sanctum', label: 'Sanctum', hint: 'API tokens (SHA-256 + abilities)' },
|
|
78
|
-
{ value: 'passport', label: 'Passport', hint: 'OAuth2 server — requires Auth + Prisma' },
|
|
79
|
-
{ value: 'socialite', label: 'Socialite', hint: 'social login: GitHub, Google, Facebook, Apple' },
|
|
80
|
-
{ value: 'crypt', label: 'Crypt', hint: 'AES-256-CBC + HMAC encryption' },
|
|
81
|
-
],
|
|
82
|
-
'Infrastructure': [
|
|
83
|
-
{ value: 'queue', label: 'Queue', hint: 'background jobs' },
|
|
84
|
-
{ value: 'storage', label: 'Storage', hint: 'file uploads (local + S3)' },
|
|
85
|
-
{ value: 'scheduler', label: 'Scheduler', hint: 'cron-like task scheduling' },
|
|
86
|
-
],
|
|
87
|
-
'Communication': [
|
|
88
|
-
{ value: 'mail', label: 'Mail', hint: 'SMTP + log driver' },
|
|
89
|
-
{ value: 'notifications', label: 'Notifications', hint: 'multi-channel notifications' },
|
|
90
|
-
{ value: 'broadcast', label: 'WebSocket / Broadcast', hint: 'real-time channels' },
|
|
91
|
-
{ value: 'sync', label: 'Sync (Yjs CRDT)', hint: 'collaborative documents' },
|
|
92
|
-
],
|
|
93
|
-
'Internationalization': [
|
|
94
|
-
{ value: 'localization', label: 'Localization', hint: 'i18n — trans(), setLocale()' },
|
|
95
|
-
],
|
|
96
|
-
'Developer Experience': [
|
|
97
|
-
{ value: 'pennant', label: 'Pennant', hint: 'feature flags' },
|
|
98
|
-
{ value: 'http', label: 'HTTP', hint: 'fluent fetch client — retries, timeouts, pools' },
|
|
99
|
-
{ value: 'process', label: 'Process', hint: 'shell execution — run, pool, pipe' },
|
|
100
|
-
{ value: 'concurrency', label: 'Concurrency', hint: 'parallel execution via worker threads' },
|
|
101
|
-
{ value: 'terminal', label: 'Terminal', hint: 'rich terminal UIs from CLI commands (Ink)' },
|
|
102
|
-
],
|
|
103
|
-
'Media': [
|
|
104
|
-
{ value: 'image', label: 'Image', hint: 'resize, crop, convert (sharp wrapper)' },
|
|
105
|
-
],
|
|
106
|
-
'Observability': [
|
|
107
|
-
{ value: 'telescope', label: 'Telescope', hint: 'debug dashboard — requests, queries, jobs, exceptions' },
|
|
108
|
-
{ value: 'pulse', label: 'Pulse', hint: 'metrics dashboard — throughput, latency, hit rates' },
|
|
109
|
-
{ value: 'horizon', label: 'Horizon', hint: 'queue monitoring — lifecycle, workers, retry/delete' },
|
|
110
|
-
],
|
|
111
|
-
'AI & Tooling': [
|
|
112
|
-
{ value: 'ai', label: 'AI', hint: 'LLM providers (Anthropic, OpenAI, Google, Ollama)' },
|
|
113
|
-
{ value: 'mcp', label: 'MCP', hint: 'Model Context Protocol — expose tools/resources to LLMs' },
|
|
114
|
-
{ value: 'boost', label: 'Boost', hint: 'AI coding DX (Claude Code/Cursor/Copilot)' },
|
|
115
|
-
],
|
|
116
|
-
};
|
|
117
|
-
if (orm === false)
|
|
118
|
-
log.info('Database not selected — auth, sanctum, and passport options are hidden.');
|
|
119
|
-
const groupedOptions = {};
|
|
120
|
-
for (const [group, pkgs] of Object.entries(PACKAGE_GROUPS)) {
|
|
121
|
-
const visible = orm === false ? pkgs.filter(p => !DB_GATED.has(p.value)) : pkgs;
|
|
122
|
-
if (visible.length > 0)
|
|
123
|
-
groupedOptions[group] = visible;
|
|
124
|
-
}
|
|
125
|
-
const packageAnswer = await groupMultiselect({
|
|
126
|
-
message: 'Select packages',
|
|
127
|
-
options: groupedOptions,
|
|
128
|
-
initialValues: orm === false ? [] : ['auth'],
|
|
129
|
-
required: false,
|
|
130
|
-
selectableGroups: false,
|
|
131
|
-
});
|
|
132
|
-
if (isCancel(packageAnswer)) {
|
|
133
|
-
cancel('Cancelled.');
|
|
134
|
-
process.exit(0);
|
|
135
|
-
}
|
|
136
|
-
packages = packagesFromList(packageAnswer, orm);
|
|
110
|
+
packages = await promptCustomPackages(orm);
|
|
137
111
|
}
|
|
138
112
|
if (packages.passport && (!packages.auth || orm !== 'prisma')) {
|
|
139
113
|
cancel('Passport requires Auth + Prisma. Re-run and select both, or drop Passport.');
|
|
140
114
|
process.exit(1);
|
|
141
115
|
}
|
|
116
|
+
// ── Frontend framework + styling (skipped for API-service / Minimal) ──
|
|
117
|
+
const wantsFrontend = preset
|
|
118
|
+
? preset.needsFrontend
|
|
119
|
+
: (recipe === 'minimal' ? false : true);
|
|
142
120
|
let frameworks;
|
|
143
|
-
|
|
121
|
+
let primary = 'react';
|
|
122
|
+
let tailwind;
|
|
123
|
+
let shadcn;
|
|
124
|
+
if (!wantsFrontend && p.frameworks === undefined) {
|
|
125
|
+
frameworks = [];
|
|
126
|
+
tailwind = false;
|
|
127
|
+
shadcn = false;
|
|
128
|
+
}
|
|
129
|
+
else if (p.frameworks?.length) {
|
|
130
|
+
// legacy multi-framework flag path
|
|
144
131
|
frameworks = p.frameworks;
|
|
132
|
+
primary = p.primary ?? frameworks[0];
|
|
133
|
+
tailwind = p.tailwind ?? true;
|
|
134
|
+
shadcn = p.shadcn ?? (frameworks.includes('react') && tailwind);
|
|
135
|
+
}
|
|
145
136
|
else {
|
|
146
|
-
const
|
|
147
|
-
message: 'Frontend
|
|
137
|
+
const frameworkAnswer = await select({
|
|
138
|
+
message: 'Frontend framework',
|
|
148
139
|
options: [
|
|
149
|
-
{ value: 'react', label: 'React' },
|
|
140
|
+
{ value: 'react', label: 'React', hint: 'recommended' },
|
|
150
141
|
{ value: 'vue', label: 'Vue' },
|
|
151
142
|
{ value: 'solid', label: 'Solid' },
|
|
143
|
+
{ value: 'none', label: 'None', hint: 'server-rendered HTML only' },
|
|
152
144
|
],
|
|
153
|
-
|
|
154
|
-
required: true,
|
|
145
|
+
initialValue: 'react',
|
|
155
146
|
});
|
|
156
|
-
if (isCancel(
|
|
147
|
+
if (isCancel(frameworkAnswer)) {
|
|
157
148
|
cancel('Cancelled.');
|
|
158
149
|
process.exit(0);
|
|
159
150
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const primaryAnswer = await select({
|
|
167
|
-
message: 'Primary framework (drives main pages)',
|
|
168
|
-
options: frameworks.map(f => ({ value: f, label: f.charAt(0).toUpperCase() + f.slice(1) })),
|
|
169
|
-
});
|
|
170
|
-
if (isCancel(primaryAnswer)) {
|
|
171
|
-
cancel('Cancelled.');
|
|
172
|
-
process.exit(0);
|
|
151
|
+
const fw = frameworkAnswer;
|
|
152
|
+
frameworks = fw === 'none' ? [] : [fw];
|
|
153
|
+
primary = fw === 'none' ? 'react' : fw;
|
|
154
|
+
if (frameworks.length === 0) {
|
|
155
|
+
tailwind = p.tailwind ?? false;
|
|
156
|
+
shadcn = false;
|
|
173
157
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
primary = frameworks[0];
|
|
178
|
-
}
|
|
179
|
-
let tailwind;
|
|
180
|
-
if (p.tailwind !== undefined)
|
|
181
|
-
tailwind = p.tailwind;
|
|
182
|
-
else {
|
|
183
|
-
const tailwindAnswer = await confirm({ message: 'Add Tailwind CSS?', initialValue: true });
|
|
184
|
-
if (isCancel(tailwindAnswer)) {
|
|
185
|
-
cancel('Cancelled.');
|
|
186
|
-
process.exit(0);
|
|
158
|
+
else if (p.tailwind !== undefined) {
|
|
159
|
+
tailwind = p.tailwind;
|
|
160
|
+
shadcn = p.shadcn ?? (fw === 'react' && tailwind);
|
|
187
161
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (demoOptions.length > 0) {
|
|
203
|
-
const demoAnswer = await multiselect({
|
|
204
|
-
message: 'Select demos to scaffold (under /demos)',
|
|
205
|
-
options: demoOptions.map(d => ({
|
|
206
|
-
value: d.value,
|
|
207
|
-
label: d.label,
|
|
208
|
-
...(d.hint !== undefined ? { hint: d.hint } : {}),
|
|
209
|
-
})),
|
|
210
|
-
initialValues: ['contact'],
|
|
211
|
-
required: false,
|
|
162
|
+
else {
|
|
163
|
+
const stylingAnswer = await select({
|
|
164
|
+
message: 'Styling',
|
|
165
|
+
options: fw === 'react'
|
|
166
|
+
? [
|
|
167
|
+
{ value: 'tailwind+shadcn', label: 'Tailwind + shadcn/ui', hint: 'recommended' },
|
|
168
|
+
{ value: 'tailwind', label: 'Tailwind only' },
|
|
169
|
+
{ value: 'plain', label: 'Plain CSS', hint: 'no framework' },
|
|
170
|
+
]
|
|
171
|
+
: [
|
|
172
|
+
{ value: 'tailwind', label: 'Tailwind', hint: 'recommended' },
|
|
173
|
+
{ value: 'plain', label: 'Plain CSS', hint: 'no framework' },
|
|
174
|
+
],
|
|
175
|
+
initialValue: fw === 'react' ? 'tailwind+shadcn' : 'tailwind',
|
|
212
176
|
});
|
|
213
|
-
if (isCancel(
|
|
177
|
+
if (isCancel(stylingAnswer)) {
|
|
214
178
|
cancel('Cancelled.');
|
|
215
179
|
process.exit(0);
|
|
216
180
|
}
|
|
217
|
-
|
|
181
|
+
tailwind = stylingAnswer !== 'plain';
|
|
182
|
+
shadcn = stylingAnswer === 'tailwind+shadcn';
|
|
218
183
|
}
|
|
219
184
|
}
|
|
220
|
-
|
|
221
|
-
|
|
185
|
+
// ── Smart DB-push: for non-SQLite ask once whether the DB is reachable ──
|
|
186
|
+
let dbReady;
|
|
187
|
+
if (p.dbReady !== undefined)
|
|
188
|
+
dbReady = p.dbReady;
|
|
189
|
+
else if (orm === false)
|
|
190
|
+
dbReady = false;
|
|
191
|
+
else if (db === 'sqlite')
|
|
192
|
+
dbReady = true;
|
|
193
|
+
else {
|
|
194
|
+
const dbReadyAnswer = await confirm({
|
|
195
|
+
message: `Is your ${db === 'postgresql' ? 'Postgres' : 'MySQL'} running now? (we'll push the schema for you)`,
|
|
196
|
+
initialValue: true,
|
|
197
|
+
});
|
|
198
|
+
if (isCancel(dbReadyAnswer)) {
|
|
199
|
+
cancel('Cancelled.');
|
|
200
|
+
process.exit(0);
|
|
201
|
+
}
|
|
202
|
+
dbReady = dbReadyAnswer;
|
|
222
203
|
}
|
|
223
204
|
let install;
|
|
224
205
|
if (p.install !== undefined)
|
|
225
206
|
install = p.install;
|
|
226
207
|
else {
|
|
227
|
-
const installAnswer = await confirm({ message: 'Install
|
|
208
|
+
const installAnswer = await confirm({ message: 'Install and run setup?', initialValue: true });
|
|
228
209
|
if (isCancel(installAnswer)) {
|
|
229
210
|
cancel('Cancelled.');
|
|
230
211
|
process.exit(0);
|
|
231
212
|
}
|
|
232
213
|
install = installAnswer;
|
|
233
214
|
}
|
|
234
|
-
|
|
215
|
+
const git = p.git ?? install;
|
|
216
|
+
return {
|
|
217
|
+
name: resolvedName, recipe, orm, db, packages, frameworks, primary, tailwind, shadcn,
|
|
218
|
+
demos: [], git, dbReady, install,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// ──────────────────────────────────────────────────────────────
|
|
222
|
+
// Custom-recipe package picker — only shown for `recipe = 'custom'`
|
|
223
|
+
// ──────────────────────────────────────────────────────────────
|
|
224
|
+
async function promptCustomPackages(orm) {
|
|
225
|
+
const PACKAGE_GROUPS = {
|
|
226
|
+
'Auth & Security': [
|
|
227
|
+
{ value: 'auth', label: 'Authentication', hint: 'login, register, sessions' },
|
|
228
|
+
{ value: 'sanctum', label: 'Sanctum', hint: 'API tokens (SHA-256 + abilities)' },
|
|
229
|
+
{ value: 'passport', label: 'Passport', hint: 'OAuth2 server — requires Auth + Prisma' },
|
|
230
|
+
{ value: 'socialite', label: 'Socialite', hint: 'social login: GitHub, Google, Facebook, Apple' },
|
|
231
|
+
{ value: 'crypt', label: 'Crypt', hint: 'AES-256-CBC + HMAC encryption' },
|
|
232
|
+
],
|
|
233
|
+
'Infrastructure': [
|
|
234
|
+
{ value: 'queue', label: 'Queue', hint: 'background jobs' },
|
|
235
|
+
{ value: 'storage', label: 'Storage', hint: 'file uploads (local + S3)' },
|
|
236
|
+
{ value: 'scheduler', label: 'Scheduler', hint: 'cron-like task scheduling' },
|
|
237
|
+
],
|
|
238
|
+
'Communication': [
|
|
239
|
+
{ value: 'mail', label: 'Mail', hint: 'SMTP + log driver' },
|
|
240
|
+
{ value: 'notifications', label: 'Notifications', hint: 'multi-channel notifications' },
|
|
241
|
+
{ value: 'broadcast', label: 'WebSocket / Broadcast', hint: 'real-time channels' },
|
|
242
|
+
{ value: 'sync', label: 'Sync (Yjs CRDT)', hint: 'collaborative documents' },
|
|
243
|
+
],
|
|
244
|
+
'Internationalization': [
|
|
245
|
+
{ value: 'localization', label: 'Localization', hint: 'i18n — trans(), setLocale()' },
|
|
246
|
+
],
|
|
247
|
+
'Developer Experience': [
|
|
248
|
+
{ value: 'pennant', label: 'Pennant', hint: 'feature flags' },
|
|
249
|
+
{ value: 'http', label: 'HTTP', hint: 'fluent fetch client — retries, timeouts, pools' },
|
|
250
|
+
{ value: 'process', label: 'Process', hint: 'shell execution — run, pool, pipe' },
|
|
251
|
+
{ value: 'concurrency', label: 'Concurrency', hint: 'parallel execution via worker threads' },
|
|
252
|
+
{ value: 'terminal', label: 'Terminal', hint: 'rich terminal UIs from CLI commands (Ink)' },
|
|
253
|
+
],
|
|
254
|
+
'Media': [
|
|
255
|
+
{ value: 'image', label: 'Image', hint: 'resize, crop, convert (sharp wrapper)' },
|
|
256
|
+
],
|
|
257
|
+
'Observability': [
|
|
258
|
+
{ value: 'telescope', label: 'Telescope', hint: 'debug dashboard — requests, queries, jobs, exceptions' },
|
|
259
|
+
{ value: 'pulse', label: 'Pulse', hint: 'metrics dashboard — throughput, latency, hit rates' },
|
|
260
|
+
{ value: 'horizon', label: 'Horizon', hint: 'queue monitoring — lifecycle, workers, retry/delete' },
|
|
261
|
+
],
|
|
262
|
+
'AI & Tooling': [
|
|
263
|
+
{ value: 'ai', label: 'AI', hint: 'LLM providers (Anthropic, OpenAI, Google, Ollama)' },
|
|
264
|
+
{ value: 'mcp', label: 'MCP', hint: 'Model Context Protocol — expose tools/resources to LLMs' },
|
|
265
|
+
{ value: 'boost', label: 'Boost', hint: 'AI coding DX (Claude Code/Cursor/Copilot)' },
|
|
266
|
+
],
|
|
267
|
+
};
|
|
268
|
+
if (orm === false)
|
|
269
|
+
log.info('Database not selected — auth, sanctum, and passport options are hidden.');
|
|
270
|
+
const groupedOptions = {};
|
|
271
|
+
for (const [group, pkgs] of Object.entries(PACKAGE_GROUPS)) {
|
|
272
|
+
const visible = orm === false ? pkgs.filter(p => !DB_GATED.has(p.value)) : pkgs;
|
|
273
|
+
if (visible.length > 0)
|
|
274
|
+
groupedOptions[group] = visible;
|
|
275
|
+
}
|
|
276
|
+
const packageAnswer = await groupMultiselect({
|
|
277
|
+
message: 'Select packages',
|
|
278
|
+
options: groupedOptions,
|
|
279
|
+
initialValues: orm === false ? [] : ['auth'],
|
|
280
|
+
required: false,
|
|
281
|
+
selectableGroups: false,
|
|
282
|
+
});
|
|
283
|
+
if (isCancel(packageAnswer)) {
|
|
284
|
+
cancel('Cancelled.');
|
|
285
|
+
process.exit(0);
|
|
286
|
+
}
|
|
287
|
+
return packagesFromList(packageAnswer, orm);
|
|
235
288
|
}
|
|
236
289
|
async function scaffold(answers, opts) {
|
|
237
290
|
const { pm, quiet, logFile } = opts;
|
|
@@ -276,6 +329,11 @@ async function scaffold(answers, opts) {
|
|
|
276
329
|
}
|
|
277
330
|
s?.stop(`${Object.keys(templates).length} files written`);
|
|
278
331
|
let installAttempted = false, installOk = false, discoverOk = false;
|
|
332
|
+
let dbGenerateOk = null;
|
|
333
|
+
let dbPushOk = null;
|
|
334
|
+
let vendorPublishOk = null;
|
|
335
|
+
let passportKeysOk = null;
|
|
336
|
+
let gitInitOk = null;
|
|
279
337
|
if (answers.install) {
|
|
280
338
|
installAttempted = true;
|
|
281
339
|
const s2 = quiet ? null : spinner();
|
|
@@ -286,20 +344,89 @@ async function scaffold(answers, opts) {
|
|
|
286
344
|
if (installOk) {
|
|
287
345
|
const s3 = quiet ? null : spinner();
|
|
288
346
|
s3?.start('Discovering framework providers...');
|
|
289
|
-
|
|
290
|
-
discoverOk = await runChild(rcmd, rargs, target, logFile);
|
|
347
|
+
discoverOk = await runRudder(pm, 'providers:discover', target, logFile);
|
|
291
348
|
s3?.stop(discoverOk
|
|
292
349
|
? 'Provider manifest generated'
|
|
293
350
|
: `providers:discover failed — run \`${pmRun(pm, 'rudder')} providers:discover\` manually`);
|
|
351
|
+
// ── Auto-cascade — only when install + providers:discover both succeed ──
|
|
352
|
+
if (discoverOk && answers.orm) {
|
|
353
|
+
const s4 = quiet ? null : spinner();
|
|
354
|
+
s4?.start('Generating database client...');
|
|
355
|
+
dbGenerateOk = await runRudder(pm, 'db:generate', target, logFile);
|
|
356
|
+
s4?.stop(dbGenerateOk
|
|
357
|
+
? (answers.orm === 'prisma' ? 'Prisma client generated' : 'Client step skipped (Drizzle)')
|
|
358
|
+
: `db:generate failed — run \`${pmRun(pm, 'rudder')} db:generate\` manually`);
|
|
359
|
+
}
|
|
360
|
+
if (discoverOk && answers.orm && answers.dbReady) {
|
|
361
|
+
const s5 = quiet ? null : spinner();
|
|
362
|
+
s5?.start('Pushing schema to database...');
|
|
363
|
+
dbPushOk = await runRudder(pm, 'db:push', target, logFile);
|
|
364
|
+
const niceDb = answers.db === 'sqlite' ? 'dev.db ready' : 'schema pushed';
|
|
365
|
+
s5?.stop(dbPushOk
|
|
366
|
+
? niceDb
|
|
367
|
+
: `db:push failed — start your database and run \`${pmRun(pm, 'rudder')} db:push\``);
|
|
368
|
+
}
|
|
369
|
+
if (discoverOk && answers.packages.auth && !authViewsCopied) {
|
|
370
|
+
const s6 = quiet ? null : spinner();
|
|
371
|
+
s6?.start('Publishing auth views...');
|
|
372
|
+
vendorPublishOk = await runRudder(pm, `vendor:publish --tag=auth-views-${answers.primary}`, target, logFile);
|
|
373
|
+
s6?.stop(vendorPublishOk
|
|
374
|
+
? 'Auth views published'
|
|
375
|
+
: `vendor:publish failed — run \`${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}\``);
|
|
376
|
+
}
|
|
377
|
+
if (discoverOk && answers.packages.passport) {
|
|
378
|
+
const s7 = quiet ? null : spinner();
|
|
379
|
+
s7?.start('Generating Passport keys...');
|
|
380
|
+
passportKeysOk = await runRudder(pm, 'passport:keys', target, logFile);
|
|
381
|
+
s7?.stop(passportKeysOk
|
|
382
|
+
? 'Passport keys generated'
|
|
383
|
+
: `passport:keys failed — run \`${pmRun(pm, 'rudder')} passport:keys\` manually`);
|
|
384
|
+
}
|
|
294
385
|
}
|
|
295
386
|
}
|
|
387
|
+
// ── git init — independent of install; runs whenever user opted in ──
|
|
388
|
+
if (answers.git) {
|
|
389
|
+
const s8 = quiet ? null : spinner();
|
|
390
|
+
s8?.start('Initializing git repository...');
|
|
391
|
+
gitInitOk = await runGitInit(target, logFile);
|
|
392
|
+
s8?.stop(gitInitOk
|
|
393
|
+
? 'Git initialized'
|
|
394
|
+
: 'git init skipped — git not available or already a repo');
|
|
395
|
+
}
|
|
296
396
|
return {
|
|
297
397
|
target,
|
|
298
398
|
filesWritten: Object.keys(templates).length,
|
|
299
399
|
authViewsCopied,
|
|
300
400
|
installAttempted, installOk, discoverOk,
|
|
401
|
+
dbGenerateOk, dbPushOk, vendorPublishOk, passportKeysOk, gitInitOk,
|
|
301
402
|
};
|
|
302
403
|
}
|
|
404
|
+
/** Run a `rudder <subcommand>` in the target dir. Subcommand may include flags. */
|
|
405
|
+
async function runRudder(pm, subcommand, cwd, logFile) {
|
|
406
|
+
const [cmd, ...args] = `${pmRun(pm, 'rudder')} ${subcommand}`.split(' ').filter(Boolean);
|
|
407
|
+
return runChild(cmd, args, cwd, logFile);
|
|
408
|
+
}
|
|
409
|
+
/** `git init` + first commit. Returns false if git isn't on $PATH or the dir is already a repo. */
|
|
410
|
+
async function runGitInit(cwd, logFile) {
|
|
411
|
+
// Probe `git --version` first so we don't write a half-init repo on systems without git.
|
|
412
|
+
const hasGit = await runChild('git', ['--version'], cwd, logFile);
|
|
413
|
+
if (!hasGit)
|
|
414
|
+
return false;
|
|
415
|
+
// If `.git/` exists (rare in scaffolded apps but possible) bail rather than commit blindly.
|
|
416
|
+
try {
|
|
417
|
+
await fs.access(path.join(cwd, '.git'));
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
catch { /* good — no existing repo */ }
|
|
421
|
+
if (!await runChild('git', ['init', '-q'], cwd, logFile))
|
|
422
|
+
return false;
|
|
423
|
+
if (!await runChild('git', ['add', '.'], cwd, logFile))
|
|
424
|
+
return false;
|
|
425
|
+
// -q silences the commit summary; --no-gpg-sign avoids pgp prompts on fresh machines.
|
|
426
|
+
if (!await runChild('git', ['commit', '-q', '-m', 'Initial commit (create-rudder-app)', '--no-gpg-sign'], cwd, logFile))
|
|
427
|
+
return false;
|
|
428
|
+
return true;
|
|
429
|
+
}
|
|
303
430
|
class ScaffoldError extends Error {
|
|
304
431
|
}
|
|
305
432
|
function runChild(cmd, args, cwd, logFile) {
|
|
@@ -387,8 +514,18 @@ async function main() {
|
|
|
387
514
|
if (result.installAttempted) {
|
|
388
515
|
payload['installed'] = result.installOk;
|
|
389
516
|
payload['providersDiscovered'] = result.discoverOk;
|
|
517
|
+
if (result.dbGenerateOk !== null)
|
|
518
|
+
payload['dbGenerated'] = result.dbGenerateOk;
|
|
519
|
+
if (result.dbPushOk !== null)
|
|
520
|
+
payload['dbPushed'] = result.dbPushOk;
|
|
521
|
+
if (result.vendorPublishOk !== null)
|
|
522
|
+
payload['authViewsPublished'] = result.vendorPublishOk;
|
|
523
|
+
if (result.passportKeysOk !== null)
|
|
524
|
+
payload['passportKeysGenerated'] = result.passportKeysOk;
|
|
390
525
|
}
|
|
391
|
-
if (
|
|
526
|
+
if (result.gitInitOk !== null)
|
|
527
|
+
payload['gitInitialized'] = result.gitInitOk;
|
|
528
|
+
if (answers.packages.auth && !result.authViewsCopied && result.vendorPublishOk !== true) {
|
|
392
529
|
payload['warning'] = `Auth views could not be vendored. Run: ${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}`;
|
|
393
530
|
}
|
|
394
531
|
process.stdout.write(JSON.stringify(payload) + '\n');
|
|
@@ -426,23 +563,35 @@ async function main() {
|
|
|
426
563
|
}
|
|
427
564
|
throw err;
|
|
428
565
|
}
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
`
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
566
|
+
// ── Build the "manual steps" list ─ only includes things the auto-cascade
|
|
567
|
+
// either didn't run or couldn't finish. The goal: when everything succeeded,
|
|
568
|
+
// the panel has exactly one line (`cd app && pnpm dev`).
|
|
569
|
+
const manual = [];
|
|
570
|
+
if (!answers.install) {
|
|
571
|
+
manual.push(` ${pmInstall(pm)}`);
|
|
572
|
+
manual.push(` ${pmRun(pm, 'rudder')} providers:discover`);
|
|
573
|
+
}
|
|
574
|
+
if (answers.orm && (result.dbGenerateOk === false || (result.dbGenerateOk === null && !answers.install))) {
|
|
575
|
+
manual.push(` ${pmRun(pm, 'rudder')} db:generate`);
|
|
576
|
+
}
|
|
577
|
+
if (answers.orm && result.dbPushOk !== true) {
|
|
578
|
+
// dbPushOk is null when we deliberately skipped (e.g. user said DB not running)
|
|
579
|
+
if (result.dbPushOk === null && !answers.dbReady) {
|
|
580
|
+
manual.push(` ${pmRun(pm, 'rudder')} db:push ${result.installOk ? '# once your database is running' : ''}`);
|
|
581
|
+
}
|
|
582
|
+
else if (result.dbPushOk === false) {
|
|
583
|
+
manual.push(` ${pmRun(pm, 'rudder')} db:push # retry after starting your database`);
|
|
584
|
+
}
|
|
585
|
+
else if (result.dbPushOk === null && !answers.install) {
|
|
586
|
+
manual.push(` ${pmRun(pm, 'rudder')} db:push`);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
if (answers.packages.auth && result.vendorPublishOk !== true && !result.authViewsCopied) {
|
|
590
|
+
manual.push(` ${pmRun(pm, 'rudder')} vendor:publish --tag=auth-views-${answers.primary}`);
|
|
591
|
+
}
|
|
592
|
+
if (answers.packages.passport && result.passportKeysOk !== true) {
|
|
593
|
+
manual.push(` ${pmRun(pm, 'rudder')} passport:keys`);
|
|
594
|
+
}
|
|
446
595
|
const hints = [];
|
|
447
596
|
if (answers.packages.ai)
|
|
448
597
|
hints.push(' AI chat: /ai-chat (set ANTHROPIC_API_KEY in .env)');
|
|
@@ -457,10 +606,22 @@ async function main() {
|
|
|
457
606
|
if (answers.packages.terminal)
|
|
458
607
|
hints.push(` Terminal: ${pmRun(pm, 'rudder')} make:terminal <Name> (scaffold a terminal view)`);
|
|
459
608
|
const hintsStr = hints.length > 0 ? '\n\n' + hints.join('\n') : '';
|
|
460
|
-
|
|
461
|
-
|
|
609
|
+
const exampleLink = '\n\n Examples: https://rudderjs.com/examples';
|
|
610
|
+
// The happy-path output — auto-cascade succeeded, no manual remediation.
|
|
611
|
+
if (manual.length === 0) {
|
|
612
|
+
outro(`Done!\n\n` +
|
|
613
|
+
` cd ${answers.name} && ${pmRun(pm, 'dev')}` +
|
|
614
|
+
hintsStr +
|
|
615
|
+
exampleLink);
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
// Something needs the user's attention — print remediation steps explicitly.
|
|
619
|
+
outro(`Done! A few things still need your attention:\n\n` +
|
|
620
|
+
` cd ${answers.name}\n` +
|
|
621
|
+
manual.join('\n') + '\n' +
|
|
622
|
+
` ${pmRun(pm, 'dev')}` +
|
|
462
623
|
hintsStr +
|
|
463
|
-
|
|
624
|
+
exampleLink);
|
|
464
625
|
}
|
|
465
626
|
main().catch((err) => {
|
|
466
627
|
console.error(err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EACL,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAChF,QAAQ,EAAE,MAAM,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAU,kBAAkB,CAAA;AACrC,OAAO,EAAE,MAAU,SAAS,CAAA;AAC5B,OAAO,IAAI,MAAQ,WAAW,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAA6C,MAAM,gBAAgB,CAAA;AACxI,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EACL,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAClE,SAAS,EAAE,QAAQ,GAGpB,MAAM,gBAAgB,CAAA;AAEvB,iEAAiE;AACjE,4DAA4D;AAC5D,iEAAiE;AAEjE,KAAK,UAAU,iBAAiB,CAAC,IAAwB,EAAE,CAAiB;IAC1E,IAAI,YAAoB,CAAA;IACxB,IAAI,CAAC,CAAC,IAAI;QAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAA;SAC5B,IAAI,IAAI,EAAE,CAAC;QACd,YAAY,GAAG,IAAI,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;YACxB,OAAO,EAAM,cAAc;YAC3B,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS;SAC3F,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QAC/D,YAAY,GAAI,MAAiB,CAAC,IAAI,EAAE,CAAA;IAC1C,CAAC;IAED,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;QAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;SAC/B,CAAC;QACJ,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC;YAC7B,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAG,KAAK,EAAE,QAAQ,EAAE;gBACrC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;gBACtC,EAAE,KAAK,EAAE,MAAM,EAAK,KAAK,EAAE,MAAM,EAAK,IAAI,EAAE,aAAa,EAAE;aAC5D;SACF,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QAClE,GAAG,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAiC,CAAA;IACxE,CAAC;IAED,IAAI,EAAE,GAAO,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAA;IAC7B,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;YAC5B,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAM,KAAK,EAAE,QAAQ,EAAE;gBACxC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC5C,EAAE,KAAK,EAAE,OAAO,EAAO,KAAK,EAAE,iBAAiB,EAAE;aAClD;SACF,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACjE,EAAE,GAAG,QAAc,CAAA;IACrB,CAAC;IAED,IAAI,QAAqC,CAAA;IACzC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;SAC9C,CAAC;QAEJ,MAAM,cAAc,GAA0B;YAC5C,iBAAiB,EAAE;gBACjB,EAAE,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,gBAAgB,EAAS,IAAI,EAAE,2BAA2B,EAAE;gBAC7F,EAAE,KAAK,EAAE,SAAS,EAAQ,KAAK,EAAE,SAAS,EAAgB,IAAI,EAAE,kCAAkC,EAAE;gBACpG,EAAE,KAAK,EAAE,UAAU,EAAO,KAAK,EAAE,UAAU,EAAgB,IAAI,EAAE,wCAAwC,EAAE;gBAC3G,EAAE,KAAK,EAAE,WAAW,EAAM,KAAK,EAAE,WAAW,EAAc,IAAI,EAAE,+CAA+C,EAAE;gBACjH,EAAE,KAAK,EAAE,OAAO,EAAU,KAAK,EAAE,OAAO,EAAkB,IAAI,EAAE,+BAA+B,EAAE;aAClG;YACD,gBAAgB,EAAE;gBAChB,EAAE,KAAK,EAAE,OAAO,EAAU,KAAK,EAAE,OAAO,EAAkB,IAAI,EAAE,iBAAiB,EAAE;gBACnF,EAAE,KAAK,EAAE,SAAS,EAAQ,KAAK,EAAE,SAAS,EAAgB,IAAI,EAAE,2BAA2B,EAAE;gBAC7F,EAAE,KAAK,EAAE,WAAW,EAAM,KAAK,EAAE,WAAW,EAAc,IAAI,EAAE,2BAA2B,EAAE;aAC9F;YACD,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM,EAAmB,IAAI,EAAE,mBAAmB,EAAE;gBACrF,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAU,IAAI,EAAE,6BAA6B,EAAE;gBAC/F,EAAE,KAAK,EAAE,WAAW,EAAM,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,oBAAoB,EAAE;gBACtF,EAAE,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,iBAAiB,EAAQ,IAAI,EAAE,yBAAyB,EAAE;aAC5F;YACD,sBAAsB,EAAE;gBACtB,EAAE,KAAK,EAAE,cAAc,EAAG,KAAK,EAAE,cAAc,EAAW,IAAI,EAAE,6BAA6B,EAAE;aAChG;YACD,sBAAsB,EAAE;gBACtB,EAAE,KAAK,EAAE,SAAS,EAAQ,KAAK,EAAE,SAAS,EAAgB,IAAI,EAAE,eAAe,EAAE;gBACjF,EAAE,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM,EAAmB,IAAI,EAAE,gDAAgD,EAAE;gBAClH,EAAE,KAAK,EAAE,SAAS,EAAQ,KAAK,EAAE,SAAS,EAAgB,IAAI,EAAE,mCAAmC,EAAE;gBACrG,EAAE,KAAK,EAAE,aAAa,EAAI,KAAK,EAAE,aAAa,EAAY,IAAI,EAAE,uCAAuC,EAAE;gBACzG,EAAE,KAAK,EAAE,UAAU,EAAO,KAAK,EAAE,UAAU,EAAe,IAAI,EAAE,2CAA2C,EAAE;aAC9G;YACD,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,OAAO,EAAU,KAAK,EAAE,OAAO,EAAkB,IAAI,EAAE,uCAAuC,EAAE;aAC1G;YACD,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,WAAW,EAAM,KAAK,EAAE,WAAW,EAAc,IAAI,EAAE,uDAAuD,EAAE;gBACzH,EAAE,KAAK,EAAE,OAAO,EAAU,KAAK,EAAE,OAAO,EAAkB,IAAI,EAAE,oDAAoD,EAAE;gBACtH,EAAE,KAAK,EAAE,SAAS,EAAQ,KAAK,EAAE,SAAS,EAAgB,IAAI,EAAE,qDAAqD,EAAE;aACxH;YACD,cAAc,EAAE;gBACd,EAAE,KAAK,EAAE,IAAI,EAAa,KAAK,EAAE,IAAI,EAAqB,IAAI,EAAE,mDAAmD,EAAE;gBACrH,EAAE,KAAK,EAAE,KAAK,EAAY,KAAK,EAAE,KAAK,EAAoB,IAAI,EAAE,yDAAyD,EAAE;gBAC3H,EAAE,KAAK,EAAE,OAAO,EAAU,KAAK,EAAE,OAAO,EAAkB,IAAI,EAAE,2CAA2C,EAAE;aAC9G;SACF,CAAA;QAED,IAAI,GAAG,KAAK,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;QAEtG,MAAM,cAAc,GAA0B,EAAE,CAAA;QAChD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;QACzD,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;YAC3C,OAAO,EAAW,iBAAiB;YACnC,OAAO,EAAW,cAAc;YAChC,aAAa,EAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/C,QAAQ,EAAU,KAAK;YACvB,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACtE,QAAQ,GAAG,gBAAgB,CAAC,aAAyB,EAAE,GAAG,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,4EAA4E,CAAC,CAAA;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,UAAsB,CAAA;IAC1B,IAAI,CAAC,CAAC,UAAU;QAAE,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;SACtC,CAAC;QACJ,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC;YACzC,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;gBAClC,EAAE,KAAK,EAAE,KAAK,EAAI,KAAK,EAAE,KAAK,EAAE;gBAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;aACnC;YACD,aAAa,EAAE,CAAC,OAAO,CAAC;YACxB,QAAQ,EAAO,IAAI;SACpB,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACzE,UAAU,GAAG,gBAA8B,CAAA;IAC7C,CAAC;IAED,IAAI,OAAkC,CAAA;IACtC,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;SAC7B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC;YACjC,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5F,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACtE,OAAO,GAAG,aAA0C,CAAA;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC,CAAC,CAAE,CAAA;IAC1B,CAAC;IAED,IAAI,QAAiB,CAAA;IACrB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;SAC9C,CAAC;QACJ,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1F,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACvE,QAAQ,GAAG,cAAyB,CAAA;IACtC,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAA;IAC9B,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QACrF,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACrE,MAAM,GAAG,YAAuB,CAAA;IAClC,CAAC;IAED,IAAI,KAAK,GAAa,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;IACnC,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACjD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC;gBACnC,OAAO,EAAQ,yCAAyC;gBACxD,OAAO,EAAQ,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClD,CAAC,CAAC;gBACH,aAAa,EAAE,CAAC,SAAS,CAAC;gBAC1B,QAAQ,EAAO,KAAK;aACrB,CAAC,CAAA;YACF,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAAC,CAAC;YACnE,KAAK,GAAG,UAAsB,CAAA;QAChC,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,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;IACpF,CAAC;IAED,IAAI,OAAgB,CAAA;IACpB,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;SAC3C,CAAC;QACJ,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7F,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QACtE,OAAO,GAAG,aAAwB,CAAA;IACpC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AACzG,CAAC;AAuBD,KAAK,UAAU,QAAQ,CAAC,OAAgB,EAAE,IAAqB;IAC7D,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IACnC,MAAM,MAAM,GAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,MAAM,GAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAErD,2CAA2C;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,IAAI,aAAa,CAAC,cAAc,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAA;IACxE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,aAAa;YAAE,MAAM,CAAC,CAAA;QACvC,yCAAyC;IAC3C,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IAClC,CAAC,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAExC,MAAM,SAAS,GAAG,YAAY,CAAC;QAC7B,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG;QACpD,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;QAClD,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;KACrD,CAAC,CAAA;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACvC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,eAAe,GAAG,IAAI,CAAA;IAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAQ,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnD,MAAM,WAAW,GAAI,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;YACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YACnF,MAAM,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,eAAe,GAAG,KAAK,CAAA;QACzB,CAAC;IACH,CAAC;IAED,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAA;IAEzD,IAAI,gBAAgB,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,CAAA;IACnE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,gBAAgB,GAAG,IAAI,CAAA;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACnC,EAAE,EAAE,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAA;QAClD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/C,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACvD,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAA;QAE5F,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;YACnC,EAAE,EAAE,KAAK,CAAC,oCAAoC,CAAC,CAAA;YAC/C,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC/E,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YAC1D,EAAE,EAAE,IAAI,CAAC,UAAU;gBACjB,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,qCAAqC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;QAC3C,eAAe;QACf,gBAAgB,EAAE,SAAS,EAAE,UAAU;KACxC,CAAA;AACH,CAAC;AAED,MAAM,aAAc,SAAQ,KAAK;CAAG;AAEpC,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAc,EAAE,GAAW,EAAE,OAAgB;IAC1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACtD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YAC3E,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC7E,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;QAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,KAAK,GAAG,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,OAAO;AACP,iEAAiE;AAEjE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,EAAE,GAAK,oBAAoB,EAAE,CAAA;IAEnC,IAAI,MAAmB,CAAA;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;YAC7B,wEAAwE;YACxE,uCAAuC;YACvC,MAAM,KAAK,GAAG,WAAW,EAAE,CAAA;YAC3B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAClC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAI,GAAG,CAAC,OAAO;oBACpB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3D,CAAC,GAAG,IAAI,CAAC,CAAA;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;IAED,MAAM,KAAK,GAAM,WAAW,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;IAErF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClC,OAAO,EAAS,KAAK;gBACrB,KAAK,EAAW,oDAAoD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxF,aAAa,EAAG,OAAO;gBACvB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,GAAG,IAAI,CAAC,CAAA;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAEhE,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAI,gEAAgE;gBACzE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,GAAG,IAAI,CAAC,CAAA;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC7E,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;YACpE,MAAM,OAAO,GAA4B;gBACvC,OAAO,EAAI,IAAI;gBACf,IAAI,EAAO,OAAO,CAAC,IAAI;gBACvB,SAAS,EAAE,MAAM,CAAC,MAAM;gBACxB,KAAK,EAAM,MAAM,CAAC,YAAY;aAC/B,CAAA;YACD,IAAI,KAAK,CAAC,IAAI;gBAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YAC7C,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,SAAS,CAAA;gBACvC,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;YACpD,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBACrD,OAAO,CAAC,SAAS,CAAC,GAAG,0CAA0C,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,oCAAoC,OAAO,CAAC,OAAO,EAAE,CAAA;YACzI,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;YACpD,IAAI,CAAC;gBAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChE,MAAM,IAAI,GAAM,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAI,OAAO;gBAChB,OAAO;gBACP,OAAO,EAAE,IAAI;gBACb,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,GAAG,IAAI,CAAC,CAAA;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAE5B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAEpE,IAAI,MAAsB,CAAA;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QAC1E,MAAM,GAAG,CAAA;IACX,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,CACV,6DAA6D;YAC7D,2BAA2B,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,oCAAoC,OAAO,CAAC,OAAO,EAAE,CACpG,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,QAAQ,OAAO,CAAC,IAAI,EAAE;QACtB,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;YAC7B,KAAK,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE;YACpC,KAAK,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,EAAE;SACpC,CAAC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC3C,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,oCAAoC,OAAO,CAAC,OAAO,EAAE,CAAC;YACjF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;KACxB,CAAA;IAED,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;QAAS,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IACtG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG;QAAQ,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;IACxG,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAAG,KAAK,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAA;IACxI,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAA;IAC9H,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK;QAAM,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,iDAAiD,CAAC,CAAA;IAClI,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,mDAAmD,CAAC,CAAA;IACpI,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAElE,KAAK,CACH,wBAAwB;QACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,QAAQ;QACR,gDAAgD,CACjD,CAAA;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|