create-rudder-app 0.4.0 → 0.6.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.
Files changed (96) hide show
  1. package/dist/index.js +3 -5
  2. package/dist/index.js.map +1 -1
  3. package/dist/templates/app/service-provider.d.ts +1 -1
  4. package/dist/templates/app/service-provider.d.ts.map +1 -1
  5. package/dist/templates/app/service-provider.js +23 -2
  6. package/dist/templates/app/service-provider.js.map +1 -1
  7. package/dist/templates/configs/index.d.ts.map +1 -1
  8. package/dist/templates/configs/index.js +0 -4
  9. package/dist/templates/configs/index.js.map +1 -1
  10. package/dist/templates/demos/avatar.d.ts +3 -0
  11. package/dist/templates/demos/avatar.d.ts.map +1 -0
  12. package/dist/templates/demos/avatar.js +182 -0
  13. package/dist/templates/demos/avatar.js.map +1 -0
  14. package/dist/templates/demos/cache.d.ts +3 -0
  15. package/dist/templates/demos/cache.d.ts.map +1 -0
  16. package/dist/templates/demos/cache.js +99 -0
  17. package/dist/templates/demos/cache.js.map +1 -0
  18. package/dist/templates/demos/fibonacci.d.ts +7 -0
  19. package/dist/templates/demos/fibonacci.d.ts.map +1 -0
  20. package/dist/templates/demos/fibonacci.js +172 -0
  21. package/dist/templates/demos/fibonacci.js.map +1 -0
  22. package/dist/templates/demos/http.d.ts +3 -0
  23. package/dist/templates/demos/http.d.ts.map +1 -0
  24. package/dist/templates/demos/http.js +117 -0
  25. package/dist/templates/demos/http.js.map +1 -0
  26. package/dist/templates/demos/index-view.d.ts.map +1 -1
  27. package/dist/templates/demos/index-view.js +16 -29
  28. package/dist/templates/demos/index-view.js.map +1 -1
  29. package/dist/templates/demos/localization.d.ts +4 -0
  30. package/dist/templates/demos/localization.d.ts.map +1 -0
  31. package/dist/templates/demos/localization.js +130 -0
  32. package/dist/templates/demos/localization.js.map +1 -0
  33. package/dist/templates/demos/mail.d.ts +4 -0
  34. package/dist/templates/demos/mail.d.ts.map +1 -0
  35. package/dist/templates/demos/mail.js +127 -0
  36. package/dist/templates/demos/mail.js.map +1 -0
  37. package/dist/templates/demos/notifications.d.ts +4 -0
  38. package/dist/templates/demos/notifications.d.ts.map +1 -0
  39. package/dist/templates/demos/notifications.js +133 -0
  40. package/dist/templates/demos/notifications.js.map +1 -0
  41. package/dist/templates/demos/pennant.d.ts +8 -0
  42. package/dist/templates/demos/pennant.d.ts.map +1 -0
  43. package/dist/templates/demos/pennant.js +138 -0
  44. package/dist/templates/demos/pennant.js.map +1 -0
  45. package/dist/templates/demos/queue.d.ts +4 -0
  46. package/dist/templates/demos/queue.d.ts.map +1 -0
  47. package/dist/templates/demos/queue.js +107 -0
  48. package/dist/templates/demos/queue.js.map +1 -0
  49. package/dist/templates/demos/registry.d.ts +13 -0
  50. package/dist/templates/demos/registry.d.ts.map +1 -1
  51. package/dist/templates/demos/registry.js +120 -3
  52. package/dist/templates/demos/registry.js.map +1 -1
  53. package/dist/templates/demos/rudder-socket.d.ts +2 -0
  54. package/dist/templates/demos/rudder-socket.d.ts.map +1 -0
  55. package/dist/templates/demos/{bk-socket.js → rudder-socket.js} +8 -8
  56. package/dist/templates/demos/rudder-socket.js.map +1 -0
  57. package/dist/templates/demos/sync.d.ts +2 -0
  58. package/dist/templates/demos/sync.d.ts.map +1 -0
  59. package/dist/templates/demos/{live.js → sync.js} +4 -4
  60. package/dist/templates/demos/sync.js.map +1 -0
  61. package/dist/templates/demos/system-info.d.ts +3 -0
  62. package/dist/templates/demos/system-info.d.ts.map +1 -0
  63. package/dist/templates/demos/system-info.js +142 -0
  64. package/dist/templates/demos/system-info.js.map +1 -0
  65. package/dist/templates/demos/todos.d.ts +6 -0
  66. package/dist/templates/demos/todos.d.ts.map +1 -0
  67. package/dist/templates/demos/todos.js +246 -0
  68. package/dist/templates/demos/todos.js.map +1 -0
  69. package/dist/templates/demos/ws.js +4 -4
  70. package/dist/templates/env.d.ts.map +1 -1
  71. package/dist/templates/env.js +0 -14
  72. package/dist/templates/env.js.map +1 -1
  73. package/dist/templates/package-json.d.ts.map +1 -1
  74. package/dist/templates/package-json.js +1 -3
  75. package/dist/templates/package-json.js.map +1 -1
  76. package/dist/templates/routes/api.d.ts.map +1 -1
  77. package/dist/templates/routes/api.js +48 -0
  78. package/dist/templates/routes/api.js.map +1 -1
  79. package/dist/templates/routes/web.d.ts.map +1 -1
  80. package/dist/templates/routes/web.js +49 -2
  81. package/dist/templates/routes/web.js.map +1 -1
  82. package/dist/templates.d.ts +2 -3
  83. package/dist/templates.d.ts.map +1 -1
  84. package/dist/templates.js +70 -10
  85. package/dist/templates.js.map +1 -1
  86. package/package.json +5 -1
  87. package/dist/templates/configs/cashier.d.ts +0 -2
  88. package/dist/templates/configs/cashier.d.ts.map +0 -1
  89. package/dist/templates/configs/cashier.js +0 -22
  90. package/dist/templates/configs/cashier.js.map +0 -1
  91. package/dist/templates/demos/bk-socket.d.ts +0 -2
  92. package/dist/templates/demos/bk-socket.d.ts.map +0 -1
  93. package/dist/templates/demos/bk-socket.js.map +0 -1
  94. package/dist/templates/demos/live.d.ts +0 -2
  95. package/dist/templates/demos/live.d.ts.map +0 -1
  96. package/dist/templates/demos/live.js.map +0 -1
