@warlock.js/core 4.0.18 → 4.0.21

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 (52) hide show
  1. package/esm/cli/cli-commands.manager.d.ts.map +1 -1
  2. package/esm/cli/cli-commands.manager.js +5 -4
  3. package/esm/cli/cli-commands.manager.js.map +1 -1
  4. package/esm/config/config-loader.d.ts.map +1 -1
  5. package/esm/config/config-loader.js +3 -2
  6. package/esm/config/config-loader.js.map +1 -1
  7. package/esm/dev2-server/development-server.d.ts.map +1 -1
  8. package/esm/dev2-server/development-server.js +1 -4
  9. package/esm/dev2-server/development-server.js.map +1 -1
  10. package/esm/dev2-server/file-event-handler.d.ts +115 -18
  11. package/esm/dev2-server/file-event-handler.d.ts.map +1 -1
  12. package/esm/dev2-server/file-event-handler.js +177 -63
  13. package/esm/dev2-server/file-event-handler.js.map +1 -1
  14. package/esm/dev2-server/file-manager.d.ts +301 -52
  15. package/esm/dev2-server/file-manager.d.ts.map +1 -1
  16. package/esm/dev2-server/file-manager.js +409 -203
  17. package/esm/dev2-server/file-manager.js.map +1 -1
  18. package/esm/dev2-server/file-operations.d.ts +161 -23
  19. package/esm/dev2-server/file-operations.d.ts.map +1 -1
  20. package/esm/dev2-server/file-operations.js +217 -80
  21. package/esm/dev2-server/file-operations.js.map +1 -1
  22. package/esm/dev2-server/files-orchestrator.d.ts +35 -11
  23. package/esm/dev2-server/files-orchestrator.d.ts.map +1 -1
  24. package/esm/dev2-server/files-orchestrator.js +51 -63
  25. package/esm/dev2-server/files-orchestrator.js.map +1 -1
  26. package/esm/dev2-server/import-transformer.d.ts +6 -5
  27. package/esm/dev2-server/import-transformer.d.ts.map +1 -1
  28. package/esm/dev2-server/import-transformer.js +27 -39
  29. package/esm/dev2-server/import-transformer.js.map +1 -1
  30. package/esm/dev2-server/layer-executor.js +1 -1
  31. package/esm/dev2-server/parse-imports.d.ts.map +1 -1
  32. package/esm/dev2-server/parse-imports.js +1 -0
  33. package/esm/dev2-server/parse-imports.js.map +1 -1
  34. package/esm/dev2-server/tsconfig-manager.d.ts +1 -1
  35. package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -1
  36. package/esm/dev2-server/tsconfig-manager.js +8 -3
  37. package/esm/dev2-server/tsconfig-manager.js.map +1 -1
  38. package/esm/dev2-server/type-generator.d.ts +10 -6
  39. package/esm/dev2-server/type-generator.d.ts.map +1 -1
  40. package/esm/dev2-server/type-generator.js +84 -75
  41. package/esm/dev2-server/type-generator.js.map +1 -1
  42. package/esm/dev2-server/types.d.ts +15 -1
  43. package/esm/dev2-server/types.d.ts.map +1 -1
  44. package/esm/http/errors/resource-not-found.error.d.ts +4 -0
  45. package/esm/http/errors/resource-not-found.error.d.ts.map +1 -1
  46. package/esm/http/errors/resource-not-found.error.js +9 -1
  47. package/esm/http/errors/resource-not-found.error.js.map +1 -1
  48. package/esm/http/middleware/inject-request-context.d.ts.map +1 -1
  49. package/esm/http/middleware/inject-request-context.js +8 -2
  50. package/esm/http/middleware/inject-request-context.js.map +1 -1
  51. package/esm/index.js +1 -1
  52. package/package.json +1 -1
@@ -1,135 +1,384 @@
1
1
  import { type FileOperations } from "./file-operations";
2
2
  import type { FileManifest, FileState, FileType, LayerType } from "./types";
