drizzle-orm 0.12.0-beta.5 → 0.12.0-beta.7
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/alias.d.ts +12 -0
- package/alias.js +41 -0
- package/alias.js.map +1 -0
- package/column-builder.d.ts +28 -12
- package/column-builder.js +10 -6
- package/column-builder.js.map +1 -1
- package/column.d.ts +36 -24
- package/column.js +10 -10
- package/column.js.map +1 -1
- package/connection.d.ts +1 -17
- package/connection.js +41 -60
- package/connection.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +6 -4
- package/index.js.map +1 -1
- package/operations.d.ts +12 -7
- package/package.json +2 -1
- package/sql/expressions/conditions.d.ts +32 -34
- package/sql/expressions/conditions.js +3 -3
- package/sql/expressions/conditions.js.map +1 -1
- package/sql/expressions/select.d.ts +2 -3
- package/sql/expressions/select.js.map +1 -1
- package/sql/index.d.ts +38 -47
- package/sql/index.js +35 -28
- package/sql/index.js.map +1 -1
- package/table.d.ts +4 -8
- package/table.js +18 -3
- package/table.js.map +1 -1
- package/utils.d.ts +5 -6
- package/utils.js +2 -10
- package/utils.js.map +1 -1
package/alias.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AnyColumn } from './column';
|
|
2
|
+
import { Table } from './table';
|
|
3
|
+
export declare class ColumnAliasProxyHandler<TColumn extends AnyColumn> implements ProxyHandler<TColumn> {
|
|
4
|
+
private table;
|
|
5
|
+
constructor(table: Table);
|
|
6
|
+
get(columnObj: TColumn, prop: string | symbol, receiver: any): any;
|
|
7
|
+
}
|
|
8
|
+
export declare class TableAliasProxyHandler implements ProxyHandler<Table> {
|
|
9
|
+
private alias;
|
|
10
|
+
constructor(alias: string);
|
|
11
|
+
get(tableObj: Table, prop: string | symbol, receiver: any): any;
|
|
12
|
+
}
|
package/alias.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableAliasProxyHandler = exports.ColumnAliasProxyHandler = void 0;
|
|
4
|
+
const column_1 = require("./column");
|
|
5
|
+
const table_1 = require("./table");
|
|
6
|
+
class ColumnAliasProxyHandler {
|
|
7
|
+
constructor(table) {
|
|
8
|
+
this.table = table;
|
|
9
|
+
}
|
|
10
|
+
get(columnObj, prop, receiver) {
|
|
11
|
+
if (prop === 'table') {
|
|
12
|
+
return this.table;
|
|
13
|
+
}
|
|
14
|
+
return columnObj[prop];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ColumnAliasProxyHandler = ColumnAliasProxyHandler;
|
|
18
|
+
class TableAliasProxyHandler {
|
|
19
|
+
constructor(alias) {
|
|
20
|
+
this.alias = alias;
|
|
21
|
+
}
|
|
22
|
+
get(tableObj, prop, receiver) {
|
|
23
|
+
if (prop === table_1.Table.Symbol.Name) {
|
|
24
|
+
return this.alias;
|
|
25
|
+
}
|
|
26
|
+
if (prop === table_1.Table.Symbol.Columns) {
|
|
27
|
+
const proxiedColumns = {};
|
|
28
|
+
Object.keys(tableObj[table_1.Table.Symbol.Columns]).map((key) => {
|
|
29
|
+
proxiedColumns[key] = new Proxy(tableObj[table_1.Table.Symbol.Columns][key], new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
|
|
30
|
+
});
|
|
31
|
+
return proxiedColumns;
|
|
32
|
+
}
|
|
33
|
+
const value = tableObj[prop];
|
|
34
|
+
if (value instanceof column_1.Column) {
|
|
35
|
+
return new Proxy(value, new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.TableAliasProxyHandler = TableAliasProxyHandler;
|
|
41
|
+
//# sourceMappingURL=alias.js.map
|
package/alias.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias.js","sourceRoot":"","sources":["../src/alias.ts"],"names":[],"mappings":";;;AAAA,qCAA6C;AAC7C,mCAAgC;AAEhC,MAAa,uBAAuB;IACnC,YAA2B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,GAAG,CAAC,SAAkB,EAAE,IAAqB,EAAE,QAAa;QAClE,IAAI,IAAI,KAAK,OAAO,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,OAAO,SAAS,CAAC,IAAqB,CAAC,CAAC;IACzC,CAAC;CACD;AATD,0DASC;AAED,MAAa,sBAAsB;IAClC,YAA2B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAErC,GAAG,CAAC,QAAe,EAAE,IAAqB,EAAE,QAAa;QAC/D,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,MAAM,cAAc,GAA2B,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvD,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAC9B,QAAQ,CAAC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAE,EACpC,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,cAAc,CAAC;SACtB;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAmB,CAAC,CAAC;QAC5C,IAAI,KAAK,YAAY,eAAM,EAAE;YAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAzBD,wDAyBC"}
|
package/column-builder.d.ts
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { SQL } from './sql';
|
|
2
|
+
import { RequiredKeys } from './utils';
|
|
3
|
+
export interface ColumnBuilderBaseConfig {
|
|
4
|
+
data: unknown;
|
|
5
|
+
driverParam: unknown;
|
|
6
|
+
notNull: boolean;
|
|
7
|
+
hasDefault: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare type ColumnBuilderConfig<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = UpdateColumnBuilderConfig<ColumnBuilderBaseConfig & {
|
|
10
|
+
notNull: false;
|
|
11
|
+
hasDefault: false;
|
|
12
|
+
}, TPartial>;
|
|
13
|
+
export declare type UpdateColumnBuilderConfig<T extends ColumnBuilderBaseConfig, TUpdate extends Partial<ColumnBuilderBaseConfig>> = {} extends TUpdate ? T : RequiredKeys<Omit<T, keyof TUpdate> & Pick<TUpdate, keyof ColumnBuilderBaseConfig>>;
|
|
14
|
+
export declare abstract class ColumnBuilder<T extends ColumnBuilderBaseConfig> {
|
|
15
|
+
protected $config: T;
|
|
16
|
+
protected $brand: {
|
|
17
|
+
type: 'ColumnBuilder';
|
|
18
|
+
subtype: string;
|
|
10
19
|
};
|
|
11
20
|
constructor(name: string);
|
|
12
|
-
notNull(): ColumnBuilder<
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
notNull(): ColumnBuilder<UpdateColumnBuilderConfig<T, {
|
|
22
|
+
notNull: true;
|
|
23
|
+
}>>;
|
|
24
|
+
default(value: T['data'] | SQL): ColumnBuilder<UpdateColumnBuilderConfig<T, {
|
|
25
|
+
hasDefault: true;
|
|
26
|
+
}>>;
|
|
27
|
+
primaryKey(): ColumnBuilder<UpdateColumnBuilderConfig<T, {
|
|
28
|
+
notNull: true;
|
|
29
|
+
}>>;
|
|
15
30
|
}
|
|
31
|
+
export declare type AnyColumnBuilder<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = ColumnBuilder<UpdateColumnBuilderConfig<ColumnBuilderBaseConfig, TPartial>>;
|
package/column-builder.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ColumnBuilder = void 0;
|
|
4
|
+
// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.
|
|
4
5
|
class ColumnBuilder {
|
|
5
6
|
constructor(name) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
this.config = {
|
|
8
|
+
name,
|
|
9
|
+
notNull: false,
|
|
10
|
+
default: undefined,
|
|
11
|
+
primaryKey: false,
|
|
12
|
+
};
|
|
9
13
|
}
|
|
10
14
|
notNull() {
|
|
11
|
-
this.
|
|
15
|
+
this.config.notNull = true;
|
|
12
16
|
return this;
|
|
13
17
|
}
|
|
14
18
|
default(value) {
|
|
15
|
-
this.
|
|
19
|
+
this.config.default = value;
|
|
16
20
|
return this;
|
|
17
21
|
}
|
|
18
22
|
primaryKey() {
|
|
19
|
-
this.
|
|
23
|
+
this.config.primaryKey = true;
|
|
20
24
|
return this;
|
|
21
25
|
}
|
|
22
26
|
}
|
package/column-builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../src/column-builder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../src/column-builder.ts"],"names":[],"mappings":";;;AAuBA,+GAA+G;AAC/G,MAAsB,aAAa;IAelC,YAAY,IAAY;QACvB,IAAI,CAAC,MAAM,GAAG;YACb,IAAI;YACJ,OAAO,EAAE,KAAqB;YAC9B,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,KAAK;SACjB,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAoB,CAAC;QAC3C,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,OAAO,CACN,KAAsB;QAEtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAsC,CAAC;IAC/C,CAAC;CACD;AAxCD,sCAwCC"}
|
package/column.d.ts
CHANGED
|
@@ -1,31 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { ColumnBuilder, ColumnBuilderBaseConfig, ColumnBuilderConfig } from './column-builder';
|
|
2
|
+
import { DriverValueMapper, SQL } from './sql';
|
|
3
|
+
import { Table } from './table';
|
|
4
|
+
import { RequiredKeys } from './utils';
|
|
5
|
+
export interface ColumnBaseConfig extends ColumnBuilderBaseConfig {
|
|
6
|
+
tableName: string;
|
|
7
|
+
}
|
|
8
|
+
export declare type ColumnConfig<TPartial extends Partial<ColumnBaseConfig> = {}> = UpdateColumnConfig<ColumnBuilderConfig & {
|
|
9
|
+
tableName: string;
|
|
10
|
+
}, TPartial>;
|
|
11
|
+
export declare type UpdateColumnConfig<T extends ColumnBaseConfig, TUpdate extends Partial<ColumnBaseConfig>> = {} extends TUpdate ? T : RequiredKeys<Omit<T, keyof TUpdate> & Pick<TUpdate, keyof ColumnBaseConfig>>;
|
|
12
|
+
export declare abstract class Column<T extends ColumnBaseConfig> implements DriverValueMapper<T['data'], T['driverParam']> {
|
|
13
|
+
readonly table: Table<T['tableName']>;
|
|
14
|
+
protected $brand: 'Column';
|
|
15
|
+
protected $config: T;
|
|
16
|
+
protected $data: T['data'];
|
|
17
|
+
protected $driverParam: T['driverParam'];
|
|
18
|
+
protected $notNull: T['notNull'];
|
|
19
|
+
protected $hasDefault: T['hasDefault'];
|
|
15
20
|
readonly name: string;
|
|
16
21
|
readonly primary: boolean;
|
|
17
|
-
readonly notNull:
|
|
18
|
-
readonly default:
|
|
19
|
-
constructor(table:
|
|
22
|
+
readonly notNull: boolean;
|
|
23
|
+
readonly default: T['data'] | SQL | undefined;
|
|
24
|
+
constructor(table: Table<T['tableName']>, builder: ColumnBuilder<Omit<T, 'tableName'>>);
|
|
20
25
|
abstract getSQLType(): string;
|
|
21
|
-
mapFromDriverValue(value:
|
|
22
|
-
mapToDriverValue(value:
|
|
26
|
+
mapFromDriverValue(value: T['driverParam']): T['data'];
|
|
27
|
+
mapToDriverValue(value: T['data']): T['driverParam'];
|
|
23
28
|
}
|
|
24
|
-
export declare type AnyColumn<
|
|
25
|
-
export declare
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
export declare type AnyColumn<TPartial extends Partial<ColumnBaseConfig> = {}> = Column<UpdateColumnConfig<ColumnBaseConfig, TPartial>>;
|
|
30
|
+
export declare type GetColumnData<TColumn extends AnyColumn, TInferMode extends 'query' | 'raw' = 'query'> = TColumn extends AnyColumn<{
|
|
31
|
+
data: infer TData;
|
|
32
|
+
notNull: infer TNotNull extends boolean;
|
|
33
|
+
}> ? TInferMode extends 'raw' ? TData : TNotNull extends true ? TData : TData | null : never;
|
|
34
|
+
/**
|
|
35
|
+
`GetColumnConfig` can be used to infer either the full config of the column or a single parameter.
|
|
36
|
+
@example
|
|
37
|
+
type TConfig = GetColumnConfig<typeof column>;
|
|
38
|
+
type TNotNull = GetColumnConfig<typeof column, 'notNull'>;
|
|
39
|
+
*/
|
|
40
|
+
export declare type GetColumnConfig<TColumn extends AnyColumn, TParam extends keyof ColumnBaseConfig | undefined = undefined> = TColumn extends Column<infer TConfig> ? TParam extends keyof ColumnBaseConfig ? TConfig[TParam] : TConfig : never;
|
|
28
41
|
export declare type InferColumnsDataTypes<TColumns extends Record<string, AnyColumn>> = {
|
|
29
42
|
[Key in keyof TColumns]: GetColumnData<TColumns[Key], 'query'>;
|
|
30
43
|
};
|
|
31
|
-
export declare type InferColumnTable<T extends AnyColumn> = T extends AnyColumn<infer TTable> ? TTable : never;
|
package/column.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.Column = void 0;
|
|
4
|
+
/*
|
|
5
|
+
`Column` only accepts a full `ColumnConfig` as its generic.
|
|
6
|
+
To infer parts of the config, use `AnyColumn` that accepts a partial config.
|
|
7
|
+
See `GetColumnData` for example usage of inferring.
|
|
8
|
+
*/
|
|
5
9
|
class Column {
|
|
6
10
|
constructor(table, builder) {
|
|
7
11
|
this.table = table;
|
|
8
|
-
this.name = builder.name;
|
|
9
|
-
this.notNull = builder.
|
|
10
|
-
this.default = builder.
|
|
11
|
-
this.primary = builder.
|
|
12
|
+
this.name = builder.config.name;
|
|
13
|
+
this.notNull = builder.config.notNull;
|
|
14
|
+
this.default = builder.config.default;
|
|
15
|
+
this.primary = builder.config.primaryKey;
|
|
12
16
|
}
|
|
13
17
|
mapFromDriverValue(value) {
|
|
14
18
|
return value;
|
|
@@ -18,8 +22,4 @@ class Column {
|
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
24
|
exports.Column = Column;
|
|
21
|
-
function param(value, mapper) {
|
|
22
|
-
return new sql_1.BoundParamValue(value, mapper);
|
|
23
|
-
}
|
|
24
|
-
exports.param = param;
|
|
25
25
|
//# sourceMappingURL=column.js.map
|
package/column.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.js","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"column.js","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":";;;AAqBA;;;;EAIE;AACF,MAAsB,MAAM;IAa3B,YAAqB,KAA4B,EAAE,OAA4C;QAA1E,UAAK,GAAL,KAAK,CAAuB;QAChD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,CAAC;IAID,kBAAkB,CAAC,KAAuB;QACzC,OAAO,KAAY,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,KAAgB;QAChC,OAAO,KAAY,CAAC;IACrB,CAAC;CACD;AA7BD,wBA6BC"}
|
package/connection.d.ts
CHANGED
|
@@ -3,9 +3,6 @@ export declare type MigrationMeta = {
|
|
|
3
3
|
folderMillis: number;
|
|
4
4
|
hash: string;
|
|
5
5
|
};
|
|
6
|
-
export interface Session<TQueryParam, TQueryResponse> {
|
|
7
|
-
query(query: string, params: TQueryParam[]): TQueryResponse;
|
|
8
|
-
}
|
|
9
6
|
export interface Logger {
|
|
10
7
|
logQuery(query: string, params: unknown[]): void;
|
|
11
8
|
}
|
|
@@ -15,18 +12,6 @@ export declare class DefaultLogger implements Logger {
|
|
|
15
12
|
export declare class NoopLogger implements Logger {
|
|
16
13
|
logQuery(): void;
|
|
17
14
|
}
|
|
18
|
-
export interface Driver<TSession> {
|
|
19
|
-
connect(): Promise<TSession>;
|
|
20
|
-
}
|
|
21
|
-
export interface Dialect<TSession, TDatabase> {
|
|
22
|
-
createDB(session: TSession): TDatabase;
|
|
23
|
-
migrate(migrations: MigrationMeta[], session: TSession): Promise<void>;
|
|
24
|
-
}
|
|
25
|
-
export interface Connector<TSession, TOperations> {
|
|
26
|
-
dialect: Dialect<TSession, TOperations>;
|
|
27
|
-
driver: Driver<TSession>;
|
|
28
|
-
}
|
|
29
|
-
export declare function connect<TSession, TDatabase>(connector: Connector<TSession, TDatabase>): Promise<TDatabase>;
|
|
30
15
|
export interface KitConfig {
|
|
31
16
|
out: string;
|
|
32
17
|
schema: string;
|
|
@@ -34,5 +19,4 @@ export interface KitConfig {
|
|
|
34
19
|
export interface MigrationConfig {
|
|
35
20
|
migrationsFolder: string;
|
|
36
21
|
}
|
|
37
|
-
export declare function
|
|
38
|
-
export declare function migrate<TSession, TDatabase>(connector: Connector<TSession, TDatabase>, config: MigrationConfig): Promise<void>;
|
|
22
|
+
export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
|
package/connection.js
CHANGED
|
@@ -22,17 +22,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
26
|
+
exports.readMigrationFiles = exports.NoopLogger = exports.DefaultLogger = void 0;
|
|
36
27
|
const crypto = __importStar(require("crypto"));
|
|
37
28
|
const fs = __importStar(require("fs"));
|
|
38
29
|
const path = __importStar(require("path"));
|
|
@@ -46,56 +37,46 @@ class NoopLogger {
|
|
|
46
37
|
logQuery() { }
|
|
47
38
|
}
|
|
48
39
|
exports.NoopLogger = NoopLogger;
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (!migrationFolderTo) {
|
|
68
|
-
throw Error('no migration folder defined');
|
|
69
|
-
}
|
|
70
|
-
const files1 = fs.readdirSync(migrationFolderTo);
|
|
71
|
-
const migrationQueries = [];
|
|
72
|
-
for (const migrationFolder of files1) {
|
|
73
|
-
if (migrationFolder === '.DS_Store') {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const migrationFiles = fs.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
|
|
77
|
-
const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
|
|
78
|
-
const query = fs
|
|
79
|
-
.readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
|
|
80
|
-
.toString();
|
|
81
|
-
const year = Number(migrationFolder.slice(0, 4));
|
|
82
|
-
// second param for Date() is month index, that started from 0, so we need
|
|
83
|
-
// to decrement a value for month
|
|
84
|
-
const month = Number(migrationFolder.slice(4, 6)) - 1;
|
|
85
|
-
const day = Number(migrationFolder.slice(6, 8));
|
|
86
|
-
const hour = Number(migrationFolder.slice(8, 10));
|
|
87
|
-
const min = Number(migrationFolder.slice(10, 12));
|
|
88
|
-
const sec = Number(migrationFolder.slice(12, 14));
|
|
89
|
-
const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
|
|
90
|
-
migrationQueries.push({
|
|
91
|
-
sql: query,
|
|
92
|
-
folderMillis: folderAsMillis,
|
|
93
|
-
hash: crypto.createHash('sha256').update(query).digest('hex'),
|
|
94
|
-
});
|
|
40
|
+
function readMigrationFiles(config) {
|
|
41
|
+
let migrationFolderTo;
|
|
42
|
+
if (typeof config === 'string') {
|
|
43
|
+
const configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');
|
|
44
|
+
const jsonConfig = JSON.parse(configAsString);
|
|
45
|
+
migrationFolderTo = jsonConfig.out;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
migrationFolderTo = config.migrationsFolder;
|
|
49
|
+
}
|
|
50
|
+
if (!migrationFolderTo) {
|
|
51
|
+
throw Error('no migration folder defined');
|
|
52
|
+
}
|
|
53
|
+
const files1 = fs.readdirSync(migrationFolderTo);
|
|
54
|
+
const migrationQueries = [];
|
|
55
|
+
for (const migrationFolder of files1) {
|
|
56
|
+
if (migrationFolder === '.DS_Store') {
|
|
57
|
+
continue;
|
|
95
58
|
}
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
59
|
+
const migrationFiles = fs.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
|
|
60
|
+
const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
|
|
61
|
+
const query = fs
|
|
62
|
+
.readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
|
|
63
|
+
.toString();
|
|
64
|
+
const year = Number(migrationFolder.slice(0, 4));
|
|
65
|
+
// second param for Date() is month index, that started from 0, so we need
|
|
66
|
+
// to decrement a value for month
|
|
67
|
+
const month = Number(migrationFolder.slice(4, 6)) - 1;
|
|
68
|
+
const day = Number(migrationFolder.slice(6, 8));
|
|
69
|
+
const hour = Number(migrationFolder.slice(8, 10));
|
|
70
|
+
const min = Number(migrationFolder.slice(10, 12));
|
|
71
|
+
const sec = Number(migrationFolder.slice(12, 14));
|
|
72
|
+
const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
|
|
73
|
+
migrationQueries.push({
|
|
74
|
+
sql: query,
|
|
75
|
+
folderMillis: folderAsMillis,
|
|
76
|
+
hash: crypto.createHash('sha256').update(query).digest('hex'),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return migrationQueries;
|
|
99
80
|
}
|
|
100
|
-
exports.
|
|
81
|
+
exports.readMigrationFiles = readMigrationFiles;
|
|
101
82
|
//# sourceMappingURL=connection.js.map
|
package/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -14,10 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.sql = void 0;
|
|
18
|
-
var sql_1 = require("./sql");
|
|
19
|
-
Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return sql_1.sql; } });
|
|
20
|
-
__exportStar(require("./table"), exports);
|
|
17
|
+
exports.Table = exports.sql = exports.param = void 0;
|
|
21
18
|
__exportStar(require("./column"), exports);
|
|
22
19
|
__exportStar(require("./connection"), exports);
|
|
20
|
+
var sql_1 = require("./sql");
|
|
21
|
+
Object.defineProperty(exports, "param", { enumerable: true, get: function () { return sql_1.param; } });
|
|
22
|
+
Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return sql_1.sql; } });
|
|
23
|
+
var table_1 = require("./table");
|
|
24
|
+
Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return table_1.Table; } });
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,6BAAmC;AAA1B,4FAAA,KAAK,OAAA;AAAE,0FAAA,GAAG,OAAA;AACnB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|
package/operations.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { AnyColumn } from './column';
|
|
2
|
+
import { SQL, SQLResponse } from './sql';
|
|
3
|
+
export declare type RequiredKeyOnly<TKey extends string, T extends AnyColumn> = T extends AnyColumn<{
|
|
4
|
+
notNull: true;
|
|
5
|
+
hasDefault: false;
|
|
6
|
+
}> ? TKey : never;
|
|
5
7
|
export declare type OptionalKeyOnly<TKey extends string, T extends AnyColumn> = TKey extends RequiredKeyOnly<TKey, T> ? never : TKey;
|
|
6
|
-
export declare type SelectFields<TTableName extends
|
|
7
|
-
[key: string]: SQL
|
|
8
|
+
export declare type SelectFields<TTableName extends string, TColumnDriverParam> = {
|
|
9
|
+
[key: string]: SQL | SQLResponse | AnyColumn<{
|
|
10
|
+
tableName: TTableName;
|
|
11
|
+
driverParam: TColumnDriverParam;
|
|
12
|
+
}>;
|
|
8
13
|
};
|
|
9
14
|
export declare type SelectFieldsOrdered = {
|
|
10
15
|
name: string;
|
|
11
16
|
resultTableName: string;
|
|
12
|
-
|
|
17
|
+
field: AnyColumn | SQL | SQLResponse;
|
|
13
18
|
}[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-orm",
|
|
3
|
-
"version": "0.12.0-beta.
|
|
3
|
+
"version": "0.12.0-beta.7",
|
|
4
4
|
"description": "Drizzle ORM package for SQL databases",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"build": "tsc",
|
|
69
69
|
"pack": "cp package.json dist/ && (cd dist && pnpm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
|
|
70
70
|
"publish:beta": "pnpm publish package.tgz --tag beta --git-checks false",
|
|
71
|
+
"release:beta": "pnpm build && pnpm version prerelease && pnpm run pack && pnpm publish:beta",
|
|
71
72
|
"build:int": "pnpm build && pnpm run pack"
|
|
72
73
|
}
|
|
73
74
|
}
|
|
@@ -1,35 +1,33 @@
|
|
|
1
|
-
import { ColumnNotNull, TableName } from '../../branded-types';
|
|
2
1
|
import { AnyColumn, GetColumnData } from '../../column';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export declare function eq
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function ne
|
|
8
|
-
export declare function
|
|
9
|
-
declare
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function
|
|
14
|
-
export declare function
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function
|
|
17
|
-
export declare function
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export declare function isNotNull
|
|
27
|
-
export declare function exists
|
|
28
|
-
export declare function notExists
|
|
29
|
-
export declare function between<
|
|
30
|
-
export declare function notBetween<
|
|
31
|
-
export declare function like
|
|
32
|
-
export declare function notLike
|
|
33
|
-
export declare function ilike
|
|
34
|
-
export declare function notIlike
|
|
35
|
-
export {};
|
|
2
|
+
import { SQL, SQLWrapper } from '..';
|
|
3
|
+
export declare function eq<TColumn extends AnyColumn>(column: TColumn, value: GetColumnData<TColumn, 'raw'>): SQL;
|
|
4
|
+
export declare function eq(left: AnyColumn, right: AnyColumn): SQL;
|
|
5
|
+
export declare function ne<TColumn extends AnyColumn>(column: TColumn, value: GetColumnData<TColumn>): SQL;
|
|
6
|
+
export declare function ne(left: AnyColumn, right: AnyColumn): SQL;
|
|
7
|
+
export declare function and(...conditions: (SQL | undefined)[]): SQL | undefined;
|
|
8
|
+
export declare function or(...conditions: (SQL | undefined)[]): SQL | undefined;
|
|
9
|
+
export declare function not(condition: SQL): SQL;
|
|
10
|
+
export declare function gt<TColumn extends AnyColumn>(column: TColumn, value: GetColumnData<TColumn>): SQL;
|
|
11
|
+
export declare function gt(left: AnyColumn, right: AnyColumn): SQL;
|
|
12
|
+
export declare function gte<TColumn extends AnyColumn>(column: TColumn, value: GetColumnData<TColumn>): SQL;
|
|
13
|
+
export declare function gte(left: AnyColumn, right: AnyColumn): SQL;
|
|
14
|
+
export declare function lt<TColumn extends AnyColumn>(column: TColumn, value: GetColumnData<TColumn>): SQL;
|
|
15
|
+
export declare function lt(left: AnyColumn, right: AnyColumn): SQL;
|
|
16
|
+
export declare function lte<TColumn extends AnyColumn>(column: TColumn, value: GetColumnData<TColumn>): SQL;
|
|
17
|
+
export declare function lte(left: AnyColumn, right: AnyColumn): SQL;
|
|
18
|
+
export declare function inArray<TColumn extends AnyColumn>(column: TColumn, values: GetColumnData<TColumn>[]): SQL;
|
|
19
|
+
export declare function inArray(column: AnyColumn, subquery: SQLWrapper): SQL;
|
|
20
|
+
export declare function notInArray<TColumn extends AnyColumn>(column: TColumn, values: GetColumnData<TColumn>[]): SQL;
|
|
21
|
+
export declare function notInArray(column: AnyColumn, subquery: SQLWrapper): SQL;
|
|
22
|
+
export declare function isNull(column: AnyColumn<{
|
|
23
|
+
notNull: false;
|
|
24
|
+
}>): SQL;
|
|
25
|
+
export declare function isNotNull(column: AnyColumn): SQL;
|
|
26
|
+
export declare function exists(subquery: SQLWrapper): SQL;
|
|
27
|
+
export declare function notExists(subquery: SQLWrapper): SQL;
|
|
28
|
+
export declare function between<TColumn extends AnyColumn>(column: TColumn, min: GetColumnData<TColumn, 'raw'>, max: GetColumnData<TColumn, 'raw'>): SQL;
|
|
29
|
+
export declare function notBetween<TColumn extends AnyColumn>(column: TColumn, min: GetColumnData<TColumn, 'raw'>, max: GetColumnData<TColumn, 'raw'>): SQL;
|
|
30
|
+
export declare function like(column: AnyColumn, value: string): SQL;
|
|
31
|
+
export declare function notLike(column: AnyColumn, value: string): SQL;
|
|
32
|
+
export declare function ilike(column: AnyColumn, value: string): SQL;
|
|
33
|
+
export declare function notIlike(column: AnyColumn, value: string): SQL;
|
|
@@ -8,7 +8,7 @@ function bindIfParam(value, column) {
|
|
|
8
8
|
return value;
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
|
-
return new __1.
|
|
11
|
+
return new __1.Param(value, column);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
function eq(left, right) {
|
|
@@ -84,7 +84,7 @@ function inArray(column, values) {
|
|
|
84
84
|
if (values.length === 0) {
|
|
85
85
|
throw new Error('inArray requires at least one value');
|
|
86
86
|
}
|
|
87
|
-
return (0, __1.sql) `${column} in ${values.map((v) => new __1.
|
|
87
|
+
return (0, __1.sql) `${column} in ${values.map((v) => new __1.Param(v, column))}`;
|
|
88
88
|
}
|
|
89
89
|
exports.inArray = inArray;
|
|
90
90
|
function notInArray(column, values) {
|
|
@@ -94,7 +94,7 @@ function notInArray(column, values) {
|
|
|
94
94
|
if (values.length === 0) {
|
|
95
95
|
throw new Error('notInArray requires at least one value');
|
|
96
96
|
}
|
|
97
|
-
return (0, __1.sql) `${column} not in ${values.map((v) => new __1.
|
|
97
|
+
return (0, __1.sql) `${column} not in ${values.map((v) => new __1.Param(v, column))}`;
|
|
98
98
|
}
|
|
99
99
|
exports.notInArray = notInArray;
|
|
100
100
|
function isNull(column) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../src/sql/expressions/conditions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../src/sql/expressions/conditions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { TableName } from '../../branded-types';
|
|
2
1
|
import { AnyColumn } from '../../column';
|
|
3
2
|
import { SQL } from '..';
|
|
4
|
-
export declare function asc
|
|
5
|
-
export declare function desc
|
|
3
|
+
export declare function asc(column: AnyColumn): SQL;
|
|
4
|
+
export declare function desc(column: AnyColumn): SQL;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/sql/expressions/select.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/sql/expressions/select.ts"],"names":[],"mappings":";;;AACA,0BAA8B;AAE9B,SAAgB,GAAG,CAAC,MAAiB;IACpC,OAAO,IAAA,OAAG,EAAA,GAAG,MAAM,MAAM,CAAC;AAC3B,CAAC;AAFD,kBAEC;AAED,SAAgB,IAAI,CAAC,MAAiB;IACrC,OAAO,IAAA,OAAG,EAAA,GAAG,MAAM,OAAO,CAAC;AAC5B,CAAC;AAFD,oBAEC"}
|
package/sql/index.d.ts
CHANGED
|
@@ -1,37 +1,35 @@
|
|
|
1
|
-
import { ColumnData, ColumnDriverParam, TableName, Unwrap } from '../branded-types';
|
|
2
1
|
import { AnyColumn } from '../column';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { Table } from '../table';
|
|
3
|
+
/**
|
|
4
|
+
* This class is used to indicate a primitive param value that is used in `sql` tag.
|
|
5
|
+
* It is only used on type level and is never instantiated at runtime.
|
|
6
|
+
* If you see a value of this type in the code, its runtime value is actually the primitive param value.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FakePrimitiveParam {
|
|
7
9
|
}
|
|
8
|
-
export declare type Chunk
|
|
10
|
+
export declare type Chunk = string | Table | AnyColumn | Name | Param;
|
|
9
11
|
export interface BuildQueryConfig {
|
|
10
12
|
escapeName(name: string): string;
|
|
11
13
|
escapeParam(num: number, value: unknown): string;
|
|
12
14
|
}
|
|
13
|
-
export interface PreparedQuery
|
|
15
|
+
export interface PreparedQuery {
|
|
14
16
|
sql: string;
|
|
15
|
-
params:
|
|
17
|
+
params: unknown[];
|
|
16
18
|
}
|
|
17
19
|
export interface SQLWrapper {
|
|
18
|
-
getSQL():
|
|
20
|
+
getSQL(): SQL;
|
|
19
21
|
}
|
|
20
22
|
export declare function isSQLWrapper(param: unknown): param is SQLWrapper;
|
|
21
|
-
export declare class SQL
|
|
22
|
-
readonly queryChunks: Chunk
|
|
23
|
-
protected
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
getSQL(): AnySQL<TTableName>;
|
|
30
|
-
as<TDecoder extends DriverValueDecoder<any, any> | DriverValueDecoder<any, any>['mapFromDriverValue']>(decoder: TDecoder): SQLResponse<TTableName, GetDecoderColumnData<TDecoder>>;
|
|
31
|
-
as<TData>(): SQLResponse<TTableName, ColumnData<TData>>;
|
|
23
|
+
export declare class SQL implements SQLWrapper {
|
|
24
|
+
readonly queryChunks: Chunk[];
|
|
25
|
+
protected $brand: 'SQL';
|
|
26
|
+
constructor(queryChunks: Chunk[]);
|
|
27
|
+
toQuery({ escapeName, escapeParam }: BuildQueryConfig): PreparedQuery;
|
|
28
|
+
getSQL(): SQL;
|
|
29
|
+
as<TDecoder extends DriverValueDecoder<any, any> | DriverValueDecoder<any, any>['mapFromDriverValue']>(decoder: TDecoder): SQLResponse<GetDecoderColumnData<TDecoder>>;
|
|
30
|
+
as<TData>(): SQLResponse<TData>;
|
|
32
31
|
}
|
|
33
|
-
export declare type GetDecoderColumnData<T> = T extends DriverValueDecoder<infer TData, any>
|
|
34
|
-
export declare type AnySQL<TTableName extends TableName = TableName> = SQL<TTableName>;
|
|
32
|
+
export declare type GetDecoderColumnData<T> = T extends DriverValueDecoder<infer TData, any> | DriverValueDecoder<infer TData, any>['mapFromDriverValue'] ? TData : never;
|
|
35
33
|
/**
|
|
36
34
|
* Any DB name (table, column, index etc.)
|
|
37
35
|
*/
|
|
@@ -51,39 +49,32 @@ export declare const noopEncoder: DriverValueEncoder<any, any>;
|
|
|
51
49
|
export interface DriverValueMapper<TData, TDriverParam> extends DriverValueDecoder<TData, TDriverParam>, DriverValueEncoder<TData, TDriverParam> {
|
|
52
50
|
}
|
|
53
51
|
export declare const noopMapper: DriverValueMapper<any, any>;
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
* @param value - Parameter value to bind
|
|
57
|
-
* @param mapper - Mapper to use to convert the value to/from the driver parameter
|
|
58
|
-
*/
|
|
59
|
-
export declare class BoundParamValue<TDataType extends ColumnData, TDriverParamType extends ColumnDriverParam> {
|
|
52
|
+
/** Parameter value that is optionally bound to an encoder (for example, a column). */
|
|
53
|
+
export declare class Param<TDataType = unknown, TDriverParamType = TDataType> {
|
|
60
54
|
readonly value: TDataType;
|
|
61
|
-
readonly
|
|
55
|
+
readonly encoder: DriverValueEncoder<TDataType, TDriverParamType>;
|
|
62
56
|
protected brand: 'BoundParamValue';
|
|
63
|
-
|
|
57
|
+
/**
|
|
58
|
+
* @param value - Parameter value
|
|
59
|
+
* @param encoder - Encoder to convert the value to a driver parameter
|
|
60
|
+
*/
|
|
61
|
+
constructor(value: TDataType, encoder?: DriverValueEncoder<TDataType, TDriverParamType>);
|
|
64
62
|
}
|
|
65
|
-
export declare
|
|
66
|
-
export declare type SQLSourceParam
|
|
67
|
-
export declare
|
|
68
|
-
export declare function sql<TTableName extends TableName>(strings: TemplateStringsArray, ...params: (SQLSourceParam<TTableName> | PrimitiveDriverParam)[]): SQL<TTableName>;
|
|
69
|
-
export declare function sql<TTableName extends string>(strings: TemplateStringsArray, ...params: (SQLSourceParam<TableName<TTableName>> | PrimitiveDriverParam)[]): SQL<TableName<TTableName>>;
|
|
63
|
+
export declare function param<TData, TDriver>(value: TData, encoder?: DriverValueEncoder<TData, TDriver>): Param<TData, TDriver>;
|
|
64
|
+
export declare type SQLSourceParam = SQLSourceParam[] | SQLWrapper | SQL | Table | AnyColumn | Param | Name | undefined | FakePrimitiveParam;
|
|
65
|
+
export declare function sql(strings: TemplateStringsArray, ...params: any[]): SQL;
|
|
70
66
|
export declare namespace sql {
|
|
71
|
-
function empty():
|
|
72
|
-
function fromList
|
|
67
|
+
function empty(): SQL;
|
|
68
|
+
function fromList(list: SQLSourceParam[]): SQL;
|
|
73
69
|
/**
|
|
74
70
|
* Convenience function to create an SQL query from a raw string.
|
|
75
71
|
* @param str The raw SQL query string.
|
|
76
72
|
*/
|
|
77
|
-
function raw
|
|
73
|
+
function raw(str: string): SQL;
|
|
78
74
|
}
|
|
79
|
-
export declare class SQLResponse<
|
|
80
|
-
readonly sql: SQL
|
|
75
|
+
export declare class SQLResponse<TValue = unknown> {
|
|
76
|
+
readonly sql: SQL;
|
|
81
77
|
readonly decoder: DriverValueDecoder<TValue, any>;
|
|
82
|
-
protected
|
|
83
|
-
|
|
84
|
-
tableName: TTableName;
|
|
85
|
-
value: TValue;
|
|
86
|
-
};
|
|
87
|
-
constructor(sql: SQL<TTableName>, decoder: DriverValueDecoder<TValue, any>);
|
|
78
|
+
protected $brand: 'SQLResponse';
|
|
79
|
+
constructor(sql: SQL, decoder: DriverValueDecoder<TValue, any>);
|
|
88
80
|
}
|
|
89
|
-
export declare type AnySQLResponse<TTableName extends TableName = TableName> = SQLResponse<TTableName, any>;
|
package/sql/index.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SQLResponse = exports.sql = exports.
|
|
3
|
+
exports.SQLResponse = exports.sql = exports.param = exports.Param = exports.noopMapper = exports.noopEncoder = exports.noopDecoder = exports.Name = exports.SQL = exports.isSQLWrapper = exports.FakePrimitiveParam = void 0;
|
|
4
4
|
const column_1 = require("../column");
|
|
5
5
|
const table_1 = require("../table");
|
|
6
|
-
|
|
7
|
-
class
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
/**
|
|
7
|
+
* This class is used to indicate a primitive param value that is used in `sql` tag.
|
|
8
|
+
* It is only used on type level and is never instantiated at runtime.
|
|
9
|
+
* If you see a value of this type in the code, its runtime value is actually the primitive param value.
|
|
10
|
+
*/
|
|
11
|
+
class FakePrimitiveParam {
|
|
11
12
|
}
|
|
12
|
-
exports.
|
|
13
|
+
exports.FakePrimitiveParam = FakePrimitiveParam;
|
|
13
14
|
function isSQLWrapper(param) {
|
|
14
15
|
return !!param && typeof param === 'object' && 'getSQL' in param;
|
|
15
16
|
}
|
|
@@ -28,14 +29,14 @@ class SQL {
|
|
|
28
29
|
return escapeName(chunk.value);
|
|
29
30
|
}
|
|
30
31
|
else if (chunk instanceof table_1.Table) {
|
|
31
|
-
return escapeName(chunk[
|
|
32
|
+
return escapeName(chunk[table_1.Table.Symbol.Name]);
|
|
32
33
|
}
|
|
33
34
|
else if (chunk instanceof column_1.Column) {
|
|
34
|
-
return escapeName(chunk.table[
|
|
35
|
+
return escapeName(chunk.table[table_1.Table.Symbol.Name]) + '.' + escapeName(chunk.name);
|
|
35
36
|
}
|
|
36
37
|
else if (chunk instanceof Param) {
|
|
37
|
-
params.push(chunk.value);
|
|
38
|
-
return escapeParam(params.length, chunk.value);
|
|
38
|
+
params.push(chunk.encoder.mapToDriverValue(chunk.value));
|
|
39
|
+
return escapeParam(params.length - 1, chunk.value);
|
|
39
40
|
}
|
|
40
41
|
else {
|
|
41
42
|
const err = new Error('Unexpected chunk type!');
|
|
@@ -48,7 +49,7 @@ class SQL {
|
|
|
48
49
|
.trim()
|
|
49
50
|
.replace(/\s{2,}/g, ' ')
|
|
50
51
|
.replace(/\n+/g, '');
|
|
51
|
-
return { sql: sqlString, params
|
|
52
|
+
return { sql: sqlString, params };
|
|
52
53
|
}
|
|
53
54
|
getSQL() {
|
|
54
55
|
return this;
|
|
@@ -74,18 +75,22 @@ exports.noopEncoder = {
|
|
|
74
75
|
mapToDriverValue: (value) => value,
|
|
75
76
|
};
|
|
76
77
|
exports.noopMapper = Object.assign(Object.assign({}, exports.noopDecoder), exports.noopEncoder);
|
|
77
|
-
/**
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
constructor(value,
|
|
78
|
+
/** Parameter value that is optionally bound to an encoder (for example, a column). */
|
|
79
|
+
class Param {
|
|
80
|
+
/**
|
|
81
|
+
* @param value - Parameter value
|
|
82
|
+
* @param encoder - Encoder to convert the value to a driver parameter
|
|
83
|
+
*/
|
|
84
|
+
constructor(value, encoder = exports.noopEncoder) {
|
|
84
85
|
this.value = value;
|
|
85
|
-
this.
|
|
86
|
+
this.encoder = encoder;
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
exports.
|
|
89
|
+
exports.Param = Param;
|
|
90
|
+
function param(value, encoder) {
|
|
91
|
+
return new Param(value, encoder);
|
|
92
|
+
}
|
|
93
|
+
exports.param = param;
|
|
89
94
|
function buildChunksFromParam(param) {
|
|
90
95
|
if (Array.isArray(param)) {
|
|
91
96
|
const result = ['('];
|
|
@@ -104,21 +109,23 @@ function buildChunksFromParam(param) {
|
|
|
104
109
|
else if (isSQLWrapper(param)) {
|
|
105
110
|
return buildChunksFromParam(param.getSQL());
|
|
106
111
|
}
|
|
107
|
-
else if (param instanceof table_1.Table
|
|
108
|
-
|| param instanceof column_1.Column
|
|
109
|
-
|| param instanceof Name) {
|
|
112
|
+
else if (param instanceof table_1.Table || param instanceof column_1.Column || param instanceof Name || param instanceof Param) {
|
|
110
113
|
return [param];
|
|
111
114
|
}
|
|
112
|
-
else if (param
|
|
113
|
-
return [new Param(param.mapper.mapToDriverValue(param.value))];
|
|
114
|
-
}
|
|
115
|
-
else if (typeof param !== 'undefined') {
|
|
115
|
+
else if (param !== undefined) {
|
|
116
116
|
return [new Param(param)];
|
|
117
117
|
}
|
|
118
118
|
else {
|
|
119
119
|
return [];
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
+
/*
|
|
123
|
+
The type of `params` is specified as `SQLSourceParam[]`, but that's slightly incorrect -
|
|
124
|
+
in runtime, users won't pass `FakePrimitiveParam` instances as `params` - they will pass primitive values
|
|
125
|
+
which will be wrapped in `Param` using `buildChunksFromParam(...)`. That's why the overload
|
|
126
|
+
specify `params` as `any[]` and not as `SQLSourceParam[]`. This type is used to make our lives easier and
|
|
127
|
+
the type checker happy.
|
|
128
|
+
*/
|
|
122
129
|
function sql(strings, ...params) {
|
|
123
130
|
const queryChunks = [];
|
|
124
131
|
if (params.length > 0 || (strings.length > 0 && strings[0] !== '')) {
|
package/sql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":";;;AAAA,sCAA8C;AAC9C,oCAAiC;AAEjC;;;;GAIG;AACH,MAAa,kBAAkB;CAAG;AAAlC,gDAAkC;AAuBlC,SAAgB,YAAY,CAAC,KAAc;IAC1C,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,CAAC;AAClE,CAAC;AAFD,oCAEC;AAED,MAAa,GAAG;IAGf,YAA4B,WAAoB;QAApB,gBAAW,GAAX,WAAW,CAAS;IAAG,CAAC;IAE7C,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAoB;QAC3D,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC9B,OAAO,KAAK,CAAC;aACb;iBAAM,IAAI,KAAK,YAAY,IAAI,EAAE;gBACjC,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC/B;iBAAM,IAAI,KAAK,YAAY,aAAK,EAAE;gBAClC,OAAO,UAAU,CAAC,KAAK,CAAC,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aAC5C;iBAAM,IAAI,KAAK,YAAY,eAAM,EAAE;gBACnC,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACjF;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzD,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;aACnD;iBAAM;gBACN,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,GAAG,CAAC;aACV;QACF,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM;aACtB,IAAI,CAAC,EAAE,CAAC;aACR,IAAI,EAAE;aACN,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEtB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC;IACb,CAAC;IAQD,EAAE,CACD,UAAgE,mBAAW;QAE3E,OAAO,IAAI,WAAW,CACrB,IAAI,EACJ,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CACzE,CAAC;IACH,CAAC;CACD;AAtDD,kBAsDC;AAOD;;GAEG;AACH,MAAa,IAAI;IAGhB,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;CAC7C;AAJD,oBAIC;AAUY,QAAA,WAAW,GAAiC;IACxD,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CACpC,CAAC;AAEW,QAAA,WAAW,GAAiC;IACxD,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CAClC,CAAC;AAMW,QAAA,UAAU,mCACnB,mBAAW,GACX,mBAAW,EACb;AAEF,sFAAsF;AACtF,MAAa,KAAK;IAGjB;;;OAGG;IACH,YACU,KAAgB,EAChB,UAA2D,mBAAW;QADtE,UAAK,GAAL,KAAK,CAAW;QAChB,YAAO,GAAP,OAAO,CAA+D;IAC7E,CAAC;CACJ;AAXD,sBAWC;AAED,SAAgB,KAAK,CACpB,KAAY,EACZ,OAA4C;IAE5C,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AALD,sBAKC;AAaD,SAAS,oBAAoB,CAAC,KAAqB;IAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,MAAM,GAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClB;QACF,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,MAAM,CAAC;KACd;SAAM,IAAI,KAAK,YAAY,GAAG,EAAE;QAChC,OAAO,KAAK,CAAC,WAAW,CAAC;KACzB;SAAM,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KAC5C;SAAM,IAAI,KAAK,YAAY,aAAK,IAAI,KAAK,YAAY,eAAM,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,KAAK,EAAE;QAChH,OAAO,CAAC,KAAK,CAAC,CAAC;KACf;SAAM,IAAI,KAAK,KAAK,SAAS,EAAE;QAC/B,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1B;SAAM;QACN,OAAO,EAAE,CAAC;KACV;AACF,CAAC;AAGD;;;;;;EAME;AACF,SAAgB,GAAG,CAAC,OAA6B,EAAE,GAAG,MAAwB;IAC7E,MAAM,WAAW,GAAY,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QACnE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;KAC9B;IACD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACpC,WAAW,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC;AAXD,kBAWC;AAED,WAAiB,GAAG;IACnB,SAAgB,KAAK;QACpB,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAFe,SAAK,QAEpB,CAAA;IAED,SAAgB,QAAQ,CAAC,IAAsB;QAC9C,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAFe,YAAQ,WAEvB,CAAA;IAED;;;OAGG;IACH,SAAgB,GAAG,CAAC,GAAW;QAC9B,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IAFe,OAAG,MAElB,CAAA;AACF,CAAC,EAhBgB,GAAG,GAAH,WAAG,KAAH,WAAG,QAgBnB;AAED,MAAa,WAAW;IAGvB,YAAqB,GAAQ,EAAW,OAAwC;QAA3D,QAAG,GAAH,GAAG,CAAK;QAAW,YAAO,GAAP,OAAO,CAAiC;IAAG,CAAC;CACpF;AAJD,kCAIC"}
|
package/table.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
protected typeKeeper: {
|
|
5
|
-
brand: 'Table';
|
|
6
|
-
name: TName;
|
|
7
|
-
};
|
|
1
|
+
export declare class Table<TName extends string = string> {
|
|
2
|
+
protected $brand: 'Table';
|
|
3
|
+
protected $name: TName;
|
|
8
4
|
constructor(name: TName);
|
|
9
5
|
}
|
|
10
|
-
export declare
|
|
6
|
+
export declare function getTableName<TTableName extends string>(table: Table<TTableName>): TTableName;
|
package/table.js
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Table = void 0;
|
|
4
|
-
|
|
3
|
+
exports.getTableName = exports.Table = exports.OriginalName = exports.Columns = exports.Name = void 0;
|
|
4
|
+
/** @internal */
|
|
5
|
+
exports.Name = Symbol('Name');
|
|
6
|
+
/** @internal */
|
|
7
|
+
exports.Columns = Symbol('Columns');
|
|
8
|
+
/** @internal */
|
|
9
|
+
exports.OriginalName = Symbol('OriginalName');
|
|
5
10
|
class Table {
|
|
6
11
|
constructor(name) {
|
|
7
|
-
this[
|
|
12
|
+
this[exports.Name] = this[exports.OriginalName] = name;
|
|
8
13
|
}
|
|
9
14
|
}
|
|
10
15
|
exports.Table = Table;
|
|
16
|
+
/** @internal */
|
|
17
|
+
Table.Symbol = {
|
|
18
|
+
Name: exports.Name,
|
|
19
|
+
OriginalName: exports.OriginalName,
|
|
20
|
+
Columns: exports.Columns,
|
|
21
|
+
};
|
|
22
|
+
function getTableName(table) {
|
|
23
|
+
return table[Table.Symbol.Name];
|
|
24
|
+
}
|
|
25
|
+
exports.getTableName = getTableName;
|
|
11
26
|
//# sourceMappingURL=table.js.map
|
package/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":";;;AAEA,gBAAgB;AACH,QAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAEnC,gBAAgB;AACH,QAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEzC,gBAAgB;AACH,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnD,MAAa,KAAK;IA0BjB,YAAY,IAAW;QACtB,IAAI,CAAC,YAAI,CAAC,GAAG,IAAI,CAAC,oBAAY,CAAC,GAAG,IAAI,CAAC;IACxC,CAAC;;AA5BF,sBA6BC;AAzBA,gBAAgB;AACA,YAAM,GAAG;IACxB,IAAI,EAAE,YAAmB;IACzB,YAAY,EAAE,oBAAmC;IACjD,OAAO,EAAE,eAAyB;CAClC,CAAC;AAsBH,SAAgB,YAAY,CAA4B,KAAwB;IAC/E,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAFD,oCAEC"}
|
package/utils.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ColumnData, ColumnDriverParam, TableName } from './branded-types';
|
|
2
|
-
import { AnyColumn } from './column';
|
|
3
1
|
import { SelectFieldsOrdered } from './operations';
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
export declare function mapResultRow<TResult extends Record<string, unknown>>(columns: SelectFieldsOrdered, row: unknown[], joinsNotNullable?: Record<string, boolean>): TResult;
|
|
3
|
+
export declare type RequiredKeys<T> = {
|
|
4
|
+
[K in keyof T]-?: T[K];
|
|
5
|
+
};
|
|
6
|
+
export declare type OneOrMany<T> = T | T[];
|
package/utils.js
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapResultRow =
|
|
3
|
+
exports.mapResultRow = void 0;
|
|
4
4
|
const column_1 = require("./column");
|
|
5
5
|
const sql_1 = require("./sql");
|
|
6
|
-
/** @internal */
|
|
7
|
-
exports.tableName = Symbol('tableName');
|
|
8
|
-
/** @internal */
|
|
9
|
-
exports.tableColumns = Symbol('tableColumns');
|
|
10
|
-
function getTableName(table) {
|
|
11
|
-
return table[exports.tableName];
|
|
12
|
-
}
|
|
13
|
-
exports.getTableName = getTableName;
|
|
14
6
|
function mapResultRow(columns, row, joinsNotNullable) {
|
|
15
|
-
const result = columns.reduce((res, { name, resultTableName,
|
|
7
|
+
const result = columns.reduce((res, { name, resultTableName, field: columnOrResponse }, index) => {
|
|
16
8
|
let decoder;
|
|
17
9
|
if (columnOrResponse instanceof column_1.Column) {
|
|
18
10
|
decoder = columnOrResponse;
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,+BAAyC;AAGzC,SAAgB,YAAY,CAC3B,OAA4B,EAC5B,GAAc,EACd,gBAA0C;IAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE;QAClE,IAAI,OAAO,CAAC;QACZ,IAAI,gBAAgB,YAAY,eAAM,EAAE;YACvC,OAAO,GAAG,gBAAgB,CAAC;SAC3B;aAAM,IAAI,gBAAgB,YAAY,SAAG,EAAE;YAC3C,OAAO,GAAG,iBAAW,CAAC;SACtB;aAAM;YACN,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;SACnC;QACD,IAAI,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,EAAE;YAC9B,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;SAC1B;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAE,CAAC;QAC7B,GAAG,CAAC,eAAe,CAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC9F,OAAO,GAAG,CAAC;IACZ,CAAC,EACD,EAAE,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAY,CAAC;KAC3C;IAED,IAAI,CAAC,gBAAgB,EAAE;QACtB,OAAO,MAAiB,CAAC;KACzB;IAED,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;QACvD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE;gBAChB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACzB;SACD;QACD,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CACS,CAAC;AACd,CAAC;AA5CD,oCA4CC"}
|