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.
- package/README.md +25 -3
- package/dist/adapters/base-adapter.d.ts +2 -51
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +23 -77
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/adapters/better-sqlite3-adapter.d.ts +61 -0
- package/dist/adapters/better-sqlite3-adapter.d.ts.map +1 -0
- package/dist/adapters/better-sqlite3-adapter.js +364 -0
- package/dist/adapters/better-sqlite3-adapter.js.map +1 -0
- package/dist/adapters/clause-builder.d.ts.map +1 -1
- package/dist/adapters/clause-builder.js +14 -13
- package/dist/adapters/clause-builder.js.map +1 -1
- package/dist/adapters/postgrest-adapter.d.ts.map +1 -1
- package/dist/adapters/postgrest-adapter.js +6 -5
- package/dist/adapters/postgrest-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +3 -24
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/adapters/supabase-adapter.d.ts.map +1 -1
- package/dist/adapters/supabase-adapter.js +3 -2
- package/dist/adapters/supabase-adapter.js.map +1 -1
- package/dist/connect-config.d.ts +83 -0
- package/dist/connect-config.d.ts.map +1 -0
- package/dist/connect-config.js +55 -0
- package/dist/connect-config.js.map +1 -0
- package/dist/default-logger.js +3 -3
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +32 -12
- package/dist/factory.js.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +5 -4
- package/dist/helpers.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/log-level-wrapper.d.ts.map +1 -1
- package/dist/log-level-wrapper.js +0 -2
- package/dist/log-level-wrapper.js.map +1 -1
- package/dist/migrations/runner.d.ts.map +1 -1
- package/dist/migrations/runner.js +8 -4
- package/dist/migrations/runner.js.map +1 -1
- package/dist/nextjs/api-route-helpers.d.ts.map +1 -1
- package/dist/nextjs/api-route-helpers.js +3 -4
- package/dist/nextjs/api-route-helpers.js.map +1 -1
- package/dist/nextjs/route-setup.d.ts.map +1 -1
- package/dist/nextjs/route-setup.js +3 -5
- package/dist/nextjs/route-setup.js.map +1 -1
- package/dist/nextjs/server-only.d.ts.map +1 -1
- package/dist/nextjs/server-only.js +2 -5
- package/dist/nextjs/server-only.js.map +1 -1
- package/dist/nextjs/setup-helpers.d.ts +4 -0
- package/dist/nextjs/setup-helpers.d.ts.map +1 -1
- package/dist/nextjs/setup-helpers.js +9 -7
- package/dist/nextjs/setup-helpers.js.map +1 -1
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/query-builder.js +4 -3
- package/dist/query-builder.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -6
- package/dist/server/index.js.map +1 -1
- package/dist/sqlite/admin-service.d.ts.map +1 -1
- package/dist/sqlite/admin-service.js +27 -15
- package/dist/sqlite/admin-service.js.map +1 -1
- package/dist/sqlite/placeholder-rewrite.d.ts +18 -0
- package/dist/sqlite/placeholder-rewrite.d.ts.map +1 -0
- package/dist/sqlite/placeholder-rewrite.js +38 -0
- package/dist/sqlite/placeholder-rewrite.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/sqlite-utils.d.ts.map +1 -1
- package/dist/utils/sqlite-utils.js +4 -3
- package/dist/utils/sqlite-utils.js.map +1 -1
- package/dist/utils/where-builder.d.ts.map +1 -1
- package/dist/utils/where-builder.js +3 -2
- package/dist/utils/where-builder.js.map +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
51
|
-
originalError
|
|
31
|
+
cause: cause instanceof Error ? cause : undefined,
|
|
32
|
+
context: cause && !(cause instanceof Error) ? { originalError: String(cause) } : undefined,
|
|
52
33
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
125
|
-
this.logger.debug(
|
|
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":";AAAA
|
|
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"}
|