create-rudder-app 0.6.0 → 0.7.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 +121 -44
- package/dist/templates/demos/polymorphic.d.ts +17 -0
- package/dist/templates/demos/polymorphic.d.ts.map +1 -0
- package/dist/templates/demos/polymorphic.js +378 -0
- package/dist/templates/demos/polymorphic.js.map +1 -0
- package/dist/templates/demos/registry.d.ts.map +1 -1
- package/dist/templates/demos/registry.js +8 -0
- package/dist/templates/demos/registry.js.map +1 -1
- package/dist/templates/routes/api.d.ts.map +1 -1
- package/dist/templates/routes/api.js +9 -0
- package/dist/templates/routes/api.js.map +1 -1
- package/dist/templates/routes/web.d.ts.map +1 -1
- package/dist/templates/routes/web.js +9 -0
- package/dist/templates/routes/web.js.map +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +10 -0
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# create-rudder-app
|
|
2
2
|
|
|
3
|
-
**Spin up a production-ready [RudderJS](https://github.com/rudderjs/rudder) app in under 60 seconds** — with auth that works, a database wired, SSR views rendering, and
|
|
3
|
+
**Spin up a production-ready [RudderJS](https://github.com/rudderjs/rudder) app in under 60 seconds** — with auth that works, a database wired, SSR views rendering, and your pick from 25 opt-in packages, all bootstrapped through Vite + Vike.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
pnpm create rudder-app my-app
|
|
@@ -29,15 +29,16 @@ Skip `[name]` to be prompted for one.
|
|
|
29
29
|
|
|
30
30
|
## What you get out of the box
|
|
31
31
|
|
|
32
|
-
With the **default choices** (Prisma + SQLite + Auth +
|
|
32
|
+
With the **default choices** (Prisma + SQLite + Auth + React + Tailwind + shadcn/ui + Contact demo), 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 /api/auth/sign-in/email` / `sign-up/email` / `sign-out` / `request-password-reset` / `reset-password` endpoints.
|
|
36
36
|
- **Database ready** — Prisma schema with a `User` + `PasswordResetToken` model, SQLite by default, a `User` ORM model.
|
|
37
|
-
- **Session-based auth** — cookie sessions via `@rudderjs/session`, `AuthMiddleware` applied
|
|
38
|
-
- **Rate limiting** — 10 req/min on auth endpoints out of the box.
|
|
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
|
+
- **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
|
+
- **`/demos` index** — every demo you ticked appears as a card linking to its page; new demos picked up automatically from the shared registry.
|
|
41
42
|
|
|
42
43
|
If you tick **AI** you get a `/ai-chat` demo. If you tick **MCP**, `POST /mcp/echo`. If you tick **Passport**, a full OAuth 2 server at `/oauth/authorize` / `/oauth/token`. Everything is opt-in and pay-as-you-go.
|
|
43
44
|
|
|
@@ -45,51 +46,104 @@ If you tick **AI** you get a `/ai-chat` demo. If you tick **MCP**, `POST /mcp/ec
|
|
|
45
46
|
|
|
46
47
|
## Prompts
|
|
47
48
|
|
|
48
|
-
The installer walks you through up to
|
|
49
|
+
The installer walks you through up to 10 prompts (several are conditional):
|
|
49
50
|
|
|
50
51
|
| # | Prompt | Options | Default | Condition |
|
|
51
52
|
|---|--------|---------|---------|-----------|
|
|
52
53
|
| 1 | Project name | any string | — | always (skipped if passed as argv) |
|
|
53
54
|
| 2 | Database ORM | Prisma · Drizzle · None | Prisma | always |
|
|
54
55
|
| 3 | Database driver | SQLite · PostgreSQL · MySQL | SQLite | only if ORM selected |
|
|
55
|
-
| 4 |
|
|
56
|
+
| 4 | Packages | categorized multiselect (see below) | Authentication | always |
|
|
56
57
|
| 5 | Frontend frameworks | React · Vue · Solid (multiselect) | React | always |
|
|
57
58
|
| 6 | Primary framework | single select from chosen frameworks | — | only if >1 framework selected |
|
|
58
59
|
| 7 | Add Tailwind CSS? | yes / no | yes | always |
|
|
59
60
|
| 8 | Add shadcn/ui? | yes / no | yes | only if React + Tailwind |
|
|
60
|
-
| 9 |
|
|
61
|
+
| 9 | Demos | multiselect filtered by previous picks | Contact form | only when at least one available |
|
|
62
|
+
| 10 | Install dependencies? | yes / no | yes | always |
|
|
61
63
|
|
|
62
|
-
> **Not sure what to pick?** Accept every default — it produces the most-used stack (Prisma + SQLite + Auth +
|
|
64
|
+
> **Not sure what to pick?** Accept every default — it produces the most-used stack (Prisma + SQLite + Auth + React + Tailwind + shadcn/ui + Contact demo) and is the best-tested path. You can always add packages later.
|
|
65
|
+
|
|
66
|
+
### Tier A — silent install
|
|
67
|
+
|
|
68
|
+
`@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.
|
|
63
69
|
|
|
64
70
|
### Package checklist (prompt 4)
|
|
65
71
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
72
|
+
Eight categories, 25 visible rows, one pre-checked. Picking ORM=none filters out the four DB-gated rows (Authentication, Sanctum, Passport, Cashier-Paddle).
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
─── Auth & Users ───
|
|
76
|
+
Authentication login, register, sessions
|
|
77
|
+
Sanctum API tokens (SHA-256 + abilities)
|
|
78
|
+
Passport OAuth 2 server — requires Auth + Prisma
|
|
79
|
+
Socialite social login (GitHub, Google, Facebook, Apple)
|
|
80
|
+
|
|
81
|
+
─── Infrastructure ───
|
|
82
|
+
Queue background jobs
|
|
83
|
+
Storage file uploads (local + S3)
|
|
84
|
+
Scheduler cron-like task scheduling
|
|
85
|
+
Image resize, crop, convert (sharp wrapper)
|
|
86
|
+
|
|
87
|
+
─── Communication ───
|
|
88
|
+
Mail SMTP + log driver
|
|
89
|
+
Notifications multi-channel
|
|
90
|
+
WebSocket / Broadcast real-time channels
|
|
91
|
+
Sync (Yjs CRDT) collaborative documents
|
|
92
|
+
|
|
93
|
+
─── AI ───
|
|
94
|
+
AI 11 LLM providers (Anthropic, OpenAI, …)
|
|
95
|
+
MCP Model Context Protocol — expose tools to LLMs
|
|
96
|
+
Boost AI coding DX (Claude Code / Cursor / Copilot)
|
|
97
|
+
|
|
98
|
+
─── Internationalization ───
|
|
99
|
+
Localization i18n — trans(), setLocale()
|
|
100
|
+
|
|
101
|
+
─── Product & Features ───
|
|
102
|
+
Cashier-Paddle subscriptions + checkout — requires Auth + Prisma
|
|
103
|
+
Pennant feature flags
|
|
104
|
+
|
|
105
|
+
─── Observability ───
|
|
106
|
+
Telescope debug dashboard
|
|
107
|
+
Pulse metrics dashboard
|
|
108
|
+
Horizon queue monitoring
|
|
109
|
+
|
|
110
|
+
─── Utilities ───
|
|
111
|
+
Crypt AES-256-CBC + HMAC encryption
|
|
112
|
+
HTTP fluent fetch client (retries, timeouts, pools)
|
|
113
|
+
Process shell execution (run, pool, pipe)
|
|
114
|
+
Concurrency parallel execution via worker threads
|
|
115
|
+
```
|
|
84
116
|
|
|
85
117
|
Package-specific behavior:
|
|
86
118
|
|
|
87
119
|
- **AI** — generates `config/ai.ts`, AI chat demo at `/ai-chat`, `POST /api/ai/chat`.
|
|
88
|
-
- **MCP** — generates `app/Mcp/EchoServer.ts` and wires `POST /mcp/echo`.
|
|
89
|
-
- **Passport** — generates `config/passport.ts`, OAuth 2 routes (`/oauth/authorize`, `/oauth/token`, etc.), and `OAuthClient` + `OAuthAccessToken` Prisma models.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
120
|
+
- **MCP** — generates `app/Mcp/EchoServer.ts` + `EchoTool.ts` and wires `POST /mcp/echo`.
|
|
121
|
+
- **Passport** — generates `config/passport.ts`, OAuth 2 routes (`/oauth/authorize`, `/oauth/token`, etc.), and `OAuthClient` + `OAuthAccessToken` Prisma models. Filtered out when ORM=none.
|
|
122
|
+
|
|
123
|
+
### Demos (prompt 9)
|
|
124
|
+
|
|
125
|
+
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).
|
|
126
|
+
|
|
127
|
+
| Demo | Gate | What it shows |
|
|
128
|
+
|------|------|---------------|
|
|
129
|
+
| Contact form | always | CSRF + Zod validation, FormRequest-style errors |
|
|
130
|
+
| Cache counter | always | `Cache.get` + `Cache.set` round-trip |
|
|
131
|
+
| Todos | ORM | CRUD wired through ORM model + interactive UI |
|
|
132
|
+
| Queue dispatch | Queue | `ExampleJob.dispatch().send()` → handler logs |
|
|
133
|
+
| Mail send | Mail | `Mail.to(addr).send(new DemoMail(...))` via log driver |
|
|
134
|
+
| Notifications | Notifications + Mail | `notify(Notification.route('mail', addr), ...)` |
|
|
135
|
+
| Localization | Localization | locale switcher + `runWithLocale` + `trans()` |
|
|
136
|
+
| HTTP client | HTTP | `Http.retry(3, 200).timeout(5000).get(url)` against a public API |
|
|
137
|
+
| Avatar resize | Storage + Image | upload → 256×256 WebP via `@rudderjs/image` |
|
|
138
|
+
| Worker threads | Concurrency | sequential vs parallel `fib(n)` via `Concurrency.run()` |
|
|
139
|
+
| System info | Process | three shell commands via `Process.run()` and `Process.pool()` |
|
|
140
|
+
| Feature flags | Pennant + Auth | boolean / value / scoped / Lottery features + `FeatureMiddleware` |
|
|
141
|
+
| WebSocket chat | Broadcast | real-time chat + presence over a single WS |
|
|
142
|
+
| Yjs collaboration | Sync | CRDT live document with awareness cursors |
|
|
143
|
+
|
|
144
|
+
Demos are silently skipped when the primary framework isn't React (the templates ship React only for now).
|
|
145
|
+
|
|
146
|
+
Always-included base packages: `core`, `router`, `server-hono`, `middleware`, `vite`, `console`, `cli`, `log`, plus the Tier A trio above.
|
|
93
147
|
|
|
94
148
|
---
|
|
95
149
|
|
|
@@ -102,11 +156,16 @@ my-app/
|
|
|
102
156
|
│ └── providers.ts # [...(await defaultProviders()), ...app providers]
|
|
103
157
|
├── config/ # app, server, log + per-package configs (auth, cache, session, …)
|
|
104
158
|
├── app/
|
|
105
|
-
│ ├──
|
|
106
|
-
│ ├──
|
|
107
|
-
│ ├──
|
|
108
|
-
│
|
|
109
|
-
│
|
|
159
|
+
│ ├── Http/Controllers/AuthController.ts # (if Auth)
|
|
160
|
+
│ ├── Models/User.ts # (if Auth)
|
|
161
|
+
│ ├── Views/ # (if Auth) Welcome + Auth/{Login,Register,...} vendored
|
|
162
|
+
│ │ # + Demos/<picked>.tsx
|
|
163
|
+
│ ├── Mcp/{EchoServer,EchoTool}.ts # (if MCP)
|
|
164
|
+
│ ├── Modules/Todo/ # (if Todos demo)
|
|
165
|
+
│ ├── Jobs/ExampleJob.ts # (if Queue demo)
|
|
166
|
+
│ ├── Mail/DemoMail.ts # (if Mail demo)
|
|
167
|
+
│ ├── Notifications/WelcomeNotification.ts # (if Notifications demo)
|
|
168
|
+
│ └── Providers/AppServiceProvider.ts
|
|
110
169
|
├── routes/
|
|
111
170
|
│ ├── api.ts # JSON API routes (+ auth endpoints if Auth, + OAuth2 if Passport)
|
|
112
171
|
│ ├── web.ts # Vike page routes + registerAuthRoutes() (if Auth)
|
|
@@ -123,9 +182,12 @@ my-app/
|
|
|
123
182
|
│ ├── auth.prisma # (if Auth) User + PasswordResetToken
|
|
124
183
|
│ ├── passport.prisma # (if Passport) OAuthClient + OAuthAccessToken
|
|
125
184
|
│ ├── notification.prisma # (if Notifications)
|
|
126
|
-
│ └── modules.prisma #
|
|
185
|
+
│ └── modules.prisma # per-feature module schemas (Todo, …)
|
|
127
186
|
├── drizzle/ # (if Drizzle) schema directory
|
|
128
|
-
├──
|
|
187
|
+
├── lang/{en,es,ar}/ # (if Localization demo) message files
|
|
188
|
+
├── src/
|
|
189
|
+
│ ├── index.css # (if Tailwind) — semantic classes work without Tailwind too
|
|
190
|
+
│ └── RudderSocket.ts # (if Broadcast) — vendored client helper
|
|
129
191
|
├── vite.config.ts
|
|
130
192
|
├── tsconfig.json
|
|
131
193
|
├── .env + .env.example
|
|
@@ -158,9 +220,11 @@ my-app/
|
|
|
158
220
|
|
|
159
221
|
| Selection | `src/index.css` content |
|
|
160
222
|
|-----------|------------------------|
|
|
161
|
-
| Tailwind + shadcn |
|
|
162
|
-
| Tailwind only | `@import "tailwindcss"; @import "tw-animate-css";` |
|
|
163
|
-
| No Tailwind |
|
|
223
|
+
| Tailwind + shadcn | shadcn CSS variables + `@import "shadcn/tailwind.css"` + semantic-class `@apply` rules |
|
|
224
|
+
| Tailwind only | `@import "tailwindcss"; @import "tw-animate-css";` + semantic-class `@apply` rules |
|
|
225
|
+
| No Tailwind | hand-authored CSS — same semantic class names so JSX never branches on the flag |
|
|
226
|
+
|
|
227
|
+
Demos use the same semantic class vocabulary across all three variants — `.page`, `.feature-card`, `.form-input`, `.demo-card`, `.chat-bubble`, etc. — so they look right whether or not you ship Tailwind.
|
|
164
228
|
</details>
|
|
165
229
|
|
|
166
230
|
<details>
|
|
@@ -245,6 +309,16 @@ pnpm rudder vendor:publish --tag=auth-views-react # or auth-views-vue
|
|
|
245
309
|
```
|
|
246
310
|
</details>
|
|
247
311
|
|
|
312
|
+
<details>
|
|
313
|
+
<summary><strong>APP_KEY length error after enabling Crypt</strong></summary>
|
|
314
|
+
|
|
315
|
+
`@rudderjs/crypt` requires exactly 32 bytes for AES-256. The scaffolder generates a valid key in `.env` but if you replace it, make sure the base64-decoded value is 32 bytes:
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
|
|
319
|
+
```
|
|
320
|
+
</details>
|
|
321
|
+
|
|
248
322
|
---
|
|
249
323
|
|
|
250
324
|
## Related
|
|
@@ -262,11 +336,14 @@ git clone https://github.com/rudderjs/rudder.git
|
|
|
262
336
|
cd rudder/create-rudder-app
|
|
263
337
|
pnpm install
|
|
264
338
|
pnpm build
|
|
265
|
-
node dist/index.js
|
|
266
|
-
pnpm test
|
|
339
|
+
node dist/index.js # launches the interactive CLI from source
|
|
340
|
+
pnpm test # 169 template tests + snapshot baseline
|
|
341
|
+
pnpm smoke # default end-to-end smoke
|
|
342
|
+
pnpm smoke --profile=no-db # ORM=none + observability survivability
|
|
343
|
+
pnpm smoke --profile=demos-all # every demo at once
|
|
267
344
|
```
|
|
268
345
|
|
|
269
|
-
Template logic lives in `src/templates.ts` (pure — returns `Record<path, content>`, no filesystem)
|
|
346
|
+
Template logic lives in `src/templates.ts` (pure — returns `Record<path, content>`, no filesystem) plus modular `src/templates/{configs,demos,prisma,…}/`. The entrypoint `src/index.ts` handles prompts + writes + installs. Adding a new package option touches `templates/configs/`, `templates/package-json.ts`, and `src/index.ts`. Adding a new demo means one entry in `src/templates/demos/registry.ts` plus a per-demo template module — the playground's `/demos` index picks it up automatically via the `create-rudder-app/demos-registry` subpath export.
|
|
270
347
|
|
|
271
348
|
---
|
|
272
349
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function postModelTs(): string;
|
|
2
|
+
export declare function videoModelTs(): string;
|
|
3
|
+
export declare function commentModelTs(): string;
|
|
4
|
+
export declare function polymorphicPrismaBlock(): string;
|
|
5
|
+
export declare function demosPolymorphicView(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Inlined into routes/web.ts demos block. Loads parents + hydrates each parent's
|
|
8
|
+
* comments via the morphMany relation. Returns plain objects (Vike refuses to
|
|
9
|
+
* serialize Model instances across the SSR boundary).
|
|
10
|
+
*/
|
|
11
|
+
export declare function demosPolymorphicWebBlock(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Inlined into routes/api.ts demos block. Six endpoints: state, create-post,
|
|
14
|
+
* create-video, comment-on-post, comment-on-video, resolve-parent (morphTo).
|
|
15
|
+
*/
|
|
16
|
+
export declare function demosPolymorphicApiBlock(): string;
|
|
17
|
+
//# sourceMappingURL=polymorphic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polymorphic.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/polymorphic.ts"],"names":[],"mappings":"AAOA,wBAAgB,WAAW,IAAI,MAAM,CAiBpC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAiBrC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAoBvC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAyB/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CA6L7C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAajD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CA0EjD"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
// Polymorphic relations demo — morphMany / morphTo via @rudderjs/orm.
|
|
2
|
+
//
|
|
3
|
+
// Scaffolds three Models (Post / Video / Comment), the React view, the
|
|
4
|
+
// `Comment` table's polymorphic columns (`commentableId` / `commentableType`,
|
|
5
|
+
// camelCase per ORM convention), the controller view, and a self-contained
|
|
6
|
+
// API surface (state + create + comment + parent-resolution).
|
|
7
|
+
export function postModelTs() {
|
|
8
|
+
return `import { Model } from '@rudderjs/orm'
|
|
9
|
+
import { Comment } from './Comment.js'
|
|
10
|
+
|
|
11
|
+
export class Post extends Model {
|
|
12
|
+
static table = 'post'
|
|
13
|
+
static fillable = ['title']
|
|
14
|
+
|
|
15
|
+
static override relations = {
|
|
16
|
+
comments: { type: 'morphMany' as const, model: () => Comment, morphName: 'commentable' },
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
id!: number
|
|
20
|
+
title!: string
|
|
21
|
+
createdAt!: Date
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
}
|
|
25
|
+
export function videoModelTs() {
|
|
26
|
+
return `import { Model } from '@rudderjs/orm'
|
|
27
|
+
import { Comment } from './Comment.js'
|
|
28
|
+
|
|
29
|
+
export class Video extends Model {
|
|
30
|
+
static table = 'video'
|
|
31
|
+
static fillable = ['url']
|
|
32
|
+
|
|
33
|
+
static override relations = {
|
|
34
|
+
comments: { type: 'morphMany' as const, model: () => Comment, morphName: 'commentable' },
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
id!: number
|
|
38
|
+
url!: string
|
|
39
|
+
createdAt!: Date
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
export function commentModelTs() {
|
|
44
|
+
return `import { Model } from '@rudderjs/orm'
|
|
45
|
+
import { Post } from './Post.js'
|
|
46
|
+
import { Video } from './Video.js'
|
|
47
|
+
|
|
48
|
+
export class Comment extends Model {
|
|
49
|
+
static table = 'comment'
|
|
50
|
+
static fillable = ['body', 'commentableId', 'commentableType']
|
|
51
|
+
|
|
52
|
+
static override relations = {
|
|
53
|
+
commentable: { type: 'morphTo' as const, morphName: 'commentable', types: () => [Post, Video] },
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
id!: number
|
|
57
|
+
body!: string
|
|
58
|
+
commentableId!: number
|
|
59
|
+
commentableType!: string
|
|
60
|
+
createdAt!: Date
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
}
|
|
64
|
+
export function polymorphicPrismaBlock() {
|
|
65
|
+
return `// module: Polymorphic demo (Post / Video / Comment)
|
|
66
|
+
// commentableId + commentableType follow @rudderjs/orm's camelCase convention.
|
|
67
|
+
model Post {
|
|
68
|
+
id Int @id @default(autoincrement())
|
|
69
|
+
title String
|
|
70
|
+
createdAt DateTime @default(now())
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
model Video {
|
|
74
|
+
id Int @id @default(autoincrement())
|
|
75
|
+
url String
|
|
76
|
+
createdAt DateTime @default(now())
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
model Comment {
|
|
80
|
+
id Int @id @default(autoincrement())
|
|
81
|
+
body String
|
|
82
|
+
commentableId Int
|
|
83
|
+
commentableType String
|
|
84
|
+
createdAt DateTime @default(now())
|
|
85
|
+
|
|
86
|
+
@@index([commentableType, commentableId])
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
}
|
|
90
|
+
export function demosPolymorphicView() {
|
|
91
|
+
return `import '@/index.css'
|
|
92
|
+
import { useState } from 'react'
|
|
93
|
+
|
|
94
|
+
interface CommentDto {
|
|
95
|
+
id: number
|
|
96
|
+
body: string
|
|
97
|
+
commentableId: number
|
|
98
|
+
commentableType: string
|
|
99
|
+
createdAt: string
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
interface PostDto {
|
|
103
|
+
id: number
|
|
104
|
+
title: string
|
|
105
|
+
comments: CommentDto[]
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
interface VideoDto {
|
|
109
|
+
id: number
|
|
110
|
+
url: string
|
|
111
|
+
comments: CommentDto[]
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
interface ResolvedParent {
|
|
115
|
+
type: 'Post' | 'Video'
|
|
116
|
+
id: number
|
|
117
|
+
title: string
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
interface PolymorphicDemoProps {
|
|
121
|
+
posts: PostDto[]
|
|
122
|
+
videos: VideoDto[]
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default function PolymorphicDemo({ posts: initialPosts, videos: initialVideos }: PolymorphicDemoProps) {
|
|
126
|
+
const [posts, setPosts] = useState<PostDto[]>(initialPosts)
|
|
127
|
+
const [videos, setVideos] = useState<VideoDto[]>(initialVideos)
|
|
128
|
+
const [resolved, setResolved] = useState<ResolvedParent | null>(null)
|
|
129
|
+
const [loading, setLoading] = useState(false)
|
|
130
|
+
|
|
131
|
+
async function refresh() {
|
|
132
|
+
const res = await fetch('/api/polymorphic/state')
|
|
133
|
+
const json = await res.json() as { posts: PostDto[]; videos: VideoDto[] }
|
|
134
|
+
setPosts(json.posts)
|
|
135
|
+
setVideos(json.videos)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async function addPost() {
|
|
139
|
+
const title = prompt('Post title?')
|
|
140
|
+
if (!title) return
|
|
141
|
+
setLoading(true)
|
|
142
|
+
try {
|
|
143
|
+
await fetch('/api/polymorphic/posts', {
|
|
144
|
+
method: 'POST',
|
|
145
|
+
headers: { 'Content-Type': 'application/json' },
|
|
146
|
+
body: JSON.stringify({ title }),
|
|
147
|
+
})
|
|
148
|
+
await refresh()
|
|
149
|
+
} finally { setLoading(false) }
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async function addVideo() {
|
|
153
|
+
const url = prompt('Video URL?')
|
|
154
|
+
if (!url) return
|
|
155
|
+
setLoading(true)
|
|
156
|
+
try {
|
|
157
|
+
await fetch('/api/polymorphic/videos', {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
headers: { 'Content-Type': 'application/json' },
|
|
160
|
+
body: JSON.stringify({ url }),
|
|
161
|
+
})
|
|
162
|
+
await refresh()
|
|
163
|
+
} finally { setLoading(false) }
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
async function addComment(type: 'post' | 'video', id: number) {
|
|
167
|
+
const body = prompt(\`Comment on \${type} #\${id}?\`)
|
|
168
|
+
if (!body) return
|
|
169
|
+
setLoading(true)
|
|
170
|
+
try {
|
|
171
|
+
await fetch(\`/api/polymorphic/\${type}s/\${id}/comments\`, {
|
|
172
|
+
method: 'POST',
|
|
173
|
+
headers: { 'Content-Type': 'application/json' },
|
|
174
|
+
body: JSON.stringify({ body }),
|
|
175
|
+
})
|
|
176
|
+
await refresh()
|
|
177
|
+
} finally { setLoading(false) }
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
async function resolveParent(commentId: number) {
|
|
181
|
+
setLoading(true)
|
|
182
|
+
try {
|
|
183
|
+
const res = await fetch(\`/api/polymorphic/comments/\${commentId}/parent\`)
|
|
184
|
+
setResolved(await res.json() as ResolvedParent)
|
|
185
|
+
} finally { setLoading(false) }
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return (
|
|
189
|
+
<div className="page">
|
|
190
|
+
<nav className="page-nav">
|
|
191
|
+
<div className="brand">
|
|
192
|
+
<span className="brand-dot" />
|
|
193
|
+
RudderJS
|
|
194
|
+
</div>
|
|
195
|
+
<div className="nav-right">
|
|
196
|
+
<a href="/demos" className="nav-link">Demos</a>
|
|
197
|
+
<a href="/" className="nav-link">Home</a>
|
|
198
|
+
</div>
|
|
199
|
+
</nav>
|
|
200
|
+
|
|
201
|
+
<section className="hero">
|
|
202
|
+
<h1 className="hero-title">Polymorphic relations</h1>
|
|
203
|
+
<p className="hero-lead">
|
|
204
|
+
One <code className="inline-code">Comment</code> table belonging to either a <code className="inline-code">Post</code> or a <code className="inline-code">Video</code> via <code className="inline-code">commentableId</code> + <code className="inline-code">commentableType</code> (camelCase, ORM convention). Add comments to either side; click "Resolve parent" to watch <code className="inline-code">comment.related('commentable').first()</code> branch through the closed <code className="inline-code">types: () => [Post, Video]</code> list.
|
|
205
|
+
</p>
|
|
206
|
+
<p className="hero-meta">
|
|
207
|
+
Models: <code className="inline-code">Post.morphMany('comments')</code>, <code className="inline-code">Video.morphMany('comments')</code>, <code className="inline-code">Comment.morphTo('commentable', [Post, Video])</code>. Writes use <code className="inline-code">Model.morph('commentable', parent)</code>.
|
|
208
|
+
</p>
|
|
209
|
+
</section>
|
|
210
|
+
|
|
211
|
+
<section className="feature-section">
|
|
212
|
+
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem', maxWidth: '60rem', margin: '0 auto' }}>
|
|
213
|
+
<div className="demo-card">
|
|
214
|
+
<div className="demo-card-header" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
215
|
+
<h2 className="demo-card-title">Posts</h2>
|
|
216
|
+
<button className="button-primary" onClick={addPost} disabled={loading}>+ Post</button>
|
|
217
|
+
</div>
|
|
218
|
+
<div className="demo-card-body">
|
|
219
|
+
{posts.length === 0 && <p className="empty-state">No posts yet.</p>}
|
|
220
|
+
{posts.map(p => (
|
|
221
|
+
<div key={p.id} style={{ borderBottom: '1px solid var(--border, #e5e7eb)', padding: '0.75rem 0' }}>
|
|
222
|
+
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
223
|
+
<strong>#{p.id} — {p.title}</strong>
|
|
224
|
+
<button onClick={() => addComment('post', p.id)} disabled={loading} style={{ fontSize: '0.75rem', padding: '0.25rem 0.5rem' }}>+ Comment</button>
|
|
225
|
+
</div>
|
|
226
|
+
<ul style={{ marginTop: '0.5rem', paddingLeft: '1rem', fontSize: '0.85rem' }}>
|
|
227
|
+
{p.comments.map(c => (
|
|
228
|
+
<li key={c.id} style={{ marginBottom: '0.25rem' }}>
|
|
229
|
+
{c.body} <button onClick={() => resolveParent(c.id)} style={{ fontSize: '0.7rem', marginLeft: '0.5rem' }}>resolve</button>
|
|
230
|
+
</li>
|
|
231
|
+
))}
|
|
232
|
+
{p.comments.length === 0 && <li style={{ color: 'var(--text-muted, #888)' }}>(no comments)</li>}
|
|
233
|
+
</ul>
|
|
234
|
+
</div>
|
|
235
|
+
))}
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
|
|
239
|
+
<div className="demo-card">
|
|
240
|
+
<div className="demo-card-header" style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
241
|
+
<h2 className="demo-card-title">Videos</h2>
|
|
242
|
+
<button className="button-primary" onClick={addVideo} disabled={loading}>+ Video</button>
|
|
243
|
+
</div>
|
|
244
|
+
<div className="demo-card-body">
|
|
245
|
+
{videos.length === 0 && <p className="empty-state">No videos yet.</p>}
|
|
246
|
+
{videos.map(v => (
|
|
247
|
+
<div key={v.id} style={{ borderBottom: '1px solid var(--border, #e5e7eb)', padding: '0.75rem 0' }}>
|
|
248
|
+
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
249
|
+
<strong>#{v.id} — {v.url}</strong>
|
|
250
|
+
<button onClick={() => addComment('video', v.id)} disabled={loading} style={{ fontSize: '0.75rem', padding: '0.25rem 0.5rem' }}>+ Comment</button>
|
|
251
|
+
</div>
|
|
252
|
+
<ul style={{ marginTop: '0.5rem', paddingLeft: '1rem', fontSize: '0.85rem' }}>
|
|
253
|
+
{v.comments.map(c => (
|
|
254
|
+
<li key={c.id} style={{ marginBottom: '0.25rem' }}>
|
|
255
|
+
{c.body} <button onClick={() => resolveParent(c.id)} style={{ fontSize: '0.7rem', marginLeft: '0.5rem' }}>resolve</button>
|
|
256
|
+
</li>
|
|
257
|
+
))}
|
|
258
|
+
{v.comments.length === 0 && <li style={{ color: 'var(--text-muted, #888)' }}>(no comments)</li>}
|
|
259
|
+
</ul>
|
|
260
|
+
</div>
|
|
261
|
+
))}
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
{resolved && (
|
|
267
|
+
<div className="demo-card" style={{ maxWidth: '40rem', margin: '1rem auto 0' }}>
|
|
268
|
+
<div className="demo-card-header"><h2 className="demo-card-title">morphTo resolved</h2></div>
|
|
269
|
+
<div className="demo-card-body">
|
|
270
|
+
<code className="inline-code">comment.related('commentable').first()</code> ⇒ <strong>{resolved.type}</strong> #{resolved.id} — {resolved.title}
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
273
|
+
)}
|
|
274
|
+
</section>
|
|
275
|
+
</div>
|
|
276
|
+
)
|
|
277
|
+
}
|
|
278
|
+
`;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Inlined into routes/web.ts demos block. Loads parents + hydrates each parent's
|
|
282
|
+
* comments via the morphMany relation. Returns plain objects (Vike refuses to
|
|
283
|
+
* serialize Model instances across the SSR boundary).
|
|
284
|
+
*/
|
|
285
|
+
export function demosPolymorphicWebBlock() {
|
|
286
|
+
return `Route.get('/demos/polymorphic', async () => {
|
|
287
|
+
const [posts, videos] = await Promise.all([Post.all(), Video.all()])
|
|
288
|
+
const hydrate = async (parent: Post | Video) => {
|
|
289
|
+
const comments = await (parent as unknown as { related(n: string): { get(): Promise<Comment[]> } })
|
|
290
|
+
.related('comments').get()
|
|
291
|
+
return { ...parent, comments: comments.map(c => ({ ...c })) }
|
|
292
|
+
}
|
|
293
|
+
return view('demos.polymorphic', {
|
|
294
|
+
posts: await Promise.all(posts.map(hydrate)),
|
|
295
|
+
videos: await Promise.all(videos.map(hydrate)),
|
|
296
|
+
})
|
|
297
|
+
})`;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Inlined into routes/api.ts demos block. Six endpoints: state, create-post,
|
|
301
|
+
* create-video, comment-on-post, comment-on-video, resolve-parent (morphTo).
|
|
302
|
+
*/
|
|
303
|
+
export function demosPolymorphicApiBlock() {
|
|
304
|
+
return `// ── /demos/polymorphic — morphMany / morphTo via @rudderjs/orm ──────────────
|
|
305
|
+
|
|
306
|
+
// GET /api/polymorphic/state — posts + videos with their comments hydrated.
|
|
307
|
+
router.get('/api/polymorphic/state', async (_req, res) => {
|
|
308
|
+
const [posts, videos] = await Promise.all([Post.all(), Video.all()])
|
|
309
|
+
const hydrate = async (parent: Post | Video) => {
|
|
310
|
+
const comments = await (parent as unknown as { related(n: string): { get(): Promise<Comment[]> } })
|
|
311
|
+
.related('comments').get()
|
|
312
|
+
return { ...parent, comments: comments.map(c => ({ ...c })) }
|
|
313
|
+
}
|
|
314
|
+
res.json({
|
|
315
|
+
posts: await Promise.all(posts.map(hydrate)),
|
|
316
|
+
videos: await Promise.all(videos.map(hydrate)),
|
|
317
|
+
})
|
|
318
|
+
})
|
|
319
|
+
|
|
320
|
+
// POST /api/polymorphic/posts — create a post.
|
|
321
|
+
router.post('/api/polymorphic/posts', async (req, res) => {
|
|
322
|
+
const { title } = (req.body ?? {}) as { title?: string }
|
|
323
|
+
if (!title) return res.status(400).json({ error: 'title required' })
|
|
324
|
+
const post = await Post.create({ title })
|
|
325
|
+
res.status(201).json({ ...post })
|
|
326
|
+
})
|
|
327
|
+
|
|
328
|
+
// POST /api/polymorphic/videos — create a video.
|
|
329
|
+
router.post('/api/polymorphic/videos', async (req, res) => {
|
|
330
|
+
const { url } = (req.body ?? {}) as { url?: string }
|
|
331
|
+
if (!url) return res.status(400).json({ error: 'url required' })
|
|
332
|
+
const video = await Video.create({ url })
|
|
333
|
+
res.status(201).json({ ...video })
|
|
334
|
+
})
|
|
335
|
+
|
|
336
|
+
// POST /api/polymorphic/(posts|videos)/:id/comments — Model.morph() write.
|
|
337
|
+
router.post('/api/polymorphic/posts/:id/comments', async (req, res) => {
|
|
338
|
+
const idParam = req.params['id']
|
|
339
|
+
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
340
|
+
const post = await Post.find(Number(idParam))
|
|
341
|
+
if (!post) return res.status(404).json({ error: 'post not found' })
|
|
342
|
+
const { body } = (req.body ?? {}) as { body?: string }
|
|
343
|
+
if (!body) return res.status(400).json({ error: 'body required' })
|
|
344
|
+
const comment = await Comment.create({ body, ...Model.morph('commentable', post) })
|
|
345
|
+
res.status(201).json({ ...comment })
|
|
346
|
+
})
|
|
347
|
+
|
|
348
|
+
router.post('/api/polymorphic/videos/:id/comments', async (req, res) => {
|
|
349
|
+
const idParam = req.params['id']
|
|
350
|
+
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
351
|
+
const video = await Video.find(Number(idParam))
|
|
352
|
+
if (!video) return res.status(404).json({ error: 'video not found' })
|
|
353
|
+
const { body } = (req.body ?? {}) as { body?: string }
|
|
354
|
+
if (!body) return res.status(400).json({ error: 'body required' })
|
|
355
|
+
const comment = await Comment.create({ body, ...Model.morph('commentable', video) })
|
|
356
|
+
res.status(201).json({ ...comment })
|
|
357
|
+
})
|
|
358
|
+
|
|
359
|
+
// GET /api/polymorphic/comments/:id/parent — morphTo resolution via the closed
|
|
360
|
+
// types: () => [Post, Video] list. Branches on commentableType under the hood.
|
|
361
|
+
router.get('/api/polymorphic/comments/:id/parent', async (req, res) => {
|
|
362
|
+
const idParam = req.params['id']
|
|
363
|
+
if (!idParam) return res.status(400).json({ error: 'id required' })
|
|
364
|
+
const comment = await Comment.find(Number(idParam))
|
|
365
|
+
if (!comment) return res.status(404).json({ error: 'comment not found' })
|
|
366
|
+
|
|
367
|
+
const parent = await (comment as unknown as { related(n: string): { first(): Promise<Post | Video | null> } })
|
|
368
|
+
.related('commentable').first()
|
|
369
|
+
if (!parent) return res.status(404).json({ error: 'parent not found' })
|
|
370
|
+
|
|
371
|
+
res.json({
|
|
372
|
+
type: comment.commentableType,
|
|
373
|
+
id: parent.id,
|
|
374
|
+
title: 'title' in parent ? parent.title : parent.url,
|
|
375
|
+
})
|
|
376
|
+
})`;
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=polymorphic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polymorphic.js","sourceRoot":"","sources":["../../../src/templates/demos/polymorphic.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,uEAAuE;AACvE,8EAA8E;AAC9E,2EAA2E;AAC3E,8DAA8D;AAE9D,MAAM,UAAU,WAAW;IACzB,OAAO;;;;;;;;;;;;;;;CAeR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;CAeR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;CAuBR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2LR,CAAA;AACD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;GAWN,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEN,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,KAAK,EAAS,MAAM,CAAA;IACpB,2DAA2D;IAC3D,KAAK,EAAS,MAAM,CAAA;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAS,MAAM,CAAA;IACpB,sEAAsE;IACtE,KAAK,CAAC,EAAQ,MAAM,CAAA;IACpB,oFAAoF;IACpF,WAAW,EAAG,MAAM,CAAA;IACpB,sEAAsE;IACtE,QAAQ,EAAM,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAK,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEhD;AAED,eAAO,MAAM,KAAK,EAAE,aAAa,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,KAAK,EAAS,MAAM,CAAA;IACpB,2DAA2D;IAC3D,KAAK,EAAS,MAAM,CAAA;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAS,MAAM,CAAA;IACpB,sEAAsE;IACtE,KAAK,CAAC,EAAQ,MAAM,CAAA;IACpB,oFAAoF;IACpF,WAAW,EAAG,MAAM,CAAA;IACpB,sEAAsE;IACtE,QAAQ,EAAM,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAK,aAAa,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEhD;AAED,eAAO,MAAM,KAAK,EAAE,aAAa,CAAC,QAAQ,CAyHzC,CAAA;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,EAC3B,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GACpC,QAAQ,EAAE,CAMZ;AAED,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,CAE9D"}
|
|
@@ -26,6 +26,14 @@ export const DEMOS = [
|
|
|
26
26
|
packages: ['@rudderjs/orm', '@rudderjs/router'],
|
|
27
27
|
requiresOrm: true,
|
|
28
28
|
},
|
|
29
|
+
{
|
|
30
|
+
value: 'polymorphic',
|
|
31
|
+
label: 'Polymorphic relations',
|
|
32
|
+
hint: 'requires ORM',
|
|
33
|
+
description: 'morphMany + morphTo via @rudderjs/orm. One Comment table belongs to either a Post or a Video. Demonstrates Model.morph() write helper + closed types() resolution.',
|
|
34
|
+
packages: ['@rudderjs/orm'],
|
|
35
|
+
requiresOrm: true,
|
|
36
|
+
},
|
|
29
37
|
{
|
|
30
38
|
value: 'queue',
|
|
31
39
|
label: 'Queue dispatch',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/templates/demos/registry.ts"],"names":[],"mappings":"AAqBA,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAA4B;IAC5C;QACE,KAAK,EAAQ,SAAS;QACtB,KAAK,EAAQ,cAAc;QAC3B,IAAI,EAAS,uBAAuB;QACpC,WAAW,EAAE,4GAA4G;QACzH,QAAQ,EAAK,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,KAAK,EAAQ,OAAO;QACpB,KAAK,EAAQ,eAAe;QAC5B,IAAI,EAAS,kCAAkC;QAC/C,WAAW,EAAE,mIAAmI;QAChJ,QAAQ,EAAK,CAAC,iBAAiB,CAAC;KACjC;IACD;QACE,KAAK,EAAQ,OAAO;QACpB,KAAK,EAAQ,YAAY;QACzB,KAAK,EAAQ,OAAO;QACpB,IAAI,EAAS,cAAc;QAC3B,WAAW,EAAE,oHAAoH;QACjI,QAAQ,EAAK,CAAC,eAAe,EAAE,kBAAkB,CAAC;QAClD,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAQ,OAAO;QACpB,KAAK,EAAQ,gBAAgB;QAC7B,IAAI,EAAS,gBAAgB;QAC7B,WAAW,EAAE,wHAAwH;QACrI,QAAQ,EAAK,CAAC,iBAAiB,CAAC;QAChC,QAAQ,EAAK,CAAC,OAAO,CAAC;KACvB;IACD;QACE,KAAK,EAAQ,MAAM;QACnB,KAAK,EAAQ,WAAW;QACxB,IAAI,EAAS,eAAe;QAC5B,WAAW,EAAE,sGAAsG;QACnH,QAAQ,EAAK,CAAC,gBAAgB,CAAC;QAC/B,QAAQ,EAAK,CAAC,MAAM,CAAC;KACtB;IACD;QACE,KAAK,EAAQ,eAAe;QAC5B,KAAK,EAAQ,eAAe;QAC5B,IAAI,EAAS,+BAA+B;QAC5C,WAAW,EAAE,iIAAiI;QAC9I,QAAQ,EAAK,CAAC,wBAAwB,EAAE,gBAAgB,CAAC;QACzD,QAAQ,EAAK,CAAC,eAAe,EAAE,MAAM,CAAC;KACvC;IACD;QACE,KAAK,EAAQ,cAAc;QAC3B,KAAK,EAAQ,cAAc;QAC3B,IAAI,EAAS,uBAAuB;QACpC,WAAW,EAAE,8GAA8G;QAC3H,QAAQ,EAAK,CAAC,wBAAwB,CAAC;QACvC,QAAQ,EAAK,CAAC,cAAc,CAAC;KAC9B;IACD;QACE,KAAK,EAAQ,MAAM;QACnB,KAAK,EAAQ,aAAa;QAC1B,IAAI,EAAS,eAAe;QAC5B,WAAW,EAAE,wHAAwH;QACrI,QAAQ,EAAK,CAAC,gBAAgB,CAAC;QAC/B,QAAQ,EAAK,CAAC,MAAM,CAAC;KACtB;IACD;QACE,KAAK,EAAQ,QAAQ;QACrB,KAAK,EAAQ,eAAe;QAC5B,IAAI,EAAS,0BAA0B;QACvC,WAAW,EAAE,4HAA4H;QACzI,QAAQ,EAAK,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QACrD,QAAQ,EAAK,CAAC,SAAS,EAAE,OAAO,CAAC;KAClC;IACD;QACE,KAAK,EAAQ,WAAW;QACxB,KAAK,EAAQ,gBAAgB;QAC7B,IAAI,EAAS,sBAAsB;QACnC,WAAW,EAAE,+IAA+I;QAC5J,QAAQ,EAAK,CAAC,uBAAuB,CAAC;QACtC,QAAQ,EAAK,CAAC,aAAa,CAAC;KAC7B;IACD;QACE,KAAK,EAAQ,aAAa;QAC1B,KAAK,EAAQ,aAAa;QAC1B,IAAI,EAAS,kBAAkB;QAC/B,WAAW,EAAE,qIAAqI;QAClJ,QAAQ,EAAK,CAAC,mBAAmB,CAAC;QAClC,QAAQ,EAAK,CAAC,SAAS,CAAC;KACzB;IACD;QACE,KAAK,EAAQ,SAAS;QACtB,KAAK,EAAQ,eAAe;QAC5B,IAAI,EAAS,yBAAyB;QACtC,WAAW,EAAE,qJAAqJ;QAClK,QAAQ,EAAK,CAAC,mBAAmB,CAAC;QAClC,QAAQ,EAAK,CAAC,SAAS,EAAE,MAAM,CAAC;KACjC;IACD;QACE,KAAK,EAAQ,IAAI;QACjB,KAAK,EAAQ,gBAAgB;QAC7B,IAAI,EAAS,gCAAgC;QAC7C,WAAW,EAAE,iHAAiH;QAC9H,QAAQ,EAAK,CAAC,qBAAqB,CAAC;QACpC,QAAQ,EAAK,CAAC,WAAW,CAAC;KAC3B;IACD;QACE,KAAK,EAAQ,MAAM;QACnB,KAAK,EAAQ,mBAAmB;QAChC,KAAK,EAAQ,sBAAsB;QACnC,IAAI,EAAS,eAAe;QAC5B,WAAW,EAAE,4GAA4G;QACzH,QAAQ,EAAK,CAAC,gBAAgB,CAAC;QAC/B,QAAQ,EAAK,CAAC,MAAM,CAAC;KACtB;CACF,CAAA;AAED,MAAM,UAAU,cAAc,CAC5B,GAA2B,EAC3B,QAAqC;IAErC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACtB,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,KAAK,KAAK;YAAE,OAAO,KAAK,CAAA;QAChD,IAAI,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACzD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,QAAQ,CAAC,IAA6B;IACpD,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,CAAA;AAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/templates/demos/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/templates/routes/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/templates/routes/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAYpG,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA+KtD"}
|
|
@@ -8,6 +8,7 @@ import { demosMailApiBlock } from '../demos/mail.js';
|
|
|
8
8
|
import { demosNotificationsApiBlock } from '../demos/notifications.js';
|
|
9
9
|
import { demosLocalizationApiBlock } from '../demos/localization.js';
|
|
10
10
|
import { demosHttpApiBlock } from '../demos/http.js';
|
|
11
|
+
import { demosPolymorphicApiBlock } from '../demos/polymorphic.js';
|
|
11
12
|
export function routesApi(ctx) {
|
|
12
13
|
const imports = [
|
|
13
14
|
"import { router } from '@rudderjs/router'",
|
|
@@ -157,6 +158,14 @@ router.get('/api/ws/ping', (_req, res) => res.json(broadcastStats()))`);
|
|
|
157
158
|
lines.push('');
|
|
158
159
|
lines.push(demosHttpApiBlock());
|
|
159
160
|
}
|
|
161
|
+
if (shouldScaffoldDemo(ctx, 'polymorphic')) {
|
|
162
|
+
imports.push(`import { Model } from '@rudderjs/orm'`);
|
|
163
|
+
imports.push(`import { Post } from '../app/Models/Post.ts'`);
|
|
164
|
+
imports.push(`import { Video } from '../app/Models/Video.ts'`);
|
|
165
|
+
imports.push(`import { Comment } from '../app/Models/Comment.ts'`);
|
|
166
|
+
lines.push('');
|
|
167
|
+
lines.push(demosPolymorphicApiBlock());
|
|
168
|
+
}
|
|
160
169
|
}
|
|
161
170
|
lines.push('');
|
|
162
171
|
lines.push("// Catch-all: any unmatched /api/* route returns 404");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/templates/routes/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAA;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/templates/routes/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/templates/routes/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/templates/routes/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpG,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAuJtD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAEhE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { shouldScaffoldAnyDemo, shouldScaffoldDemo } from '../../templates.js';
|
|
2
|
+
import { demosPolymorphicWebBlock } from '../demos/polymorphic.js';
|
|
2
3
|
export function routesWeb(ctx) {
|
|
3
4
|
const hasAuth = ctx.packages.auth;
|
|
4
5
|
const hasWelcome = ctx.frameworks.length === 1;
|
|
@@ -87,6 +88,11 @@ Route.get('/', async () => {${hasAuth ? `
|
|
|
87
88
|
imports.push(`import { resolve } from '@rudderjs/core'`);
|
|
88
89
|
imports.push(`import { TodoService } from '../app/Modules/Todo/TodoService.ts'`);
|
|
89
90
|
}
|
|
91
|
+
if (shouldScaffoldDemo(ctx, 'polymorphic')) {
|
|
92
|
+
imports.push(`import { Post } from '../app/Models/Post.ts'`);
|
|
93
|
+
imports.push(`import { Video } from '../app/Models/Video.ts'`);
|
|
94
|
+
imports.push(`import type { Comment } from '../app/Models/Comment.ts'`);
|
|
95
|
+
}
|
|
90
96
|
if (shouldScaffoldDemo(ctx, 'pennant')) {
|
|
91
97
|
imports.push(`import { Feature, FeatureMiddleware } from '@rudderjs/pennant'`);
|
|
92
98
|
// auth().user() — Pennant demo gates on `auth` so the import is always available
|
|
@@ -104,6 +110,9 @@ Route.get('/', async () => {${hasAuth ? `
|
|
|
104
110
|
lines.push(` return view('demos.todos', { todos })`);
|
|
105
111
|
lines.push(`})`);
|
|
106
112
|
}
|
|
113
|
+
if (shouldScaffoldDemo(ctx, 'polymorphic')) {
|
|
114
|
+
lines.push(demosPolymorphicWebBlock());
|
|
115
|
+
}
|
|
107
116
|
if (shouldScaffoldDemo(ctx, 'avatar'))
|
|
108
117
|
lines.push(`Route.get('/demos/avatar', async () => view('demos.avatar'))`);
|
|
109
118
|
if (shouldScaffoldDemo(ctx, 'fibonacci'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/templates/routes/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/templates/routes/web.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAW,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAW,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAqE9H,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,CAAA;AAE9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAQ,MAAM,CAAA;IAClB,EAAE,EAAU,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAA;IAC7C,GAAG,EAAS,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,MAAM,EAAM,MAAM,CAAA;IAClB,UAAU,EAAE,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;IACzC,OAAO,EAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;IACrC,QAAQ,EAAI,OAAO,CAAA;IACnB,MAAM,EAAM,OAAO,CAAA;IACnB,EAAE,EAAU,cAAc,CAAA;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAW,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,QAAQ,EAAO,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,aAAa,EAAE,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,EAAE,EAAa,OAAO,CAAA;QACtB,GAAG,EAAY,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,YAAY,EAAG,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,SAAS,EAAM,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,KAAK,EAAU,OAAO,CAAA;QACtB,IAAI,EAAW,OAAO,CAAA;QACtB,OAAO,EAAQ,OAAO,CAAA;QACtB,WAAW,EAAI,OAAO,CAAA;KACvB,CAAA;IACD,4FAA4F;IAC5F,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0JzE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO9E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAGnE"}
|
package/dist/templates.js
CHANGED
|
@@ -48,6 +48,7 @@ import { demoPageConfig, demoPage } from './templates/pages/demo.js';
|
|
|
48
48
|
import { demosIndexView } from './templates/demos/index-view.js';
|
|
49
49
|
import { demosContactView } from './templates/demos/contact.js';
|
|
50
50
|
import { demosTodosView, todoModelPrisma, todoSchema, todoService, todoServiceProvider } from './templates/demos/todos.js';
|
|
51
|
+
import { commentModelTs, demosPolymorphicView, polymorphicPrismaBlock, postModelTs, videoModelTs } from './templates/demos/polymorphic.js';
|
|
51
52
|
import { demosFibonacciView } from './templates/demos/fibonacci.js';
|
|
52
53
|
import { demosSystemInfoView } from './templates/demos/system-info.js';
|
|
53
54
|
import { demosAvatarView } from './templates/demos/avatar.js';
|
|
@@ -186,6 +187,12 @@ export function getTemplates(ctx) {
|
|
|
186
187
|
files['app/Modules/Todo/TodoService.ts'] = todoService();
|
|
187
188
|
files['app/Modules/Todo/TodoServiceProvider.ts'] = todoServiceProvider();
|
|
188
189
|
}
|
|
190
|
+
if (shouldScaffoldDemo(ctx, 'polymorphic')) {
|
|
191
|
+
files['app/Views/Demos/Polymorphic.tsx'] = demosPolymorphicView();
|
|
192
|
+
files['app/Models/Post.ts'] = postModelTs();
|
|
193
|
+
files['app/Models/Video.ts'] = videoModelTs();
|
|
194
|
+
files['app/Models/Comment.ts'] = commentModelTs();
|
|
195
|
+
}
|
|
189
196
|
if (shouldScaffoldDemo(ctx, 'fibonacci'))
|
|
190
197
|
files['app/Views/Demos/Fibonacci.tsx'] = demosFibonacciView();
|
|
191
198
|
if (shouldScaffoldDemo(ctx, 'system-info'))
|
|
@@ -259,6 +266,9 @@ function modulesPrisma(ctx) {
|
|
|
259
266
|
if (shouldScaffoldDemo(ctx, 'todos')) {
|
|
260
267
|
blocks.push(`// module: Todo (Todos demo)\n${todoModelPrisma()}`);
|
|
261
268
|
}
|
|
269
|
+
if (shouldScaffoldDemo(ctx, 'polymorphic')) {
|
|
270
|
+
blocks.push(polymorphicPrismaBlock());
|
|
271
|
+
}
|
|
262
272
|
const body = blocks.length > 0 ? '\n' + blocks.join('\n') : '';
|
|
263
273
|
return `// <rudderjs:modules:start>${body}\n// <rudderjs:modules:end>\n`;
|
|
264
274
|
}
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAuB,MAAM,iCAAiC,CAAA;AAC9H,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC1H,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC1I,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC7F,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AA6CzD,MAAM,UAAU,YAAY,CAAC,GAAoB;IAC/C,MAAM,KAAK,GAA2B,EAAE,CAAA;IAExC,KAAK,CAAC,cAAc,CAAC,GAAW,WAAW,CAAC,GAAG,CAAC,CAAA;IAChD,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,qBAAqB,CAAC,GAAG,aAAa,EAAE,CAAA;IAChD,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,GAAU,YAAY,CAAC,GAAG,CAAC,CAAA;IACjD,KAAK,CAAC,gBAAgB,CAAC,GAAS,UAAU,CAAC,GAAG,CAAC,CAAA;IAC/C,KAAK,CAAC,YAAY,CAAC,GAAa,QAAQ,EAAE,CAAA;IAC1C,KAAK,CAAC,MAAM,CAAC,GAAmB,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3C,KAAK,CAAC,cAAc,CAAC,GAAW,aAAa,CAAC,GAAG,CAAC,CAAA;IAClD,KAAK,CAAC,YAAY,CAAC,GAAa,SAAS,EAAE,CAAA;IAE3C,kBAAkB;IAClB,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,kBAAkB,CAAC,GAAc,YAAY,CAAC,GAAG,CAAC,CAAA;QACxD,KAAK,CAAC,2BAA2B,CAAC,GAAK,UAAU,CAAC,GAAG,CAAC,CAAA;QACtD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;YAAW,KAAK,CAAC,2BAA2B,CAAC,GAAW,UAAU,EAAE,CAAA;QACzF,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ;YAAO,KAAK,CAAC,+BAA+B,CAAC,GAAO,cAAc,EAAE,CAAA;QAC7F,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa;YAAE,KAAK,CAAC,mCAAmC,CAAC,GAAG,kBAAkB,EAAE,CAAA;QACjG,KAAK,CAAC,8BAA8B,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAEtC,KAAK,CAAC,kBAAkB,CAAC,GAAS,YAAY,CAAC,GAAG,CAAC,CAAA;IACnD,KAAK,CAAC,wBAAwB,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAEzD,+EAA+E;IAC/E,KAAK,CAAC,eAAe,CAAC,GAAQ,SAAS,EAAE,CAAA;IACzC,KAAK,CAAC,kBAAkB,CAAC,GAAK,YAAY,EAAE,CAAA;IAC5C,KAAK,CAAC,eAAe,CAAC,GAAQ,SAAS,EAAE,CAAA;IACzC,KAAK,CAAC,mBAAmB,CAAC,GAAI,aAAa,EAAE,CAAA;IAC7C,KAAK,CAAC,gBAAgB,CAAC,GAAO,UAAU,EAAE,CAAA;IAC1C,KAAK,CAAC,iBAAiB,CAAC,GAAM,WAAW,EAAE,CAAA;IAE3C,kDAAkD;IAClD,IAAI,GAAG,CAAC,GAAG;QAAqB,KAAK,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACjF,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAU,KAAK,CAAC,gBAAgB,CAAC,GAAO,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAS,KAAK,CAAC,iBAAiB,CAAC,GAAM,WAAW,EAAE,CAAA;IAC1E,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAU,KAAK,CAAC,gBAAgB,CAAC,GAAO,UAAU,EAAE,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAO,KAAK,CAAC,mBAAmB,CAAC,GAAI,aAAa,EAAE,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE;QAAY,KAAK,CAAC,cAAc,CAAC,GAAS,QAAQ,EAAE,CAAA;IACvE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAU,KAAK,CAAC,gBAAgB,CAAC,GAAO,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ;QAAM,KAAK,CAAC,oBAAoB,CAAC,GAAG,cAAc,EAAE,CAAA;IAC7E,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAO,KAAK,CAAC,mBAAmB,CAAC,GAAI,aAAa,EAAE,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS;QAAK,KAAK,CAAC,qBAAqB,CAAC,GAAG,eAAe,EAAE,CAAA;IAC/E,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY;QAAE,KAAK,CAAC,wBAAwB,CAAC,GAAG,kBAAkB,EAAE,CAAA;IACrF,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAO,KAAK,CAAC,mBAAmB,CAAC,GAAI,aAAa,EAAE,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS;QAAK,KAAK,CAAC,qBAAqB,CAAC,GAAG,eAAe,EAAE,CAAA;IAC/E,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAS,KAAK,CAAC,iBAAiB,CAAC,GAAM,WAAW,EAAE,CAAA;IAC1E,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAO,KAAK,CAAC,mBAAmB,CAAC,GAAI,aAAa,EAAE,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAS,KAAK,CAAC,iBAAiB,CAAC,GAAM,WAAW,EAAE,CAAA;IAE1E,KAAK,CAAC,iBAAiB,CAAC,GAAM,WAAW,CAAC,GAAG,CAAC,CAAA;IAC9C,KAAK,CAAC,UAAU,CAAC,GAAa,MAAM,EAAE,CAAA;IAEtC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG;QAAE,KAAK,CAAC,oBAAoB,CAAC,GAAG,SAAS,EAAE,CAAA;IAC3E,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAE,KAAK,CAAC,wCAAwC,CAAC,GAAG,cAAc,EAAE,CAAA;IACzF,KAAK,CAAC,qCAAqC,CAAC,GAAI,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAEvE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,uBAAuB,CAAC,GAAG,aAAa,EAAE,CAAA;QAChD,KAAK,CAAC,qBAAqB,CAAC,GAAK,WAAW,EAAE,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAO,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3C,KAAK,CAAC,eAAe,CAAC,GAAO,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3C,KAAK,CAAC,mBAAmB,CAAC,GAAG,aAAa,EAAE,CAAA;IAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChC,KAAK,CAAC,kBAAkB,CAAC,GAAgB,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7D,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,qEAAqE;QACrE,uEAAuE;QACvE,oDAAoD;QACpD,KAAK,CAAC,qBAAqB,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC1E,CAAC;SAAM,CAAC;QACN,oEAAoE;QACpE,qEAAqE;QACrE,oEAAoE;QACpE,iDAAiD;QACjD,KAAK,CAAC,wBAAwB,CAAC,GAAQ,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAC5D,KAAK,CAAC,sBAAsB,CAAC,GAAU,cAAc,CAAC,GAAG,CAAC,CAAA;QAC1D,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,GAAO,cAAc,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;IACD,KAAK,CAAC,yBAAyB,CAAC,GAAS,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC9D,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,GAAQ,cAAc,CAAC,GAAG,CAAC,CAAA;IAE5D,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACpB,KAAK,CAAC,0BAA0B,CAAC,GAAU,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAChE,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,GAAS,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;QACxB,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,GAAK,cAAc,CAAC,EAAE,CAAC,CAAA;QAC3D,KAAK,CAAC,SAAS,EAAE,cAAc,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED,+EAA+E;IAC/E,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,2BAA2B,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QACxD,IAAI,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC;YAAE,KAAK,CAAC,6BAA6B,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACpG,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,2BAA2B,CAAC,GAAuB,cAAc,EAAE,CAAA;YACzE,KAAK,CAAC,gCAAgC,CAAC,GAAkB,UAAU,EAAE,CAAA;YACrE,KAAK,CAAC,iCAAiC,CAAC,GAAiB,WAAW,EAAE,CAAA;YACtE,KAAK,CAAC,yCAAyC,CAAC,GAAS,mBAAmB,EAAE,CAAA;QAChF,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,iCAAiC,CAAC,GAAG,oBAAoB,EAAE,CAAA;YACjE,KAAK,CAAC,oBAAoB,CAAC,GAAgB,WAAW,EAAE,CAAA;YACxD,KAAK,CAAC,qBAAqB,CAAC,GAAe,YAAY,EAAE,CAAA;YACzD,KAAK,CAAC,uBAAuB,CAAC,GAAa,cAAc,EAAE,CAAA;QAC7D,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC;YAAI,KAAK,CAAC,+BAA+B,CAAC,GAAI,kBAAkB,EAAE,CAAA;QAC1G,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC;YAAE,KAAK,CAAC,gCAAgC,CAAC,GAAG,mBAAmB,EAAE,CAAA;QAC3G,IAAI,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC;YAAO,KAAK,CAAC,4BAA4B,CAAC,GAAO,eAAe,EAAE,CAAA;QACvG,IAAI,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,6BAA6B,CAAC,GAAO,gBAAgB,EAAE,CAAA;YAC7D,KAAK,CAAC,iCAAiC,CAAC,GAAG,oBAAoB,EAAE,CAAA;QACnE,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC;YAAQ,KAAK,CAAC,2BAA2B,CAAC,GAAQ,cAAc,EAAE,CAAA;QACtG,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,2BAA2B,CAAC,GAAG,cAAc,EAAE,CAAA;YACrD,KAAK,CAAC,wBAAwB,CAAC,GAAM,UAAU,EAAE,CAAA;QACnD,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,0BAA0B,CAAC,GAAG,aAAa,EAAE,CAAA;YACnD,KAAK,CAAC,sBAAsB,CAAC,GAAO,YAAY,EAAE,CAAA;QACpD,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,mCAAmC,CAAC,GAAU,sBAAsB,EAAE,CAAA;YAC5E,KAAK,CAAC,0CAA0C,CAAC,GAAG,gBAAgB,EAAE,CAAA;QACxE,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,CAAC;YAC5C,KAAK,CAAC,kCAAkC,CAAC,GAAG,qBAAqB,EAAE,CAAA;YACnE,KAAK,CAAC,uBAAuB,CAAC,GAAc,YAAY,CAAC,IAAI,CAAC,CAAA;YAC9D,KAAK,CAAC,uBAAuB,CAAC,GAAc,YAAY,CAAC,IAAI,CAAC,CAAA;YAC9D,KAAK,CAAC,uBAAuB,CAAC,GAAc,YAAY,CAAC,IAAI,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;YAAS,KAAK,CAAC,0BAA0B,CAAC,GAAS,aAAa,EAAE,CAAA;QACrG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,wBAAwB,CAAC,GAAG,WAAW,EAAE,CAAA;YAC/C,KAAK,CAAC,qBAAqB,CAAC,GAAU,kBAAkB,EAAE,CAAA;QAC5D,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,0BAA0B,CAAC,GAAG,aAAa,EAAE,CAAA;QACrD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,IAAY;IACnE,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3C,+EAA+E;IAC/E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACvE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAoB;IACxD,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACzC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAoB;IACzC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,iCAAiC,eAAe,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,8BAA8B,IAAI,+BAA+B,CAAA;AAC1E,CAAC"}
|