@typokit/cli 0.1.4

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 (64) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/bin.js +13 -0
  4. package/dist/bin.js.map +1 -0
  5. package/dist/commands/build.d.ts +42 -0
  6. package/dist/commands/build.d.ts.map +1 -0
  7. package/dist/commands/build.js +302 -0
  8. package/dist/commands/build.js.map +1 -0
  9. package/dist/commands/dev.d.ts +106 -0
  10. package/dist/commands/dev.d.ts.map +1 -0
  11. package/dist/commands/dev.js +536 -0
  12. package/dist/commands/dev.js.map +1 -0
  13. package/dist/commands/generate.d.ts +65 -0
  14. package/dist/commands/generate.d.ts.map +1 -0
  15. package/dist/commands/generate.js +430 -0
  16. package/dist/commands/generate.js.map +1 -0
  17. package/dist/commands/inspect.d.ts +26 -0
  18. package/dist/commands/inspect.d.ts.map +1 -0
  19. package/dist/commands/inspect.js +579 -0
  20. package/dist/commands/inspect.js.map +1 -0
  21. package/dist/commands/migrate.d.ts +70 -0
  22. package/dist/commands/migrate.d.ts.map +1 -0
  23. package/dist/commands/migrate.js +570 -0
  24. package/dist/commands/migrate.js.map +1 -0
  25. package/dist/commands/scaffold.d.ts +70 -0
  26. package/dist/commands/scaffold.d.ts.map +1 -0
  27. package/dist/commands/scaffold.js +483 -0
  28. package/dist/commands/scaffold.js.map +1 -0
  29. package/dist/commands/test.d.ts +56 -0
  30. package/dist/commands/test.d.ts.map +1 -0
  31. package/dist/commands/test.js +248 -0
  32. package/dist/commands/test.js.map +1 -0
  33. package/dist/config.d.ts +20 -0
  34. package/dist/config.d.ts.map +1 -0
  35. package/dist/config.js +69 -0
  36. package/dist/config.js.map +1 -0
  37. package/dist/index.d.ts +30 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +245 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/logger.d.ts +12 -0
  42. package/dist/logger.d.ts.map +1 -0
  43. package/dist/logger.js +33 -0
  44. package/dist/logger.js.map +1 -0
  45. package/package.json +33 -0
  46. package/src/bin.ts +22 -0
  47. package/src/commands/build.ts +433 -0
  48. package/src/commands/dev.ts +822 -0
  49. package/src/commands/generate.ts +640 -0
  50. package/src/commands/inspect.ts +885 -0
  51. package/src/commands/migrate.ts +800 -0
  52. package/src/commands/scaffold.ts +627 -0
  53. package/src/commands/test.ts +353 -0
  54. package/src/config.ts +93 -0
  55. package/src/dev.test.ts +285 -0
  56. package/src/env.d.ts +86 -0
  57. package/src/generate.test.ts +304 -0
  58. package/src/index.test.ts +217 -0
  59. package/src/index.ts +397 -0
  60. package/src/inspect.test.ts +411 -0
  61. package/src/logger.ts +49 -0
  62. package/src/migrate.test.ts +205 -0
  63. package/src/scaffold.test.ts +256 -0
  64. package/src/test.test.ts +230 -0
