hazo_connect 2.7.3 → 3.1.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 (76) hide show
  1. package/README.md +25 -3
  2. package/dist/adapters/base-adapter.d.ts +2 -51
  3. package/dist/adapters/base-adapter.d.ts.map +1 -1
  4. package/dist/adapters/base-adapter.js +23 -77
  5. package/dist/adapters/base-adapter.js.map +1 -1
  6. package/dist/adapters/better-sqlite3-adapter.d.ts +61 -0
  7. package/dist/adapters/better-sqlite3-adapter.d.ts.map +1 -0
  8. package/dist/adapters/better-sqlite3-adapter.js +364 -0
  9. package/dist/adapters/better-sqlite3-adapter.js.map +1 -0
  10. package/dist/adapters/clause-builder.d.ts.map +1 -1
  11. package/dist/adapters/clause-builder.js +14 -13
  12. package/dist/adapters/clause-builder.js.map +1 -1
  13. package/dist/adapters/postgrest-adapter.d.ts.map +1 -1
  14. package/dist/adapters/postgrest-adapter.js +6 -5
  15. package/dist/adapters/postgrest-adapter.js.map +1 -1
  16. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  17. package/dist/adapters/sqlite-adapter.js +3 -24
  18. package/dist/adapters/sqlite-adapter.js.map +1 -1
  19. package/dist/adapters/supabase-adapter.d.ts.map +1 -1
  20. package/dist/adapters/supabase-adapter.js +3 -2
  21. package/dist/adapters/supabase-adapter.js.map +1 -1
  22. package/dist/connect-config.d.ts +83 -0
  23. package/dist/connect-config.d.ts.map +1 -0
  24. package/dist/connect-config.js +55 -0
  25. package/dist/connect-config.js.map +1 -0
  26. package/dist/default-logger.js +3 -3
  27. package/dist/factory.d.ts.map +1 -1
  28. package/dist/factory.js +32 -12
  29. package/dist/factory.js.map +1 -1
  30. package/dist/helpers.d.ts.map +1 -1
  31. package/dist/helpers.js +5 -4
  32. package/dist/helpers.js.map +1 -1
  33. package/dist/index.js +7 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/log-level-wrapper.d.ts.map +1 -1
  36. package/dist/log-level-wrapper.js +0 -2
  37. package/dist/log-level-wrapper.js.map +1 -1
  38. package/dist/migrations/runner.d.ts.map +1 -1
  39. package/dist/migrations/runner.js +8 -4
  40. package/dist/migrations/runner.js.map +1 -1
  41. package/dist/nextjs/api-route-helpers.d.ts.map +1 -1
  42. package/dist/nextjs/api-route-helpers.js +3 -4
  43. package/dist/nextjs/api-route-helpers.js.map +1 -1
  44. package/dist/nextjs/route-setup.d.ts.map +1 -1
  45. package/dist/nextjs/route-setup.js +3 -5
  46. package/dist/nextjs/route-setup.js.map +1 -1
  47. package/dist/nextjs/server-only.d.ts.map +1 -1
  48. package/dist/nextjs/server-only.js +2 -5
  49. package/dist/nextjs/server-only.js.map +1 -1
  50. package/dist/nextjs/setup-helpers.d.ts +4 -0
  51. package/dist/nextjs/setup-helpers.d.ts.map +1 -1
  52. package/dist/nextjs/setup-helpers.js +9 -7
  53. package/dist/nextjs/setup-helpers.js.map +1 -1
  54. package/dist/query-builder.d.ts.map +1 -1
  55. package/dist/query-builder.js +4 -3
  56. package/dist/query-builder.js.map +1 -1
  57. package/dist/server/index.d.ts.map +1 -1
  58. package/dist/server/index.js +6 -6
  59. package/dist/server/index.js.map +1 -1
  60. package/dist/sqlite/admin-service.d.ts.map +1 -1
  61. package/dist/sqlite/admin-service.js +27 -15
  62. package/dist/sqlite/admin-service.js.map +1 -1
  63. package/dist/sqlite/placeholder-rewrite.d.ts +18 -0
  64. package/dist/sqlite/placeholder-rewrite.d.ts.map +1 -0
  65. package/dist/sqlite/placeholder-rewrite.js +38 -0
  66. package/dist/sqlite/placeholder-rewrite.js.map +1 -0
  67. package/dist/types.d.ts +10 -0
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/types.js.map +1 -1
  70. package/dist/utils/sqlite-utils.d.ts.map +1 -1
  71. package/dist/utils/sqlite-utils.js +4 -3
  72. package/dist/utils/sqlite-utils.js.map +1 -1
  73. package/dist/utils/where-builder.d.ts.map +1 -1
  74. package/dist/utils/where-builder.js +3 -2
  75. package/dist/utils/where-builder.js.map +1 -1
  76. package/package.json +23 -7