3
+ /**
4
+ * Options for the process() method
5
+ */
6
+ export interface ProcessOptions {
7
+ /**
8
+ * Force reprocessing even if file hasn't changed
9
+ * @default false
10
+ */
11
+ force?: boolean;
12
+ /**
13
+ * Whether to transform imports to cache paths
14
+ * Set to false during batch operations where imports are transformed later
15
+ * @default true
16
+ */
17
+ transformImports?: boolean;
18
+ /**
19
+ * Whether to save to cache after processing
20
+ * Set to false if you need to do additional transformations before saving
21
+ * @default true
22
+ */
23
+ saveToCache?: boolean;
24
+ }
25
+ /**
26
+ * FileManager - Manages the lifecycle of a single source file
27
+ *
28
+ * ## Lifecycle States
29
+ *
30
+ * ```
31
+ * idle → loading → parsed → transpiled → ready
32
+ * ↑ │
33
+ * └──────────── (file changed) ──────────┘
34
+ * ```
35
+ *
36
+ * ## Processing Pipeline
37
+ *
38
+ * All file processing flows through a unified pipeline:
39
+ * 1. **Load** - Read source from disk
40
+ * 2. **Hash** - Calculate content hash for change detection
41
+ * 3. **Parse** - Discover imports and dependencies
42
+ * 4. **Transpile** - Convert TypeScript to JavaScript
43
+ * 5. **Transform** - Rewrite import paths to cache locations
44
+ * 6. **Save** - Write transformed code to cache (ONCE)
45
+ *
46
+ * ## Usage Examples
47
+ *
48
+ * ```typescript
49
+ * // Standard processing (full pipeline)
50
+ * const file = new FileManager(absolutePath, filesMap, fileOps);
51
+ * await file.process();
52
+ *
53
+ * // Batch processing (parse first, complete later)
54
+ * await file.parse();
55
+ * // ... after dependencies are ready ...
56
+ * await file.complete();
57
+ *
58
+ * // Check for changes and reprocess if needed
59
+ * const changed = await file.process(); // returns false if unchanged
60
+ *
61
+ * // Force reprocessing
62
+ * await file.process({ force: true });
63
+ * ```
64
+ *
65
+ * @class FileManager
66
+ */
3
67
  export declare class FileManager {
4
68
  readonly absolutePath: string;
5
69
  files: Map<string, FileManager>;
6
70
  fileOperations: FileOperations;
7
71
  /**
8
- * Relative path to root directory
72
+ * Relative path from the project root directory
73
+ * Used as the primary identifier for files throughout the system
74
+ * @example "src/app/users/controllers/get-user.controller.ts"
9
75
  */
10
76
  relativePath: string;
11
77
  /**
12
- * Last modified timestamp
78
+ * Unix timestamp of the last modification time
79
+ * Used with hash for change detection
13
80
  */
14
81
  lastModified: number;
15
82
  /**
16
- * Hash of the file content
83
+ * SHA-256 hash of the source content
84
+ * Primary mechanism for detecting file changes
17
85
  */
18
86
  hash: string;
19
87
  /**
20
- * Source code of the file
88
+ * Original TypeScript/JavaScript source code
89
+ * Loaded from disk during processing
21
90
  */
22
91
  source: string;
23
92
  /**
24
- * Transpiled code of the file
93
+ * Transpiled JavaScript code with transformed imports
94
+ * This is the final output that gets saved to cache and loaded at runtime
25
95
  */
26
96
  transpiled: string;
27
97
  /**
28
- * Dependencies of the file (relative paths)
98
+ * Set of relative paths that this file depends on (imports)
99
+ * Used to build the dependency graph for HMR invalidation
100
+ * @example Set(["src/app/users/models/user.model.ts", "src/config/database.ts"])
29
101
  */
30
102
  dependencies: Set<string>;
31
103
  /**
32
- * Import map: original import path -> resolved absolute path
33
- * Used for import transformation
104
+ * Map of original import specifiers to resolved absolute paths
105
+ * Key: the exact import string from source (e.g., "./user.model")
106
+ * Value: resolved absolute path (e.g., "D:/project/src/app/users/models/user.model.ts")
107
+ *
108
+ * Used during import transformation to rewrite paths to cache locations
34
109
  */
35
110
  importMap: Map<string, string>;
36
111
  /**
37
- * Dependents of the file
112
+ * Set of relative paths that depend on this file
113
+ * Populated from the dependency graph after initial processing
114
+ * Used to determine what needs reloading when this file changes
38
115
  */
39
116
  dependents: Set<string>;
40
117
  /**
41
- * Version of the file
118
+ * Version number incremented on each change
119
+ * Used for cache busting in dynamic imports
42
120
  */
43
121
  version: number;
44
122
  /**
45
- * Type of the file
123
+ * Semantic type of the file based on its path/content
124
+ * Used to determine reload behavior and special handling
46
125
  */
47
126
  type: FileType | undefined;
48
127
  /**
49
- * Layer of the file
128
+ * Reload layer: HMR (hot module replacement) or FSR (full server restart)
129
+ * Determines how changes to this file are applied at runtime
50
130
  */
51
131
  layer: LayerType | undefined;
52
132
  /**
53
- * Cache path of the file
133
+ * Path to the cached transpiled file (relative to .warlock/cache/)
134
+ * @example "src-app-users-controllers-get-user.controller.js"
54
135
  */
55
136
  cachePath: string;
56
137
  /**
57
- * File cleanup function
138
+ * Cleanup function called before the file is unloaded
139
+ * Set by module loader for files that export cleanup handlers
58
140
  */
59
141
  cleanup?: () => void;
60
142
  /**
61
143
  * Whether imports have been transformed to cache paths
144
+ * Prevents double transformation and tracks processing state
62
145
  */
63
146
  importsTransformed: boolean;
64
147
  /**
65
148
  * Whether this file contains only type definitions (no runtime code)
66
- * Used to exclude from circular dependency detection
149
+ * Type-only files are excluded from circular dependency detection
67
150
  */
68
151
  isTypeOnlyFile: boolean;
69
152
  /**
70
- * File state
153
+ * Current processing state of the file
154
+ *
155
+ * - `idle`: Initial state, no processing started
156
+ * - `loading`: Reading source from disk
157
+ * - `parsed`: Source loaded and imports discovered
158
+ * - `transpiled`: TypeScript compiled to JavaScript
159
+ * - `ready`: Fully processed and available for use
160
+ * - `updating`: Being reprocessed after a change
161
+ * - `deleted`: File has been removed from disk
71
162
  */
72
163
  state: FileState;
73
164
  /**
74
- * Constructor
165
+ * Creates a new FileManager instance
166
+ *
167
+ * @param absolutePath - Full filesystem path to the source file
168
+ * @param files - Map of all tracked files (for import resolution)
169
+ * @param fileOperations - FileOperations instance (for adding missing dependencies)
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * const fileManager = new FileManager(
174
+ * "D:/project/src/app/users/controllers/get-user.controller.ts",
175
+ * filesMap,
176
+ * fileOperations
177
+ * );
178
+ * ```
75
179
  */
76
180
  constructor(absolutePath: string, files: Map<string, FileManager>, fileOperations: FileOperations);
77
181
  /**
78
- * Initialize the file manager
79
- * @param fileManifest Optional manifest data from previous build
80
- * @param filesMap Optional map of all FileManager instances (for import transformation)
182
+ * Initialize the file manager from disk or manifest cache
183
+ *
184
+ * This is the primary entry point for file initialization.
185
+ * If manifest data is provided, it will attempt to use cached data
186
+ * and only reprocess if the file has changed.
187
+ *
188
+ * @param fileManifest - Optional cached manifest data from previous build
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * // Fresh initialization (no cache)
193
+ * await fileManager.init();
194
+ *
195
+ * // Initialize with cached manifest data
196
+ * await fileManager.init(manifestEntry);
197
+ * ```
81
198
  */
82
199
  init(fileManifest?: Partial<FileManifest>): Promise<void>;
83
200
  /**
84
- * Get cached file path ready for dynamic import
201
+ * Get the cache path as a file:// URL for dynamic import
202
+ * Includes cache busting query parameter based on version
203
+ *
204
+ * @returns File URL ready for dynamic import, or empty string if no cache
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * const module = await import(fileManager.cachePathUrl);
209
+ * ```
85
210
  */
86
211
  get cachePathUrl(): string;
87
212
  /**
88
- * Load file with manifest data (check if changed)
89
- */
90
- protected loadFromManifest(fileManifest: Partial<FileManifest>): Promise<void>;
91
- /**
92
- * Load file from disk (fresh, no manifest)
213
+ * Process the file through the unified pipeline
214
+ *
215
+ * This is the core method that handles all file processing.
216
+ * It implements a single-pass pipeline that:
217
+ * 1. Loads source from disk
218
+ * 2. Checks if content changed (skip if unchanged)
219
+ * 3. Parses imports to discover dependencies
220
+ * 4. Ensures all dependencies exist
221
+ * 5. Transpiles TypeScript to JavaScript
222
+ * 6. Transforms imports to cache paths
223
+ * 7. Saves to cache (ONCE - no duplicate writes)
224
+ *
225
+ * @param options - Processing options
226
+ * @param options.force - Force reprocessing even if unchanged
227
+ * @param options.transformImports - Whether to transform import paths (default: true)
228
+ * @param options.saveToCache - Whether to save to cache file (default: true)
229
+ *
230
+ * @returns True if file was processed, false if unchanged and skipped
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * // Normal processing
235
+ * const changed = await fileManager.process();
236
+ *
237
+ * // Force reprocess
238
+ * await fileManager.process({ force: true });
239
+ *
240
+ * // Batch mode: transform imports later
241
+ * await fileManager.process({ transformImports: false });
242
+ * ```
93
243
  */
94
- protected loadFromDisk(): Promise<void>;
244
+ process(options?: ProcessOptions): Promise<boolean>;
95
245
  /**
96
- * Process file: parse imports first, then transpile
246
+ * Parse the file to discover dependencies (Phase 1 of batch processing)
247
+ *
248
+ * This method only performs the first half of processing:
249
+ * - Loads source from disk
250
+ * - Calculates hash
251
+ * - Parses imports to discover dependencies
252
+ * - Sets up file metadata
253
+ *
254
+ * Use this for batch file operations where you need to know
255
+ * dependencies before deciding processing order.
256
+ *
257
+ * **Important**: After calling parse(), you must call complete()
258
+ * to finish processing and make the file usable.
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * // Batch processing pattern
263
+ * const files = await Promise.all(
264
+ * paths.map(async (path) => {
265
+ * const file = new FileManager(path, filesMap, fileOps);
266
+ * await file.parse();
267
+ * return file;
268
+ * })
269
+ * );
270
+ *
271
+ * // Order by dependencies, then complete
272
+ * for (const file of orderedFiles) {
273
+ * await file.complete();
274
+ * }
275
+ * ```
97
276
  */
98
- protected processFile(): Promise<void>;
277
+ parse(): Promise<void>;
99
278
  /**
100
- * Phase 1: Parse the file to discover dependencies
101
- * Does NOT write cache yet - used for batch file processing
102
- * to determine processing order
279
+ * Complete file processing after parse() (Phase 2 of batch processing)
280
+ *
281
+ * This method completes the processing pipeline:
282
+ * - Ensures dependencies exist
283
+ * - Transpiles TypeScript to JavaScript
284
+ * - Transforms imports to cache paths
285
+ * - Saves to cache
286
+ *
287
+ * **Important**: This must be called after parse() to finish processing.
288
+ * The file is not usable until complete() has been called.
289
+ *
290
+ * @example
291
+ * ```typescript
292
+ * await file.parse();
293
+ * // ... after dependencies are ready ...
294
+ * await file.complete();
295
+ * // File is now ready for use
296
+ * ```
103
297
  */
104
- parseOnly(): Promise<void>;
298
+ complete(): Promise<void>;
105
299
  /**
106
- * Phase 2: Complete processing (transpile, transform, write cache)
107
- * Called after dependencies are ready
108
- */
109
- finalize(): Promise<void>;
110
- /**
111
- * Detect file type and layer based on path
112
- */
113
- protected detectFileTypeAndLayer(): void;
114
- /**
115
- * Update file when changed during development
300
+ * Update the file after a change during development
301
+ *
302
+ * This is a convenience method that delegates to process().
303
+ * It checks if the file has actually changed and only reprocesses if needed.
304
+ *
305
+ * @returns True if file was reprocessed, false if unchanged
306
+ *
307
+ * @example
308
+ * ```typescript
309
+ * // Called by file watcher
310
+ * const changed = await fileManager.update();
311
+ * if (changed) {
312
+ * console.log("File was updated");
313
+ * }
314
+ * ```
116
315
  */
117
316
  update(): Promise<boolean>;
118
317
  /**
119
- * Force reprocess file even if source hasn't changed
120
- * Useful when dependencies become available (e.g., missing file is added back)
318
+ * Force reprocess the file regardless of hash match
319
+ *
320
+ * Use this when:
321
+ * - A dependency that was previously missing is now available
322
+ * - Import transformation needs to be redone
323
+ * - Cache is corrupted or missing
324
+ *
325
+ * @example
326
+ * ```typescript
327
+ * // After a missing dependency is added
328
+ * await fileManager.forceReprocess();
329
+ * ```
121
330
  */
122
331
  forceReprocess(): Promise<void>;
123
332
  /**
124
- * Transform imports in transpiled code to use cache paths
333
+ * Initialize from cached manifest data
334
+ *
335
+ * Attempts to use cached data from a previous build.
336
+ * If the file has changed (hash mismatch) or cache is missing,
337
+ * falls back to full processing.
338
+ *
339
+ * @param fileManifest - Cached manifest entry
340
+ * @internal
341
+ */
342
+ protected initFromManifest(fileManifest: Partial<FileManifest>): Promise<void>;
343
+ /**
344
+ * Detect the file type and reload layer based on path patterns
345
+ *
346
+ * File types determine special handling:
347
+ * - `main`: Application entry point
348
+ * - `config`: Configuration files
349
+ * - `route`: Route definitions
350
+ * - `controller`: HTTP controllers
351
+ * - `service`: Business logic services
352
+ * - `model`: Database models
353
+ * - `event`: Event handlers
354
+ * - `other`: Everything else
355
+ *
356
+ * Layers determine reload behavior:
357
+ * - `HMR`: Hot module replacement (instant reload)
358
+ * - `FSR`: Full server restart (required for some changes)
359
+ *
360
+ * @internal
125
361
  */
126
- transformImports(): Promise<void>;
362
+ protected detectFileTypeAndLayer(): void;
127
363
  /**
128
- * Export file data as manifest entry
129
- * Note: source and transpiled code are NOT stored in manifest
130
- * - Source code is in the original file
131
- * - Transpiled code is in .warlock/cache/
132
- * - Hash is used to detect changes
364
+ * Export file data as a manifest entry for caching
365
+ *
366
+ * The manifest stores metadata about each file to enable:
367
+ * - Fast startup by skipping unchanged files
368
+ * - Dependency tracking across restarts
369
+ * - Cache validation via hash comparison
370
+ *
371
+ * Note: Source code and transpiled output are NOT stored in manifest.
372
+ * - Source is always read from disk
373
+ * - Transpiled code is stored in .warlock/cache/
374
+ *
375
+ * @returns Manifest entry for this file
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * const entry = fileManager.toManifest();
380
+ * manifest.setFile(fileManager.relativePath, entry);
381
+ * ```
133
382
  */
134
383
  toManifest(): FileManifest;
135
384
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../src/dev2-server/file-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG5E,qBAAa,WAAW;aA2EJ,YAAY,EAAE,MAAM;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,cAAc,EAAE,cAAc;IA5EvC;;OAEG;IACI,YAAY,SAAM;IACzB;;OAEG;IACI,YAAY,SAAK;IACxB;;OAEG;IACI,IAAI,SAAM;IACjB;;OAEG;IACI,MAAM,SAAM;IACnB;;OAEG;IACI,UAAU,SAAM;IACvB;;OAEG;IACI,YAAY,cAAqB;IACxC;;;OAGG;IACI,SAAS,sBAA6B;IAC7C;;OAEG;IACI,UAAU,cAAqB;IACtC;;OAEG;IACI,OAAO,SAAK;IACnB;;OAEG;IACI,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC;;OAEG;IACI,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC;;OAEG;IACI,SAAS,SAAM;IACtB;;OAEG;IACI,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B;;OAEG;IACI,kBAAkB,UAAS;IAElC;;;OAGG;IACI,cAAc,UAAS;IAE9B;;OAEG;IACI,KAAK,EAAE,SAAS,CAAU;IAEjC;;OAEG;gBAEe,YAAY,EAAE,MAAM,EAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAC/B,cAAc,EAAE,cAAc;IAGvC;;;;OAIG;IACU,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAiBtD;;OAEG;IACH,IAAW,YAAY,WAItB;IAED;;OAEG;cACa,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;IAsDpE;;OAEG;cACa,YAAY;IAkB5B;;OAEG;cACa,WAAW;IAgC3B;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBvC;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCtC;;OAEG;IACH,SAAS,CAAC,sBAAsB;IAuDhC;;OAEG;IACU,MAAM;IA8BnB;;;OAGG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5C;;OAEG;IACU,gBAAgB;IAsB7B;;;;;;OAMG;IACI,UAAU,IAAI,YAAY;CAclC"}
1
+ {"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../src/dev2-server/file-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,WAAW;aA+HJ,YAAY,EAAE,MAAM;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,cAAc,EAAE,cAAc;IAhIvC;;;;OAIG;IACI,YAAY,SAAM;IAEzB;;;OAGG;IACI,YAAY,SAAK;IAExB;;;OAGG;IACI,IAAI,SAAM;IAEjB;;;OAGG;IACI,MAAM,SAAM;IAEnB;;;OAGG;IACI,UAAU,SAAM;IAEvB;;;;OAIG;IACI,YAAY,cAAqB;IAExC;;;;;;OAMG;IACI,SAAS,sBAA6B;IAE7C;;;;OAIG;IACI,UAAU,cAAqB;IAEtC;;;OAGG;IACI,OAAO,SAAK;IAEnB;;;OAGG;IACI,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAElC;;;OAGG;IACI,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACI,SAAS,SAAM;IAEtB;;;OAGG;IACI,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B;;;OAGG;IACI,kBAAkB,UAAS;IAElC;;;OAGG;IACI,cAAc,UAAS;IAE9B;;;;;;;;;;OAUG;IACI,KAAK,EAAE,SAAS,CAAU;IAEjC;;;;;;;;;;;;;;;OAeG;gBAEe,YAAY,EAAE,MAAM,EAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAC/B,cAAc,EAAE,cAAc;IAGvC;;;;;;;;;;;;;;;;;OAiBG;IACU,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IActE;;;;;;;;;;OAUG;IACH,IAAW,YAAY,IAAI,MAAM,CAGhC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0EpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBnC;;;;;;;;;;;;;;;;;;;OAmBG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BtC;;;;;;;;;;;;;;;;OAgBG;IACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;;;;;;;;;;;;OAaG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;;;;;;OASG;cACa,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CpF;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAuDxC;;;;;;;;;;;;;;;;;;;OAmBG;IACI,UAAU,IAAI,YAAY;CAclC"}