@livestore/cli 0.4.0-dev.8 → 0.4.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/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/fixtures/mock-config.d.ts +65 -0
- package/dist/__tests__/fixtures/mock-config.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-config.js +94 -0
- package/dist/__tests__/fixtures/mock-config.js.map +1 -0
- package/dist/__tests__/sync-operations.test.d.ts +2 -0
- package/dist/__tests__/sync-operations.test.d.ts.map +1 -0
- package/dist/__tests__/sync-operations.test.js +167 -0
- package/dist/__tests__/sync-operations.test.js.map +1 -0
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +16 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/import-export.d.ts +34 -0
- package/dist/commands/import-export.d.ts.map +1 -0
- package/dist/commands/import-export.js +135 -0
- package/dist/commands/import-export.js.map +1 -0
- package/dist/commands/mcp-coach.d.ts +13 -5
- package/dist/commands/mcp-coach.d.ts.map +1 -1
- package/dist/commands/mcp-coach.js +41 -45
- package/dist/commands/mcp-coach.js.map +1 -1
- package/dist/commands/mcp-tool-handlers.d.ts +6 -0
- package/dist/commands/mcp-tool-handlers.d.ts.map +1 -0
- package/dist/commands/{mcp-tools.js → mcp-tool-handlers.js} +79 -45
- package/dist/commands/mcp-tool-handlers.js.map +1 -0
- package/dist/commands/mcp-tools-defs.d.ts +133 -0
- package/dist/commands/mcp-tools-defs.d.ts.map +1 -0
- package/dist/commands/mcp-tools-defs.js +278 -0
- package/dist/commands/mcp-tools-defs.js.map +1 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +2 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/new-project.d.ts +9 -2
- package/dist/commands/new-project.d.ts.map +1 -1
- package/dist/commands/new-project.js +72 -32
- package/dist/commands/new-project.js.map +1 -1
- package/dist/mcp-runtime/runtime.d.ts +48 -0
- package/dist/mcp-runtime/runtime.d.ts.map +1 -0
- package/dist/mcp-runtime/runtime.js +107 -0
- package/dist/mcp-runtime/runtime.js.map +1 -0
- package/dist/module-loader.d.ts +22 -0
- package/dist/module-loader.d.ts.map +1 -0
- package/dist/module-loader.js +75 -0
- package/dist/module-loader.js.map +1 -0
- package/dist/package-manager.d.ts +38 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +33 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/package-manager.test.d.ts +2 -0
- package/dist/package-manager.test.d.ts.map +1 -0
- package/dist/package-manager.test.js +57 -0
- package/dist/package-manager.test.js.map +1 -0
- package/dist/sync-operations.d.ts +121 -0
- package/dist/sync-operations.d.ts.map +1 -0
- package/dist/sync-operations.js +180 -0
- package/dist/sync-operations.js.map +1 -0
- package/package.json +71 -15
- package/src/__tests__/fixtures/mock-config.ts +112 -0
- package/src/__tests__/sync-operations.test.ts +232 -0
- package/src/bin.ts +1 -0
- package/src/cli.ts +4 -5
- package/src/commands/import-export.ts +283 -0
- package/src/commands/mcp-coach.ts +67 -67
- package/src/commands/{mcp-tools.ts → mcp-tool-handlers.ts} +93 -57
- package/src/commands/mcp-tools-defs.ts +318 -0
- package/src/commands/mcp.ts +3 -2
- package/src/commands/new-project.ts +90 -36
- package/src/mcp-runtime/runtime.ts +147 -0
- package/src/module-loader.ts +94 -0
- package/src/package-manager.test.ts +66 -0
- package/src/package-manager.ts +44 -0
- package/src/sync-operations.ts +360 -0
- package/dist/commands/mcp-tools.d.ts +0 -58
- package/dist/commands/mcp-tools.d.ts.map +0 -1
- package/dist/commands/mcp-tools.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { Schema, Tool, Toolkit } from '@livestore/utils/effect';
|
|
2
|
+
import { coachTool } from "./mcp-coach.js";
|
|
3
|
+
export const livestoreToolkit = Toolkit.make(coachTool, Tool.make('livestore_generate_schema', {
|
|
4
|
+
description: 'Generate a LiveStore schema for a specific use case. Choose from predefined types (todo, blog, social, ecommerce) or request a custom schema by providing a description.',
|
|
5
|
+
parameters: {
|
|
6
|
+
schemaType: Schema.String.annotations({
|
|
7
|
+
description: "Schema type: 'todo', 'blog', 'social', 'ecommerce', or 'custom'",
|
|
8
|
+
}),
|
|
9
|
+
customDescription: Schema.optional(Schema.String.annotations({
|
|
10
|
+
description: "For custom schemas: describe your data model needs (e.g., 'user management system with roles and permissions')",
|
|
11
|
+
})),
|
|
12
|
+
},
|
|
13
|
+
success: Schema.Struct({
|
|
14
|
+
schemaCode: Schema.String.annotations({ description: 'The generated LiveStore schema TypeScript code' }),
|
|
15
|
+
explanation: Schema.String.annotations({ description: 'Brief explanation of the schema structure' }),
|
|
16
|
+
}),
|
|
17
|
+
}), Tool.make('livestore_get_example_schema', {
|
|
18
|
+
description: 'Get a complete example LiveStore schema with TypeScript code. Returns ready-to-use schema definitions for common application types.',
|
|
19
|
+
parameters: {
|
|
20
|
+
type: Schema.String.annotations({ description: "Example type: 'todo', 'blog', 'social', or 'ecommerce'" }),
|
|
21
|
+
},
|
|
22
|
+
success: Schema.Struct({
|
|
23
|
+
schemaCode: Schema.String.annotations({ description: 'The complete LiveStore schema code' }),
|
|
24
|
+
description: Schema.String.annotations({ description: 'Description of what this schema models' }),
|
|
25
|
+
}),
|
|
26
|
+
})
|
|
27
|
+
.annotate(Tool.Readonly, true)
|
|
28
|
+
.annotate(Tool.Destructive, false), Tool.make('livestore_instance_connect', {
|
|
29
|
+
description: `Connect a LiveStore instance (one active per MCP session) by dynamically importing a user module that exports a LiveStore \`schema\` and a \`syncBackend\` factory (and optionally \`syncPayload\`).
|
|
30
|
+
Notes:
|
|
31
|
+
- Only one instance can be active at a time; calling connect again shuts down and replaces the previous instance.
|
|
32
|
+
- Reconnecting creates a fresh, in-memory client database. The state visible to queries is populated by your backend's initial sync behavior; depending on configuration, you may briefly observe empty or partial data until sync completes.
|
|
33
|
+
- \`configPath\` is resolved relative to the current working directory.
|
|
34
|
+
- \`syncBackend\` must be a function (factory) that returns a backend; \`syncPayload\` must be JSON-serializable.
|
|
35
|
+
|
|
36
|
+
Module contract (generic example):
|
|
37
|
+
\`\`\`ts
|
|
38
|
+
// Choose any supported sync provider for your deployment
|
|
39
|
+
import { makeWsSync } from '@livestore/sync-cf/client' // or your own provider
|
|
40
|
+
|
|
41
|
+
// Export your app's schema
|
|
42
|
+
export { schema } from './src/livestore/schema.ts'
|
|
43
|
+
|
|
44
|
+
// Provide a sync backend (e.g., WebSocket). Configure via env in practice.
|
|
45
|
+
export const syncBackend = makeWsSync({ url: process.env.LIVESTORE_SYNC_URL ?? 'ws://localhost:8787' })
|
|
46
|
+
|
|
47
|
+
// Optionally, pass an auth payload for your backend (must be JSON-serializable)
|
|
48
|
+
export const syncPayload = { authToken: process.env.LIVESTORE_SYNC_AUTH_TOKEN ?? 'insecure-token-change-me' }
|
|
49
|
+
\`\`\`
|
|
50
|
+
|
|
51
|
+
Connect parameters:
|
|
52
|
+
{
|
|
53
|
+
"configPath": "livestore-cli.config.ts",
|
|
54
|
+
"storeId": "<store-id>"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
Optional identifiers to group client state on the server:
|
|
58
|
+
{
|
|
59
|
+
"configPath": "livestore-cli.config.ts",
|
|
60
|
+
"storeId": "<store-id>",
|
|
61
|
+
"clientId": "<client-id>",
|
|
62
|
+
"sessionId": "<session-id>"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
Returns on success:
|
|
66
|
+
{
|
|
67
|
+
"storeId": "<store-id>",
|
|
68
|
+
"clientId": "<client-id>",
|
|
69
|
+
"sessionId": "<session-id>",
|
|
70
|
+
"schemaInfo": {
|
|
71
|
+
"tableNames": ["<table-1>", "<table-2>", "..."],
|
|
72
|
+
"eventNames": ["<event-name-1>", "<event-name-2>", "..."]
|
|
73
|
+
}
|
|
74
|
+
}`,
|
|
75
|
+
parameters: {
|
|
76
|
+
configPath: Schema.String.annotations({
|
|
77
|
+
description: 'Path to a module that exports named variables: schema and syncBackend',
|
|
78
|
+
}),
|
|
79
|
+
storeId: Schema.String.annotations({ description: 'Required store id for the LiveStore instance.' }),
|
|
80
|
+
clientId: Schema.optional(Schema.String.annotations({ description: 'Optional client id for the LiveStore instance.' })),
|
|
81
|
+
sessionId: Schema.optional(Schema.String.annotations({ description: 'Optional session id for the LiveStore instance.' })),
|
|
82
|
+
},
|
|
83
|
+
success: Schema.Struct({
|
|
84
|
+
storeId: Schema.String,
|
|
85
|
+
clientId: Schema.String,
|
|
86
|
+
sessionId: Schema.String,
|
|
87
|
+
schemaInfo: Schema.Struct({
|
|
88
|
+
tableNames: Schema.Array(Schema.String).annotations({
|
|
89
|
+
description: 'Non-system table names in the connected schema',
|
|
90
|
+
}),
|
|
91
|
+
eventNames: Schema.Array(Schema.String).annotations({
|
|
92
|
+
description: 'Canonical event names defined by the connected schema',
|
|
93
|
+
}),
|
|
94
|
+
}),
|
|
95
|
+
}),
|
|
96
|
+
}), Tool.make('livestore_instance_query', {
|
|
97
|
+
description: `Execute a raw SQL query against the connected client's local database (read-only).
|
|
98
|
+
Notes:
|
|
99
|
+
- The client store runs SQLite under the hood; use valid SQLite syntax.
|
|
100
|
+
- Inspect your exported \`schema\` to learn table/column names.
|
|
101
|
+
- \`bindValues\` must be an array (positional "?") or a record (named "$key"); do not pass a stringified JSON value.
|
|
102
|
+
|
|
103
|
+
Examples (positional binds):
|
|
104
|
+
{
|
|
105
|
+
"sql": "SELECT * FROM my_table WHERE userId = ? LIMIT 5",
|
|
106
|
+
"bindValues": ["u1"]
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
Examples (named binds):
|
|
110
|
+
{
|
|
111
|
+
"sql": "SELECT * FROM my_table WHERE userId = $userId LIMIT 5",
|
|
112
|
+
"bindValues": { "userId": "u1" }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
Returns on success:
|
|
116
|
+
{
|
|
117
|
+
"rows": [{ "col": "value" }],
|
|
118
|
+
"rowCount": 1
|
|
119
|
+
}`,
|
|
120
|
+
parameters: {
|
|
121
|
+
sql: Schema.String.annotations({ description: 'The SQL query to execute' }),
|
|
122
|
+
bindValues: Schema.Union(Schema.Array(Schema.JsonValue), Schema.Record({ key: Schema.String, value: Schema.JsonValue })).annotations({
|
|
123
|
+
description: 'Bind values for the SQL query (array or record). Record keys must not start with $.',
|
|
124
|
+
}),
|
|
125
|
+
},
|
|
126
|
+
success: Schema.Struct({
|
|
127
|
+
rows: Schema.Array(Schema.Record({ key: Schema.String, value: Schema.JsonValue })),
|
|
128
|
+
rowCount: Schema.Number,
|
|
129
|
+
}),
|
|
130
|
+
}).annotate(Tool.Destructive, false), Tool.make('livestore_instance_commit_events', {
|
|
131
|
+
description: `Commit one or more events defined by your connected LiveStore schema.
|
|
132
|
+
Notes:
|
|
133
|
+
- The \`name\` must match the event's canonical name declared in your schema (e.g., "v1.UserRegistered").
|
|
134
|
+
- \`args\` must be a JSON object matching the event schema; do not pass a stringified JSON.
|
|
135
|
+
- Use your app's own event names and fields; the example below is generic.
|
|
136
|
+
- Date fields typically accept ISO 8601 strings (e.g., "2024-01-01T00:00:00.000Z").
|
|
137
|
+
|
|
138
|
+
Example parameters:
|
|
139
|
+
{
|
|
140
|
+
"events": [
|
|
141
|
+
{
|
|
142
|
+
"name": "v1.EntityCreated",
|
|
143
|
+
"args": {
|
|
144
|
+
"id": "e1",
|
|
145
|
+
"title": "Hello World",
|
|
146
|
+
"createdAt": "2024-01-01T00:00:00.000Z"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
Returns on success:
|
|
153
|
+
{ "committed": 1 }`,
|
|
154
|
+
parameters: {
|
|
155
|
+
events: Schema.Array(Schema.Struct({
|
|
156
|
+
name: Schema.String.annotations({ description: 'The name of the event' }),
|
|
157
|
+
args: Schema.JsonValue.annotations({
|
|
158
|
+
description: 'The arguments for the event as a non-stringified JSON value',
|
|
159
|
+
}),
|
|
160
|
+
})),
|
|
161
|
+
},
|
|
162
|
+
success: Schema.Struct({ committed: Schema.Number }),
|
|
163
|
+
}).annotate(Tool.Destructive, true), Tool.make('livestore_instance_status', {
|
|
164
|
+
description: `Report the LiveStore runtime status for the current MCP session.
|
|
165
|
+
|
|
166
|
+
Returns when connected:
|
|
167
|
+
{
|
|
168
|
+
"_tag": "connected",
|
|
169
|
+
"storeId": "<store-id>",
|
|
170
|
+
"clientId": "<client-id>",
|
|
171
|
+
"sessionId": "<session-id>",
|
|
172
|
+
"tableCounts": { "<table>": 123 }
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
Returns when not connected:
|
|
176
|
+
{
|
|
177
|
+
"_tag": "disconnected"
|
|
178
|
+
}`,
|
|
179
|
+
parameters: {},
|
|
180
|
+
success: Schema.Union(Schema.TaggedStruct('connected', {
|
|
181
|
+
storeId: Schema.String,
|
|
182
|
+
clientId: Schema.String,
|
|
183
|
+
sessionId: Schema.String,
|
|
184
|
+
tableCounts: Schema.Record({ key: Schema.String, value: Schema.Number }).annotations({
|
|
185
|
+
description: 'Tables in the LiveStore instance with their row count',
|
|
186
|
+
}),
|
|
187
|
+
}), Schema.TaggedStruct('disconnected', {})),
|
|
188
|
+
}).annotate(Tool.Readonly, true), Tool.make('livestore_instance_disconnect', {
|
|
189
|
+
description: `Disconnect the current LiveStore instance and release resources.
|
|
190
|
+
|
|
191
|
+
Example success:
|
|
192
|
+
{ "_tag": "disconnected" }`,
|
|
193
|
+
parameters: {},
|
|
194
|
+
success: Schema.TaggedStruct('disconnected', {}),
|
|
195
|
+
}), Tool.make('livestore_sync_export', {
|
|
196
|
+
description: `Export all events from a sync backend to JSON data.
|
|
197
|
+
|
|
198
|
+
This tool connects directly to the sync backend (without creating a full LiveStore instance) and pulls all events. Useful for backup, migration, and debugging.
|
|
199
|
+
|
|
200
|
+
Module contract (same as livestore_instance_connect):
|
|
201
|
+
\`\`\`ts
|
|
202
|
+
export { schema } from './src/livestore/schema.ts'
|
|
203
|
+
export const syncBackend = makeWsSync({ url: process.env.LIVESTORE_SYNC_URL ?? 'ws://localhost:8787' })
|
|
204
|
+
export const syncPayload = { authToken: process.env.LIVESTORE_SYNC_AUTH_TOKEN }
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
207
|
+
Example parameters:
|
|
208
|
+
{
|
|
209
|
+
"configPath": "livestore-cli.config.ts",
|
|
210
|
+
"storeId": "my-store"
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
Returns on success:
|
|
214
|
+
{
|
|
215
|
+
"storeId": "my-store",
|
|
216
|
+
"eventCount": 127,
|
|
217
|
+
"exportedAt": "2024-01-15T10:30:00.000Z",
|
|
218
|
+
"data": { "version": 1, "storeId": "my-store", ... }
|
|
219
|
+
}`,
|
|
220
|
+
parameters: {
|
|
221
|
+
configPath: Schema.String.annotations({
|
|
222
|
+
description: 'Path to a module that exports schema and syncBackend',
|
|
223
|
+
}),
|
|
224
|
+
storeId: Schema.String.annotations({ description: 'Store identifier' }),
|
|
225
|
+
clientId: Schema.optional(Schema.String.annotations({ description: 'Client identifier (default: mcp-export)' })),
|
|
226
|
+
},
|
|
227
|
+
success: Schema.Struct({
|
|
228
|
+
storeId: Schema.String,
|
|
229
|
+
eventCount: Schema.Number,
|
|
230
|
+
exportedAt: Schema.String,
|
|
231
|
+
data: Schema.JsonValue.annotations({ description: 'The export file data (can be saved or passed to import)' }),
|
|
232
|
+
}),
|
|
233
|
+
}).annotate(Tool.Readonly, true), Tool.make('livestore_sync_import', {
|
|
234
|
+
description: `Import events from export data to a sync backend.
|
|
235
|
+
|
|
236
|
+
This tool connects directly to the sync backend and pushes events. The sync backend must be empty.
|
|
237
|
+
|
|
238
|
+
Example parameters:
|
|
239
|
+
{
|
|
240
|
+
"configPath": "livestore-cli.config.ts",
|
|
241
|
+
"storeId": "my-store",
|
|
242
|
+
"data": { "version": 1, "storeId": "my-store", "events": [...] }
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
With options:
|
|
246
|
+
{
|
|
247
|
+
"configPath": "livestore-cli.config.ts",
|
|
248
|
+
"storeId": "my-store",
|
|
249
|
+
"data": { ... },
|
|
250
|
+
"force": true, // Import even if store ID doesn't match
|
|
251
|
+
"dryRun": true // Validate without importing
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
Returns on success:
|
|
255
|
+
{
|
|
256
|
+
"storeId": "my-store",
|
|
257
|
+
"eventCount": 127,
|
|
258
|
+
"dryRun": false
|
|
259
|
+
}`,
|
|
260
|
+
parameters: {
|
|
261
|
+
configPath: Schema.String.annotations({
|
|
262
|
+
description: 'Path to a module that exports schema and syncBackend',
|
|
263
|
+
}),
|
|
264
|
+
storeId: Schema.String.annotations({ description: 'Store identifier' }),
|
|
265
|
+
clientId: Schema.optional(Schema.String.annotations({ description: 'Client identifier (default: mcp-import)' })),
|
|
266
|
+
data: Schema.JsonValue.annotations({
|
|
267
|
+
description: 'The export data to import (from livestore_sync_export or a file)',
|
|
268
|
+
}),
|
|
269
|
+
force: Schema.optional(Schema.Boolean.annotations({ description: 'Force import even if store ID does not match' })),
|
|
270
|
+
dryRun: Schema.optional(Schema.Boolean.annotations({ description: 'Validate without actually importing' })),
|
|
271
|
+
},
|
|
272
|
+
success: Schema.Struct({
|
|
273
|
+
storeId: Schema.String,
|
|
274
|
+
eventCount: Schema.Number,
|
|
275
|
+
dryRun: Schema.Boolean,
|
|
276
|
+
}),
|
|
277
|
+
}).annotate(Tool.Destructive, true));
|
|
278
|
+
//# sourceMappingURL=mcp-tools-defs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools-defs.js","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,uBAAuB,CAAA;AAgGzD,eAAO,MAAM,UAAU;;EAAgF,CAAA"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -9,8 +9,9 @@ import { blogSchemaContent } from "../mcp-content/schemas/blog.js";
|
|
|
9
9
|
import { ecommerceSchemaContent } from "../mcp-content/schemas/ecommerce.js";
|
|
10
10
|
import { socialSchemaContent } from "../mcp-content/schemas/social.js";
|
|
11
11
|
import { todoSchemaContent } from "../mcp-content/schemas/todo.js";
|
|
12
|
+
import { toolHandlers } from "./mcp-tool-handlers.js";
|
|
12
13
|
// Tools imports
|
|
13
|
-
import { livestoreToolkit
|
|
14
|
+
import { livestoreToolkit } from "./mcp-tools-defs.js";
|
|
14
15
|
const LivestoreResources = Layer.mergeAll(McpServer.resource({
|
|
15
16
|
uri: 'livestore://overview',
|
|
16
17
|
name: 'LiveStore Overview',
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,16 @@ declare const DirectoryExistsError_base: Schema.TaggedErrorClass<DirectoryExists
|
|
|
25
25
|
}>;
|
|
26
26
|
export declare class DirectoryExistsError extends DirectoryExistsError_base {
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
declare const NoExamplesError_base: Schema.TaggedErrorClass<NoExamplesError, "NoExamplesError", {
|
|
29
|
+
readonly _tag: Schema.tag<"NoExamplesError">;
|
|
30
|
+
} & {
|
|
31
|
+
message: typeof Schema.String;
|
|
32
|
+
}>;
|
|
33
|
+
export declare class NoExamplesError extends NoExamplesError_base {
|
|
34
|
+
}
|
|
35
|
+
export declare const createCommand: Cli.Command.Command<"create", HttpClient.HttpClient | Cli.Prompt.Prompt.Environment | import("@effect/platform/CommandExecutor").CommandExecutor, import("@effect/platform/Error").PlatformError | import("@effect/platform/HttpClientError").ResponseError | ExampleNotFoundError | NetworkError | NoExamplesError | import("@effect/platform/Terminal").QuitException, {
|
|
29
36
|
readonly example: Option.Option<string>;
|
|
30
|
-
readonly
|
|
37
|
+
readonly ref: string;
|
|
31
38
|
readonly path: Option.Option<string>;
|
|
32
39
|
}>;
|
|
33
40
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-project.d.ts","sourceRoot":"","sources":["../../src/commands/new-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"new-project.d.ts","sourceRoot":"","sources":["../../src/commands/new-project.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,UAAU,EAEV,MAAM,EACN,MAAM,EACP,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;;;;;;;;AA0B3C,qBAAa,oBAAqB,SAAQ,yBAIxC;CAAG;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAEnC;CAAG;AA2JL,eAAO,MAAM,aAAa;;;;EAuGzB,CAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as os from 'node:os';
|
|
2
2
|
import * as nodePath from 'node:path';
|
|
3
|
+
import { sluggify } from '@livestore/utils';
|
|
3
4
|
import { Command, Console, Effect, FileSystem, HttpClient, HttpClientRequest, Option, Schema, } from '@livestore/utils/effect';
|
|
4
5
|
import { Cli } from '@livestore/utils/node';
|
|
6
|
+
import { detectPackageManager, pmCommands } from "../package-manager.js";
|
|
5
7
|
// Schema for GitHub API response
|
|
6
8
|
const GitHubContentSchema = Schema.Struct({
|
|
7
9
|
name: Schema.String,
|
|
@@ -10,48 +12,61 @@ const GitHubContentSchema = Schema.Struct({
|
|
|
10
12
|
download_url: Schema.NullOr(Schema.String),
|
|
11
13
|
});
|
|
12
14
|
const GitHubContentsResponseSchema = Schema.Array(GitHubContentSchema);
|
|
15
|
+
const githubRequest = (url) => {
|
|
16
|
+
const request = HttpClientRequest.get(url).pipe(HttpClientRequest.setHeader('accept', 'application/vnd.github+json'));
|
|
17
|
+
const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN;
|
|
18
|
+
return token === undefined ? request : request.pipe(HttpClientRequest.setHeader('authorization', `Bearer ${token}`));
|
|
19
|
+
};
|
|
20
|
+
/** Schema for parsing package.json scripts (dev or start) */
|
|
21
|
+
const PackageJsonScriptsSchema = Schema.Struct({
|
|
22
|
+
scripts: Schema.Union(Schema.Struct({ dev: Schema.String }), Schema.Struct({ start: Schema.String })),
|
|
23
|
+
});
|
|
13
24
|
// Error types
|
|
14
|
-
export class ExampleNotFoundError extends Schema.TaggedError()('ExampleNotFoundError', {
|
|
25
|
+
export class ExampleNotFoundError extends Schema.TaggedError('~@livestore/cli/ExampleNotFoundError')('ExampleNotFoundError', {
|
|
15
26
|
exampleName: Schema.String,
|
|
16
27
|
availableExamples: Schema.Array(Schema.String),
|
|
17
28
|
message: Schema.String,
|
|
18
29
|
}) {
|
|
19
30
|
}
|
|
20
|
-
export class NetworkError extends Schema.TaggedError()('NetworkError', {
|
|
31
|
+
export class NetworkError extends Schema.TaggedError('~@livestore/cli/NetworkError')('NetworkError', {
|
|
21
32
|
cause: Schema.Unknown,
|
|
22
33
|
message: Schema.String,
|
|
23
34
|
}) {
|
|
24
35
|
}
|
|
25
|
-
export class DirectoryExistsError extends Schema.TaggedError()('DirectoryExistsError', {
|
|
36
|
+
export class DirectoryExistsError extends Schema.TaggedError('~@livestore/cli/DirectoryExistsError')('DirectoryExistsError', {
|
|
26
37
|
path: Schema.String,
|
|
27
38
|
message: Schema.String,
|
|
28
39
|
}) {
|
|
29
40
|
}
|
|
41
|
+
export class NoExamplesError extends Schema.TaggedError('~@livestore/cli/NoExamplesError')('NoExamplesError', {
|
|
42
|
+
message: Schema.String,
|
|
43
|
+
}) {
|
|
44
|
+
}
|
|
30
45
|
// Fetch available examples from GitHub
|
|
31
|
-
const fetchExamples = (
|
|
32
|
-
const url = `https://api.github.com/repos/livestorejs/livestore/contents/examples?ref=${
|
|
33
|
-
yield* Effect.log(`Fetching examples from
|
|
34
|
-
const request =
|
|
46
|
+
const fetchExamples = (ref) => Effect.gen(function* () {
|
|
47
|
+
const url = `https://api.github.com/repos/livestorejs/livestore/contents/examples?ref=${ref}`;
|
|
48
|
+
yield* Effect.log(`Fetching examples from ref: ${ref}`);
|
|
49
|
+
const request = githubRequest(url);
|
|
35
50
|
const response = yield* HttpClient.execute(request).pipe(Effect.scoped, Effect.catchAll((error) => new NetworkError({
|
|
36
51
|
cause: error,
|
|
37
|
-
message: `Failed to fetch examples from GitHub: ${error}`,
|
|
52
|
+
message: `Failed to fetch examples from GitHub: ${String(error)}`,
|
|
38
53
|
})));
|
|
39
54
|
const responseText = yield* response.text;
|
|
40
|
-
const examples = yield* Schema.decodeUnknown(GitHubContentsResponseSchema)(
|
|
55
|
+
const examples = yield* Schema.decodeUnknown(Schema.parseJson(GitHubContentsResponseSchema))(responseText).pipe(Effect.catchAll((error) => new NetworkError({
|
|
41
56
|
cause: error,
|
|
42
|
-
message: `Failed to parse GitHub API response: ${error}`,
|
|
57
|
+
message: `Failed to parse GitHub API response: ${String(error)}`,
|
|
43
58
|
})));
|
|
44
59
|
const exampleNames = examples
|
|
45
60
|
.filter((item) => item.type === 'dir')
|
|
46
61
|
.map((item) => item.name)
|
|
47
|
-
.
|
|
62
|
+
.toSorted();
|
|
48
63
|
yield* Effect.log(`Found ${exampleNames.length} examples: ${exampleNames.join(', ')}`);
|
|
49
64
|
return exampleNames;
|
|
50
65
|
});
|
|
51
66
|
// Interactive example selection
|
|
52
67
|
const selectExample = (examples) => Effect.gen(function* () {
|
|
53
68
|
if (examples.length === 0) {
|
|
54
|
-
return yield*
|
|
69
|
+
return yield* new NoExamplesError({ message: 'No examples available' });
|
|
55
70
|
}
|
|
56
71
|
const prompt = Cli.Prompt.select({
|
|
57
72
|
message: '📦 Select a LiveStore example to create:',
|
|
@@ -64,16 +79,16 @@ const selectExample = (examples) => Effect.gen(function* () {
|
|
|
64
79
|
return yield* Cli.Prompt.run(prompt);
|
|
65
80
|
});
|
|
66
81
|
// Download and extract example using tiged approach
|
|
67
|
-
const downloadExample = (exampleName,
|
|
68
|
-
yield* Console.log(`📥 Downloading example "${exampleName}" from
|
|
82
|
+
const downloadExample = (exampleName, ref, destinationPath) => Effect.gen(function* () {
|
|
83
|
+
yield* Console.log(`📥 Downloading example "${exampleName}" from ref "${ref}"...`);
|
|
69
84
|
const tempDir = yield* Effect.sync(() => os.tmpdir());
|
|
70
|
-
const tarballPath = nodePath.join(tempDir, `livestore-${
|
|
71
|
-
const tarballUrl = `https://api.github.com/repos/livestorejs/livestore/tarball/${
|
|
85
|
+
const tarballPath = nodePath.join(tempDir, `livestore-${sluggify(ref)}-${Date.now()}.tar.gz`);
|
|
86
|
+
const tarballUrl = `https://api.github.com/repos/livestorejs/livestore/tarball/${ref}`;
|
|
72
87
|
// Download tarball directly
|
|
73
|
-
const request =
|
|
88
|
+
const request = githubRequest(tarballUrl);
|
|
74
89
|
const response = yield* HttpClient.execute(request).pipe(Effect.scoped, Effect.catchAll((error) => new NetworkError({
|
|
75
90
|
cause: error,
|
|
76
|
-
message: `Failed to download tarball: ${error}`,
|
|
91
|
+
message: `Failed to download tarball: ${String(error)}`,
|
|
77
92
|
})));
|
|
78
93
|
const fs = yield* FileSystem.FileSystem;
|
|
79
94
|
// Write tarball to temp file
|
|
@@ -87,7 +102,7 @@ const downloadExample = (exampleName, branch, destinationPath) => Effect.gen(fun
|
|
|
87
102
|
// Extract tarball using Effect Command
|
|
88
103
|
yield* Command.make('tar', '-xzf', tarballPath, '-C', extractDir).pipe(Command.exitCode, Effect.catchAll((error) => new NetworkError({
|
|
89
104
|
cause: error,
|
|
90
|
-
message: `Failed to extract tarball: ${error}`,
|
|
105
|
+
message: `Failed to extract tarball: ${String(error)}`,
|
|
91
106
|
})));
|
|
92
107
|
// Find the extracted directory (it will be named like livestorejs-livestore-{hash})
|
|
93
108
|
const extractedDirs = yield* fs.readDirectory(extractDir);
|
|
@@ -101,7 +116,7 @@ const downloadExample = (exampleName, branch, destinationPath) => Effect.gen(fun
|
|
|
101
116
|
const exampleSourcePath = nodePath.join(repoDir, 'examples', exampleName);
|
|
102
117
|
// Check if the example exists
|
|
103
118
|
const exampleExists = yield* fs.exists(exampleSourcePath);
|
|
104
|
-
if (
|
|
119
|
+
if (exampleExists === false) {
|
|
105
120
|
return yield* new ExampleNotFoundError({
|
|
106
121
|
exampleName,
|
|
107
122
|
availableExamples: [],
|
|
@@ -111,7 +126,7 @@ const downloadExample = (exampleName, branch, destinationPath) => Effect.gen(fun
|
|
|
111
126
|
// Copy the example directory contents to the destination using Effect Command
|
|
112
127
|
yield* Command.make('cp', '-r', `${exampleSourcePath}/.`, destinationPath).pipe(Command.exitCode, Effect.catchAll((error) => new NetworkError({
|
|
113
128
|
cause: error,
|
|
114
|
-
message: `Failed to copy example files: ${error}`,
|
|
129
|
+
message: `Failed to copy example files: ${String(error)}`,
|
|
115
130
|
})));
|
|
116
131
|
// Clean up extract directory
|
|
117
132
|
yield* fs.remove(extractDir, { recursive: true }).pipe(Effect.catchAll(() => Effect.void));
|
|
@@ -119,14 +134,14 @@ const downloadExample = (exampleName, branch, destinationPath) => Effect.gen(fun
|
|
|
119
134
|
yield* fs.remove(tarballPath).pipe(Effect.catchAll(() => Effect.void));
|
|
120
135
|
yield* Console.log(`✅ Example "${exampleName}" created successfully at: ${destinationPath}`);
|
|
121
136
|
});
|
|
122
|
-
export const
|
|
137
|
+
export const createCommand = Cli.Command.make('create', {
|
|
123
138
|
example: Cli.Options.text('example').pipe(Cli.Options.optional, Cli.Options.withDescription('Example name to create (bypasses interactive selection)')),
|
|
124
|
-
|
|
139
|
+
ref: Cli.Options.text('ref').pipe(Cli.Options.withAlias('commit'), Cli.Options.withAlias('branch'), Cli.Options.withAlias('tag'), Cli.Options.withDefault('main'), Cli.Options.withDescription('The name of the commit/branch/tag to fetch examples from. Pull requests refs must be fully-formed (e.g., `refs/pull/123/merge`).')),
|
|
125
140
|
path: Cli.Args.text({ name: 'path' }).pipe(Cli.Args.optional, Cli.Args.withDescription('Destination path for the new project')),
|
|
126
|
-
}, Effect.fn(function* ({ example,
|
|
141
|
+
}, Effect.fn(function* ({ example, ref, path, }) {
|
|
127
142
|
yield* Effect.log('🚀 Creating new LiveStore project...');
|
|
128
143
|
// Fetch available examples
|
|
129
|
-
const examples = yield* fetchExamples(
|
|
144
|
+
const examples = yield* fetchExamples(ref);
|
|
130
145
|
if (examples.length === 0) {
|
|
131
146
|
yield* Console.log('❌ No examples found in the repository');
|
|
132
147
|
return yield* new ExampleNotFoundError({
|
|
@@ -136,9 +151,9 @@ export const newProjectCommand = Cli.Command.make('new-project', {
|
|
|
136
151
|
});
|
|
137
152
|
}
|
|
138
153
|
// Select example (from CLI option or interactive prompt)
|
|
139
|
-
const selectedExample = Option.isSome(example) ? example.value : yield* selectExample(examples);
|
|
154
|
+
const selectedExample = Option.isSome(example) === true ? example.value : yield* selectExample(examples);
|
|
140
155
|
// Validate selected example exists
|
|
141
|
-
if (
|
|
156
|
+
if (examples.includes(selectedExample) === false) {
|
|
142
157
|
yield* Console.log(`❌ Example "${selectedExample}" not found`);
|
|
143
158
|
yield* Console.log(`Available examples: ${examples.join(', ')}`);
|
|
144
159
|
return yield* new ExampleNotFoundError({
|
|
@@ -148,16 +163,41 @@ export const newProjectCommand = Cli.Command.make('new-project', {
|
|
|
148
163
|
});
|
|
149
164
|
}
|
|
150
165
|
// Determine destination path
|
|
151
|
-
const destinationPath = Option.isSome(path) ? nodePath.resolve(path.value) : nodePath.resolve(selectedExample);
|
|
166
|
+
const destinationPath = Option.isSome(path) === true ? nodePath.resolve(path.value) : nodePath.resolve(selectedExample);
|
|
152
167
|
// Download and extract the example
|
|
153
|
-
yield* downloadExample(selectedExample,
|
|
154
|
-
//
|
|
168
|
+
yield* downloadExample(selectedExample, ref, destinationPath);
|
|
169
|
+
// Detect available run script (dev or start) from the created project's package.json.
|
|
170
|
+
// Some examples use "dev" (web projects), others use "start" (Expo projects),
|
|
171
|
+
// and some have no run script at all (e.g., node-effect-cli).
|
|
172
|
+
const fs = yield* FileSystem.FileSystem;
|
|
173
|
+
const packageJsonPath = nodePath.join(destinationPath, 'package.json');
|
|
174
|
+
const packageJsonContent = yield* fs.readFileString(packageJsonPath);
|
|
175
|
+
const runScript = yield* Schema.decodeUnknown(Schema.parseJson(PackageJsonScriptsSchema))(packageJsonContent).pipe(Effect.map((pkg) => ('dev' in pkg.scripts ? 'dev' : 'start')), Effect.orElseSucceed(() => undefined));
|
|
176
|
+
// Detect which package manager was used to invoke the CLI (via npm_config_user_agent).
|
|
177
|
+
// This ensures the "next steps" instructions match how the user ran the create command.
|
|
178
|
+
const pmResult = detectPackageManager();
|
|
155
179
|
yield* Console.log('\n🎉 Project created successfully!');
|
|
156
180
|
yield* Console.log(`📁 Location: ${destinationPath}`);
|
|
157
181
|
yield* Console.log('\n📋 Next steps:');
|
|
158
182
|
yield* Console.log(` cd ${nodePath.basename(destinationPath)}`);
|
|
159
|
-
|
|
160
|
-
|
|
183
|
+
// Yarn is not recommended for LiveStore projects. When detected, show a warning
|
|
184
|
+
// and suggest using bun instead for the next steps.
|
|
185
|
+
if (pmResult._tag === 'unsupported') {
|
|
186
|
+
yield* Console.log(' bun install # Install dependencies (yarn is not recommended)');
|
|
187
|
+
if (runScript !== undefined) {
|
|
188
|
+
yield* Console.log(` bun ${runScript} # Start development server`);
|
|
189
|
+
}
|
|
190
|
+
yield* Console.log('\n⚠️ Yarn is not recommended for LiveStore projects.');
|
|
191
|
+
yield* Console.log(' We recommend using bun, pnpm, or npm instead.');
|
|
192
|
+
yield* Console.log(' The commands above use bun by default.');
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
const pm = pmResult.pm;
|
|
196
|
+
yield* Console.log(` ${pmCommands.install[pm]} # Install dependencies`);
|
|
197
|
+
if (runScript !== undefined) {
|
|
198
|
+
yield* Console.log(` ${pmCommands.run[pm](runScript)} # Start development server`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
161
201
|
yield* Console.log('\n💡 Tip: Run `git init` if you want to initialize version control');
|
|
162
202
|
}));
|
|
163
203
|
//# sourceMappingURL=new-project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-project.js","sourceRoot":"","sources":["../../src/commands/new-project.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"new-project.js","sourceRoot":"","sources":["../../src/commands/new-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,MAAM,EACN,MAAM,GACP,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAE3C,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAExE,iCAAiC;AACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CAAC,CAAA;AAEF,MAAM,4BAA4B,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;AAEtE,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;IACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC,CAAA;IACrH,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAA;IAC9D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC,CAAA;AACtH,CAAC,CAAA;AAED,6DAA6D;AAC7D,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;CACtG,CAAC,CAAA;AAEF,cAAc;AACd,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,CAAuB,sCAAsC,CAAC,CAAC,sBAAsB,EAAE;IACjJ,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAAe,8BAA8B,CAAC,CAAC,cAAc,EAAE;IACjH,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,CAAuB,sCAAsC,CAAC,CAAC,sBAAsB,EAAE;IACjJ,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,CAAkB,iCAAiC,CAAC,CAAC,iBAAiB,EAAE;IAC7H,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,uCAAuC;AACvC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE,CACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,4EAA4E,GAAG,EAAE,CAAA;IAE7F,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,YAAY,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,yCAAyC,MAAM,CAAC,KAAK,CAAC,EAAE;KAClE,CAAC,CACL,CACF,CAAA;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAC7G,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,YAAY,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,wCAAwC,MAAM,CAAC,KAAK,CAAC,EAAE;KACjE,CAAC,CACL,CACF,CAAA;IAED,MAAM,YAAY,GAAG,QAAQ;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;SACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,QAAQ,EAAE,CAAA;IAEb,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,MAAM,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEtF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAC,CAAA;AAEJ,gCAAgC;AAChC,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAE,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;IACzE,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,0CAA0C;QACnD,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,kCAAkC,OAAO,UAAU;SACjE,CAAC,CAAC;KACJ,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC,CAAC,CAAA;AAEJ,oDAAoD;AACpD,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,eAAuB,EAAE,EAAE,CACpF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,eAAe,GAAG,MAAM,CAAC,CAAA;IAElF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;IACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC7F,MAAM,UAAU,GAAG,8DAA8D,GAAG,EAAE,CAAA;IAEtF,4BAA4B;IAC5B,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,YAAY,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,+BAA+B,MAAM,CAAC,KAAK,CAAC,EAAE;KACxD,CAAC,CACL,CACF,CAAA;IAED,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAEvC,6BAA6B;IAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAA;IACjD,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IAE/D,+BAA+B;IAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE7D,qDAAqD;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAClE,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAExD,uCAAuC;IACvC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CACpE,OAAO,CAAC,QAAQ,EAChB,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,YAAY,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,8BAA8B,MAAM,CAAC,KAAK,CAAC,EAAE;KACvD,CAAC,CACL,CACF,CAAA;IAED,oFAAoF;IACpF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAEzD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC;YAC7B,KAAK,EAAE,8BAA8B;YACrC,OAAO,EAAE,+CAA+C;SACzD,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAE,CAAC,CAAA;IAC5D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAEzE,8BAA8B;IAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAEzD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC;YACrC,WAAW;YACX,iBAAiB,EAAE,EAAE;YACrB,OAAO,EAAE,YAAY,WAAW,yCAAyC;SAC1E,CAAC,CAAA;IACJ,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,iBAAiB,IAAI,EAAE,eAAe,CAAC,CAAC,IAAI,CAC7E,OAAO,CAAC,QAAQ,EAChB,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,YAAY,CAAC;QACf,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,iCAAiC,MAAM,CAAC,KAAK,CAAC,EAAE;KAC1D,CAAC,CACL,CACF,CAAA;IAED,6BAA6B;IAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE1F,mBAAmB;IACnB,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,8BAA8B,eAAe,EAAE,CAAC,CAAA;AAC9F,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAC3C,QAAQ,EACR;IACE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CACvC,GAAG,CAAC,OAAO,CAAC,QAAQ,EACpB,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,yDAAyD,CAAC,CACvF;IACD,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAC/B,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC/B,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC/B,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAC5B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAC/B,GAAG,CAAC,OAAO,CAAC,eAAe,CACzB,kIAAkI,CACnI,CACF;IACD,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,sCAAsC,CAAC,CACjE;CACF,EACD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EACnB,OAAO,EACP,GAAG,EACH,IAAI,GAKL;IACC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IAEzD,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;QAC3D,OAAO,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC;YACrC,WAAW,EAAE,EAAE;YACf,iBAAiB,EAAE,EAAE;YACrB,OAAO,EAAE,uBAAuB;SACjC,CAAC,CAAA;IACJ,CAAC;IAED,yDAAyD;IACzD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAExG,mCAAmC;IACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,KAAK,EAAE,CAAC;QACjD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,aAAa,CAAC,CAAA;QAC9D,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChE,OAAO,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,iBAAiB,EAAE,QAAQ;YAC3B,OAAO,EAAE,YAAY,eAAe,aAAa;SAClD,CAAC,CAAA;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IAEvH,mCAAmC;IACnC,KAAK,CAAC,CAAC,eAAe,CAAC,eAAe,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;IAE7D,sFAAsF;IACtF,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;IACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAChH,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,EACnF,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CACtC,CAAA;IAED,uFAAuF;IACvF,wFAAwF;IACxF,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAA;IAEvC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;IACxD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAe,EAAE,CAAC,CAAA;IACrD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACtC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAEjE,gFAAgF;IAChF,oDAAoD;IACpD,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACpC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;QACxF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,oCAAoC,CAAC,CAAA;QAC7E,CAAC;QACD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;QAC3E,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;QACtE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;IACjE,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAA;QACtB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAA;QAC5E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAA;QAC7F,CAAC;IACH,CAAC;IACD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;AAC1F,CAAC,CAAC,CACH,CAAA"}
|