package/README.md CHANGED
@@ -50,7 +50,7 @@ npm install hazo_connect
50
50
  ### Required Peer Dependencies
51
51
 
52
52
  ```bash
53
- npm install hazo_logs@>=1.0.5
53
+ npm install hazo_core hazo_logs
54
54
  ```
55
55
 
56
56
  ### Optional Peer Dependencies
@@ -58,13 +58,13 @@ npm install hazo_logs@>=1.0.5
58
58
  For INI config file support:
59
59
 
60
60
  ```bash
61
- npm install hazo_config@>=1.3.0
61
+ npm install hazo_config
62
62
  ```
63
63
 
64
64
  For the SQLite admin UI:
65
65
 
66
66
  ```bash
67
- npm install next@>=14.0.0 react@>=18.0.0 react-dom@>=18.0.0 lucide-react@^0.553.0 sonner@^2.0.7
67
+ npm install hazo_ui hazo_debug next react react-dom lucide-react sonner
68
68
  ```
69
69
 
70
70
  ---
@@ -440,6 +440,28 @@ const hazo = createHazoConnect({
440
440
  })
441
441
  ```
442
442
 
443
+ #### SQLite drivers
444
+
445
+ The `sqlite` type supports two drivers:
446
+
447
+ - `sql.js` (default) — pure-WASM, no native build; ideal for local dev, tests, and edge runtimes.
448
+ - `better-sqlite3` — native engine for production-grade, file-backed SQLite with WAL
449
+ concurrency. Requires the optional `better-sqlite3` package (`npm install better-sqlite3`).
450
+
451
+ ```ts
452
+ createHazoConnect({
453
+ type: 'sqlite',
454
+ sqlite: {
455
+ driver: 'better-sqlite3', // default: 'sql.js'
456
+ database_path: './data/app.sqlite',
457
+ pragmas: { busy_timeout: 8000 },// optional overrides; WAL + foreign_keys on by default
458
+ },
459
+ })
460
+ ```
461
+
462
+ Or via env: `HAZO_CONNECT_SQLITE_DRIVER=better-sqlite3`.
463
+ The SQLite admin UI is currently supported only with the `sql.js` driver.
464
+
443
465
  ### PostgREST Configuration
444
466
 
445
467
  ```typescript
@@ -3,67 +3,18 @@
3
3
  *
4
4
  * This file provides a base class for all database adapters.
5
5
  * Includes common error handling and optional logger support.
6
- * Zero dependencies - only Node.js built-ins and types.
7
6
  */
8
- import type { Logger, HazoConnectError } from '../types.js';
7
+ import type { Logger } from '../types.js';
9
8
  import { ErrorCode } from '../types.js';
