hazo_connect 2.4.3 → 2.4.5
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/README.md +67 -4
- package/dist/adapters/base-adapter.d.ts +2 -2
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +6 -6
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/adapters/file-adapter.d.ts +3 -3
- package/dist/adapters/file-adapter.d.ts.map +1 -1
- package/dist/adapters/file-adapter.js +5 -5
- package/dist/adapters/file-adapter.js.map +1 -1
- package/dist/adapters/postgrest-adapter.d.ts +3 -3
- package/dist/adapters/postgrest-adapter.d.ts.map +1 -1
- package/dist/adapters/postgrest-adapter.js +9 -9
- package/dist/adapters/postgrest-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts +3 -3
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +30 -30
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/adapters/supabase-adapter.d.ts +3 -3
- package/dist/adapters/supabase-adapter.d.ts.map +1 -1
- package/dist/adapters/supabase-adapter.js +14 -14
- package/dist/adapters/supabase-adapter.js.map +1 -1
- package/dist/default-logger.d.ts +2 -2
- package/dist/default-logger.d.ts.map +1 -1
- package/dist/default-logger.js +5 -5
- package/dist/default-logger.js.map +1 -1
- package/dist/factory.d.ts +1 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +11 -11
- package/dist/factory.js.map +1 -1
- package/dist/helpers.d.ts +7 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +17 -3
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/nextjs/api-route-helpers.d.ts +1 -1
- package/dist/nextjs/api-route-helpers.d.ts.map +1 -1
- package/dist/nextjs/api-route-helpers.js +3 -3
- package/dist/nextjs/api-route-helpers.js.map +1 -1
- package/dist/nextjs/index.d.ts +4 -4
- package/dist/nextjs/index.d.ts.map +1 -1
- package/dist/nextjs/index.js +11 -11
- package/dist/nextjs/index.js.map +1 -1
- package/dist/nextjs/server-only.d.ts +1 -1
- package/dist/nextjs/server-only.d.ts.map +1 -1
- package/dist/nextjs/server-only.js +1 -1
- package/dist/nextjs/server-only.js.map +1 -1
- package/dist/nextjs/setup-helpers.d.ts +1 -1
- package/dist/nextjs/setup-helpers.d.ts.map +1 -1
- package/dist/nextjs/setup-helpers.js +7 -7
- package/dist/nextjs/setup-helpers.js.map +1 -1
- package/dist/server/index.d.ts +20 -16
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +51 -38
- package/dist/server/index.js.map +1 -1
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +3 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/utils/assertions.d.ts +31 -0
- package/dist/utils/assertions.d.ts.map +1 -0
- package/dist/utils/assertions.js +51 -0
- package/dist/utils/assertions.js.map +1 -0
- package/dist/utils/jsonb.d.ts +13 -0
- package/dist/utils/jsonb.d.ts.map +1 -0
- package/dist/utils/jsonb.js +30 -0
- package/dist/utils/jsonb.js.map +1 -0
- package/dist/utils/result.d.ts +36 -0
- package/dist/utils/result.d.ts.map +1 -0
- package/dist/utils/result.js +43 -0
- package/dist/utils/result.js.map +1 -0
- package/package.json +27 -5
- package/app/globals.css +0 -16
- package/app/layout.tsx +0 -26
- package/app/page.tsx +0 -20
package/README.md
CHANGED
|
@@ -47,15 +47,25 @@ A fully independent database abstraction layer with query builder interface for
|
|
|
47
47
|
npm install hazo_connect
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
### Peer Dependencies
|
|
50
|
+
### Required Peer Dependencies
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
```bash
|
|
53
|
+
npm install hazo_logs@>=1.0.5
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Optional Peer Dependencies
|
|
57
|
+
|
|
58
|
+
For INI config file support:
|
|
53
59
|
|
|
54
60
|
```bash
|
|
55
|
-
npm install
|
|
61
|
+
npm install hazo_config@>=1.3.0
|
|
56
62
|
```
|
|
57
63
|
|
|
58
|
-
|
|
64
|
+
For the SQLite admin UI:
|
|
65
|
+
|
|
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
|
|
68
|
+
```
|
|
59
69
|
|
|
60
70
|
---
|
|
61
71
|
|
|
@@ -284,6 +294,58 @@ interface AutoIdConfig {
|
|
|
284
294
|
}
|
|
285
295
|
```
|
|
286
296
|
|
|
297
|
+
#### Scope Filtering (Multi-Tenant)
|
|
298
|
+
|
|
299
|
+
When building multi-tenant apps, set `scope_id` to automatically filter every query and inject the scope into inserts:
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
const itemService = createCrudService(hazo, 'items', { scope_id: 'tenant-abc' })
|
|
303
|
+
|
|
304
|
+
// All queries automatically include: WHERE scope_id = 'tenant-abc'
|
|
305
|
+
const items = await itemService.list()
|
|
306
|
+
const item = await itemService.findById('item-1')
|
|
307
|
+
|
|
308
|
+
// Inserts automatically include scope_id in the payload
|
|
309
|
+
await itemService.insert({ name: 'New Item' })
|
|
310
|
+
// Payload sent: { name: 'New Item', scope_id: 'tenant-abc' }
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
#### Utility Helpers
|
|
314
|
+
|
|
315
|
+
`hazo_connect/server` exports utility functions to reduce API route boilerplate:
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
import {
|
|
319
|
+
parseJsonbField, wrapResult, ok, err,
|
|
320
|
+
assertFound, assertNotEmpty, AssertionError
|
|
321
|
+
} from 'hazo_connect/server'
|
|
322
|
+
import type { DbResult } from 'hazo_connect/server'
|
|
323
|
+
|
|
324
|
+
// Parse JSONB fields returned as strings by PostgREST
|
|
325
|
+
const metadata = parseJsonbField<{ tags: string[] }>(row.metadata)
|
|
326
|
+
|
|
327
|
+
// Wrap async operations in a discriminated union result
|
|
328
|
+
const result: DbResult<User> = await wrapResult(async () => {
|
|
329
|
+
const user = await userService.findById(id)
|
|
330
|
+
return assertFound(user, 'user') // throws 404 if null
|
|
331
|
+
})
|
|
332
|
+
|
|
333
|
+
if (result.ok) {
|
|
334
|
+
return NextResponse.json(result.data)
|
|
335
|
+
} else {
|
|
336
|
+
return NextResponse.json(result.error, { status: result.status })
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Assert query results are non-empty
|
|
340
|
+
const users = assertNotEmpty(await userService.findBy({ role: 'admin' }), 'admin')
|
|
341
|
+
|
|
342
|
+
// Build results manually
|
|
343
|
+
return ok(data) // { ok: true, data }
|
|
344
|
+
return err('fail') // { ok: false, error: { message: 'fail' }, status: 500 }
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
`DbResult` and `parseJsonbField` are also available from `hazo_connect/ui` for client components.
|
|
348
|
+
|
|
287
349
|
### Singleton Pattern
|
|
288
350
|
|
|
289
351
|
For multiple API routes sharing a database connection:
|
|
@@ -528,6 +590,7 @@ interface CrudServiceOptions {
|
|
|
528
590
|
primaryKeys?: string[] // defaults to ['id']
|
|
529
591
|
logger?: Logger
|
|
530
592
|
autoId?: AutoIdConfig | false // Auto-generate IDs on insert (enabled by default)
|
|
593
|
+
scope_id?: string // Auto-filter all queries and inject into inserts (multi-tenant)
|
|
531
594
|
}
|
|
532
595
|
|
|
533
596
|
interface AutoIdConfig {
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Includes common error handling and optional logger support.
|
|
6
6
|
* Zero dependencies - only Node.js built-ins and types.
|
|
7
7
|
*/
|
|
8
|
-
import type { Logger, HazoConnectError } from '../types';
|
|
9
|
-
import { ErrorCode } from '../types';
|
|
8
|
+
import type { Logger, HazoConnectError } from '../types.js';
|
|
9
|
+
import { ErrorCode } from '../types.js';
|
|
10
10
|
/**
|
|
11
11
|
* Abstract base adapter class
|
|
12
12
|
* All adapters should extend this class
|
|
@@ -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,
|
|
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"}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.BaseAdapter = void 0;
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const types_js_1 = require("../types.js");
|
|
12
|
+
const default_logger_js_1 = require("../default-logger.js");
|
|
13
13
|
/**
|
|
14
14
|
* Abstract base adapter class
|
|
15
15
|
* All adapters should extend this class
|
|
@@ -27,10 +27,10 @@ class BaseAdapter {
|
|
|
27
27
|
this.logger = logger;
|
|
28
28
|
}
|
|
29
29
|
else if (config.log_level) {
|
|
30
|
-
this.logger = (0,
|
|
30
|
+
this.logger = (0, default_logger_js_1.createLoggerWithLevel)(config.log_level);
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
|
-
this.logger =
|
|
33
|
+
this.logger = default_logger_js_1.defaultLogger;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
@@ -99,7 +99,7 @@ class BaseAdapter {
|
|
|
99
99
|
*/
|
|
100
100
|
handleConnectionError(error) {
|
|
101
101
|
if (this.isConnectionError(error)) {
|
|
102
|
-
this.throwError(
|
|
102
|
+
this.throwError(types_js_1.ErrorCode.CONNECTION_FAILED, 'Lost connection to database', undefined, error);
|
|
103
103
|
}
|
|
104
104
|
throw error;
|
|
105
105
|
}
|
|
@@ -111,7 +111,7 @@ class BaseAdapter {
|
|
|
111
111
|
validateConfig(requiredFields) {
|
|
112
112
|
for (const field of requiredFields) {
|
|
113
113
|
if (!this.config || !this.config[field]) {
|
|
114
|
-
this.throwError(
|
|
114
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, `Missing required configuration field: ${field}`);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* }
|
|
14
14
|
* }
|
|
15
15
|
*/
|
|
16
|
-
import type { HazoConnectAdapter, Logger } from '../types';
|
|
17
|
-
import { BaseAdapter } from './base-adapter';
|
|
18
|
-
import { QueryBuilder } from '../query-builder';
|
|
16
|
+
import type { HazoConnectAdapter, Logger } from '../types.js';
|
|
17
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
18
|
+
import { QueryBuilder } from '../query-builder.js';
|
|
19
19
|
/**
|
|
20
20
|
* File adapter implementation (stub)
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/file-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"file-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/file-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAY,YAAW,kBAAkB;IACxE;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC;IAOf;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAOzE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CAGhC"}
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.FileAdapter = void 0;
|
|
19
|
-
const
|
|
20
|
-
const
|
|
19
|
+
const base_adapter_js_1 = require("./base-adapter.js");
|
|
20
|
+
const types_js_1 = require("../types.js");
|
|
21
21
|
/**
|
|
22
22
|
* File adapter implementation (stub)
|
|
23
23
|
*/
|
|
24
|
-
class FileAdapter extends
|
|
24
|
+
class FileAdapter extends base_adapter_js_1.BaseAdapter {
|
|
25
25
|
/**
|
|
26
26
|
* Constructor
|
|
27
27
|
* @param config - File storage configuration
|
|
@@ -39,7 +39,7 @@ class FileAdapter extends base_adapter_1.BaseAdapter {
|
|
|
39
39
|
* @returns Promise with query results
|
|
40
40
|
*/
|
|
41
41
|
async query(builder, method = 'GET', body) {
|
|
42
|
-
this.throwError(
|
|
42
|
+
this.throwError(types_js_1.ErrorCode.NOT_IMPLEMENTED, 'File adapter is not yet implemented. Please use PostgREST adapter for now.');
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* Execute a raw query
|
|
@@ -48,7 +48,7 @@ class FileAdapter extends base_adapter_1.BaseAdapter {
|
|
|
48
48
|
* @returns Promise with query results
|
|
49
49
|
*/
|
|
50
50
|
async rawQuery(endpoint, options = {}) {
|
|
51
|
-
this.throwError(
|
|
51
|
+
this.throwError(types_js_1.ErrorCode.NOT_IMPLEMENTED, 'File adapter is not yet implemented. Please use PostgREST adapter for now.');
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Get the adapter's configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/file-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"file-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/file-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,uDAA+C;AAE/C,0CAAuC;AAEvC;;GAEG;AACH,MAAa,WAAY,SAAQ,6BAAW;IAC1C;;;;OAIG;IACH,YAAY,MAAW,EAAE,MAAe;QACtC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,8CAA8C;IAChD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,OAAqB,EACrB,SAAsD,KAAK,EAC3D,IAAU;QAEV,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,eAAe,EACzB,4EAA4E,CAC7E,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,UAAuB,EAAE;QACxD,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,eAAe,EACzB,4EAA4E,CAC7E,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;CACF;AAjDD,kCAiDC"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Uses injected config and logger (no file reading or project dependencies).
|
|
6
6
|
* Zero dependencies - only Node.js built-ins (fetch) and types.
|
|
7
7
|
*/
|
|
8
|
-
import type { HazoConnectAdapter, Logger } from '../types';
|
|
9
|
-
import { BaseAdapter } from './base-adapter';
|
|
10
|
-
import { QueryBuilder } from '../query-builder';
|
|
8
|
+
import type { HazoConnectAdapter, Logger } from '../types.js';
|
|
9
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
10
|
+
import { QueryBuilder } from '../query-builder.js';
|
|
11
11
|
/**
|
|
12
12
|
* PostgREST adapter configuration
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgrest-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"postgrest-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD;;GAEG;AACH,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,kBAAkB;IAC7E,OAAO,CAAC,eAAe,CAAiB;IAExC;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAoBxC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAuGzB;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC;IAoBf;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwFzE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAG3C,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.PostgrestAdapter = void 0;
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const base_adapter_js_1 = require("./base-adapter.js");
|
|
12
|
+
const types_js_1 = require("../types.js");
|
|
13
13
|
/**
|
|
14
14
|
* PostgREST adapter implementation
|
|
15
15
|
*/
|
|
16
|
-
class PostgrestAdapter extends
|
|
16
|
+
class PostgrestAdapter extends base_adapter_js_1.BaseAdapter {
|
|
17
17
|
/**
|
|
18
18
|
* Constructor
|
|
19
19
|
* @param config - PostgREST configuration (must include postgrest.base_url and postgrest.api_key)
|
|
@@ -25,7 +25,7 @@ class PostgrestAdapter extends base_adapter_1.BaseAdapter {
|
|
|
25
25
|
this.postgrestConfig = config.postgrest || config;
|
|
26
26
|
// Validate required fields in postgrestConfig, not the main config
|
|
27
27
|
if (!this.postgrestConfig.base_url || !this.postgrestConfig.api_key) {
|
|
28
|
-
this.throwError(
|
|
28
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'PostgREST base_url and api_key are required in configuration');
|
|
29
29
|
}
|
|
30
30
|
// Ensure base_url doesn't end with /
|
|
31
31
|
if (this.postgrestConfig.base_url.endsWith('/')) {
|
|
@@ -40,7 +40,7 @@ class PostgrestAdapter extends base_adapter_1.BaseAdapter {
|
|
|
40
40
|
// PostgREST does not support SQL-style JOINs - use nested selects instead
|
|
41
41
|
const joins = builder.getJoins();
|
|
42
42
|
if (joins.length > 0) {
|
|
43
|
-
this.throwError(
|
|
43
|
+
this.throwError(types_js_1.ErrorCode.VALIDATION_ERROR, 'PostgREST adapter does not support SQL-style JOINs. Use nestedSelect() instead for related data.');
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
@@ -51,7 +51,7 @@ class PostgrestAdapter extends base_adapter_1.BaseAdapter {
|
|
|
51
51
|
buildPostgrestUrl(builder) {
|
|
52
52
|
const table = builder.getTable();
|
|
53
53
|
if (!table) {
|
|
54
|
-
this.throwError(
|
|
54
|
+
this.throwError(types_js_1.ErrorCode.VALIDATION_ERROR, 'Table name is required');
|
|
55
55
|
}
|
|
56
56
|
// Validate QueryBuilder doesn't use unsupported features
|
|
57
57
|
this.validateQueryBuilder(builder);
|
|
@@ -195,7 +195,7 @@ class PostgrestAdapter extends base_adapter_1.BaseAdapter {
|
|
|
195
195
|
error: parsedDetails ?? errorData,
|
|
196
196
|
url: sanitizedUrl
|
|
197
197
|
});
|
|
198
|
-
this.throwError(
|
|
198
|
+
this.throwError(types_js_1.ErrorCode.QUERY_ERROR, friendlyMessage, response.status, parsedDetails ?? errorData);
|
|
199
199
|
}
|
|
200
200
|
// Handle empty response
|
|
201
201
|
const responseBody = await response.text();
|
|
@@ -214,13 +214,13 @@ class PostgrestAdapter extends base_adapter_1.BaseAdapter {
|
|
|
214
214
|
catch (error) {
|
|
215
215
|
// Handle connection errors
|
|
216
216
|
if (this.isConnectionError(error)) {
|
|
217
|
-
this.throwError(
|
|
217
|
+
this.throwError(types_js_1.ErrorCode.CONNECTION_FAILED, 'Lost connection to database', undefined, error);
|
|
218
218
|
}
|
|
219
219
|
// Re-throw with error code if not already set
|
|
220
220
|
if (error.code) {
|
|
221
221
|
throw error;
|
|
222
222
|
}
|
|
223
|
-
this.throwError(
|
|
223
|
+
this.throwError(types_js_1.ErrorCode.QUERY_ERROR, `PostgREST request error: ${error.message || String(error)}`, undefined, error);
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgrest-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"postgrest-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* The adapter supports in-memory and file-backed databases, translating QueryBuilder
|
|
5
5
|
* instructions into parameterised SQL statements and persisting results when required.
|
|
6
6
|
*/
|
|
7
|
-
import type { HazoConnectAdapter, Logger } from '../types';
|
|
8
|
-
import { BaseAdapter } from './base-adapter';
|
|
9
|
-
import { QueryBuilder } from '../query-builder';
|
|
7
|
+
import type { HazoConnectAdapter, Logger } from '../types.js';
|
|
8
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
9
|
+
import { QueryBuilder } from '../query-builder.js';
|
|
10
10
|
export declare class SqliteAdapter extends BaseAdapter implements HazoConnectAdapter {
|
|
11
11
|
private readonly sqliteConfig;
|
|
12
12
|
private readonly isReadOnlyMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAoBlD,qBAAa,aAAc,SAAQ,WAAY,YAAW,kBAAkB;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;gBAE1B,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAmBlC,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;IA4BT,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAO,GACjD,OAAO,CAAC,GAAG,CAAC;IA4BT,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;YAMjB,aAAa;YAcb,aAAa;YAmBb,aAAa;YAoBb,aAAa;IAiB3B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,SAAS;YAKH,kBAAkB;YAmClB,WAAW;IAWzB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;YAsBV,eAAe;IA+C7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;CAY1B"}
|
|
@@ -13,20 +13,20 @@ exports.SqliteAdapter = void 0;
|
|
|
13
13
|
const fs_1 = __importDefault(require("fs"));
|
|
14
14
|
const path_1 = __importDefault(require("path"));
|
|
15
15
|
const sql_js_1 = __importDefault(require("sql.js"));
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
class SqliteAdapter extends
|
|
16
|
+
const wasm_resolver_js_1 = require("../utils/wasm-resolver.js");
|
|
17
|
+
const sqlite_utils_js_1 = require("../utils/sqlite-utils.js");
|
|
18
|
+
const base_adapter_js_1 = require("./base-adapter.js");
|
|
19
|
+
const types_js_1 = require("../types.js");
|
|
20
|
+
const query_translator_js_1 = require("../sqlite/query-translator.js");
|
|
21
|
+
class SqliteAdapter extends base_adapter_js_1.BaseAdapter {
|
|
22
22
|
constructor(config, logger) {
|
|
23
23
|
super(config, logger);
|
|
24
24
|
this.sqliteConfig = this.normalizeConfig(config);
|
|
25
25
|
this.isReadOnlyMode = Boolean(this.sqliteConfig.read_only);
|
|
26
26
|
this.databasePath = this.sqliteConfig.database_path;
|
|
27
|
-
this.wasmDirectory = (0,
|
|
27
|
+
this.wasmDirectory = (0, wasm_resolver_js_1.resolveWasmDirectory)(this.sqliteConfig);
|
|
28
28
|
if (this.isReadOnlyMode && !this.databasePath) {
|
|
29
|
-
this.throwError(
|
|
29
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, "SQLite adapter requires 'database_path' when read_only is enabled");
|
|
30
30
|
}
|
|
31
31
|
this.sqlJsPromise = this.loadSqlJs();
|
|
32
32
|
this.databasePromise = this.initializeDatabase();
|
|
@@ -48,7 +48,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
48
48
|
this.ensureWritable();
|
|
49
49
|
return await this.executeDelete(builder);
|
|
50
50
|
default:
|
|
51
|
-
this.throwError(
|
|
51
|
+
this.throwError(types_js_1.ErrorCode.VALIDATION_ERROR, `Unsupported method '${method}' for SQLite adapter`);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
catch (error) {
|
|
@@ -83,7 +83,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
83
83
|
}
|
|
84
84
|
// Query execution ---------------------------------------------------------------------------
|
|
85
85
|
async executeSelect(builder) {
|
|
86
|
-
const translation = this.translateWithHandling(() => (0,
|
|
86
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateSelect)(builder));
|
|
87
87
|
const database = await this.getDatabase();
|
|
88
88
|
const rows = this.executeStatements(database, [translation]);
|
|
89
89
|
this.logQuery('SQLite select', {
|
|
@@ -95,7 +95,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
95
95
|
}
|
|
96
96
|
async executeInsert(builder, body) {
|
|
97
97
|
const payload = this.normalizeInsertBody(body);
|
|
98
|
-
const translation = this.translateWithHandling(() => (0,
|
|
98
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateInsert)(builder, payload));
|
|
99
99
|
const database = await this.getDatabase();
|
|
100
100
|
const rows = this.executeStatements(database, translation.statements);
|
|
101
101
|
await this.persistDatabase(database);
|
|
@@ -107,7 +107,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
107
107
|
}
|
|
108
108
|
async executeUpdate(builder, body) {
|
|
109
109
|
const updates = this.normalizeUpdateBody(body);
|
|
110
|
-
const translation = this.translateWithHandling(() => (0,
|
|
110
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateUpdate)(builder, updates));
|
|
111
111
|
const database = await this.getDatabase();
|
|
112
112
|
const rows = this.executeStatements(database, [translation]);
|
|
113
113
|
await this.persistDatabase(database);
|
|
@@ -119,7 +119,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
119
119
|
return rows;
|
|
120
120
|
}
|
|
121
121
|
async executeDelete(builder) {
|
|
122
|
-
const translation = this.translateWithHandling(() => (0,
|
|
122
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateDelete)(builder));
|
|
123
123
|
const database = await this.getDatabase();
|
|
124
124
|
const rows = this.executeStatements(database, [translation]);
|
|
125
125
|
await this.persistDatabase(database);
|
|
@@ -146,7 +146,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
148
|
loadSqlJs() {
|
|
149
|
-
const config = (0,
|
|
149
|
+
const config = (0, wasm_resolver_js_1.createSqlJsConfig)(this.wasmDirectory);
|
|
150
150
|
return (0, sql_js_1.default)(config);
|
|
151
151
|
}
|
|
152
152
|
async initializeDatabase() {
|
|
@@ -160,7 +160,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
160
160
|
}
|
|
161
161
|
else {
|
|
162
162
|
if (this.isReadOnlyMode && databasePath) {
|
|
163
|
-
this.throwError(
|
|
163
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, `SQLite database not found at '${databasePath}' while read_only is enabled`);
|
|
164
164
|
}
|
|
165
165
|
database = new SQL.Database();
|
|
166
166
|
if (this.sqliteConfig.initial_sql?.length) {
|
|
@@ -257,34 +257,34 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
257
257
|
}
|
|
258
258
|
ensureWritable() {
|
|
259
259
|
if (this.isReadOnlyMode) {
|
|
260
|
-
this.throwError(
|
|
260
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'SQLite database is configured as read-only and cannot accept write operations');
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
// Payload helpers --------------------------------------------------------------------------
|
|
264
264
|
normalizeInsertBody(body) {
|
|
265
265
|
if (Array.isArray(body)) {
|
|
266
266
|
if (!body.length) {
|
|
267
|
-
this.throwError(
|
|
267
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Insert payload array cannot be empty');
|
|
268
268
|
}
|
|
269
269
|
return body.map(row => {
|
|
270
|
-
if (!(0,
|
|
271
|
-
this.throwError(
|
|
270
|
+
if (!(0, sqlite_utils_js_1.isPlainObject)(row)) {
|
|
271
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Insert payload array items must be plain objects');
|
|
272
272
|
}
|
|
273
273
|
return row;
|
|
274
274
|
});
|
|
275
275
|
}
|
|
276
|
-
if ((0,
|
|
276
|
+
if ((0, sqlite_utils_js_1.isPlainObject)(body)) {
|
|
277
277
|
return body;
|
|
278
278
|
}
|
|
279
|
-
this.throwError(
|
|
279
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Insert payload must be an object or array of objects');
|
|
280
280
|
}
|
|
281
281
|
normalizeUpdateBody(body) {
|
|
282
|
-
if (!(0,
|
|
283
|
-
this.throwError(
|
|
282
|
+
if (!(0, sqlite_utils_js_1.isPlainObject)(body)) {
|
|
283
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Update payload must be an object');
|
|
284
284
|
}
|
|
285
285
|
const updates = body;
|
|
286
286
|
if (Object.keys(updates).length === 0) {
|
|
287
|
-
this.throwError(
|
|
287
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Update payload must include at least one column');
|
|
288
288
|
}
|
|
289
289
|
return updates;
|
|
290
290
|
}
|
|
@@ -293,7 +293,7 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
293
293
|
return [];
|
|
294
294
|
}
|
|
295
295
|
if (!Array.isArray(params)) {
|
|
296
|
-
this.throwError(
|
|
296
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'SQLite rawQuery params must be an array');
|
|
297
297
|
}
|
|
298
298
|
return params;
|
|
299
299
|
}
|
|
@@ -306,21 +306,21 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
306
306
|
return translate();
|
|
307
307
|
}
|
|
308
308
|
catch (error) {
|
|
309
|
-
if (error instanceof
|
|
310
|
-
this.throwError(
|
|
309
|
+
if (error instanceof query_translator_js_1.SqliteTranslationError) {
|
|
310
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, error.message);
|
|
311
311
|
}
|
|
312
312
|
throw error;
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
315
|
handleSqliteError(error) {
|
|
316
|
-
if (error instanceof
|
|
317
|
-
this.throwError(
|
|
316
|
+
if (error instanceof query_translator_js_1.SqliteTranslationError) {
|
|
317
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, error.message);
|
|
318
318
|
}
|
|
319
319
|
if (error?.code) {
|
|
320
320
|
throw error;
|
|
321
321
|
}
|
|
322
322
|
const message = error instanceof Error ? error.message : String(error);
|
|
323
|
-
this.throwError(
|
|
323
|
+
this.throwError(types_js_1.ErrorCode.QUERY_ERROR, `SQLite request failed: ${message}`, undefined, error);
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
exports.SqliteAdapter = SqliteAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,4CAAmB;AACnB,gDAAuB;AACvB,oDAA0E;AAC1E,0DAAgF;AAChF,wDAAqE;AAGrE,iDAA4C;AAE5C,oCAAoC;AACpC,iEAOmC;AAWnC,MAAa,aAAc,SAAQ,0BAAW;IAS5C,YAAY,MAAW,EAAE,MAAe;QACtC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAErB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAA;QACnD,IAAI,CAAC,aAAa,GAAG,IAAA,oCAAoB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAE5D,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,YAAY,EACtB,mEAAmE,CACpE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAqB,EACrB,SAAsD,KAAK,EAC3D,IAAc;QAEd,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAE7C,IAAI,CAAC;YACH,QAAQ,gBAAgB,EAAE,CAAC;gBACzB,KAAK,KAAK;oBACR,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBAC1C,KAAK,MAAM;oBACT,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAChD,KAAK,KAAK,CAAC;gBACX,KAAK,OAAO;oBACV,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAChD,KAAK,QAAQ;oBACX,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBAC1C;oBACE,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,gBAAgB,EAC1B,uBAAuB,MAAM,sBAAsB,CACpD,CAAA;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,UAAgD,EAAE;QAElD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAE,OAAe,EAAE,MAAM,CAAC,CAAA;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YAExC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,EAAE,CAAA;YACvB,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;YAEzD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;gBAChC,GAAG;gBACH,MAAM;gBACN,SAAS,EAAE,IAAI,CAAC,MAAM;aACvB,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IACjC,CAAC;IAED,8FAA8F;IAEtF,KAAK,CAAC,aAAa,CAAC,OAAqB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,kCAAe,EAAC,OAAO,CAAC,CAAC,CAAA;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,OAAqB,EACrB,IAAa;QAEb,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,kCAAe,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;QAErE,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,mBAAmB,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM;YAClD,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,OAAqB,EACrB,IAAa;QAEb,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,kCAAe,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE5D,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAqB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,kCAAe,EAAC,OAAO,CAAC,CAAC,CAAA;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE5D,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6FAA6F;IAErF,eAAe,CAAC,MAAW;QACjC,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;QAEnD,MAAM,eAAe,GAAG,GAAG,EAAE,WAAW,CAAA;QACxC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YACpD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,CAAC,eAAe,CAAC;gBACnB,CAAC,CAAC,EAAE,CAAA;QAEN,OAAO;YACL,aAAa,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACvF,SAAS,EAAE,GAAG,EAAE,SAAS,KAAK,IAAI;YAClC,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,SAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3F,cAAc,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SAC3F,CAAA;IACH,CAAC;IAEO,SAAS;QACf,MAAM,MAAM,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpD,OAAO,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAA;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACtC,IAAI,QAAuB,CAAA;QAE3B,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,IAAI,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;QAEvE,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YACvD,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,cAAc,IAAI,YAAY,EAAE,CAAC;gBACxC,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,YAAY,EACtB,iCAAiC,YAAY,8BAA8B,CAC5E,CAAA;YACH,CAAC;YAED,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;YAE7B,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAC1C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC1B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAA;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,6FAA6F;IAErF,iBAAiB,CAAC,QAAuB,EAAE,UAA6B;QAC9E,MAAM,OAAO,GAAU,EAAE,CAAA;QAEzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,gBAAgB,CAAC,QAAuB,EAAE,GAAW,EAAE,MAAiB;QAC9E,IAAI,SAAc,CAAA;QAClB,IAAI,CAAC;YACH,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,MAAe,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,IAAI,GAAU,EAAE,CAAA;YACtB,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;YACpC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,IAAI,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAuB;QACnD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,OAAM;QACR,CAAC;QAED,iFAAiF;QACjF,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAClE,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAE/C,4FAA4F;QAC5F,qFAAqF;QACrF,IAAI,cAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrF,6EAA6E;YAC7E,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,0DAA0D,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;YAChG,OAAM;QACR,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,cAAI,CAAC,GAAG,EAAE,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACvD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,sEAAsE;gBACtE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACjF,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,2BAA2B,OAAO,KAAK,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;oBAChG,OAAM;gBACR,CAAC;gBACD,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,sEAAsE;YACtE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjF,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,8BAA8B,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;gBAC7G,OAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,YAAY,EACtB,+EAA+E,CAChF,CAAA;QACH,CAAC;IACH,CAAC;IAED,6FAA6F;IAErF,mBAAmB,CACzB,IAAa;QAEb,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAA;YACjF,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,IAAA,4BAAa,EAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,YAAY,EACtB,kDAAkD,CACnD,CAAA;gBACH,CAAC;gBACD,OAAO,GAA8B,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAA+B,CAAA;QACxC,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,sDAAsD,CAAC,CAAA;IACjG,CAAC;IAEO,mBAAmB,CAAC,IAAa;QACvC,IAAI,CAAC,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,OAAO,GAAG,IAA+B,CAAA;QAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,iDAAiD,CAAC,CAAA;QAC5F,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,kBAAkB,CAAC,MAAe;QACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAA;QACpF,CAAC;QAED,OAAO,MAAmB,CAAA;IAC5B,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;QAC/D,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/F,CAAC;IAEO,qBAAqB,CAAI,SAAkB;QACjD,IAAI,CAAC;YACH,OAAO,SAAS,EAAE,CAAA;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yCAAsB,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YACxD,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAc;QACtC,IAAI,KAAK,YAAY,yCAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACxD,CAAC;QAED,IAAK,KAAa,EAAE,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,IAAI,CAAC,UAAU,CAAC,iBAAS,CAAC,WAAW,EAAE,0BAA0B,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAC/F,CAAC;CACF;AApZD,sCAoZC"}
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,4CAAmB;AACnB,gDAAuB;AACvB,oDAA0E;AAC1E,gEAAmF;AACnF,8DAAwE;AAGxE,uDAA+C;AAE/C,0CAAuC;AACvC,uEAOsC;AAWtC,MAAa,aAAc,SAAQ,6BAAW;IAS5C,YAAY,MAAW,EAAE,MAAe;QACtC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAErB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAA;QACnD,IAAI,CAAC,aAAa,GAAG,IAAA,uCAAoB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAE5D,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,YAAY,EACtB,mEAAmE,CACpE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAqB,EACrB,SAAsD,KAAK,EAC3D,IAAc;QAEd,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAE7C,IAAI,CAAC;YACH,QAAQ,gBAAgB,EAAE,CAAC;gBACzB,KAAK,KAAK;oBACR,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBAC1C,KAAK,MAAM;oBACT,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAChD,KAAK,KAAK,CAAC;gBACX,KAAK,OAAO;oBACV,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAChD,KAAK,QAAQ;oBACX,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBAC1C;oBACE,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,gBAAgB,EAC1B,uBAAuB,MAAM,sBAAsB,CACpD,CAAA;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,UAAgD,EAAE;QAElD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAE,OAAe,EAAE,MAAM,CAAC,CAAA;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YAExC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,EAAE,CAAA;YACvB,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;YAEzD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;gBAChC,GAAG;gBACH,MAAM;gBACN,SAAS,EAAE,IAAI,CAAC,MAAM;aACvB,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IACjC,CAAC;IAED,8FAA8F;IAEtF,KAAK,CAAC,aAAa,CAAC,OAAqB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,qCAAe,EAAC,OAAO,CAAC,CAAC,CAAA;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,OAAqB,EACrB,IAAa;QAEb,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,qCAAe,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;QAErE,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,mBAAmB,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM;YAClD,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,OAAqB,EACrB,IAAa;QAEb,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,qCAAe,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE5D,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAqB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAA,qCAAe,EAAC,OAAO,CAAC,CAAC,CAAA;QAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAE5D,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC7B,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6FAA6F;IAErF,eAAe,CAAC,MAAW;QACjC,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;QAEnD,MAAM,eAAe,GAAG,GAAG,EAAE,WAAW,CAAA;QACxC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YACpD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,CAAC,eAAe,CAAC;gBACnB,CAAC,CAAC,EAAE,CAAA;QAEN,OAAO;YACL,aAAa,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACvF,SAAS,EAAE,GAAG,EAAE,SAAS,KAAK,IAAI;YAClC,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,SAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3F,cAAc,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SAC3F,CAAA;IACH,CAAC;IAEO,SAAS;QACf,MAAM,MAAM,GAAG,IAAA,oCAAiB,EAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpD,OAAO,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAA;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACtC,IAAI,QAAuB,CAAA;QAE3B,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,IAAI,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;QAEvE,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YACvD,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,cAAc,IAAI,YAAY,EAAE,CAAC;gBACxC,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,YAAY,EACtB,iCAAiC,YAAY,8BAA8B,CAC5E,CAAA;YACH,CAAC;YAED,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;YAE7B,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAC1C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC1B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAA;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,6FAA6F;IAErF,iBAAiB,CAAC,QAAuB,EAAE,UAA6B;QAC9E,MAAM,OAAO,GAAU,EAAE,CAAA;QAEzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,gBAAgB,CAAC,QAAuB,EAAE,GAAW,EAAE,MAAiB;QAC9E,IAAI,SAAc,CAAA;QAClB,IAAI,CAAC;YACH,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,MAAe,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,IAAI,GAAU,EAAE,CAAA;YACtB,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;YACpC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,IAAI,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAuB;QACnD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,OAAM;QACR,CAAC;QAED,iFAAiF;QACjF,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAClE,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAE/C,4FAA4F;QAC5F,qFAAqF;QACrF,IAAI,cAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrF,6EAA6E;YAC7E,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,0DAA0D,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;YAChG,OAAM;QACR,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,cAAI,CAAC,GAAG,EAAE,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACvD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,sEAAsE;gBACtE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACjF,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,2BAA2B,OAAO,KAAK,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;oBAChG,OAAM;gBACR,CAAC;gBACD,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,sEAAsE;YACtE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjF,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,8BAA8B,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;gBAC7G,OAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,YAAY,EACtB,+EAA+E,CAChF,CAAA;QACH,CAAC;IACH,CAAC;IAED,6FAA6F;IAErF,mBAAmB,CACzB,IAAa;QAEb,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAA;YACjF,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,YAAY,EACtB,kDAAkD,CACnD,CAAA;gBACH,CAAC;gBACD,OAAO,GAA8B,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,IAAA,+BAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAA+B,CAAA;QACxC,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,sDAAsD,CAAC,CAAA;IACjG,CAAC;IAEO,mBAAmB,CAAC,IAAa;QACvC,IAAI,CAAC,IAAA,+BAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,OAAO,GAAG,IAA+B,CAAA;QAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,iDAAiD,CAAC,CAAA;QAC5F,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,kBAAkB,CAAC,MAAe;QACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAA;QACpF,CAAC;QAED,OAAO,MAAmB,CAAA;IAC5B,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;QAC/D,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/F,CAAC;IAEO,qBAAqB,CAAI,SAAkB;QACjD,IAAI,CAAC;YACH,OAAO,SAAS,EAAE,CAAA;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,4CAAsB,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YACxD,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAc;QACtC,IAAI,KAAK,YAAY,4CAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACxD,CAAC;QAED,IAAK,KAAa,EAAE,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,IAAI,CAAC,UAAU,CAAC,oBAAS,CAAC,WAAW,EAAE,0BAA0B,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAC/F,CAAC;CACF;AApZD,sCAoZC"}
|