@@ -1,5 +1,5 @@
1
- export function bkSocketSource() {
2
- return `// BKSocket — RudderJS WebSocket client
1
+ export function rudderSocketSource() {
2
+ return `// RudderSocket — RudderJS WebSocket client
3
3
  //
4
4
  // Multiplexes channels and presence rooms over a single WebSocket connection.
5
5
  // Mirrors the API expected by @rudderjs/broadcast on the server.
@@ -10,7 +10,7 @@ class Channel {
10
10
  private listeners = new Map<string, Set<Listener>>()
11
11
 
12
12
  constructor(
13
- private readonly socket: BKSocket,
13
+ private readonly socket: RudderSocket,
14
14
  public readonly name: string,
15
15
  ) {}
16
16
 
@@ -25,19 +25,19 @@ class Channel {
25
25
  return this
26
26
  }
27
27
 
28
- /** @internal — invoked by BKSocket on incoming messages */
28
+ /** @internal — invoked by RudderSocket on incoming messages */
29
29
  receive(event: string, data: unknown) {
30
30
  this.listeners.get(event)?.forEach(fn => fn(data))
31
31
  }
32
32
 
33
- /** @internal — invoked by BKSocket to (re)subscribe after connect */
33
+ /** @internal — invoked by RudderSocket to (re)subscribe after connect */
34
34
  subscribe() {
35
35
  this.socket.send({ type: 'subscribe', channel: this.name })
36
36
  }
37
37
  }
38
38
 
39
39
  class Presence extends Channel {
40
- constructor(socket: BKSocket, name: string, private readonly token: string) {
40
+ constructor(socket: RudderSocket, name: string, private readonly token: string) {
41
41
  super(socket, name)
42
42
  }
43
43
 
@@ -46,7 +46,7 @@ class Presence extends Channel {
46
46
  }
47
47
  }
48
48
 
49
- export class BKSocket {
49
+ export class RudderSocket {
50
50
  private ws?: WebSocket
51
51
  private readonly channels = new Map<string, Channel>()
52
52
  private reconnectTimer?: ReturnType<typeof setTimeout>
@@ -92,4 +92,4 @@ export class BKSocket {
92
92
  }
93
93
  `;
94
94
  }
95
- //# sourceMappingURL=bk-socket.js.map
95
+ //# sourceMappingURL=rudder-socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rudder-socket.js","sourceRoot":"","sources":["../../../src/templates/demos/rudder-socket.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FR,CAAA;AACD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function demosSyncView(): string;
2
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/sync.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,IAAI,MAAM,CA+FtC"}
@@ -1,4 +1,4 @@
1
- export function demosLiveView() {
1
+ export function demosSyncView() {
2
2
  return `import '@/index.css'
3
3
  import { useEffect, useRef, useState } from 'react'
4
4
  import * as Y from 'yjs'
@@ -9,7 +9,7 @@ function getWsUrl() {
9
9
  return \`ws://\${window.location.host}/ws-sync\`
10
10
  }
11
11
 
12
- export default function LiveDemo() {
12
+ export default function SyncDemo() {
13
13
  const [connected, setConnected] = useState(false)
14
14
  const [text, setText] = useState('')
15
15
  const [users, setUsers] = useState<{ name: string; color: string }[]>([])
@@ -23,7 +23,7 @@ export default function LiveDemo() {
23
23
  useEffect(() => {
24
24
  const doc = new Y.Doc()
25
25
  const ytext = doc.getText('content')
26
- const provider = new WebsocketProvider(getWsUrl(), 'live-demo', doc)
26
+ const provider = new WebsocketProvider(getWsUrl(), 'sync-demo', doc)
27
27
 
28
28
  docRef.current = doc
29
29
  provRef.current = provider
@@ -94,4 +94,4 @@ export default function LiveDemo() {
94
94
  }
95
95
  `;
96
96
  }
97
- //# sourceMappingURL=live.js.map
97
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/templates/demos/sync.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6FR,CAAA;AACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function demosSystemInfoView(): string;
2
+ export declare function demosSystemInfoApiBlock(): string;
3
+ //# sourceMappingURL=system-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-info.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/system-info.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,IAAI,MAAM,CA4G5C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CA6BhD"}
@@ -0,0 +1,142 @@
1
+ // SystemInfo demo — three shell commands run via @rudderjs/process,
2
+ // comparing sequential vs parallel cost via Process.pool().
3
+ export function demosSystemInfoView() {
4
+ return `import { useState } from 'react'
5
+ import '@/index.css'
6
+
7
+ interface CommandResult {
8
+ command: string
9
+ ok: boolean
10
+ exitCode: number
11
+ duration: number
12
+ stdout: string
13
+ stderr: string
14
+ }
15
+
16
+ interface SystemInfoResponse {
17
+ results: CommandResult[]
18
+ totalMs: number
19
+ parallelMs: number
20
+ }
21
+
22
+ export default function SystemInfo() {
23
+ const [data, setData ] = useState<SystemInfoResponse | null>(null)
24
+ const [loading, setLoading] = useState(false)
25
+ const [error, setError ] = useState<string | null>(null)
26
+
27
+ async function run() {
28
+ setLoading(true); setError(null)
29
+ try {
30
+ const res = await fetch('/api/system-info')
31
+ const body = await res.json() as SystemInfoResponse | { message: string }
32
+ if (!res.ok) throw new Error((body as { message: string }).message ?? 'Failed')
33
+ setData(body as SystemInfoResponse)
34
+ } catch (e) {
35
+ setError((e as Error).message)
36
+ } finally {
37
+ setLoading(false)
38
+ }
39
+ }
40
+
41
+ return (
42
+ <div className="page">
43
+ <nav className="page-nav">
44
+ <div className="brand">
45
+ <span className="brand-dot" />
46
+ RudderJS
47
+ </div>
48
+ <div className="nav-right">
49
+ <a href="/demos" className="nav-link">Demos</a>
50
+ <a href="/" className="nav-link">Home</a>
51
+ </div>
52
+ </nav>
53
+
54
+ <section className="hero">
55
+ <h1 className="hero-title">System Info</h1>
56
+ <p className="hero-lead">
57
+ Three shell commands run in parallel via{' '}
58
+ <code className="inline-code">@rudderjs/process</code> —{' '}
59
+ <code className="inline-code">git rev-parse HEAD</code>,{' '}
60
+ <code className="inline-code">node --version</code>,{' '}
61
+ <code className="inline-code">uptime</code>. Click run to dispatch.
62
+ </p>
63
+ </section>
64
+
65
+ <section className="feature-section">
66
+ <div className="form-card">
67
+ <button
68
+ className="form-submit"
69
+ onClick={run}
70
+ disabled={loading}
71
+ style={{ marginBottom: '1rem' }}
72
+ >
73
+ {loading ? 'Running…' : 'Run commands'}
74
+ </button>
75
+
76
+ {error && <p className="form-error">{error}</p>}
77
+
78
+ {data && (
79
+ <>
80
+ <p className="feature-desc" style={{ fontSize: '0.75rem', marginBottom: '0.75rem' }}>
81
+ 3 commands · sequential cost {data.totalMs}ms · parallel cost {data.parallelMs}ms
82
+ {' · '}
83
+ <strong>{Math.round((1 - data.parallelMs / data.totalMs) * 100)}% faster</strong> via{' '}
84
+ <code className="inline-code">Process.pool()</code>
85
+ </p>
86
+
87
+ {data.results.map((r, i) => (
88
+ <div key={i} style={{ marginBottom: '0.75rem', padding: '0.75rem', borderRadius: '0.375rem', border: '1px solid var(--border, #e5e7eb)' }}>
89
+ <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '0.25rem' }}>
90
+ <code style={{ fontSize: '0.85rem', fontWeight: 600 }}>{r.command}</code>
91
+ <span style={{ fontSize: '0.7rem', opacity: 0.7 }}>
92
+ exit {r.exitCode} · {r.duration}ms
93
+ </span>
94
+ </div>
95
+ {r.stdout && (
96
+ <pre style={{ margin: 0, padding: '0.5rem', borderRadius: '0.25rem', background: 'var(--muted, #f4f4f5)', fontSize: '0.75rem', whiteSpace: 'pre-wrap', wordBreak: 'break-all' }}>{r.stdout}</pre>
97
+ )}
98
+ {r.stderr && (
99
+ <pre style={{ margin: '0.25rem 0 0', padding: '0.5rem', borderRadius: '0.25rem', background: 'var(--destructive-bg, #fef2f2)', color: 'var(--destructive, #b91c1c)', fontSize: '0.75rem', whiteSpace: 'pre-wrap', wordBreak: 'break-all' }}>{r.stderr}</pre>
100
+ )}
101
+ </div>
102
+ ))}
103
+ </>
104
+ )}
105
+ </div>
106
+ </section>
107
+ </div>
108
+ )
109
+ }
110
+ `;
111
+ }
112
+ export function demosSystemInfoApiBlock() {
113
+ return `// GET /api/system-info — three shell commands, sequential vs Process.pool() parallel.
114
+ router.get('/api/system-info', async (_req, res) => {
115
+ const { Process } = await import('@rudderjs/process')
116
+ const commands = ['git rev-parse HEAD', 'node --version', 'uptime']
117
+
118
+ const sequential: { command: string; duration: number }[] = []
119
+ for (const cmd of commands) {
120
+ const t0 = Date.now()
121
+ await Process.run(cmd)
122
+ sequential.push({ command: cmd, duration: Date.now() - t0 })
123
+ }
124
+ const totalMs = sequential.reduce((sum, r) => sum + r.duration, 0)
125
+
126
+ const t0 = Date.now()
127
+ const pool = await Process.pool(commands)
128
+ const parallelMs = Date.now() - t0
129
+
130
+ const results = pool.results.map((r, i) => ({
131
+ command: commands[i],
132
+ ok: r.successful(),
133
+ exitCode: r.exitCode,
134
+ duration: sequential[i]!.duration,
135
+ stdout: r.stdout.trim(),
136
+ stderr: r.stderr.trim(),
137
+ }))
138
+
139
+ res.json({ results, totalMs, parallelMs })
140
+ })`;
141
+ }
142
+ //# sourceMappingURL=system-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-info.js","sourceRoot":"","sources":["../../../src/templates/demos/system-info.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,4DAA4D;AAE5D,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BN,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function demosTodosView(): string;
2
+ export declare function todoModelPrisma(): string;
3
+ export declare function todoSchema(): string;
4
+ export declare function todoService(): string;
5
+ export declare function todoServiceProvider(): string;
6
+ //# sourceMappingURL=todos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../../src/templates/demos/todos.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,IAAI,MAAM,CA4HvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAwBnC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAgCpC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CA8C5C"}
@@ -0,0 +1,246 @@
1
+ // Todos demo — ORM + interactive CRUD via @rudderjs/router.
2
+ //
3
+ // Scaffolds five files under `app/Modules/Todo/` (Laravel-style self-contained
4
+ // module) plus the React view, and wires them into AppServiceProvider's boot()
5
+ // so the API routes register at app startup.
6
+ export function demosTodosView() {
7
+ return `import '@/index.css'
8
+ import { useState, useRef } from 'react'
9
+ import type { Todo } from '../../Modules/Todo/TodoSchema.js'
10
+
11
+ interface TodosDemoProps {
12
+ todos: Todo[]
13
+ }
14
+
15
+ export default function TodosDemo({ todos: initial }: TodosDemoProps) {
16
+ const [todos, setTodos] = useState<Todo[]>(initial)
17
+ const [loading, setLoading] = useState(false)
18
+ const inputRef = useRef<HTMLInputElement>(null)
19
+
20
+ async function addTodo() {
21
+ const title = inputRef.current?.value.trim()
22
+ if (!title) return
23
+ setLoading(true)
24
+ const res = await fetch('/api/todos', {
25
+ method: 'POST',
26
+ headers: { 'Content-Type': 'application/json' },
27
+ body: JSON.stringify({ title }),
28
+ })
29
+ const { data } = await res.json() as { data: Todo }
30
+ setTodos(prev => [data, ...prev])
31
+ if (inputRef.current) inputRef.current.value = ''
32
+ setLoading(false)
33
+ }
34
+
35
+ async function toggleTodo(todo: Todo) {
36
+ const res = await fetch(\`/api/todos/\${todo.id}\`, {
37
+ method: 'PATCH',
38
+ headers: { 'Content-Type': 'application/json' },
39
+ body: JSON.stringify({ completed: !todo.completed }),
40
+ })
41
+ const { data } = await res.json() as { data: Todo }
42
+ setTodos(prev => prev.map(t => t.id === data.id ? data : t))
43
+ }
44
+
45
+ async function deleteTodo(id: string) {
46
+ await fetch(\`/api/todos/\${id}\`, { method: 'DELETE' })
47
+ setTodos(prev => prev.filter(t => t.id !== id))
48
+ }
49
+
50
+ const done = todos.filter(t => t.completed).length
51
+ const pending = todos.length - done
52
+
53
+ return (
54
+ <div className="page">
55
+ <nav className="page-nav">
56
+ <div className="brand">
57
+ <span className="brand-dot" />
58
+ RudderJS
59
+ </div>
60
+ <div className="nav-right">
61
+ <a href="/demos" className="nav-link">Demos</a>
62
+ <a href="/" className="nav-link">Home</a>
63
+ </div>
64
+ </nav>
65
+
66
+ <section className="hero">
67
+ <h1 className="hero-title">Todo List</h1>
68
+ <p className="hero-lead">
69
+ {pending} remaining · {done} completed
70
+ </p>
71
+ <p className="hero-meta">
72
+ Rendered from <code className="inline-code">app/Views/Demos/Todos.tsx</code> via{' '}
73
+ <code className="inline-code">view('demos.todos', &#123; todos &#125;)</code>.
74
+ Initial data fetched by the controller, not the view.
75
+ </p>
76
+ </section>
77
+
78
+ <section className="feature-section">
79
+ <div className="demo-narrow">
80
+ <div className="demo-card">
81
+ <div className="input-row">
82
+ <input
83
+ ref={inputRef}
84
+ className="form-input"
85
+ placeholder="What needs to be done?"
86
+ onKeyDown={e => e.key === 'Enter' && addTodo()}
87
+ />
88
+ <button className="button-primary" onClick={addTodo} disabled={loading}>
89
+ {loading ? '...' : 'Add'}
90
+ </button>
91
+ </div>
92
+ </div>
93
+
94
+ <div className="demo-card">
95
+ <div className="demo-card-header">
96
+ <h2 className="demo-card-title">Tasks</h2>
97
+ </div>
98
+ <div className="demo-card-body">
99
+ {todos.length === 0 && (
100
+ <p className="empty-state">No todos yet. Add one above!</p>
101
+ )}
102
+ {todos.map(todo => (
103
+ <div key={todo.id} className="list-row group">
104
+ <input
105
+ type="checkbox"
106
+ className="checkbox-input"
107
+ checked={todo.completed}
108
+ onChange={() => toggleTodo(todo)}
109
+ />
110
+ <span className={\`list-row-text\${todo.completed ? ' list-row-text-done' : ''}\`}>
111
+ {todo.title}
112
+ </span>
113
+ <button
114
+ onClick={() => deleteTodo(todo.id)}
115
+ className="list-row-delete"
116
+ aria-label="Delete"
117
+ >
118
+
119
+ </button>
120
+ </div>
121
+ ))}
122
+ </div>
123
+ </div>
124
+ </div>
125
+ </section>
126
+ </div>
127
+ )
128
+ }
129
+ `;
130
+ }
131
+ export function todoModelPrisma() {
132
+ return `model Todo {
133
+ id String @id @default(cuid())
134
+ title String
135
+ completed Boolean @default(false)
136
+ createdAt DateTime @default(now())
137
+ updatedAt DateTime @updatedAt
138
+ }
139
+ `;
140
+ }
141
+ export function todoSchema() {
142
+ return `import { z } from 'zod'
143
+
144
+ export const TodoInputSchema = z.object({
145
+ title: z.string().min(1, 'Title is required'),
146
+ completed: z.boolean().optional().default(false),
147
+ })
148
+
149
+ export const TodoUpdateSchema = z.object({
150
+ title: z.string().min(1).optional(),
151
+ completed: z.boolean().optional(),
152
+ })
153
+
154
+ export type TodoInput = z.infer<typeof TodoInputSchema>
155
+ export type TodoUpdate = z.infer<typeof TodoUpdateSchema>
156
+
157
+ export interface Todo {
158
+ id: string
159
+ title: string
160
+ completed: boolean
161
+ createdAt: Date
162
+ updatedAt: Date
163
+ }
164
+ `;
165
+ }
166
+ export function todoService() {
167
+ return `import { Injectable, resolve } from '@rudderjs/core'
168
+ import type { OrmAdapter } from '@rudderjs/orm'
169
+ import type { Todo, TodoInput, TodoUpdate } from './TodoSchema.js'
170
+
171
+ @Injectable()
172
+ export class TodoService {
173
+ private get db(): OrmAdapter {
174
+ return resolve<OrmAdapter>('db')
175
+ }
176
+
177
+ findAll(): Promise<Todo[]> {
178
+ return this.db.query<Todo>('todo').orderBy('createdAt', 'DESC').get()
179
+ }
180
+
181
+ findById(id: string): Promise<Todo | null> {
182
+ return this.db.query<Todo>('todo').find(id)
183
+ }
184
+
185
+ create(input: TodoInput): Promise<Todo> {
186
+ return this.db.query<Todo>('todo').create(input)
187
+ }
188
+
189
+ update(id: string, input: TodoUpdate): Promise<Todo> {
190
+ return this.db.query<Todo>('todo').update(id, input as Partial<Todo>)
191
+ }
192
+
193
+ delete(id: string): Promise<void> {
194
+ return this.db.query<Todo>('todo').delete(id)
195
+ }
196
+ }
197
+ `;
198
+ }
199
+ export function todoServiceProvider() {
200
+ return `import { ServiceProvider } from '@rudderjs/core'
201
+ import { router } from '@rudderjs/router'
202
+ import { TodoService } from './TodoService.js'
203
+ import { TodoInputSchema, TodoUpdateSchema } from './TodoSchema.js'
204
+
205
+ export class TodoServiceProvider extends ServiceProvider {
206
+ register(): void {
207
+ this.app.singleton(TodoService, () => new TodoService())
208
+ }
209
+
210
+ override async boot(): Promise<void> {
211
+ const service = this.app.make<TodoService>(TodoService)
212
+
213
+ router.get('/api/todos', async (_req, res) => {
214
+ const todos = await service.findAll()
215
+ res.json({ data: todos })
216
+ })
217
+
218
+ router.post('/api/todos', async (req, res) => {
219
+ const parsed = TodoInputSchema.safeParse(req.body)
220
+ if (!parsed.success) {
221
+ res.status(422).json({ errors: parsed.error.flatten().fieldErrors })
222
+ return
223
+ }
224
+ const todo = await service.create(parsed.data)
225
+ res.status(201).json({ data: todo })
226
+ })
227
+
228
+ router.patch('/api/todos/:id', async (req, res) => {
229
+ const parsed = TodoUpdateSchema.safeParse(req.body)
230
+ if (!parsed.success) {
231
+ res.status(422).json({ errors: parsed.error.flatten().fieldErrors })
232
+ return
233
+ }
234
+ const todo = await service.update(req.params['id']!, parsed.data)
235
+ res.json({ data: todo })
236
+ })
237
+
238
+ router.delete('/api/todos/:id', async (req, res) => {
239
+ await service.delete(req.params['id']!)
240
+ res.status(204).send('')
241
+ })
242
+ }
243
+ }
244
+ `;
245
+ }
246
+ //# sourceMappingURL=todos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todos.js","sourceRoot":"","sources":["../../../src/templates/demos/todos.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,6CAA6C;AAE7C,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;CAOR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR,CAAA;AACD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CR,CAAA;AACD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export function demosWsView() {
2
2
  return `import '@/index.css'
3
3
  import { useEffect, useRef, useState } from 'react'
4
- import { BKSocket } from '@/BKSocket'
4
+ import { RudderSocket } from '@/RudderSocket'
5
5
 
6
6
  type Message = { user: string; text: string; ts: number }
7
7
  type Member = { id: string; name: string }
@@ -13,7 +13,7 @@ function getWsUrl() {
13
13
 
14
14
  export default function WsDemo() {
15
15
  const [me, setMe] = useState('')
16
- const socketRef = useRef<BKSocket | null>(null)
16
+ const socketRef = useRef<RudderSocket | null>(null)
17
17
  const [connected, setConnected] = useState(false)
18
18
  const [messages, setMessages] = useState<Message[]>([])
19
19
  const [members, setMembers] = useState<Member[]>([])
@@ -23,7 +23,7 @@ export default function WsDemo() {
23
23
 
24
24
  useEffect(() => {
25
25
  if (!me) return
26
- const socket = new BKSocket(getWsUrl())
26
+ const socket = new RudderSocket(getWsUrl())
27
27
  socketRef.current = socket
28
28
 
29
29
  const chat = socket.channel('chat')
@@ -43,7 +43,7 @@ export default function WsDemo() {
43
43
  setMembers(prev => prev.filter(m => m.id !== id))
44
44
  })
45
45
 
46
- return () => { socket.close() }
46
+ return () => { socket.disconnect() }
47
47
  }, [me])
48
48
 
49
49
  async function send() {
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/templates/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAuDnD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAwD1D;AAED,wBAAgB,MAAM,IAAI,MAAM,CAO/B;AAED,wBAAgB,SAAS,IAAI,MAAM,CASlC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/templates/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA+CnD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAgD1D;AAED,wBAAgB,MAAM,IAAI,MAAM,CAO/B;AAED,wBAAgB,SAAS,IAAI,MAAM,CASlC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -41,13 +41,6 @@ export function dotenv(ctx) {
41
41
  lines.push('GOOGLE_CLIENT_SECRET=');
42
42
  lines.push('GOOGLE_REDIRECT_URL=http://localhost:3000/auth/google/callback');
43
43
  }
44
- if (ctx.packages.cashierPaddle) {
45
- lines.push('');
46
- lines.push('PADDLE_API_KEY=');
47
- lines.push('PADDLE_CLIENT_SIDE_TOKEN=');
48
- lines.push('PADDLE_WEBHOOK_SECRET=');
49
- lines.push('PADDLE_SANDBOX=true');
50
- }
51
44
  return lines.join('\n') + '\n';
52
45
  }
53
46
  export function dotenvExample(ctx) {
@@ -94,13 +87,6 @@ export function dotenvExample(ctx) {
94
87
  lines.push('GOOGLE_CLIENT_SECRET=');
95
88
  lines.push('GOOGLE_REDIRECT_URL=http://localhost:3000/auth/google/callback');
96
89
  }
97
- if (ctx.packages.cashierPaddle) {
98
- lines.push('');
99
- lines.push('PADDLE_API_KEY=');
100
- lines.push('PADDLE_CLIENT_SIDE_TOKEN=');
101
- lines.push('PADDLE_WEBHOOK_SECRET=');
102
- lines.push('PADDLE_SANDBOX=true');
103
- }
104
90
  return lines.join('\n') + '\n';
105
91
  }
106
92
  export function envDts() {
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/templates/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/templates/env.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE1E,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA4KxD"}
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE1E,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA2KxD"}
@@ -112,7 +112,7 @@ export function packageJson(ctx) {
112
112
  deps['@rudderjs/broadcast'] = 'latest';
113
113
  if (ctx.packages.sync)
114
114
  deps['@rudderjs/sync'] = 'latest';
115
- if (shouldScaffoldDemo(ctx, 'live'))
115
+ if (shouldScaffoldDemo(ctx, 'sync'))
116
116
  deps['y-websocket'] = '^2.0.0';
117
117
  if (ctx.packages.ai)
118
118
  deps['@rudderjs/ai'] = 'latest';
@@ -120,8 +120,6 @@ export function packageJson(ctx) {
120
120
  deps['@rudderjs/mcp'] = 'latest';
121
121
  if (ctx.packages.localization)
122
122
  deps['@rudderjs/localization'] = 'latest';
123
- if (ctx.packages.cashierPaddle)
124
- deps['@rudderjs/cashier-paddle'] = 'latest';
125
123
  if (ctx.packages.pennant)
126
124
  deps['@rudderjs/pennant'] = 'latest';
127
125
  if (ctx.packages.telescope)
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAwB,MAAM,iBAAiB,CAAA;AAE1E,MAAM,UAAU,WAAW,CAAC,GAAoB;IAC9C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,MAAM,GAA2C;QACrD,MAAM,EAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE;QAC3C,UAAU,EAAE,EAAE;QACd,KAAK,EAAO,EAAE;KACf,CAAA;IACD,MAAM,SAAS,GAA2C;QACxD,MAAM,EAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE;QACjD,UAAU,EAAE,EAAE;QACd,KAAK,EAAO,EAAE;KACf,CAAA;IAED,MAAM,aAAa,GAA2B,EAAE,CAAA;IAChD,MAAM,gBAAgB,GAA2B,EAAE,CAAA;IAEnD,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,CAAC,OAAO,CAAC,GAAQ,SAAS,CAAA;QACvC,aAAa,CAAC,WAAW,CAAC,GAAI,SAAS,CAAA;QACvC,aAAa,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;QACvC,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAA;QACnD,gBAAgB,CAAC,cAAc,CAAC,GAAW,SAAS,CAAA;QACpD,gBAAgB,CAAC,kBAAkB,CAAC,GAAO,SAAS,CAAA;IACtD,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,aAAa,CAAC,KAAK,CAAC,GAAQ,QAAQ,CAAA;QACpC,aAAa,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAA;QACpC,gBAAgB,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAA;IACnD,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,CAAC,UAAU,CAAC,GAAK,QAAQ,CAAA;QACtC,aAAa,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAA;IACxC,CAAC;IAED,MAAM,YAAY,GAA2B,QAAQ,CAAC,CAAC,CAAC;QACtD,aAAa,EAAQ,QAAQ;QAC7B,mBAAmB,EAAE,QAAQ;KAC9B,CAAC,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,eAAe,GAA2B,QAAQ,CAAC,CAAC,CAAC;QACzD,gBAAgB,EAAE,QAAQ;KAC3B,CAAC,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,UAAU,GAA2B,MAAM,CAAC,CAAC,CAAC;QAClD,0BAA0B,EAAE,QAAQ;QACpC,MAAM,EAAsB,QAAQ;QACpC,gBAAgB,EAAY,QAAQ;QACpC,cAAc,EAAc,UAAU;KACvC,CAAC,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,aAAa,GAA2B,MAAM,CAAC,CAAC,CAAC;QACrD,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC,CAAC,EAAE,CAAA;IAEN,wCAAwC;IACxC,MAAM,IAAI,GAA2B;QACnC,mBAAmB,EAAO,QAAQ;QAClC,gBAAgB,EAAU,QAAQ;QAClC,qBAAqB,EAAK,QAAQ;QAClC,gBAAgB,EAAU,QAAQ;QAClC,eAAe,EAAW,QAAQ;QAClC,sBAAsB,EAAI,QAAQ;QAClC,kBAAkB,EAAQ,QAAQ;QAClC,uBAAuB,EAAG,QAAQ;QAClC,mBAAmB,EAAO,QAAQ;QAClC,gBAAgB,EAAU,QAAQ;QAClC,cAAc,EAAY,QAAQ;QAClC,QAAQ,EAAkB,SAAS;QACnC,kBAAkB,EAAQ,QAAQ;QAClC,MAAM,EAAoB,UAAU;QACpC,KAAK,EAAqB,QAAQ;QAClC,GAAG,aAAa;QAChB,GAAG,YAAY;QACf,GAAG,UAAU;QACb,GAAG,MAAM,CAAC,EAAE,CAAC;KACd,CAAA;IAED,WAAW;IACX,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,GAAU,QAAQ,CAAA;QACvC,IAAI,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAA;QACvC,IAAI,CAAC,gBAAgB,CAAC,GAAS,QAAQ,CAAA;IACzC,CAAC;SAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,GAAW,QAAQ,CAAA;QACxC,IAAI,CAAC,uBAAuB,CAAC,GAAG,QAAQ,CAAA;IAC1C,CAAC;IAED,+EAA+E;IAC/E,4EAA4E;IAC5E,8CAA8C;IAC9C,IAAI,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAA;IACpC,IAAI,CAAC,gBAAgB,CAAC,GAAM,QAAQ,CAAA;IACpC,IAAI,CAAC,iBAAiB,CAAC,GAAK,QAAQ,CAAA;IAEpC,wBAAwB;IACxB,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAW,IAAI,CAAC,gBAAgB,CAAC,GAAW,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAQ,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ;QAAO,IAAI,CAAC,oBAAoB,CAAC,GAAO,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS;QAAM,IAAI,CAAC,qBAAqB,CAAC,GAAM,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAU,IAAI,CAAC,iBAAiB,CAAC,GAAU,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAQ,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS;QAAM,IAAI,CAAC,oBAAoB,CAAC,GAAO,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAU,IAAI,CAAC,iBAAiB,CAAC,GAAU,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAW,IAAI,CAAC,gBAAgB,CAAC,GAAW,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa;QAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS;QAAM,IAAI,CAAC,qBAAqB,CAAC,GAAM,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAW,IAAI,CAAC,gBAAgB,CAAC,GAAW,QAAQ,CAAA;IACzE,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;QAAE,IAAI,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;IACnE,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE;QAAa,IAAI,CAAC,cAAc,CAAC,GAAa,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG;QAAY,IAAI,CAAC,eAAe,CAAC,GAAY,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY;QAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAQ,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS;QAAM,IAAI,CAAC,qBAAqB,CAAC,GAAM,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAU,IAAI,CAAC,iBAAiB,CAAC,GAAU,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAQ,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAU,IAAI,CAAC,iBAAiB,CAAC,GAAU,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;QAAW,IAAI,CAAC,gBAAgB,CAAC,GAAW,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO;QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAQ,QAAQ,CAAA;IACzE,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW;QAAI,IAAI,CAAC,uBAAuB,CAAC,GAAI,QAAQ,CAAA;IACzE,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,QAAQ;QACzB,aAAa,EAAI,SAAS;QAC1B,KAAK,EAAY,SAAS;QAC1B,YAAY,EAAK,QAAQ;QACzB,MAAM,EAAW,QAAQ;QACzB,GAAG,gBAAgB;QACnB,GAAG,eAAe;QAClB,GAAG,aAAa;QAChB,GAAG,SAAS,CAAC,EAAE,CAAC;KACjB,CAAA;IACD,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;IACtD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK;QAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAA;IAE/D,MAAM,SAAS,GAAa,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;IAAC,CAAC;IACzE,IAAI,EAAE,KAAK,QAAQ;QAAE,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAExD,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC;SAAM,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAA;IAC5C,CAAC;IACD,8EAA8E;IAE9E,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,IAAI,EAAK,GAAG,CAAC,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAK,QAAQ;QACjB,OAAO,EAAE;YACP,GAAG,EAAgB,UAAU;YAC7B,WAAW,EAAQ,oGAAoG;YACvH,KAAK,EAAc,YAAY;YAC/B,KAAK,EAAc,8BAA8B;YACjD,OAAO,EAAY,8BAA8B;YACjD,SAAS,EAAU,cAAc;YACjC,MAAM,EAAa,8CAA8C;YACjE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACZ,OAAO,EAAW,sDAAsD;gBACxE,eAAe,EAAG,4DAA4D;gBAC9E,gBAAgB,EAAE,6DAA6D;gBAC/E,SAAS,EAAS,sDAAsD;aACzE,CAAC,CAAC,CAAC,EAAE,CAAC;SACR;QACD,GAAG,OAAO;QACV,YAAY,EAAK,IAAI;QACrB,eAAe,EAAE,OAAO;KACzB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;AACpB,CAAC"}