10
- /**
11
- * Abstract base adapter class
12
- * All adapters should extend this class
13
- */
14
9
  export declare abstract class BaseAdapter {
15
10
  protected logger: Logger;
16
11
  protected config: any;
17
- /**
18
- * Constructor
19
- * @param config - Adapter-specific configuration
20
- * @param logger - Optional logger instance
21
- */
22
12
  constructor(config: any, logger?: Logger);
23
- /**
24
- * Create a standardized error object
25
- * @param code - Error code
26
- * @param message - Error message
27
- * @param statusCode - Optional HTTP status code
28
- * @param originalError - Optional original error
29
- * @returns HazoConnectError object
30
- */
31
- protected createError(code: ErrorCode, message: string, statusCode?: number, originalError?: any): HazoConnectError;
32
- /**
33
- * Throw a standardized error
34
- * @param code - Error code
35
- * @param message - Error message
36
- * @param statusCode - Optional HTTP status code
37
- * @param originalError - Optional original error
38
- */
39
- protected throwError(code: ErrorCode, message: string, statusCode?: number, originalError?: any): never;
40
- /**
41
- * Detect if an error is a connection failure
42
- * @param error - Error to check
43
- * @returns True if connection failure
44
- */
13
+ protected throwError(code: ErrorCode, message: string, _statusCode?: number, cause?: any): never;
45
14
  protected isConnectionError(error: any): boolean;
46
- /**
47
- * Handle connection errors
48
- * @param error - Error to handle
49
- */
50
15
  protected handleConnectionError(error: any): never;
51
- /**
52
- * Validate configuration
53
- * @param requiredFields - Array of required field names
54
- * @throws Error if validation fails
55
- */
56
16
  protected validateConfig(requiredFields: string[]): void;
57
- /**
58
- * Log a query operation
59
- * @param operation - Operation name
60
- * @param details - Operation details
61
- */
62
17
  protected logQuery(operation: string, details: any): void;
63
- /**
64
- * Get the adapter's configuration
65
- * @returns Promise with adapter-specific config
66
- */
67
18
  abstract getConfig(): Promise<any>;
68
19
  }
69
20
  //# sourceMappingURL=base-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAY,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC;;;GAGG;AACH,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,MAAM,EAAE,GAAG,CAAA;IAErB;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAaxC;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,GAClB,gBAAgB;IAsBnB;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,GAClB,KAAK;IAaR;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAahD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK;IAYlD;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IAWxD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAQzD;;;OAGG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CACnC"}
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,MAAM,EAAE,GAAG,CAAA;gBAET,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAYxC,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,GAAG,GACV,KAAK;IAyBR,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAYhD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK;IAOlD,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IAQxD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAKzD,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CACnC"}
@@ -4,25 +4,15 @@
4
4
  *
5
5
  * This file provides a base class for all database adapters.
6
6
  * Includes common error handling and optional logger support.
7
- * Zero dependencies - only Node.js built-ins and types.
8
7
  */
9
8
  Object.defineProperty(exports, "__esModule", { value: true });
10
9
  exports.BaseAdapter = void 0;
10
+ const hazo_core_1 = require("hazo_core");
11
11
  const types_js_1 = require("../types.js");
12
12
  const default_logger_js_1 = require("../default-logger.js");
