drizzle-orm 0.29.5-859260e → 0.29.5-b80ab5d

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.29.5-859260e",
3
+ "version": "0.29.5-b80ab5d",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -2412,6 +2412,126 @@
2412
2412
  "types": "./mysql-core/query-builders/update.d.ts",
2413
2413
  "default": "./mysql-core/query-builders/update.js"
2414
2414
  },
2415
+ "./pg-core/query-builders/delete": {
2416
+ "import": {
2417
+ "types": "./pg-core/query-builders/delete.d.ts",
2418
+ "default": "./pg-core/query-builders/delete.js"
2419
+ },
2420
+ "require": {
2421
+ "types": "./pg-core/query-builders/delete.d.cts",
2422
+ "default": "./pg-core/query-builders/delete.cjs"
2423
+ },
2424
+ "types": "./pg-core/query-builders/delete.d.ts",
2425
+ "default": "./pg-core/query-builders/delete.js"
2426
+ },
2427
+ "./pg-core/query-builders": {
2428
+ "import": {
2429
+ "types": "./pg-core/query-builders/index.d.ts",
2430
+ "default": "./pg-core/query-builders/index.js"
2431
+ },
2432
+ "require": {
2433
+ "types": "./pg-core/query-builders/index.d.cts",
2434
+ "default": "./pg-core/query-builders/index.cjs"
2435
+ },
2436
+ "types": "./pg-core/query-builders/index.d.ts",
2437
+ "default": "./pg-core/query-builders/index.js"
2438
+ },
2439
+ "./pg-core/query-builders/insert": {
2440
+ "import": {
2441
+ "types": "./pg-core/query-builders/insert.d.ts",
2442
+ "default": "./pg-core/query-builders/insert.js"
2443
+ },
2444
+ "require": {
2445
+ "types": "./pg-core/query-builders/insert.d.cts",
2446
+ "default": "./pg-core/query-builders/insert.cjs"
2447
+ },
2448
+ "types": "./pg-core/query-builders/insert.d.ts",
2449
+ "default": "./pg-core/query-builders/insert.js"
2450
+ },
2451
+ "./pg-core/query-builders/query-builder": {
2452
+ "import": {
2453
+ "types": "./pg-core/query-builders/query-builder.d.ts",
2454
+ "default": "./pg-core/query-builders/query-builder.js"
2455
+ },
2456
+ "require": {
2457
+ "types": "./pg-core/query-builders/query-builder.d.cts",
2458
+ "default": "./pg-core/query-builders/query-builder.cjs"
2459
+ },
2460
+ "types": "./pg-core/query-builders/query-builder.d.ts",
2461
+ "default": "./pg-core/query-builders/query-builder.js"
2462
+ },
2463
+ "./pg-core/query-builders/query": {
2464
+ "import": {
2465
+ "types": "./pg-core/query-builders/query.d.ts",
2466
+ "default": "./pg-core/query-builders/query.js"
2467
+ },
2468
+ "require": {
2469
+ "types": "./pg-core/query-builders/query.d.cts",
2470
+ "default": "./pg-core/query-builders/query.cjs"
2471
+ },
2472
+ "types": "./pg-core/query-builders/query.d.ts",
2473
+ "default": "./pg-core/query-builders/query.js"
2474
+ },
2475
+ "./pg-core/query-builders/raw": {
2476
+ "import": {
2477
+ "types": "./pg-core/query-builders/raw.d.ts",
2478
+ "default": "./pg-core/query-builders/raw.js"
2479
+ },
2480
+ "require": {
2481
+ "types": "./pg-core/query-builders/raw.d.cts",
2482
+ "default": "./pg-core/query-builders/raw.cjs"
2483
+ },
2484
+ "types": "./pg-core/query-builders/raw.d.ts",
2485
+ "default": "./pg-core/query-builders/raw.js"
2486
+ },
2487
+ "./pg-core/query-builders/refresh-materialized-view": {
2488
+ "import": {
2489
+ "types": "./pg-core/query-builders/refresh-materialized-view.d.ts",
2490
+ "default": "./pg-core/query-builders/refresh-materialized-view.js"
2491
+ },
2492
+ "require": {
2493
+ "types": "./pg-core/query-builders/refresh-materialized-view.d.cts",
2494
+ "default": "./pg-core/query-builders/refresh-materialized-view.cjs"
2495
+ },
2496
+ "types": "./pg-core/query-builders/refresh-materialized-view.d.ts",
2497
+ "default": "./pg-core/query-builders/refresh-materialized-view.js"
2498
+ },
2499
+ "./pg-core/query-builders/select": {
2500
+ "import": {
2501
+ "types": "./pg-core/query-builders/select.d.ts",
2502
+ "default": "./pg-core/query-builders/select.js"
2503
+ },
2504
+ "require": {
2505
+ "types": "./pg-core/query-builders/select.d.cts",
2506
+ "default": "./pg-core/query-builders/select.cjs"
2507
+ },
2508
+ "types": "./pg-core/query-builders/select.d.ts",
2509
+ "default": "./pg-core/query-builders/select.js"
2510
+ },
2511
+ "./pg-core/query-builders/select.types": {
2512
+ "import": {
2513
+ "types": "./pg-core/query-builders/select.types.d.ts",
2514
+ "default": "./pg-core/query-builders/select.types.js"
2515
+ },
2516
+ "require": {
2517
+ "types": "./pg-core/query-builders/select.types.d.cts",
2518
+ "default": "./pg-core/query-builders/select.types.cjs"
2519
+ },
2520
+ "types": "./pg-core/query-builders/select.types.d.ts",
2521
+ "default": "./pg-core/query-builders/select.types.js"
2522
+ },
2523
+ "./pg-core/query-builders/update": {
2524
+ "import": {
2525
+ "types": "./pg-core/query-builders/update.d.ts",
2526
+ "default": "./pg-core/query-builders/update.js"
2527
+ },
2528
+ "require": {
2529
+ "types": "./pg-core/query-builders/update.d.cts",
2530
+ "default": "./pg-core/query-builders/update.cjs"
2531
+ },
2532
+ "types": "./pg-core/query-builders/update.d.ts",
2533
+ "default": "./pg-core/query-builders/update.js"
2534
+ },
2415
2535
  "./pg-core/columns/bigint": {
2416
2536
  "import": {
2417
2537
  "types": "./pg-core/columns/bigint.d.ts",
@@ -2760,126 +2880,6 @@
2760
2880
  "types": "./pg-core/columns/varchar.d.ts",
2761
2881
  "default": "./pg-core/columns/varchar.js"
2762
2882
  },
2763
- "./pg-core/query-builders/delete": {
2764
- "import": {
2765
- "types": "./pg-core/query-builders/delete.d.ts",
2766
- "default": "./pg-core/query-builders/delete.js"
2767
- },
2768
- "require": {
2769
- "types": "./pg-core/query-builders/delete.d.cts",
2770
- "default": "./pg-core/query-builders/delete.cjs"
2771
- },
2772
- "types": "./pg-core/query-builders/delete.d.ts",
2773
- "default": "./pg-core/query-builders/delete.js"
2774
- },
2775
- "./pg-core/query-builders": {
2776
- "import": {
2777
- "types": "./pg-core/query-builders/index.d.ts",
2778
- "default": "./pg-core/query-builders/index.js"
2779
- },
2780
- "require": {
2781
- "types": "./pg-core/query-builders/index.d.cts",
2782
- "default": "./pg-core/query-builders/index.cjs"
2783
- },
2784
- "types": "./pg-core/query-builders/index.d.ts",
2785
- "default": "./pg-core/query-builders/index.js"
2786
- },
2787
- "./pg-core/query-builders/insert": {
2788
- "import": {
2789
- "types": "./pg-core/query-builders/insert.d.ts",
2790
- "default": "./pg-core/query-builders/insert.js"
2791
- },
2792
- "require": {
2793
- "types": "./pg-core/query-builders/insert.d.cts",
2794
- "default": "./pg-core/query-builders/insert.cjs"
2795
- },
2796
- "types": "./pg-core/query-builders/insert.d.ts",
2797
- "default": "./pg-core/query-builders/insert.js"
2798
- },
2799
- "./pg-core/query-builders/query-builder": {
2800
- "import": {
2801
- "types": "./pg-core/query-builders/query-builder.d.ts",
2802
- "default": "./pg-core/query-builders/query-builder.js"
2803
- },
2804
- "require": {
2805
- "types": "./pg-core/query-builders/query-builder.d.cts",
2806
- "default": "./pg-core/query-builders/query-builder.cjs"
2807
- },
2808
- "types": "./pg-core/query-builders/query-builder.d.ts",
2809
- "default": "./pg-core/query-builders/query-builder.js"
2810
- },
2811
- "./pg-core/query-builders/query": {
2812
- "import": {
2813
- "types": "./pg-core/query-builders/query.d.ts",
2814
- "default": "./pg-core/query-builders/query.js"
2815
- },
2816
- "require": {
2817
- "types": "./pg-core/query-builders/query.d.cts",
2818
- "default": "./pg-core/query-builders/query.cjs"
2819
- },
2820
- "types": "./pg-core/query-builders/query.d.ts",
2821
- "default": "./pg-core/query-builders/query.js"
2822
- },
2823
- "./pg-core/query-builders/raw": {
2824
- "import": {
2825
- "types": "./pg-core/query-builders/raw.d.ts",
2826
- "default": "./pg-core/query-builders/raw.js"
2827
- },
2828
- "require": {
2829
- "types": "./pg-core/query-builders/raw.d.cts",
2830
- "default": "./pg-core/query-builders/raw.cjs"
2831
- },
2832
- "types": "./pg-core/query-builders/raw.d.ts",
2833
- "default": "./pg-core/query-builders/raw.js"
2834
- },
2835
- "./pg-core/query-builders/refresh-materialized-view": {
2836
- "import": {
2837
- "types": "./pg-core/query-builders/refresh-materialized-view.d.ts",
2838
- "default": "./pg-core/query-builders/refresh-materialized-view.js"
2839
- },
2840
- "require": {
2841
- "types": "./pg-core/query-builders/refresh-materialized-view.d.cts",
2842
- "default": "./pg-core/query-builders/refresh-materialized-view.cjs"
2843
- },
2844
- "types": "./pg-core/query-builders/refresh-materialized-view.d.ts",
2845
- "default": "./pg-core/query-builders/refresh-materialized-view.js"
2846
- },
2847
- "./pg-core/query-builders/select": {
2848
- "import": {
2849
- "types": "./pg-core/query-builders/select.d.ts",
2850
- "default": "./pg-core/query-builders/select.js"
2851
- },
2852
- "require": {
2853
- "types": "./pg-core/query-builders/select.d.cts",
2854
- "default": "./pg-core/query-builders/select.cjs"
2855
- },
2856
- "types": "./pg-core/query-builders/select.d.ts",
2857
- "default": "./pg-core/query-builders/select.js"
2858
- },
2859
- "./pg-core/query-builders/select.types": {
2860
- "import": {
2861
- "types": "./pg-core/query-builders/select.types.d.ts",
2862
- "default": "./pg-core/query-builders/select.types.js"
2863
- },
2864
- "require": {
2865
- "types": "./pg-core/query-builders/select.types.d.cts",
2866
- "default": "./pg-core/query-builders/select.types.cjs"
2867
- },
2868
- "types": "./pg-core/query-builders/select.types.d.ts",
2869
- "default": "./pg-core/query-builders/select.types.js"
2870
- },
2871
- "./pg-core/query-builders/update": {
2872
- "import": {
2873
- "types": "./pg-core/query-builders/update.d.ts",
2874
- "default": "./pg-core/query-builders/update.js"
2875
- },
2876
- "require": {
2877
- "types": "./pg-core/query-builders/update.d.cts",
2878
- "default": "./pg-core/query-builders/update.cjs"
2879
- },
2880
- "types": "./pg-core/query-builders/update.d.ts",
2881
- "default": "./pg-core/query-builders/update.js"
2882
- },
2883
2883
  "./pg-core/utils/array": {
2884
2884
  "import": {
2885
2885
  "types": "./pg-core/utils/array.d.ts",
@@ -110,7 +110,7 @@ class RemotePreparedQuery extends import_session.SQLitePreparedQuery {
110
110
  run(placeholderValues) {
111
111
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
112
112
  this.logger.logQuery(this.query.sql, params);
113
- return this.client(this.query.sql, params, "run");
113
+ return this.client(this.query.sql, params, "run").then((t) => t.rows);
114
114
  }
115
115
  mapAllResult(rows, isFromBatch) {
116
116
  if (isFromBatch) {
@@ -142,13 +142,13 @@ class RemotePreparedQuery extends import_session.SQLitePreparedQuery {
142
142
  const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
143
143
  logger.logQuery(query.sql, params);
144
144
  const clientResult = await client(query.sql, params, "get");
145
- return this.mapGetResult([clientResult.rows]);
145
+ return this.mapGetResult(clientResult.rows);
146
146
  }
147
147
  mapGetResult(rows, isFromBatch) {
148
148
  if (isFromBatch) {
149
149
  rows = rows.rows;
150
150
  }
151
- const row = rows[0];
151
+ const row = rows;
152
152
  if (!this.fields && !this.customResultMapper) {
153
153
  return row;
154
154
  }
@@ -156,7 +156,7 @@ class RemotePreparedQuery extends import_session.SQLitePreparedQuery {
156
156
  return void 0;
157
157
  }
158
158
  if (this.customResultMapper) {
159
- return this.customResultMapper(rows);
159
+ return this.customResultMapper([rows]);
160
160
  }
161
161
  return (0, import_utils.mapResultRow)(
162
162
  this.fields,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sqlite-proxy/session.ts"],"sourcesContent":["import type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport type { AsyncBatchRemoteCallback, AsyncRemoteCallback, RemoteCallback, SqliteRemoteResult } from './driver.ts';\n\nexport interface SQLiteRemoteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteRemoteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate batchCLient?: AsyncBatchRemoteCallback,\n\t\toptions: SQLiteRemoteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): RemotePreparedQuery<T> {\n\t\treturn new RemotePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: { sql: string; params: any[]; method: 'run' | 'all' | 'values' | 'get' }[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = (preparedQuery as RemotePreparedQuery).getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });\n\t\t}\n\n\t\tconst batchResults = await (this.batchCLient as AsyncBatchRemoteCallback)(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows![0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n}\n\nexport class SQLiteProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: SqliteRemoteResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyPreparedQuery';\n\n\tprivate method: SQLiteExecuteMethod;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.method = executeMethod;\n\t}\n\n\toverride getQuery(): Query & { method: SQLiteExecuteMethod } {\n\t\treturn { ...this.query, method: this.method };\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn (this.client as AsyncRemoteCallback)(this.query.sql, params, 'run');\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\trow,\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst { rows } = await (client as AsyncRemoteCallback)(query.sql, params, 'all');\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst clientResult = await (client as AsyncRemoteCallback)(query.sql, params, 'get');\n\n\t\treturn this.mapGetResult([clientResult.rows]);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[][])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn row;\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\trow,\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tasync values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst clientResult = await (this.client as AsyncRemoteCallback)(this.query.sql, params, 'values');\n\t\treturn clientResult.rows as T[];\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA2B;AAE3B,oBAA2B;AAG3B,iBAAkD;AAElD,yBAAkC;AAOlC,qBAAmD;AACnD,mBAA6B;AAStB,MAAM,4BAGH,6BAAiE;AAAA,EAK1E,YACS,QACR,SACQ,QACA,aACR,UAAsC,CAAC,GACtC;AACD,UAAM,OAAO;AANL;AAEA;AACA;AAIR,SAAK,SAAS,QAAQ,UAAU,IAAI,yBAAW;AAAA,EAChD;AAAA,EAbA,QAAiB,wBAAU,IAAY;AAAA,EAE/B;AAAA,EAaR,aACC,OACA,QACA,eACA,oBACyB;AACzB,WAAO,IAAI,oBAAoB,KAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQ,eAAe,kBAAkB;AAAA,EAC1G;AAAA,EAEA,MAAM,MAAwE,SAAY;AACzF,UAAM,kBAAmC,CAAC;AAC1C,UAAM,eAA2F,CAAC;AAElG,eAAW,SAAS,SAAS;AAC5B,YAAM,gBAAgB,MAAM,SAAS;AACrC,YAAM,aAAc,cAAsC,SAAS;AACnE,sBAAgB,KAAK,aAAa;AAClC,mBAAa,KAAK,EAAE,KAAK,WAAW,KAAK,QAAQ,WAAW,QAAQ,QAAQ,WAAW,OAAO,CAAC;AAAA,IAChG;AAEA,UAAM,eAAe,MAAO,KAAK,YAAyC,YAAY;AACtF,WAAO,aAAa,IAAI,CAAC,QAAQ,MAAM,gBAAgB,CAAC,EAAG,UAAU,QAAQ,IAAI,CAAC;AAAA,EACnF;AAAA,EAEA,MAAe,YACd,aACA,QACa;AACb,UAAM,KAAK,IAAI,uBAAuB,SAAS,KAAK,SAAS,MAAM,KAAK,MAAM;AAC9E,UAAM,KAAK,IAAI,eAAI,IAAI,QAAQ,QAAQ,WAAW,MAAM,OAAO,WAAW,EAAE,EAAE,CAAC;AAC/E,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,IAAI,sBAAW;AAC1B,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,KAAK,IAAI,wBAAa;AAC5B,YAAM;AAAA,IACP;AAAA,EACD;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAA8B;AAAA,EACvC;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAA8B,KAAM,CAAC;AAAA,EAC9C;AAAA,EAES,qCAAqC,QAA0B;AACvE,WAAQ,OAA8B;AAAA,EACvC;AACD;AAEO,MAAM,+BAGH,qCAAqE;AAAA,EAC9E,QAAiB,wBAAU,IAAY;AAAA,EAEvC,MAAe,YACd,aACa;AACb,UAAM,gBAAgB,KAAK,KAAK,WAAW;AAC3C,UAAM,KAAK,IAAI,uBAAuB,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,cAAc,CAAC;AAC5G,UAAM,KAAK,QAAQ,IAAI,eAAI,IAAI,aAAa,aAAa,EAAE,CAAC;AAC5D,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,QAAQ,IAAI,eAAI,IAAI,qBAAqB,aAAa,EAAE,CAAC;AACpE,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,KAAK,QAAQ,IAAI,eAAI,IAAI,yBAAyB,aAAa,EAAE,CAAC;AACxE,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEO,MAAM,4BAAiF,mCAE5F;AAAA,EAKD,YACS,QACR,OACQ,QACA,QACR,eACwB,oBAIvB;AACD,UAAM,SAAS,eAAe,KAAK;AAV3B;AAEA;AACA;AAEgB;AAMxB,SAAK,qBAAqB;AAC1B,SAAK,SAAS;AAAA,EACf;AAAA,EAlBA,QAAiB,wBAAU,IAAY;AAAA,EAE/B;AAAA,EAkBC,WAAoD;AAC5D,WAAO,EAAE,GAAG,KAAK,OAAO,QAAQ,KAAK,OAAO;AAAA,EAC7C;AAAA,EAEA,IAAI,mBAA0E;AAC7E,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,WAAQ,KAAK,OAA+B,KAAK,MAAM,KAAK,QAAQ,KAAK;AAAA,EAC1E;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAA4B;AAAA,IACrC;AAEA,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO;AAAA,IACR;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,IAAmB;AAAA,IACnD;AAEA,WAAQ,KAAqB,IAAI,CAAC,QAAQ;AACzC,iBAAO;AAAA,QACN,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,OAAO,QAAQ,OAAO,IAAI;AAElC,UAAM,aAAS,6BAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,WAAO,SAAS,MAAM,KAAK,MAAM;AAEjC,UAAM,EAAE,KAAK,IAAI,MAAO,OAA+B,MAAM,KAAK,QAAQ,KAAK;AAE/E,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,OAAO,QAAQ,OAAO,IAAI;AAElC,UAAM,aAAS,6BAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,WAAO,SAAS,MAAM,KAAK,MAAM;AAEjC,UAAM,eAAe,MAAO,OAA+B,MAAM,KAAK,QAAQ,KAAK;AAEnF,WAAO,KAAK,aAAa,CAAC,aAAa,IAAI,CAAC;AAAA,EAC7C;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAA4B;AAAA,IACrC;AAEA,UAAM,MAAO,KAAqB,CAAC;AAEnC,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO;AAAA,IACR;AAEA,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,IAAmB;AAAA,IACnD;AAEA,eAAO;AAAA,MACN,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AAAA,EAEA,MAAM,OAAoC,mBAA2D;AACpG,UAAM,aAAS,6BAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,UAAM,eAAe,MAAO,KAAK,OAA+B,KAAK,MAAM,KAAK,QAAQ,QAAQ;AAChG,WAAO,aAAa;AAAA,EACrB;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/sqlite-proxy/session.ts"],"sourcesContent":["import type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport type { AsyncBatchRemoteCallback, AsyncRemoteCallback, RemoteCallback, SqliteRemoteResult } from './driver.ts';\n\nexport interface SQLiteRemoteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteRemoteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate batchCLient?: AsyncBatchRemoteCallback,\n\t\toptions: SQLiteRemoteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): RemotePreparedQuery<T> {\n\t\treturn new RemotePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: { sql: string; params: any[]; method: 'run' | 'all' | 'values' | 'get' }[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = (preparedQuery as RemotePreparedQuery).getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });\n\t\t}\n\n\t\tconst batchResults = await (this.batchCLient as AsyncBatchRemoteCallback)(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows![0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n}\n\nexport class SQLiteProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: SqliteRemoteResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyPreparedQuery';\n\n\tprivate method: SQLiteExecuteMethod;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.method = executeMethod;\n\t}\n\n\toverride getQuery(): Query & { method: SQLiteExecuteMethod } {\n\t\treturn { ...this.query, method: this.method };\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn (this.client as AsyncRemoteCallback)(this.query.sql, params, 'run').then((t) => t.rows) as Promise<\n\t\t\tSqliteRemoteResult\n\t\t>;\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\trow,\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst { rows } = await (client as AsyncRemoteCallback)(query.sql, params, 'all');\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst clientResult = await (client as AsyncRemoteCallback)(query.sql, params, 'get');\n\n\t\treturn this.mapGetResult(clientResult.rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tconst row = rows as unknown[];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn row;\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper([rows] as unknown[][]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\trow,\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tasync values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst clientResult = await (this.client as AsyncRemoteCallback)(this.query.sql, params, 'values');\n\t\treturn clientResult.rows as T[];\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -85,7 +85,7 @@ class RemotePreparedQuery extends SQLitePreparedQuery {
85
85
  run(placeholderValues) {
86
86
  const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
87
87
  this.logger.logQuery(this.query.sql, params);
88
- return this.client(this.query.sql, params, "run");
88
+ return this.client(this.query.sql, params, "run").then((t) => t.rows);
89
89
  }
90
90
  mapAllResult(rows, isFromBatch) {
91
91
  if (isFromBatch) {
@@ -117,13 +117,13 @@ class RemotePreparedQuery extends SQLitePreparedQuery {
117
117
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
118
118
  logger.logQuery(query.sql, params);
119
119
  const clientResult = await client(query.sql, params, "get");
120
- return this.mapGetResult([clientResult.rows]);
120
+ return this.mapGetResult(clientResult.rows);
121
121
  }
122
122
  mapGetResult(rows, isFromBatch) {
123
123
  if (isFromBatch) {
124
124
  rows = rows.rows;
125
125
  }
126
- const row = rows[0];
126
+ const row = rows;
127
127
  if (!this.fields && !this.customResultMapper) {
128
128
  return row;
129
129
  }
@@ -131,7 +131,7 @@ class RemotePreparedQuery extends SQLitePreparedQuery {
131
131
  return void 0;
132
132
  }
133
133
  if (this.customResultMapper) {
134
- return this.customResultMapper(rows);
134
+ return this.customResultMapper([rows]);
135
135
  }
136
136
  return mapResultRow(
137
137
  this.fields,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sqlite-proxy/session.ts"],"sourcesContent":["import type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport type { AsyncBatchRemoteCallback, AsyncRemoteCallback, RemoteCallback, SqliteRemoteResult } from './driver.ts';\n\nexport interface SQLiteRemoteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteRemoteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate batchCLient?: AsyncBatchRemoteCallback,\n\t\toptions: SQLiteRemoteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): RemotePreparedQuery<T> {\n\t\treturn new RemotePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: { sql: string; params: any[]; method: 'run' | 'all' | 'values' | 'get' }[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = (preparedQuery as RemotePreparedQuery).getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });\n\t\t}\n\n\t\tconst batchResults = await (this.batchCLient as AsyncBatchRemoteCallback)(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows![0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n}\n\nexport class SQLiteProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: SqliteRemoteResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyPreparedQuery';\n\n\tprivate method: SQLiteExecuteMethod;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.method = executeMethod;\n\t}\n\n\toverride getQuery(): Query & { method: SQLiteExecuteMethod } {\n\t\treturn { ...this.query, method: this.method };\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn (this.client as AsyncRemoteCallback)(this.query.sql, params, 'run');\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\trow,\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst { rows } = await (client as AsyncRemoteCallback)(query.sql, params, 'all');\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst clientResult = await (client as AsyncRemoteCallback)(query.sql, params, 'get');\n\n\t\treturn this.mapGetResult([clientResult.rows]);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[][])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn row;\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\trow,\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tasync values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst clientResult = await (this.client as AsyncRemoteCallback)(this.query.sql, params, 'values');\n\t\treturn clientResult.rows as T[];\n\t}\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/sqlite-proxy/session.ts"],"sourcesContent":["import type { BatchItem } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport type { AsyncBatchRemoteCallback, AsyncRemoteCallback, RemoteCallback, SqliteRemoteResult } from './driver.ts';\n\nexport interface SQLiteRemoteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLiteRemoteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteRemoteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate batchCLient?: AsyncBatchRemoteCallback,\n\t\toptions: SQLiteRemoteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): RemotePreparedQuery<T> {\n\t\treturn new RemotePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: { sql: string; params: any[]; method: 'run' | 'all' | 'values' | 'get' }[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = (preparedQuery as RemotePreparedQuery).getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, params: builtQuery.params, method: builtQuery.method });\n\t\t}\n\n\t\tconst batchResults = await (this.batchCLient as AsyncBatchRemoteCallback)(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this, this.schema);\n\t\tawait this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows![0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as SqliteRemoteResult).rows;\n\t}\n}\n\nexport class SQLiteProxyTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', SqliteRemoteResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: SQLiteProxyTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new SQLiteProxyTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class RemotePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n\t{ type: 'async'; run: SqliteRemoteResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteProxyPreparedQuery';\n\n\tprivate method: SQLiteExecuteMethod;\n\n\tconstructor(\n\t\tprivate client: RemoteCallback,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\t/** @internal */ public customResultMapper?: (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t) {\n\t\tsuper('async', executeMethod, query);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.method = executeMethod;\n\t}\n\n\toverride getQuery(): Query & { method: SQLiteExecuteMethod } {\n\t\treturn { ...this.query, method: this.method };\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn (this.client as AsyncRemoteCallback)(this.query.sql, params, 'run').then((t) => t.rows) as Promise<\n\t\t\tSqliteRemoteResult\n\t\t>;\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper(rows as unknown[][]) as T['all'];\n\t\t}\n\n\t\treturn (rows as unknown[][]).map((row) => {\n\t\t\treturn mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\trow,\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst { rows } = await (client as AsyncRemoteCallback)(query.sql, params, 'all');\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tconst { query, logger, client } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst clientResult = await (client as AsyncRemoteCallback)(query.sql, params, 'get');\n\n\t\treturn this.mapGetResult(clientResult.rows);\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as SqliteRemoteResult).rows;\n\t\t}\n\n\t\tconst row = rows as unknown[];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn row;\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn this.customResultMapper([rows] as unknown[][]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(\n\t\t\tthis.fields!,\n\t\t\trow,\n\t\t\tthis.joinsNotNullableMap,\n\t\t);\n\t}\n\n\tasync values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst clientResult = await (this.client as AsyncRemoteCallback)(this.query.sql, params, 'values');\n\t\treturn clientResult.rows as T[];\n\t}\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAE3B,SAAS,kBAAkB;AAG3B,SAAS,kBAA8B,WAAW;AAElD,SAAS,yBAAyB;AAOlC,SAAS,qBAAqB,qBAAqB;AACnD,SAAS,oBAAoB;AAStB,MAAM,4BAGH,cAAiE;AAAA,EAK1E,YACS,QACR,SACQ,QACA,aACR,UAAsC,CAAC,GACtC;AACD,UAAM,OAAO;AANL;AAEA;AACA;AAIR,SAAK,SAAS,QAAQ,UAAU,IAAI,WAAW;AAAA,EAChD;AAAA,EAbA,QAAiB,UAAU,IAAY;AAAA,EAE/B;AAAA,EAaR,aACC,OACA,QACA,eACA,oBACyB;AACzB,WAAO,IAAI,oBAAoB,KAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQ,eAAe,kBAAkB;AAAA,EAC1G;AAAA,EAEA,MAAM,MAAwE,SAAY;AACzF,UAAM,kBAAmC,CAAC;AAC1C,UAAM,eAA2F,CAAC;AAElG,eAAW,SAAS,SAAS;AAC5B,YAAM,gBAAgB,MAAM,SAAS;AACrC,YAAM,aAAc,cAAsC,SAAS;AACnE,sBAAgB,KAAK,aAAa;AAClC,mBAAa,KAAK,EAAE,KAAK,WAAW,KAAK,QAAQ,WAAW,QAAQ,QAAQ,WAAW,OAAO,CAAC;AAAA,IAChG;AAEA,UAAM,eAAe,MAAO,KAAK,YAAyC,YAAY;AACtF,WAAO,aAAa,IAAI,CAAC,QAAQ,MAAM,gBAAgB,CAAC,EAAG,UAAU,QAAQ,IAAI,CAAC;AAAA,EACnF;AAAA,EAEA,MAAe,YACd,aACA,QACa;AACb,UAAM,KAAK,IAAI,uBAAuB,SAAS,KAAK,SAAS,MAAM,KAAK,MAAM;AAC9E,UAAM,KAAK,IAAI,IAAI,IAAI,QAAQ,QAAQ,WAAW,MAAM,OAAO,WAAW,EAAE,EAAE,CAAC;AAC/E,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,IAAI,WAAW;AAC1B,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,KAAK,IAAI,aAAa;AAC5B,YAAM;AAAA,IACP;AAAA,EACD;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAA8B;AAAA,EACvC;AAAA,EAES,kCAAkC,QAA0B;AACpE,WAAQ,OAA8B,KAAM,CAAC;AAAA,EAC9C;AAAA,EAES,qCAAqC,QAA0B;AACvE,WAAQ,OAA8B;AAAA,EACvC;AACD;AAEO,MAAM,+BAGH,kBAAqE;AAAA,EAC9E,QAAiB,UAAU,IAAY;AAAA,EAEvC,MAAe,YACd,aACa;AACb,UAAM,gBAAgB,KAAK,KAAK,WAAW;AAC3C,UAAM,KAAK,IAAI,uBAAuB,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,cAAc,CAAC;AAC5G,UAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,aAAa,aAAa,EAAE,CAAC;AAC5D,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,qBAAqB,aAAa,EAAE,CAAC;AACpE,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,yBAAyB,aAAa,EAAE,CAAC;AACxE,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEO,MAAM,4BAAiF,oBAE5F;AAAA,EAKD,YACS,QACR,OACQ,QACA,QACR,eACwB,oBAIvB;AACD,UAAM,SAAS,eAAe,KAAK;AAV3B;AAEA;AACA;AAEgB;AAMxB,SAAK,qBAAqB;AAC1B,SAAK,SAAS;AAAA,EACf;AAAA,EAlBA,QAAiB,UAAU,IAAY;AAAA,EAE/B;AAAA,EAkBC,WAAoD;AAC5D,WAAO,EAAE,GAAG,KAAK,OAAO,QAAQ,KAAK,OAAO;AAAA,EAC7C;AAAA,EAEA,IAAI,mBAA0E;AAC7E,UAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,WAAQ,KAAK,OAA+B,KAAK,MAAM,KAAK,QAAQ,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI;AAAA,EAG9F;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAA4B;AAAA,IACrC;AAEA,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO;AAAA,IACR;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,IAAmB;AAAA,IACnD;AAEA,WAAQ,KAAqB,IAAI,CAAC,QAAQ;AACzC,aAAO;AAAA,QACN,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACN;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,OAAO,QAAQ,OAAO,IAAI;AAElC,UAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,WAAO,SAAS,MAAM,KAAK,MAAM;AAEjC,UAAM,EAAE,KAAK,IAAI,MAAO,OAA+B,MAAM,KAAK,QAAQ,KAAK;AAC/E,WAAO,KAAK,aAAa,IAAI;AAAA,EAC9B;AAAA,EAEA,MAAM,IAAI,mBAAgE;AACzE,UAAM,EAAE,OAAO,QAAQ,OAAO,IAAI;AAElC,UAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AACrE,WAAO,SAAS,MAAM,KAAK,MAAM;AAEjC,UAAM,eAAe,MAAO,OAA+B,MAAM,KAAK,QAAQ,KAAK;AAEnF,WAAO,KAAK,aAAa,aAAa,IAAI;AAAA,EAC3C;AAAA,EAES,aAAa,MAAe,aAAgC;AACpE,QAAI,aAAa;AAChB,aAAQ,KAA4B;AAAA,IACrC;AAEA,UAAM,MAAM;AAEZ,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAO;AAAA,IACR;AAEA,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AAEA,QAAI,KAAK,oBAAoB;AAC5B,aAAO,KAAK,mBAAmB,CAAC,IAAI,CAAgB;AAAA,IACrD;AAEA,WAAO;AAAA,MACN,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AAAA,EAEA,MAAM,OAAoC,mBAA2D;AACpG,UAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,CAAC,CAAC;AAC1E,SAAK,OAAO,SAAS,KAAK,MAAM,KAAK,MAAM;AAC3C,UAAM,eAAe,MAAO,KAAK,OAA+B,KAAK,MAAM,KAAK,QAAQ,QAAQ;AAChG,WAAO,aAAa;AAAA,EACrB;AACD;","names":[]}
package/version.cjs CHANGED
@@ -26,7 +26,7 @@ __export(version_exports, {
26
26
  module.exports = __toCommonJS(version_exports);
27
27
 
28
28
  // package.json
29
- var version = "0.29.5-859260e";
29
+ var version = "0.29.5-b80ab5d";
30
30
 
31
31
  // src/version.ts
32
32
  var compatibilityVersion = 6;
package/version.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.29.5-859260e";
1
+ var version = "0.29.5-b80ab5d";
2
2
 
3
3
  declare const compatibilityVersion = 6;
4
4
 
package/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- var version = "0.29.5-859260e";
1
+ var version = "0.29.5-b80ab5d";
2
2
 
3
3
  declare const compatibilityVersion = 6;
4
4
 
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "0.29.5-859260e";
2
+ var version = "0.29.5-b80ab5d";
3
3
 
4
4
  // src/version.ts
5
5
  var compatibilityVersion = 6;