@@ -0,0 +1,430 @@
1
+ // @typokit/cli — Generate Commands
2
+ /**
3
+ * Resolve glob patterns to actual file paths.
4
+ * Reuses the same approach as build.ts.
5
+ */
6
+ async function resolveFilePatterns(rootDir, patterns) {
7
+ const { join, resolve } = (await import(/* @vite-ignore */ "path"));
8
+ const { readdirSync, statSync, existsSync } = (await import(
9
+ /* @vite-ignore */ "fs"));
10
+ const files = [];
11
+ for (const pattern of patterns) {
12
+ if (pattern.includes("*")) {
13
+ const parts = pattern.split("/");
14
+ const hasDoubleGlob = parts.includes("**");
15
+ const lastPart = parts[parts.length - 1];
16
+ const baseParts = [];
17
+ for (const part of parts) {
18
+ if (part.includes("*"))
19
+ break;
20
+ baseParts.push(part);
21
+ }
22
+ const baseDir = baseParts.length > 0 ? join(rootDir, ...baseParts) : rootDir;
23
+ if (!existsSync(baseDir))
24
+ continue;
25
+ const entries = hasDoubleGlob
26
+ ? listFilesRecursive(baseDir, existsSync, readdirSync, statSync, join)
27
+ : readdirSync(baseDir).map((f) => join(baseDir, f));
28
+ const filePattern = lastPart.replace(/\*/g, ".*");
29
+ const regex = new RegExp(`^${filePattern}$`);
30
+ for (const entry of entries) {
31
+ const name = entry.split(/[\\/]/).pop() ?? "";
32
+ if (regex.test(name)) {
33
+ files.push(resolve(entry));
34
+ }
35
+ }
36
+ }
37
+ else {
38
+ const fullPath = resolve(join(rootDir, pattern));
39
+ if (existsSync(fullPath)) {
40
+ files.push(fullPath);
41
+ }
42
+ }
43
+ }
44
+ return [...new Set(files)].sort();
45
+ }
46
+ function listFilesRecursive(dir, existsSync, readdirSync, statSync, join) {
47
+ if (!existsSync(dir))
48
+ return [];
49
+ const results = [];
50
+ const entries = readdirSync(dir);
51
+ for (const entry of entries) {
52
+ const fullPath = join(dir, entry);
53
+ try {
54
+ const stat = statSync(fullPath);
55
+ if (stat.isDirectory()) {
56
+ if (entry !== "node_modules" &&
57
+ entry !== "dist" &&
58
+ entry !== ".typokit") {
59
+ results.push(...listFilesRecursive(fullPath, existsSync, readdirSync, statSync, join));
60
+ }
61
+ }
62
+ else if (stat.isFile()) {
63
+ results.push(fullPath);
64
+ }
65
+ }
66
+ catch {
67
+ // Skip files that can't be stat'd
68
+ }
69
+ }
70
+ return results;
71
+ }
72
+ /**
73
+ * Generate database schema artifacts using the configured database adapter.
74
+ *
75
+ * Resolves type files, extracts type metadata, and calls the database adapter's
76
+ * generate() method. If no adapter is configured, reports a helpful error.
77
+ */
78
+ async function generateDb(options) {
79
+ const startTime = Date.now();
80
+ const { config, rootDir, logger, verbose } = options;
81
+ const filesWritten = [];
82
+ const errors = [];
83
+ logger.step("generate:db", "Resolving type files...");
84
+ const typeFiles = await resolveFilePatterns(rootDir, config.typeFiles);
85
+ if (typeFiles.length === 0) {
86
+ logger.warn("No type files found matching configured patterns");
87
+ return {
88
+ success: true,
89
+ filesWritten,
90
+ duration: Date.now() - startTime,
91
+ errors,
92
+ };
93
+ }
94
+ if (verbose) {
95
+ logger.verbose(`Type files: ${typeFiles.length} found`);
96
+ for (const f of typeFiles)
97
+ logger.verbose(` ${f}`);
98
+ }
99
+ // Extract types using transform-native
100
+ logger.step("generate:db", "Extracting type metadata...");
101
+ try {
102
+ const { parseAndExtractTypes } = (await import(
103
+ /* @vite-ignore */ "@typokit/transform-native"));
104
+ const types = await parseAndExtractTypes(typeFiles);
105
+ const typeCount = Object.keys(types).length;
106
+ if (typeCount === 0) {
107
+ logger.warn("No types extracted from source files");
108
+ return {
109
+ success: true,
110
+ filesWritten,
111
+ duration: Date.now() - startTime,
112
+ errors,
113
+ };
114
+ }
115
+ logger.step("generate:db", `Extracted ${typeCount} types`);
116
+ // Generate schema artifacts using diffSchemas (generates DDL from types)
117
+ const { diffSchemas } = (await import(
118
+ /* @vite-ignore */ "@typokit/transform-native"));
119
+ const { join } = (await import(/* @vite-ignore */ "path"));
120
+ const nodeFs = (await import(/* @vite-ignore */ "fs"));
121
+ // Diff empty schema against current types to generate full DDL
122
+ const migration = await diffSchemas({}, types, "initial");
123
+ const outputDir = join(rootDir, config.outputDir);
124
+ const schemaDir = join(outputDir, "schemas");
125
+ nodeFs.mkdirSync(schemaDir, { recursive: true });
126
+ // Write migration SQL
127
+ const sqlPath = join(schemaDir, "schema.sql");
128
+ nodeFs.writeFileSync(sqlPath, migration.sql, "utf-8");
129
+ filesWritten.push(sqlPath);
130
+ logger.success(`Generated ${sqlPath}`);
131
+ // Write schema metadata as JSON
132
+ const metaPath = join(schemaDir, "schema-types.json");
133
+ const metaJson = JSON.stringify(types, null, 2);
134
+ nodeFs.writeFileSync(metaPath, metaJson, "utf-8");
135
+ filesWritten.push(metaPath);
136
+ logger.success(`Generated ${metaPath}`);
137
+ if (verbose) {
138
+ logger.verbose(`Migration: ${migration.name}`);
139
+ logger.verbose(`Destructive: ${migration.destructive}`);
140
+ logger.verbose(`Changes: ${migration.changes.length}`);
141
+ }
142
+ }
143
+ catch (err) {
144
+ const message = err instanceof Error ? err.message : String(err);
145
+ logger.error(`generate:db failed: ${message}`);
146
+ errors.push(message);
147
+ return {
148
+ success: false,
149
+ filesWritten,
150
+ duration: Date.now() - startTime,
151
+ errors,
152
+ };
153
+ }
154
+ const duration = Date.now() - startTime;
155
+ logger.success(`generate:db complete — ${filesWritten.length} files written (${duration}ms)`);
156
+ return { success: true, filesWritten, duration, errors };
157
+ }
158
+ /**
159
+ * Generate a type-safe API client from route contracts.
160
+ *
161
+ * Reads compiled routes from the .typokit/ directory and generates
162
+ * a TypeScript client module.
163
+ */
164
+ async function generateClient(options) {
165
+ const startTime = Date.now();
166
+ const { config, rootDir, logger, verbose } = options;
167
+ const filesWritten = [];
168
+ const errors = [];
169
+ logger.step("generate:client", "Resolving route files...");
170
+ const routeFiles = await resolveFilePatterns(rootDir, config.routeFiles);
171
+ if (routeFiles.length === 0) {
172
+ logger.warn("No route files found matching configured patterns");
173
+ return {
174
+ success: true,
175
+ filesWritten,
176
+ duration: Date.now() - startTime,
177
+ errors,
178
+ };
179
+ }
180
+ if (verbose) {
181
+ logger.verbose(`Route files: ${routeFiles.length} found`);
182
+ for (const f of routeFiles)
183
+ logger.verbose(` ${f}`);
184
+ }
185
+ try {
186
+ const { compileRoutes } = (await import(
187
+ /* @vite-ignore */ "@typokit/transform-native"));
188
+ const { join } = (await import(/* @vite-ignore */ "path"));
189
+ const nodeFs = (await import(/* @vite-ignore */ "fs"));
190
+ logger.step("generate:client", "Compiling route contracts...");
191
+ const compiledRoutes = await compileRoutes(routeFiles);
192
+ const outputDir = join(rootDir, config.outputDir);
193
+ const clientDir = join(outputDir, "client");
194
+ nodeFs.mkdirSync(clientDir, { recursive: true });
195
+ // Generate client code from compiled routes
196
+ const clientCode = generateClientCode(compiledRoutes);
197
+ const clientPath = join(clientDir, "index.ts");
198
+ nodeFs.writeFileSync(clientPath, clientCode, "utf-8");
199
+ filesWritten.push(clientPath);
200
+ logger.success(`Generated ${clientPath}`);
201
+ if (verbose) {
202
+ logger.verbose(`Client code: ${clientCode.length} bytes`);
203
+ }
204
+ }
205
+ catch (err) {
206
+ const message = err instanceof Error ? err.message : String(err);
207
+ logger.error(`generate:client failed: ${message}`);
208
+ errors.push(message);
209
+ return {
210
+ success: false,
211
+ filesWritten,
212
+ duration: Date.now() - startTime,
213
+ errors,
214
+ };
215
+ }
216
+ const duration = Date.now() - startTime;
217
+ logger.success(`generate:client complete — ${filesWritten.length} files written (${duration}ms)`);
218
+ return { success: true, filesWritten, duration, errors };
219
+ }
220
+ /**
221
+ * Generate a type-safe fetch client TypeScript module from compiled routes.
222
+ */
223
+ function generateClientCode(compiledRoutes) {
224
+ const lines = [];
225
+ lines.push("// Auto-generated by @typokit/cli — do not edit manually");
226
+ lines.push("// Re-run `typokit generate:client` to regenerate");
227
+ lines.push("");
228
+ lines.push("export interface ClientOptions {");
229
+ lines.push(" baseUrl: string;");
230
+ lines.push(" headers?: Record<string, string>;");
231
+ lines.push(" fetch?: typeof fetch;");
232
+ lines.push("}");
233
+ lines.push("");
234
+ lines.push("export interface RequestOptions {");
235
+ lines.push(" params?: Record<string, string>;");
236
+ lines.push(" query?: Record<string, unknown>;");
237
+ lines.push(" body?: unknown;");
238
+ lines.push(" headers?: Record<string, string>;");
239
+ lines.push("}");
240
+ lines.push("");
241
+ lines.push("export function createClient(options: ClientOptions) {");
242
+ lines.push(" const { baseUrl, headers: defaultHeaders, fetch: fetchFn = globalThis.fetch } = options;");
243
+ lines.push("");
244
+ lines.push(" async function request(method: string, path: string, opts?: RequestOptions) {");
245
+ lines.push(" let url = baseUrl + path;");
246
+ lines.push(" if (opts?.params) {");
247
+ lines.push(" for (const [key, value] of Object.entries(opts.params)) {");
248
+ lines.push(" url = url.replace(`:${key}`, encodeURIComponent(value));");
249
+ lines.push(" }");
250
+ lines.push(" }");
251
+ lines.push(" if (opts?.query) {");
252
+ lines.push(" const qs = Object.entries(opts.query)");
253
+ lines.push(" .filter(([, v]) => v !== undefined)");
254
+ lines.push(" .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)");
255
+ lines.push(' .join("&");');
256
+ lines.push(' if (qs) url += "?" + qs;');
257
+ lines.push(" }");
258
+ lines.push(" const res = await fetchFn(url, {");
259
+ lines.push(" method,");
260
+ lines.push(" headers: {");
261
+ lines.push(' "Content-Type": "application/json",');
262
+ lines.push(" ...defaultHeaders,");
263
+ lines.push(" ...opts?.headers,");
264
+ lines.push(" },");
265
+ lines.push(" body: opts?.body ? JSON.stringify(opts.body) : undefined,");
266
+ lines.push(" });");
267
+ lines.push(" if (!res.ok) throw new Error(`HTTP ${res.status}: ${res.statusText}`);");
268
+ lines.push(" return res.json();");
269
+ lines.push(" }");
270
+ lines.push("");
271
+ lines.push(" return {");
272
+ lines.push(' get: (path: string, opts?: RequestOptions) => request("GET", path, opts),');
273
+ lines.push(' post: (path: string, opts?: RequestOptions) => request("POST", path, opts),');
274
+ lines.push(' put: (path: string, opts?: RequestOptions) => request("PUT", path, opts),');
275
+ lines.push(' patch: (path: string, opts?: RequestOptions) => request("PATCH", path, opts),');
276
+ lines.push(' delete: (path: string, opts?: RequestOptions) => request("DELETE", path, opts),');
277
+ lines.push(" };");
278
+ lines.push("}");
279
+ lines.push("");
280
+ lines.push("// Compiled route information (for reference):");
281
+ lines.push("// " + compiledRoutes.split("\n")[0]);
282
+ lines.push("");
283
+ return lines.join("\n");
284
+ }
285
+ /**
286
+ * Generate OpenAPI 3.1 specification.
287
+ * Supports --output <path> flag for custom output location.
288
+ */
289
+ async function generateOpenapi(options) {
290
+ const startTime = Date.now();
291
+ const { config, rootDir, logger, verbose, flags } = options;
292
+ const filesWritten = [];
293
+ const errors = [];
294
+ logger.step("generate:openapi", "Resolving source files...");
295
+ const routeFiles = await resolveFilePatterns(rootDir, config.routeFiles);
296
+ const typeFiles = await resolveFilePatterns(rootDir, config.typeFiles);
297
+ if (routeFiles.length === 0) {
298
+ logger.warn("No route files found matching configured patterns");
299
+ return {
300
+ success: true,
301
+ filesWritten,
302
+ duration: Date.now() - startTime,
303
+ errors,
304
+ };
305
+ }
306
+ if (verbose) {
307
+ logger.verbose(`Route files: ${routeFiles.length} found`);
308
+ logger.verbose(`Type files: ${typeFiles.length} found`);
309
+ }
310
+ try {
311
+ const { generateOpenApi } = (await import(
312
+ /* @vite-ignore */ "@typokit/transform-native"));
313
+ const { join, dirname } = (await import(/* @vite-ignore */ "path"));
314
+ const nodeFs = (await import(/* @vite-ignore */ "fs"));
315
+ logger.step("generate:openapi", "Generating OpenAPI 3.1 specification...");
316
+ const spec = await generateOpenApi(routeFiles, typeFiles);
317
+ // Determine output path: --output flag or default
318
+ const outputPath = typeof flags["output"] === "string"
319
+ ? flags["output"]
320
+ : join(rootDir, config.outputDir, "schemas", "openapi.json");
321
+ const dir = dirname(outputPath);
322
+ nodeFs.mkdirSync(dir, { recursive: true });
323
+ nodeFs.writeFileSync(outputPath, spec, "utf-8");
324
+ filesWritten.push(outputPath);
325
+ logger.success(`Generated ${outputPath}`);
326
+ if (verbose) {
327
+ logger.verbose(`OpenAPI spec: ${spec.length} bytes`);
328
+ }
329
+ }
330
+ catch (err) {
331
+ const message = err instanceof Error ? err.message : String(err);
332
+ logger.error(`generate:openapi failed: ${message}`);
333
+ errors.push(message);
334
+ return {
335
+ success: false,
336
+ filesWritten,
337
+ duration: Date.now() - startTime,
338
+ errors,
339
+ };
340
+ }
341
+ const duration = Date.now() - startTime;
342
+ logger.success(`generate:openapi complete — ${filesWritten.length} files written (${duration}ms)`);
343
+ return { success: true, filesWritten, duration, errors };
344
+ }
345
+ /**
346
+ * Regenerate contract tests from route schemas.
347
+ */
348
+ async function generateTests(options) {
349
+ const startTime = Date.now();
350
+ const { config, rootDir, logger, verbose } = options;
351
+ const filesWritten = [];
352
+ const errors = [];
353
+ logger.step("generate:tests", "Resolving route files...");
354
+ const routeFiles = await resolveFilePatterns(rootDir, config.routeFiles);
355
+ if (routeFiles.length === 0) {
356
+ logger.warn("No route files found matching configured patterns");
357
+ return {
358
+ success: true,
359
+ filesWritten,
360
+ duration: Date.now() - startTime,
361
+ errors,
362
+ };
363
+ }
364
+ if (verbose) {
365
+ logger.verbose(`Route files: ${routeFiles.length} found`);
366
+ for (const f of routeFiles)
367
+ logger.verbose(` ${f}`);
368
+ }
369
+ try {
370
+ const { generateTestStubs } = (await import(
371
+ /* @vite-ignore */ "@typokit/transform-native"));
372
+ const { join } = (await import(/* @vite-ignore */ "path"));
373
+ const nodeFs = (await import(/* @vite-ignore */ "fs"));
374
+ logger.step("generate:tests", "Generating contract test stubs...");
375
+ const testCode = await generateTestStubs(routeFiles);
376
+ const outputDir = join(rootDir, config.outputDir);
377
+ const testsDir = join(outputDir, "tests");
378
+ nodeFs.mkdirSync(testsDir, { recursive: true });
379
+ const testsPath = join(testsDir, "contract.test.ts");
380
+ nodeFs.writeFileSync(testsPath, testCode, "utf-8");
381
+ filesWritten.push(testsPath);
382
+ logger.success(`Generated ${testsPath}`);
383
+ if (verbose) {
384
+ logger.verbose(`Test stubs: ${testCode.length} bytes`);
385
+ }
386
+ }
387
+ catch (err) {
388
+ const message = err instanceof Error ? err.message : String(err);
389
+ logger.error(`generate:tests failed: ${message}`);
390
+ errors.push(message);
391
+ return {
392
+ success: false,
393
+ filesWritten,
394
+ duration: Date.now() - startTime,
395
+ errors,
396
+ };
397
+ }
398
+ const duration = Date.now() - startTime;
399
+ logger.success(`generate:tests complete — ${filesWritten.length} files written (${duration}ms)`);
400
+ return { success: true, filesWritten, duration, errors };
401
+ }
402
+ /**
403
+ * Execute a generate subcommand.
404
+ * Dispatches to the appropriate generator based on the subcommand.
405
+ */
406
+ export async function executeGenerate(options) {
407
+ const { subcommand, logger } = options;
408
+ switch (subcommand) {
409
+ case "db":
410
+ return generateDb(options);
411
+ case "client":
412
+ return generateClient(options);
413
+ case "openapi":
414
+ return generateOpenapi(options);
415
+ case "tests":
416
+ return generateTests(options);
417
+ default:
418
+ logger.error(`Unknown generate subcommand: ${subcommand}`);
419
+ logger.info("Available subcommands: db, client, openapi, tests");
420
+ return {
421
+ success: false,
422
+ filesWritten: [],
423
+ duration: 0,
424
+ errors: [`Unknown generate subcommand: ${subcommand}`],
425
+ };
426
+ }
427
+ }
428
+ // Export individual generators for direct usage
429
+ export { generateDb, generateClient, generateOpenapi, generateTests, generateClientCode, resolveFilePatterns as resolveGenerateFilePatterns, };
430
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { CliLogger } from "../logger.js";
2
+ import type { TypoKitConfig } from "../config.js";
3
+ export interface InspectOptions {
4
+ rootDir: string;
5
+ config: Required<TypoKitConfig>;
6
+ logger: CliLogger;
7
+ subcommand: string;
8
+ positional: string[];
9
+ flags: Record<string, string | boolean>;
10
+ }
11
+ export interface InspectResult {
12
+ success: boolean;
13
+ data: unknown;
14
+ error?: string;
15
+ }
16
+ export declare function inspectRoutes(rootDir: string, config: Required<TypoKitConfig>): Promise<InspectResult>;
17
+ export declare function inspectRoute(rootDir: string, config: Required<TypoKitConfig>, routeKey: string): Promise<InspectResult>;
18
+ export declare function inspectMiddleware(rootDir: string, config: Required<TypoKitConfig>): Promise<InspectResult>;
19
+ export declare function inspectDependencies(rootDir: string, _config: Required<TypoKitConfig>): Promise<InspectResult>;
20
+ export declare function inspectSchema(rootDir: string, config: Required<TypoKitConfig>, typeName: string): Promise<InspectResult>;
21
+ export declare function inspectErrors(debugPort: number, lastN: number): Promise<InspectResult>;
22
+ export declare function inspectPerformance(debugPort: number, routePath: string): Promise<InspectResult>;
23
+ export declare function inspectServer(debugPort: number): Promise<InspectResult>;
24
+ export declare function inspectBuildPipeline(rootDir: string, config: Required<TypoKitConfig>): Promise<InspectResult>;
25
+ export declare function executeInspect(options: InspectOptions): Promise<InspectResult>;
26
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyRD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC,CA0GxB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC,CAwCxB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC/B,OAAO,CAAC,aAAa,CAAC,CAwExB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAwBxB;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAYxB;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAgB7E;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC,CA8ExB;AAuCD,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAqHxB"}