13
- /**
14
- * Abstract base adapter class
15
- * All adapters should extend this class
16
- */
17
13
  class BaseAdapter {
18
- /**
19
- * Constructor
20
- * @param config - Adapter-specific configuration
21
- * @param logger - Optional logger instance
22
- */
23
14
  constructor(config, logger) {
24
15
  this.config = config;
25
- // Use provided logger, or create one with log level from config
26
16
  if (logger) {
27
17
  this.logger = logger;
28
18
  }
@@ -33,56 +23,29 @@ class BaseAdapter {
33
23
  this.logger = default_logger_js_1.defaultLogger;
34
24
  }
35
25
  }
36
- /**
37
- * Create a standardized error object
38
- * @param code - Error code
39
- * @param message - Error message
40
- * @param statusCode - Optional HTTP status code
41
- * @param originalError - Optional original error
42
- * @returns HazoConnectError object
43
- */
44
- createError(code, message, statusCode, originalError) {
45
- // Convert enum to string to ensure it's serializable
46
- const codeString = String(code);
47
- const error = {
48
- code: codeString,
26
+ throwError(code, message, _statusCode, cause) {
27
+ const opts = {
28
+ code: String(code),
29
+ pkg: 'hazo_connect',
49
30
  message,
50
- statusCode,
51
- originalError
31
+ cause: cause instanceof Error ? cause : undefined,
32
+ context: cause && !(cause instanceof Error) ? { originalError: String(cause) } : undefined,
52
33
  };
53
- // Log the error
54
- this.logger.error(`[${codeString}] ${message}`, {
55
- code: codeString,
56
- message,
57
- statusCode,
58
- originalError: originalError instanceof Error ? originalError.message : String(originalError)
59
- });
60
- return error;
61
- }
62
- /**
63
- * Throw a standardized error
64
- * @param code - Error code
65
- * @param message - Error message
66
- * @param statusCode - Optional HTTP status code
67
- * @param originalError - Optional original error
68
- */
69
- throwError(code, message, statusCode, originalError) {
70
- const error = this.createError(code, message, statusCode, originalError);
71
- const err = new Error(message);
72
- // Convert enum to string to ensure it's serializable
73
- err.code = String(code);
74
- err.statusCode = statusCode;
75
- // Only include serializable error info
76
- err.originalError = originalError instanceof Error
77
- ? originalError.message
78
- : (typeof originalError === 'object' ? JSON.stringify(originalError) : String(originalError));
79
- throw err;
34
+ switch (code) {
35
+ case types_js_1.ErrorCode.CONFIG_ERROR:
36
+ throw new hazo_core_1.HazoConfigError(opts);
37
+ case types_js_1.ErrorCode.CONNECTION_FAILED:
38
+ throw new hazo_core_1.HazoUnavailableError({ code: opts.code, pkg: opts.pkg, message: opts.message, cause: opts.cause, context: opts.context });
39
+ case types_js_1.ErrorCode.QUERY_ERROR:
40
+ throw new hazo_core_1.HazoInternalError(opts);
41
+ case types_js_1.ErrorCode.NOT_IMPLEMENTED:
42
+ throw new hazo_core_1.HazoInternalError(opts);
43
+ case types_js_1.ErrorCode.VALIDATION_ERROR:
44
+ throw new hazo_core_1.HazoValidationError(opts);
45
+ default:
46
+ throw new hazo_core_1.HazoInternalError(opts);
47
+ }
80
48
  }
81
- /**
82
- * Detect if an error is a connection failure
83
- * @param error - Error to check
84
- * @returns True if connection failure
85
- */
86
49
  isConnectionError(error) {
87
50
  if (!error)
88
51
  return false;
@@ -93,21 +56,12 @@ class BaseAdapter {
93
56
  message.includes('ETIMEDOUT') ||
94
57
  message.includes('Lost connection'));
95
58
  }
96
- /**
97
- * Handle connection errors
98
- * @param error - Error to handle
99
- */
100
59
  handleConnectionError(error) {
101
60
  if (this.isConnectionError(error)) {
102
61
  this.throwError(types_js_1.ErrorCode.CONNECTION_FAILED, 'Lost connection to database', undefined, error);
103
62
  }
104
63
  throw error;
105
64
  }
106
- /**
107
- * Validate configuration
108
- * @param requiredFields - Array of required field names
109
- * @throws Error if validation fails
110
- */
111
65
  validateConfig(requiredFields) {
112
66
  for (const field of requiredFields) {
113
67
  if (!this.config || !this.config[field]) {
@@ -115,17 +69,9 @@ class BaseAdapter {
115
69
  }
116
70
  }
117
71
  }
118
- /**
119
- * Log a query operation
120
- * @param operation - Operation name
121
- * @param details - Operation details
122
- */
123
72
  logQuery(operation, details) {
124
- // Use debug level for query details to reduce noise from frequent operations (e.g., polling)
125
- this.logger.debug(`[Query] ${operation}`, {
126
- operation,
127
- ...details
128
- });
73
+ const correlationId = (0, hazo_core_1.getCorrelationId)();
74
+ this.logger.debug('adapter.query', { operation, ...details, ...(correlationId ? { correlationId } : {}) });
129
75
  }
130
76
  }
131
77
  exports.BaseAdapter = BaseAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { ClaimRowsOptions, HazoConnectAdapter, Logger } from '../types.js';
2
+ import { BaseAdapter } from './base-adapter.js';
3
+ import { QueryBuilder } from '../query-builder.js';
4
+ export interface BetterSqlite3TransactionContext {
5
+ query: (builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: unknown) => Promise<any>;
6
+ rawQuery: (sql: string, options?: {
7
+ params?: unknown[];
8
+ }) => Promise<any>;
9
+ execScript: (sql: string) => Promise<void>;
10
+ }
11
+ export declare class BetterSqlite3Adapter extends BaseAdapter implements HazoConnectAdapter {
12
+ private readonly sqliteConfig;
13
+ private readonly isReadOnlyMode;
14
+ private readonly databasePath;
15
+ private readonly pragmas;
16
+ private readonly databasePromise;
17
+ private dbInstance?;
18
+ private inTransaction;
19
+ private _claimQueue;
20
+ constructor(config: any, logger?: Logger);
21
+ getConfig(): Promise<any>;
22
+ query(builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: unknown): Promise<any>;
23
+ rawQuery(sql: string, options?: RequestInit & {
24
+ params?: unknown[];
25
+ }): Promise<any>;
26
+ private executeSelect;
27
+ private executeInsert;
28
+ private executeUpdate;
29
+ private executeDelete;
30
+ private runStatements;
31
+ private executeStatement;
32
+ /** better-sqlite3 rejects booleans and undefined; coerce to its accepted set. */
33
+ private toBindable;
34
+ private normalizeConfig;
35
+ private initializeDatabase;
36
+ private getDatabase;
37
+ private ensureWritable;
38
+ private normalizeInsertBody;
39
+ private normalizeUpdateBody;
40
+ private normalizeRawParams;
41
+ private isMutatingSql;
42
+ private translateWithHandling;
43
+ private handleSqliteError;
44
+ /**
45
+ * Execute one or more SQL statements separated by semicolons (DDL/migrations).
46
+ */
47
+ execScript(sql: string): Promise<void>;
48
+ /**
49
+ * Run a sequence of writes atomically via BEGIN/COMMIT/ROLLBACK. The callback
50
+ * receives a tx facade with the same query/rawQuery/execScript shape. Nested
51
+ * transactions throw.
52
+ */
53
+ transaction<T>(fn: (tx: BetterSqlite3TransactionContext) => Promise<T>): Promise<T>;
54
+ /**
55
+ * Atomically claim up to `limit` rows matching `where`, apply `set`, return the
56
+ * updated rows. Concurrent calls are serialized through a promise chain so a
57
+ * second call waits for the first transaction to commit (avoids nested BEGIN).
58
+ */
59
+ claimRows<T = Record<string, unknown>>(opts: ClaimRowsOptions): Promise<T[]>;
60
+ }
61
+ //# sourceMappingURL=better-sqlite3-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"better-sqlite3-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/better-sqlite3-adapter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AA2BlD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,CACL,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,EACpD,IAAI,CAAC,EAAE,OAAO,KACX,OAAO,CAAC,GAAG,CAAC,CAAA;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACzE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,qBAAa,oBAAqB,SAAQ,WAAY,YAAW,kBAAkB;IACjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACjE,OAAO,CAAC,UAAU,CAAC,CAAwB;IAC3C,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAsC;gBAE7C,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IASlC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAIzB,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,GAAG,CAAC;IA2BT,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC;YAe/E,aAAa;YAQb,aAAa;YAYb,aAAa;YASb,aAAa;IAU3B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAUxB,iFAAiF;IACjF,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,eAAe;YAYT,kBAAkB;YA8BlB,WAAW;IAMzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;;;OAIG;IACG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,+BAA+B,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiCzF;;;;OAIG;IACG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAoCnF"}