@beignet/cli 0.0.37 → 0.0.39
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/CHANGELOG.md +26 -0
- package/README.md +138 -101
- package/dist/choices.d.ts +17 -21
- package/dist/choices.d.ts.map +1 -1
- package/dist/choices.js +21 -67
- package/dist/choices.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/create-prompts.d.ts +5 -6
- package/dist/create-prompts.d.ts.map +1 -1
- package/dist/create-prompts.js +15 -15
- package/dist/create-prompts.js.map +1 -1
- package/dist/create.d.ts +11 -2
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +38 -28
- package/dist/create.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +149 -47
- package/dist/index.js.map +1 -1
- package/dist/inspect.js +69 -16
- package/dist/inspect.js.map +1 -1
- package/dist/lib.d.ts +1 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lint.d.ts.map +1 -1
- package/dist/lint.js +27 -6
- package/dist/lint.js.map +1 -1
- package/dist/make/inbox.js +10 -10
- package/dist/make/inbox.js.map +1 -1
- package/dist/make/payments.d.ts +2 -1
- package/dist/make/payments.d.ts.map +1 -1
- package/dist/make/payments.js +18 -14
- package/dist/make/payments.js.map +1 -1
- package/dist/make/shared.d.ts +11 -4
- package/dist/make/shared.d.ts.map +1 -1
- package/dist/make/shared.js +56 -45
- package/dist/make/shared.js.map +1 -1
- package/dist/make/tenancy.js +8 -8
- package/dist/make/tenancy.js.map +1 -1
- package/dist/make.d.ts +3 -2
- package/dist/make.d.ts.map +1 -1
- package/dist/make.js +481 -200
- package/dist/make.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +15 -11
- package/dist/mcp.js.map +1 -1
- package/dist/operational-error-reporting.d.ts +15 -0
- package/dist/operational-error-reporting.d.ts.map +1 -0
- package/dist/operational-error-reporting.js +42 -0
- package/dist/operational-error-reporting.js.map +1 -0
- package/dist/outbox.d.ts.map +1 -1
- package/dist/outbox.js +73 -0
- package/dist/outbox.js.map +1 -1
- package/dist/provider-add.d.ts +21 -3
- package/dist/provider-add.d.ts.map +1 -1
- package/dist/provider-add.js +117 -81
- package/dist/provider-add.js.map +1 -1
- package/dist/provider-audit.js +3 -3
- package/dist/provider-audit.js.map +1 -1
- package/dist/schedule.d.ts.map +1 -1
- package/dist/schedule.js +28 -1
- package/dist/schedule.js.map +1 -1
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +38 -5
- package/dist/task.js.map +1 -1
- package/dist/templates/base.d.ts +1 -1
- package/dist/templates/base.d.ts.map +1 -1
- package/dist/templates/base.js +15 -15
- package/dist/templates/base.js.map +1 -1
- package/dist/templates/index.d.ts +2 -2
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +7 -7
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/server.d.ts +1 -1
- package/dist/templates/server.d.ts.map +1 -1
- package/dist/templates/server.js +22 -18
- package/dist/templates/server.js.map +1 -1
- package/dist/templates/shared.d.ts +4 -4
- package/dist/templates/shared.d.ts.map +1 -1
- package/dist/templates/shared.js +6 -6
- package/dist/templates/shared.js.map +1 -1
- package/dist/templates/testing.js +1 -1
- package/dist/templates/todos.js +6 -6
- package/package.json +4 -4
- package/skills/app-structure/SKILL.md +13 -8
- package/src/choices.ts +38 -88
- package/src/config.ts +2 -2
- package/src/create-prompts.ts +20 -21
- package/src/create.ts +54 -36
- package/src/index.ts +193 -65
- package/src/inspect.ts +116 -18
- package/src/lib.ts +1 -1
- package/src/lint.ts +35 -4
- package/src/make/inbox.ts +10 -10
- package/src/make/payments.ts +26 -18
- package/src/make/shared.ts +72 -50
- package/src/make/tenancy.ts +8 -8
- package/src/make.ts +607 -191
- package/src/mcp.ts +20 -13
- package/src/operational-error-reporting.ts +60 -0
- package/src/outbox.ts +77 -0
- package/src/provider-add.ts +179 -95
- package/src/provider-audit.ts +3 -3
- package/src/schedule.ts +32 -1
- package/src/task.ts +42 -5
- package/src/templates/base.ts +16 -16
- package/src/templates/index.ts +8 -8
- package/src/templates/server.ts +22 -18
- package/src/templates/shared.ts +10 -10
- package/src/templates/testing.ts +1 -1
- package/src/templates/todos.ts +6 -6
- package/src/test-helpers/generated-app.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @beignet/cli
|
|
2
2
|
|
|
3
|
+
## 0.0.39
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- aaa4c7a: Generate connected React upload clients, components, and tests with `make upload --ui`.
|
|
8
|
+
- aeb844f: Standardize CLI provider commands, feature artifact names, and app-scoped options, and include provider preset changes in create dry-run plans.
|
|
9
|
+
- 2009e12: Generate contract-backed React Hook Form components from the feature UI addon, including validation errors, mutation errors, reset, invalidation, client setup, and dependencies.
|
|
10
|
+
- @beignet/core@0.0.39
|
|
11
|
+
|
|
12
|
+
## 0.0.38
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 1081ac6: Harden HTTP response handling, synchronous upload cleanup, CLI path and registry diagnostics, provider context preservation, Redis subscription observability, and provider documentation.
|
|
17
|
+
- d23b0b3: Continue versioned W3C trace context through outbox, event bus, BullMQ, and
|
|
18
|
+
Inngest boundaries without making telemetry metadata part of delivery success.
|
|
19
|
+
- 6bd52fc: Rename the canonical runtime port wiring file, value, and CLI config path to `infra/port-wiring.ts`, `initialPorts`, and `paths.portWiring`.
|
|
20
|
+
- 7b918c4: Standardize bounded terminal-only runtime error reporting, structured Sentry metadata redaction, and isolated reporting across HTTP, jobs, schedules, tasks, listeners, and outbox drains.
|
|
21
|
+
- Updated dependencies [443b9a1]
|
|
22
|
+
- Updated dependencies [1081ac6]
|
|
23
|
+
- Updated dependencies [d23b0b3]
|
|
24
|
+
- Updated dependencies [6bd52fc]
|
|
25
|
+
- Updated dependencies [7b918c4]
|
|
26
|
+
- Updated dependencies [7e1a68e]
|
|
27
|
+
- @beignet/core@0.0.38
|
|
28
|
+
|
|
3
29
|
## 0.0.37
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -40,8 +40,8 @@ equivalent.
|
|
|
40
40
|
|
|
41
41
|
Running create in an interactive terminal without selection flags opens a
|
|
42
42
|
prompt-based setup that asks for the project directory, whether to scaffold
|
|
43
|
-
an API-only app, which database to use, and which
|
|
44
|
-
add. Passing any selection flag (`--api`, `--db`, `--
|
|
43
|
+
an API-only app, which database to use, and which providers to
|
|
44
|
+
add. Passing any selection flag (`--api`, `--db`, `--providers`, or
|
|
45
45
|
`--package-manager`) skips the prompts, and `--yes` forces the
|
|
46
46
|
non-interactive defaults (the full-stack SQLite starter with `bun`) even on a
|
|
47
47
|
terminal. Non-interactive runs in scripts and CI behave exactly as before.
|
|
@@ -75,33 +75,32 @@ page and a reduced typed client.
|
|
|
75
75
|
The starter ships local production-shaped defaults: Better Auth, Drizzle
|
|
76
76
|
persistence, pino logging, UOW, durable idempotency, audit logging, no-op error
|
|
77
77
|
reporting, and devtools. Add workflow artifacts and external service
|
|
78
|
-
|
|
78
|
+
providers only when you want those capabilities:
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
bunx @beignet/cli create my-app --
|
|
81
|
+
bunx @beignet/cli create my-app --providers jobs-inngest,mail-resend
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
Available
|
|
84
|
+
Available starter-native providers:
|
|
85
85
|
|
|
86
|
-
- `inngest` - Inngest-backed background jobs via `@beignet/provider-jobs-inngest`
|
|
87
|
-
- `resend` - Resend-backed mail via `@beignet/provider-mail-resend`
|
|
88
|
-
- `
|
|
86
|
+
- `jobs-inngest` - Inngest-backed background jobs via `@beignet/provider-jobs-inngest`
|
|
87
|
+
- `mail-resend` - Resend-backed mail via `@beignet/provider-mail-resend`
|
|
88
|
+
- `rate-limit-upstash` - Upstash-backed rate limiting via
|
|
89
89
|
`@beignet/provider-rate-limit-upstash`
|
|
90
90
|
|
|
91
|
-
`--
|
|
91
|
+
`--providers` accepts every `beignet provider add` preset
|
|
92
92
|
(`flags-openfeature`, `jobs-bullmq`, `jobs-inngest`, `mail-resend`,
|
|
93
|
-
`mail-smtp`, `payments-stripe`, `redis
|
|
94
|
-
`redis
|
|
95
|
-
`vercel-blob
|
|
93
|
+
`mail-smtp`, `payments-stripe`, `cache-redis`, `event-bus-redis`,
|
|
94
|
+
`locks-redis`, `storage-s3`, `search-meilisearch`, `error-reporting-sentry`, and
|
|
95
|
+
`storage-vercel-blob`). Presets are
|
|
96
96
|
applied to the fresh scaffold with the same machinery as
|
|
97
|
-
`beignet
|
|
98
|
-
(
|
|
99
|
-
selections that fill the same app port (for example `resend` plus
|
|
97
|
+
`beignet provider add`; starter-native presets are rendered directly, and
|
|
98
|
+
selections that fill the same app port (for example `mail-resend` plus
|
|
100
99
|
`mail-smtp`) fail before any files are written.
|
|
101
100
|
|
|
102
|
-
Each selected
|
|
101
|
+
Each selected provider adds its package dependencies, wires the
|
|
103
102
|
provider in `server/providers.ts`, extends `.env.example`, and writes setup
|
|
104
|
-
notes to `docs/
|
|
103
|
+
notes to `docs/providers.md`.
|
|
105
104
|
|
|
106
105
|
Drizzle persistence ships in every starter; pick the backend with `--db`
|
|
107
106
|
(default `sqlite`):
|
|
@@ -138,6 +137,10 @@ bunx @beignet/cli create my-app --dry-run
|
|
|
138
137
|
bunx @beignet/cli create my-app --dry-run --json
|
|
139
138
|
```
|
|
140
139
|
|
|
140
|
+
When `--providers` includes post-create presets, the preview composes their
|
|
141
|
+
dependency, wiring, environment, and setup-note changes into the final file
|
|
142
|
+
list without creating the target directory.
|
|
143
|
+
|
|
141
144
|
The CLI writes files only. After creation:
|
|
142
145
|
|
|
143
146
|
```bash
|
|
@@ -185,46 +188,46 @@ bun beignet doctor
|
|
|
185
188
|
|
|
186
189
|
```bash
|
|
187
190
|
beignet create [directory] [options]
|
|
188
|
-
beignet task run <name> [options]
|
|
189
|
-
beignet outbox drain [options]
|
|
190
|
-
beignet outbox list [options]
|
|
191
|
-
beignet outbox show <id> [options]
|
|
192
|
-
beignet outbox requeue <id> [options]
|
|
193
|
-
beignet outbox purge [options]
|
|
194
|
-
beignet outbox prune [options]
|
|
195
|
-
beignet schedule run <name> [options]
|
|
196
|
-
beignet make task <feature
|
|
197
|
-
beignet make contract <name> [options]
|
|
198
|
-
beignet make event <feature
|
|
199
|
-
beignet make factory <feature
|
|
200
|
-
beignet make feature <name> [options]
|
|
201
|
-
beignet make job <feature
|
|
202
|
-
beignet make notification <feature
|
|
203
|
-
beignet make inbox [options]
|
|
204
|
-
beignet make outbox [options]
|
|
205
|
-
beignet make payments [options]
|
|
206
|
-
beignet make tenancy [options]
|
|
207
|
-
beignet make listener <feature
|
|
208
|
-
beignet make schedule <feature
|
|
209
|
-
beignet make upload <feature
|
|
210
|
-
beignet make port <name> [options]
|
|
211
|
-
beignet make policy <name> [options]
|
|
212
|
-
beignet make adapter <name> [options]
|
|
213
|
-
beignet make resource <name> [options]
|
|
214
|
-
beignet make seed <feature
|
|
215
|
-
beignet make test <feature
|
|
216
|
-
beignet make use-case <feature
|
|
217
|
-
beignet db generate [--dry-run] [--json]
|
|
218
|
-
beignet db migrate [--dry-run] [--json]
|
|
219
|
-
beignet db seed [--dry-run] [--json]
|
|
220
|
-
beignet db reset [--dry-run] [--json]
|
|
221
|
-
beignet db schema sync [--dialect sqlite|postgres|mysql] [--tables audit,idempotency,outbox] [--output <path>] [--dry-run] [--json]
|
|
191
|
+
beignet task run <name> [options] [--cwd <dir>]
|
|
192
|
+
beignet outbox drain [options] [--cwd <dir>]
|
|
193
|
+
beignet outbox list [options] [--cwd <dir>]
|
|
194
|
+
beignet outbox show <id> [options] [--cwd <dir>]
|
|
195
|
+
beignet outbox requeue <id> [options] [--cwd <dir>]
|
|
196
|
+
beignet outbox purge [options] [--cwd <dir>]
|
|
197
|
+
beignet outbox prune [options] [--cwd <dir>]
|
|
198
|
+
beignet schedule run <name> [options] [--cwd <dir>]
|
|
199
|
+
beignet make task <feature.name> [options] [--cwd <dir>]
|
|
200
|
+
beignet make contract <name> [options] [--cwd <dir>]
|
|
201
|
+
beignet make event <feature.name> [options] [--cwd <dir>]
|
|
202
|
+
beignet make factory <feature.name> [options] [--cwd <dir>]
|
|
203
|
+
beignet make feature <name> [options] [--cwd <dir>]
|
|
204
|
+
beignet make job <feature.name> [options] [--cwd <dir>]
|
|
205
|
+
beignet make notification <feature.name> [options] [--cwd <dir>]
|
|
206
|
+
beignet make inbox [options] [--cwd <dir>]
|
|
207
|
+
beignet make outbox [options] [--cwd <dir>]
|
|
208
|
+
beignet make payments [options] [--cwd <dir>]
|
|
209
|
+
beignet make tenancy [options] [--cwd <dir>]
|
|
210
|
+
beignet make listener <feature.name> --event <feature.event> [options] [--cwd <dir>]
|
|
211
|
+
beignet make schedule <feature.name> [options] [--cwd <dir>]
|
|
212
|
+
beignet make upload <feature.name> [--ui] [options] [--cwd <dir>]
|
|
213
|
+
beignet make port <name> [options] [--cwd <dir>]
|
|
214
|
+
beignet make policy <name> [options] [--cwd <dir>]
|
|
215
|
+
beignet make adapter <name> [options] [--cwd <dir>]
|
|
216
|
+
beignet make resource <name> [options] [--cwd <dir>]
|
|
217
|
+
beignet make seed <feature.name> [options] [--cwd <dir>]
|
|
218
|
+
beignet make test <feature.action> [options] [--cwd <dir>]
|
|
219
|
+
beignet make use-case <feature.action> [options] [--cwd <dir>]
|
|
220
|
+
beignet db generate [--dry-run] [--json] [--cwd <dir>]
|
|
221
|
+
beignet db migrate [--dry-run] [--json] [--cwd <dir>]
|
|
222
|
+
beignet db seed [--dry-run] [--json] [--cwd <dir>]
|
|
223
|
+
beignet db reset [--dry-run] [--json] [--cwd <dir>]
|
|
224
|
+
beignet db schema sync [--dialect sqlite|postgres|mysql] [--tables audit,idempotency,outbox] [--output <path>] [--dry-run] [--json] [--cwd <dir>]
|
|
222
225
|
beignet routes [--json] [--cwd <dir>]
|
|
223
226
|
beignet check [--json] [--fix] [--cwd <dir>]
|
|
224
227
|
beignet lint [--json] [--cwd <dir>] [--format human|json|github]
|
|
225
228
|
beignet doctor [--json] [--strict] [--fix] [--cwd <dir>] [--format human|json|github]
|
|
226
|
-
beignet
|
|
227
|
-
beignet
|
|
229
|
+
beignet provider add <preset> [--dry-run] [--json] [--cwd <dir>]
|
|
230
|
+
beignet provider audit [--json] [--cwd <dir>]
|
|
228
231
|
beignet mcp
|
|
229
232
|
beignet completion install [--shell bash|zsh] [--json]
|
|
230
233
|
beignet completion uninstall [--shell bash|zsh] [--json]
|
|
@@ -235,37 +238,38 @@ Options:
|
|
|
235
238
|
--api Scaffold an API-only app without the UI shell.
|
|
236
239
|
--db postgres Database backend: sqlite (default), postgres, or mysql.
|
|
237
240
|
--package-manager bun Package manager shown in next steps.
|
|
238
|
-
--
|
|
241
|
+
--providers jobs-inngest,mail-resend Add provider presets. Accepts one value or a comma-separated list.
|
|
239
242
|
--yes Skip interactive create prompts and use the defaults.
|
|
240
243
|
--force Write into a non-empty directory.
|
|
241
244
|
--dry-run Preview create/make writes without changing files.
|
|
242
245
|
--json Print machine-readable output.
|
|
243
|
-
--cwd path/to/app Run
|
|
246
|
+
--cwd path/to/app Run an existing-app command against another app directory.
|
|
244
247
|
--format github Output format for lint and doctor: human, json, or github.
|
|
245
248
|
--input '{"dryRun":true}' JSON input for `beignet task run`.
|
|
246
249
|
--tenant acme Tenant id or slug passed to the app's createTaskContext by `beignet task run`, separate from task input.
|
|
247
250
|
--payload '{"date":"..."}' JSON payload for `beignet schedule run`.
|
|
248
251
|
--module server/tasks.ts Override the task, outbox, or schedule registry path.
|
|
249
252
|
--batch-size 100 Maximum outbox messages to claim in one drain pass.
|
|
250
|
-
--id run_123
|
|
253
|
+
--run-id run_123 Provider or app schedule run ID for schedule runs.
|
|
251
254
|
--scheduled-at 2026-01-01 Provider scheduled timestamp for schedule runs.
|
|
252
255
|
--triggered-at 2026-01-01 Trigger timestamp for schedule runs.
|
|
253
256
|
--attempt 1 One-based provider attempt number for schedule runs.
|
|
254
257
|
--source manual Provider or app source label for schedule runs.
|
|
255
|
-
--with policy,
|
|
258
|
+
--with policy,event Add optional artifacts to `make feature`; supports policy, factory, seed, task, event, listener, job, notification, schedule, ui, and upload.
|
|
256
259
|
--recipe full-slice Add the canonical full-slice feature recipe: policy, client UI, workflow artifacts, outbox-ready events/jobs, and listener registration.
|
|
257
260
|
make tenancy Add `features/workspaces` with membership-aware tenant resolution, workspace/member/invite routes, a demo seed, and workspace settings UI on shell apps.
|
|
258
261
|
make payments Add `features/billing` with free/pro plans, a `createPaymentWebhookRoute(...)` route, billing persistence, entitlement gating, a demo seed, and a plan settings UI on shell apps.
|
|
259
262
|
make inbox Add `features/inbox` with a per-user notification inbox, an in-app notification channel, cursor-paginated routes, and an inbox page on shell apps.
|
|
260
|
-
--
|
|
261
|
-
--tenant
|
|
263
|
+
--authorization Add authorization metadata, policy wiring, policy tests, and use-case gate checks to `make resource`.
|
|
264
|
+
--tenant-scoped Add tenant-scoped schemas, `TenantScope` repository boundaries, and use-case tenant checks to `make resource`.
|
|
262
265
|
--events Add created, updated, and deleted domain events to `make resource`.
|
|
263
266
|
--soft-delete Archive resource rows with deletedAt instead of hard-deleting them.
|
|
264
|
-
--event posts
|
|
267
|
+
--event posts.published Event for `make listener`.
|
|
265
268
|
--cron "0 9 * * *" Cron expression for `make schedule`.
|
|
266
269
|
--timezone America/Chicago Timezone for `make schedule`.
|
|
267
270
|
--route Add a Next.js cron route for `make schedule`.
|
|
268
|
-
|
|
271
|
+
--ui Add a typed upload client, React uploader, and component test to `make upload`.
|
|
272
|
+
provider add cache-redis Add dependencies, provider wiring, env examples, and setup notes for a supported provider preset.
|
|
269
273
|
--strict Include CI-oriented doctor warnings and fail on warnings.
|
|
270
274
|
--fix Apply low-risk doctor fixes before reporting.
|
|
271
275
|
--shell zsh Shell for `completion install`/`uninstall`. Defaults to $SHELL.
|
|
@@ -323,7 +327,7 @@ shell or source the rc file to activate completions. Zsh completions require
|
|
|
323
327
|
`compinit` to be loaded, which most zsh setups already do.
|
|
324
328
|
|
|
325
329
|
Completions cover commands, subcommands, flags, and enum flag values such as
|
|
326
|
-
`--template` and `--
|
|
330
|
+
`--template` and `--providers`. The shell scripts call the
|
|
327
331
|
`beignet completion propose` helper, which prints one proposal per line for a
|
|
328
332
|
partial command line; it exists for the shell integration and is safe to
|
|
329
333
|
ignore otherwise. Completions complete whatever `beignet` resolves to on your
|
|
@@ -351,7 +355,7 @@ The standard app layout includes the files feature generators expect:
|
|
|
351
355
|
|
|
352
356
|
```txt
|
|
353
357
|
app-context.ts
|
|
354
|
-
infra/
|
|
358
|
+
infra/port-wiring.ts
|
|
355
359
|
ports/index.ts
|
|
356
360
|
lib/routes.ts
|
|
357
361
|
lib/use-case.ts
|
|
@@ -380,6 +384,8 @@ export default defineConfig({
|
|
|
380
384
|
appContext: "src/app-context.ts",
|
|
381
385
|
contracts: "src/features",
|
|
382
386
|
features: "src/features",
|
|
387
|
+
ports: "src/ports/index.ts",
|
|
388
|
+
portWiring: "src/infra/port-wiring.ts",
|
|
383
389
|
routesBuilder: "src/lib/routes.ts",
|
|
384
390
|
routes: "src/app/api",
|
|
385
391
|
server: "src/core/server/index.ts",
|
|
@@ -427,12 +433,12 @@ option wherever the Drizzle setup statements and ports are created.
|
|
|
427
433
|
Use `database.schemaSources` when operational table definitions live outside
|
|
428
434
|
the app's canonical `infra/db/schema/`, `drizzle/`, or `infra/db/` files. Each
|
|
429
435
|
entry can be an app-relative file or directory, an `@/` app path, or a package
|
|
430
|
-
specifier such as `@acme/db/schema`. `doctor` and `
|
|
436
|
+
specifier such as `@acme/db/schema`. `doctor` and `provider audit` also
|
|
431
437
|
follow schema-like imports from app database files, but explicit schema
|
|
432
438
|
sources make shared-package layouts predictable.
|
|
433
439
|
|
|
434
440
|
Provider metadata describes the standard environment requirements checked by
|
|
435
|
-
`doctor --strict` and `
|
|
441
|
+
`doctor --strict` and `provider audit`. When an injected client gets its
|
|
436
442
|
configuration from a platform binding, IAM, or another non-env mechanism,
|
|
437
443
|
declare only the irrelevant static requirement as an explicit exception:
|
|
438
444
|
|
|
@@ -494,7 +500,7 @@ around the feature's real workflow.
|
|
|
494
500
|
Add common feature-owned artifacts with `--with`:
|
|
495
501
|
|
|
496
502
|
```bash
|
|
497
|
-
beignet make feature projects --with policy,
|
|
503
|
+
beignet make feature projects --with policy,event,job,notification,ui,upload
|
|
498
504
|
```
|
|
499
505
|
|
|
500
506
|
The optional artifacts use predictable starter names:
|
|
@@ -504,6 +510,9 @@ The optional artifacts use predictable starter names:
|
|
|
504
510
|
- `features/projects/jobs/process.ts`
|
|
505
511
|
- `features/projects/notifications/created.ts`
|
|
506
512
|
- `features/projects/components/projects-panel.tsx`
|
|
513
|
+
- `features/projects/attachment-upload-manifest.ts`
|
|
514
|
+
- `features/projects/client/attachment-upload.ts`
|
|
515
|
+
- `features/projects/components/attachment-uploader.tsx`
|
|
507
516
|
- `features/projects/uploads/attachment.ts`
|
|
508
517
|
|
|
509
518
|
Event, job, notification, and upload registries are created or updated in the
|
|
@@ -515,8 +524,12 @@ beignet make feature projects --with ui
|
|
|
515
524
|
|
|
516
525
|
It writes a feature-colocated client helper at
|
|
517
526
|
`features/projects/client/queries.ts` and a React component that consumes those
|
|
518
|
-
query/mutation options through TanStack Query
|
|
519
|
-
`
|
|
527
|
+
query/mutation options through TanStack Query. The component binds the create
|
|
528
|
+
contract through `rhf(contract)`, reuses its body schema for field validation,
|
|
529
|
+
maps server failures with `rootFormError(...)`, resets after success, and
|
|
530
|
+
invalidates the generated list query. If the app does not have one yet, the
|
|
531
|
+
generator also creates the canonical `client/forms.ts` adapter and installs the
|
|
532
|
+
React Hook Form dependencies.
|
|
520
533
|
|
|
521
534
|
Use the named full-slice recipe when you want a richer reference slice:
|
|
522
535
|
|
|
@@ -527,7 +540,8 @@ beignet make feature projects --recipe full-slice
|
|
|
527
540
|
The recipe includes the standard contract, schema, use-case, port, route, test,
|
|
528
541
|
repository, and wiring files, then adds policy, factories, seeds, tasks,
|
|
529
542
|
events, listeners, jobs, notifications, schedules, UI client helpers,
|
|
530
|
-
components,
|
|
543
|
+
components, an upload definition with a connected uploader, outbox wiring, and
|
|
544
|
+
`outbox_messages` Drizzle schema. The
|
|
531
545
|
generated create use case publishes the generated created event so the event
|
|
532
546
|
artifact is connected, and the listener registry is registered in
|
|
533
547
|
`server/listeners.ts` and wired from `server/providers.ts`. Replace the starter names, listener/job bodies,
|
|
@@ -541,10 +555,10 @@ Use `make use-case` inside a Beignet app when you want a focused
|
|
|
541
555
|
application workflow without generating HTTP contracts or ports:
|
|
542
556
|
|
|
543
557
|
```bash
|
|
544
|
-
beignet make use-case projects
|
|
558
|
+
beignet make use-case projects.archive-project
|
|
545
559
|
```
|
|
546
560
|
|
|
547
|
-
The name uses `feature
|
|
561
|
+
The name uses `feature.action` format. The command writes
|
|
548
562
|
`features/projects/use-cases/archive-project.ts` and creates or updates
|
|
549
563
|
`features/projects/use-cases/index.ts`. Read-style actions that start with `get`, `list`,
|
|
550
564
|
`find`, `search`, or `count` generate `.query(...)`; other actions generate
|
|
@@ -558,8 +572,8 @@ repository-oriented tests; `make test` is for adding coverage around an
|
|
|
558
572
|
additional workflow that does not need a whole new resource slice.
|
|
559
573
|
|
|
560
574
|
```bash
|
|
561
|
-
beignet make use-case projects
|
|
562
|
-
beignet make test projects
|
|
575
|
+
beignet make use-case projects.archive-project
|
|
576
|
+
beignet make test projects.archive-project
|
|
563
577
|
```
|
|
564
578
|
|
|
565
579
|
The command writes `features/projects/tests/archive-project.test.ts`, builds the
|
|
@@ -622,7 +636,7 @@ main concept is an entity with repository-backed persistence:
|
|
|
622
636
|
|
|
623
637
|
```bash
|
|
624
638
|
beignet make resource projects
|
|
625
|
-
beignet make resource projects --
|
|
639
|
+
beignet make resource projects --authorization --tenant-scoped --events --soft-delete
|
|
626
640
|
```
|
|
627
641
|
|
|
628
642
|
`make resource` generates a CRUD-shaped slice with list, create, get, update,
|
|
@@ -645,8 +659,8 @@ memory and Drizzle repositories include the version in the update check and
|
|
|
645
659
|
increment it on success. Stale updates become the generated
|
|
646
660
|
`<Resource>Conflict` catalog error.
|
|
647
661
|
|
|
648
|
-
Use `--
|
|
649
|
-
`ctx.gate.authorize(...)` calls. Use `--tenant` to scope repository reads and
|
|
662
|
+
Use `--authorization` to generate authorization metadata, policy wiring, and use-case
|
|
663
|
+
`ctx.gate.authorize(...)` calls. Use `--tenant-scoped` to scope repository reads and
|
|
650
664
|
writes with a branded `TenantScope`; generated use cases call
|
|
651
665
|
`requireTenantScope(ctx)`, repository ports require `scope: TenantScope`, and
|
|
652
666
|
adapters unwrap the storage key with `tenantScopeId(scope)`. `doctor --strict`
|
|
@@ -657,7 +671,7 @@ Use `--events` to generate created, updated, and deleted domain events and
|
|
|
657
671
|
publish them through `ctx.ports.eventBus`. The
|
|
658
672
|
starter ships no event bus, so `--events` also wires one: it adds
|
|
659
673
|
`eventBus: EventBusPort` to `AppPorts`, defers the key in
|
|
660
|
-
`infra/
|
|
674
|
+
`infra/port-wiring.ts`, registers `createMemoryEventBusProvider()` in
|
|
661
675
|
`server/providers.ts`, and adds the `@beignet/provider-event-bus-memory`
|
|
662
676
|
dependency. The wiring is skipped when the ports file already mentions
|
|
663
677
|
`eventBus`, so apps that wired their own bus are left untouched. Use
|
|
@@ -674,16 +688,17 @@ In standard apps, the command also creates
|
|
|
674
688
|
Use feature artifact generators when a workflow grows beyond a single use case:
|
|
675
689
|
|
|
676
690
|
```bash
|
|
677
|
-
beignet make task posts
|
|
678
|
-
beignet make event posts
|
|
679
|
-
beignet make job posts
|
|
680
|
-
beignet make notification posts
|
|
681
|
-
beignet make listener posts
|
|
682
|
-
beignet make schedule posts
|
|
683
|
-
beignet make upload posts
|
|
691
|
+
beignet make task posts.backfill-search
|
|
692
|
+
beignet make event posts.published
|
|
693
|
+
beignet make job posts.send-published-email
|
|
694
|
+
beignet make notification posts.published
|
|
695
|
+
beignet make listener posts.enqueue-published-email --event posts.published
|
|
696
|
+
beignet make schedule posts.daily-summary --cron "0 9 * * *" --timezone America/Chicago --route
|
|
697
|
+
beignet make upload posts.attachment
|
|
698
|
+
beignet make upload posts.attachment --ui
|
|
684
699
|
```
|
|
685
700
|
|
|
686
|
-
These commands use `feature
|
|
701
|
+
These commands use `feature.name` format and write colocated feature files:
|
|
687
702
|
|
|
688
703
|
- `features/posts/tasks/backfill-search.ts`
|
|
689
704
|
- `features/posts/domain/events/published.ts`
|
|
@@ -693,6 +708,15 @@ These commands use `feature/name` format and write colocated feature files:
|
|
|
693
708
|
- `features/posts/schedules/daily-summary.ts`
|
|
694
709
|
- `features/posts/uploads/attachment.ts`
|
|
695
710
|
|
|
711
|
+
Uploads always add a feature-root client-safe manifest so server constraints
|
|
712
|
+
and browser input hints share one source of truth. In full-stack apps, `--ui`
|
|
713
|
+
also writes `features/posts/client/attachment-upload.ts`,
|
|
714
|
+
`features/posts/components/attachment-uploader.tsx`, and
|
|
715
|
+
`features/posts/tests/attachment-uploader.test.tsx`, then installs
|
|
716
|
+
`@beignet/react-uploads`. The component handles progress, cancellation,
|
|
717
|
+
failures, reset, and completion. API-only apps reject `--ui` before writing;
|
|
718
|
+
omit it to generate the backend upload workflow alone.
|
|
719
|
+
|
|
696
720
|
Each command creates or updates the folder's `index.ts` with an exported
|
|
697
721
|
registry such as `postTasks`, `postJobs`, `postNotifications`,
|
|
698
722
|
`postListeners`, `postSchedules`, or `postUploads`. Task generators also
|
|
@@ -719,8 +743,8 @@ event` (and `make resource --events`) wires `eventBus: EventBusPort` with
|
|
|
719
743
|
`createMemoryMailerProvider()` and `notifications: NotificationPort` with
|
|
720
744
|
`createInlineNotificationsProvider()`, both dev-default providers from
|
|
721
745
|
`@beignet/core`. Each port is wired independently — added to `AppPorts`,
|
|
722
|
-
deferred in `infra/
|
|
723
|
-
and skipped when the ports file already has the key, so
|
|
746
|
+
deferred in `infra/port-wiring.ts`, and registered in `server/providers.ts` —
|
|
747
|
+
and skipped when the ports file already has the key, so providers such as
|
|
724
748
|
resend (which contributes `mailer`) and app-owned adapters are left
|
|
725
749
|
untouched. Swap the dev-default provider for a production adapter without
|
|
726
750
|
rerunning the generator; the port stays the same.
|
|
@@ -748,7 +772,9 @@ Event generators use `@beignet/core/events` directly and upload generators use
|
|
|
748
772
|
route under `app/api/cron/<feature>/<name>/route.ts`. Generated cron routes
|
|
749
773
|
require `CRON_SECRET` and record schedule start, completion, and failure events
|
|
750
774
|
in devtools. Generated uploads include starter metadata, constraints,
|
|
751
|
-
authorization, storage key, storage metadata, and completion hooks.
|
|
775
|
+
authorization, storage key, storage metadata, and completion hooks. Use
|
|
776
|
+
`make upload <feature.name> --ui` in a full-stack app to add the connected
|
|
777
|
+
React client and uploader.
|
|
752
778
|
|
|
753
779
|
Use `beignet outbox drain` when you need to drain durable events and jobs from
|
|
754
780
|
an app-owned CLI, CI, or worker entrypoint:
|
|
@@ -802,7 +828,7 @@ queue consumers, or interval polling from provider lifecycle hooks in serverless
|
|
|
802
828
|
apps.
|
|
803
829
|
|
|
804
830
|
`make listener` expects the event file to exist at the canonical generated path.
|
|
805
|
-
Run `make event <feature
|
|
831
|
+
Run `make event <feature.event>` first, then generate listeners for that event.
|
|
806
832
|
|
|
807
833
|
`make feature` and `make resource` are idempotent for unchanged generated files:
|
|
808
834
|
repeated runs skip identical files and avoid duplicate wiring. If a generated
|
|
@@ -849,8 +875,8 @@ for MySQL.
|
|
|
849
875
|
Generate feature-owned test factories and local/demo seeds with:
|
|
850
876
|
|
|
851
877
|
```bash
|
|
852
|
-
beignet make factory posts
|
|
853
|
-
beignet make seed posts
|
|
878
|
+
beignet make factory posts.post
|
|
879
|
+
beignet make seed posts.demo-posts
|
|
854
880
|
```
|
|
855
881
|
|
|
856
882
|
Factories are written under `features/posts/tests/factories/` and persist
|
|
@@ -934,6 +960,12 @@ paths, and `--json` emits machine-readable output with `schemaVersion: 1`.
|
|
|
934
960
|
Run it in the deploy pipeline where production configuration is present; it
|
|
935
961
|
exits `1` on any error finding.
|
|
936
962
|
|
|
963
|
+
`beignet task run`, `beignet schedule run`, and `beignet outbox drain` use an
|
|
964
|
+
optional `ctx.ports.errorReporter` from their app-owned context. They report
|
|
965
|
+
terminal command failures, dead letters, and settlement failures, then perform
|
|
966
|
+
a bounded flush before stopping context. Retryable outbox deliveries remain
|
|
967
|
+
instrumentation/log events rather than incident reports.
|
|
968
|
+
|
|
937
969
|
## Lint app architecture
|
|
938
970
|
|
|
939
971
|
Run `lint` when you want the CLI to enforce Beignet dependency direction:
|
|
@@ -951,6 +983,11 @@ feature-specific domain files importing another feature's domain unless the
|
|
|
951
983
|
target is `features/shared/domain`. Workflow folders include feature-owned
|
|
952
984
|
jobs, listeners, notifications, schedules, and uploads.
|
|
953
985
|
|
|
986
|
+
Local `@/` imports are resolved through the app's `tsconfig.json` path mapping,
|
|
987
|
+
including `@/* -> ./src/*` layouts, before dependency direction is classified.
|
|
988
|
+
The CLI uses TypeScript's config parser, so JSON comments and extended
|
|
989
|
+
tsconfigs follow the same rules as the compiler.
|
|
990
|
+
|
|
954
991
|
Import diagnostics include 1-based `line` and `column` positions. Human
|
|
955
992
|
output prints clickable `file.ts:12:3` locations; runtime-boundary
|
|
956
993
|
diagnostics report the chain root file and the full import chain in the
|
|
@@ -1056,20 +1093,20 @@ metadata in installed package manifests. The CLI does not import provider
|
|
|
1056
1093
|
implementation modules to discover those facts, and it reports malformed
|
|
1057
1094
|
metadata before using provider-derived doctor rules.
|
|
1058
1095
|
|
|
1059
|
-
Use `beignet
|
|
1096
|
+
Use `beignet provider add <preset>` to wire a stable provider recipe after
|
|
1060
1097
|
app creation. It updates `package.json`, `server/providers.ts`, app port
|
|
1061
|
-
types, deferred port wiring, `.env.example`, and `docs/
|
|
1098
|
+
types, deferred port wiring, `.env.example`, and `docs/providers.md`.
|
|
1062
1099
|
Supported presets are `flags-openfeature`, `jobs-bullmq`, `jobs-inngest`,
|
|
1063
|
-
`mail-resend`, `mail-smtp`, `payments-stripe`, `search-meilisearch`, `sentry`,
|
|
1064
|
-
`
|
|
1065
|
-
`s3
|
|
1100
|
+
`mail-resend`, `mail-smtp`, `payments-stripe`, `search-meilisearch`, `error-reporting-sentry`,
|
|
1101
|
+
`rate-limit-upstash`, `cache-redis`, `event-bus-redis`, `locks-redis`,
|
|
1102
|
+
`storage-s3`, and `storage-vercel-blob`; pass `--dry-run --json` to preview
|
|
1066
1103
|
the exact file changes. The same presets can be selected at create time with
|
|
1067
|
-
`--
|
|
1104
|
+
`--providers`.
|
|
1068
1105
|
|
|
1069
|
-
Use `beignet
|
|
1106
|
+
Use `beignet provider audit` when you want a report-only inventory of the
|
|
1070
1107
|
provider packages installed in an app. The human audit prints provider
|
|
1071
1108
|
metadata validity, registration status, required env, required tables, and
|
|
1072
|
-
declared app ports. `beignet
|
|
1109
|
+
declared app ports. `beignet provider audit --json` returns a versioned
|
|
1073
1110
|
`schemaVersion: 1` payload with active variants and watchers for scripts and
|
|
1074
1111
|
coding agents. The command does not fail CI for missing setup; stable,
|
|
1075
1112
|
actionable findings belong in `doctor`.
|
|
@@ -1113,8 +1150,8 @@ The server exposes six tools:
|
|
|
1113
1150
|
- `doctor` - drift diagnostics as JSON, `{ strict?: boolean }` defaults to
|
|
1114
1151
|
`true` (read-only)
|
|
1115
1152
|
- `doctor_fix` - apply doctor's low-risk fixes; repairs route-group,
|
|
1116
|
-
schedule, task,
|
|
1117
|
-
|
|
1153
|
+
schedule, task, outbox, and fully unregistered listener registry drift when
|
|
1154
|
+
the central registry/provider anchors are recognizable
|
|
1118
1155
|
- `lint` - architecture dependency-direction diagnostics (read-only)
|
|
1119
1156
|
- `make` - run a generator with `{ artifact, name, ...options }`, the same
|
|
1120
1157
|
artifact kinds as `beignet make`
|
package/dist/choices.d.ts
CHANGED
|
@@ -13,20 +13,20 @@ export type PackageManager = "bun" | "npm" | "pnpm" | "yarn";
|
|
|
13
13
|
*/
|
|
14
14
|
export type TemplateName = "next";
|
|
15
15
|
/**
|
|
16
|
-
* Optional
|
|
16
|
+
* Optional providers rendered directly by the starter template.
|
|
17
17
|
*
|
|
18
18
|
* Better Auth, Drizzle/libSQL, and pino ship in every starter, so only
|
|
19
|
-
*
|
|
19
|
+
* providers that add an external service remain selectable.
|
|
20
20
|
*/
|
|
21
|
-
export type
|
|
21
|
+
export type StarterProviderName = "jobs-inngest" | "mail-resend" | "rate-limit-upstash";
|
|
22
22
|
/**
|
|
23
23
|
* Databases supported by the starter's Drizzle persistence layer.
|
|
24
24
|
*/
|
|
25
25
|
export type DatabaseName = "sqlite" | "postgres" | "mysql";
|
|
26
26
|
/**
|
|
27
|
-
* Provider setup presets supported by `beignet
|
|
27
|
+
* Provider setup presets supported by `beignet provider add`.
|
|
28
28
|
*/
|
|
29
|
-
export type ProviderPresetName = "flags-openfeature" | "jobs-bullmq" | "jobs-inngest" | "mail-resend" | "mail-smtp" | "payments-stripe" | "search-meilisearch" | "sentry" | "
|
|
29
|
+
export type ProviderPresetName = "flags-openfeature" | "jobs-bullmq" | "jobs-inngest" | "mail-resend" | "mail-smtp" | "payments-stripe" | "search-meilisearch" | "error-reporting-sentry" | "rate-limit-upstash" | "cache-redis" | "event-bus-redis" | "locks-redis" | "storage-s3" | "storage-vercel-blob";
|
|
30
30
|
/**
|
|
31
31
|
* Supported scaffold template choices.
|
|
32
32
|
*/
|
|
@@ -36,9 +36,9 @@ export declare const templateChoices: readonly ["next"];
|
|
|
36
36
|
*/
|
|
37
37
|
export declare const packageManagerChoices: readonly ["bun", "npm", "pnpm", "yarn"];
|
|
38
38
|
/**
|
|
39
|
-
* Supported
|
|
39
|
+
* Supported providers rendered directly by the starter.
|
|
40
40
|
*/
|
|
41
|
-
export declare const
|
|
41
|
+
export declare const starterProviderChoices: readonly ["jobs-inngest", "mail-resend", "rate-limit-upstash"];
|
|
42
42
|
/**
|
|
43
43
|
* Supported scaffold database choices.
|
|
44
44
|
*/
|
|
@@ -46,25 +46,21 @@ export declare const databaseChoices: readonly ["sqlite", "postgres", "mysql"];
|
|
|
46
46
|
/**
|
|
47
47
|
* Supported provider setup preset choices.
|
|
48
48
|
*/
|
|
49
|
-
export declare const providerPresetChoices: readonly ["flags-openfeature", "jobs-bullmq", "jobs-inngest", "mail-resend", "mail-smtp", "payments-stripe", "search-meilisearch", "sentry", "
|
|
49
|
+
export declare const providerPresetChoices: readonly ["flags-openfeature", "jobs-bullmq", "jobs-inngest", "mail-resend", "mail-smtp", "payments-stripe", "search-meilisearch", "error-reporting-sentry", "rate-limit-upstash", "cache-redis", "event-bus-redis", "locks-redis", "storage-s3", "storage-vercel-blob"];
|
|
50
50
|
/**
|
|
51
|
-
* Values accepted by `beignet create --
|
|
52
|
-
* integrations plus the full `beignet providers add` preset catalog.
|
|
51
|
+
* Values accepted by `beignet create --providers`.
|
|
53
52
|
*/
|
|
54
|
-
export type
|
|
53
|
+
export type CreateProviderName = ProviderPresetName;
|
|
55
54
|
/**
|
|
56
|
-
* Supported `beignet create --
|
|
57
|
-
* come first; the rest of the provider preset catalog follows.
|
|
55
|
+
* Supported `beignet create --providers` choices.
|
|
58
56
|
*/
|
|
59
|
-
export declare const
|
|
57
|
+
export declare const createProviderChoices: readonly ["flags-openfeature", "jobs-bullmq", "jobs-inngest", "mail-resend", "mail-smtp", "payments-stripe", "search-meilisearch", "error-reporting-sentry", "rate-limit-upstash", "cache-redis", "event-bus-redis", "locks-redis", "storage-s3", "storage-vercel-blob"];
|
|
60
58
|
/**
|
|
61
|
-
* Split `--
|
|
62
|
-
*
|
|
63
|
-
* the scaffold is written. Preset names with a template equivalent are
|
|
64
|
-
* normalized to the template integration; duplicates collapse.
|
|
59
|
+
* Split `--providers` selections into providers rendered directly by the
|
|
60
|
+
* starter and presets applied after the scaffold is written.
|
|
65
61
|
*/
|
|
66
|
-
export declare function
|
|
67
|
-
|
|
62
|
+
export declare function splitCreateProviders(values: readonly CreateProviderName[]): {
|
|
63
|
+
starterProviders: StarterProviderName[];
|
|
68
64
|
presets: ProviderPresetName[];
|
|
69
65
|
};
|
|
70
66
|
/**
|
|
@@ -98,7 +94,7 @@ export declare const completionShellChoices: readonly ["bash", "zsh"];
|
|
|
98
94
|
/**
|
|
99
95
|
* Optional artifacts supported by `beignet make feature --with`.
|
|
100
96
|
*/
|
|
101
|
-
export declare const makeFeatureAddonChoices: readonly ["policy", "factory", "
|
|
97
|
+
export declare const makeFeatureAddonChoices: readonly ["policy", "factory", "event", "job", "listener", "notification", "schedule", "seed", "task", "ui", "upload"];
|
|
102
98
|
/**
|
|
103
99
|
* Optional artifact accepted by `beignet make feature --with`.
|
|
104
100
|
*/
|
package/dist/choices.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../src/choices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC;;;;;GAKG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../src/choices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,aAAa,GACb,oBAAoB,CAAC;AACzB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAC3D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,oBAAoB,GACpB,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,qBAAqB,CAAC;AAE1B;;GAEG;AACH,eAAO,MAAM,eAAe,mBAEgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB,yCAKY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,sBAAsB,gEAIgB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,eAAe,0CAIgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB,0QAegB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,qBAAqB,0QAAwB,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,GAAG;IAC3E,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;IACxC,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CAaA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAWpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACd,MAAM,CAWR;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,sBAAsB,0BAGY,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,uBAAuB,wHAY1B,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,wBAAwB,yBAA0B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|