kysely 0.27.3 → 0.27.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.renovaterc.json +3 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +7 -7
- package/deno.check.d.ts +86 -0
- package/deno.check.json +21 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +13 -3
- package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
- package/dist/cjs/dialect/dialect-adapter.d.ts +16 -2
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +12 -7
- package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +83 -55
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +114 -48
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/cjs/driver/database-connection.d.ts +3 -1
- package/dist/cjs/driver/dummy-driver.d.ts +13 -12
- package/dist/cjs/driver/dummy-driver.js +13 -12
- package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/cjs/dynamic/dynamic.d.ts +7 -7
- package/dist/cjs/dynamic/dynamic.js +7 -7
- package/dist/cjs/expression/expression-builder.d.ts +153 -62
- package/dist/cjs/expression/expression-builder.js +2 -3
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
- package/dist/cjs/expression/expression.d.ts +40 -5
- package/dist/cjs/expression/expression.js +2 -3
- package/dist/cjs/helpers/mssql.d.ts +74 -14
- package/dist/cjs/helpers/mssql.js +77 -18
- package/dist/cjs/helpers/mysql.d.ts +17 -13
- package/dist/cjs/helpers/mysql.js +20 -17
- package/dist/cjs/helpers/postgres.d.ts +11 -8
- package/dist/cjs/helpers/postgres.js +14 -12
- package/dist/cjs/helpers/sqlite.d.ts +41 -16
- package/dist/cjs/helpers/sqlite.js +44 -20
- package/dist/cjs/index.d.ts +28 -21
- package/dist/cjs/index.js +28 -21
- package/dist/cjs/kysely.d.ts +100 -42
- package/dist/cjs/kysely.js +63 -39
- package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/migration/migrator.d.ts +82 -14
- package/dist/cjs/migration/migrator.js +82 -14
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
- package/dist/cjs/operation-node/case-node.d.ts +1 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/data-type-node.js +17 -3
- package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/cjs/operation-node/having-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/on-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-source.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +11 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +26 -3
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +8 -6
- package/dist/cjs/operation-node/output-node.d.ts +13 -0
- package/dist/cjs/operation-node/output-node.js +26 -0
- package/dist/cjs/operation-node/query-node.d.ts +15 -6
- package/dist/cjs/operation-node/query-node.js +17 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.js +6 -8
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/where-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +5 -6
- package/dist/cjs/parser/data-type-parser.js +1 -2
- package/dist/cjs/parser/default-value-parser.js +1 -2
- package/dist/cjs/parser/expression-parser.js +3 -4
- package/dist/cjs/parser/fetch-parser.js +1 -2
- package/dist/cjs/parser/group-by-parser.js +1 -2
- package/dist/cjs/parser/identifier-parser.js +1 -2
- package/dist/cjs/parser/insert-values-parser.js +1 -2
- package/dist/cjs/parser/join-parser.js +1 -2
- package/dist/cjs/parser/merge-parser.js +2 -3
- package/dist/cjs/parser/on-commit-action-parse.js +1 -2
- package/dist/cjs/parser/on-modify-action-parser.js +1 -2
- package/dist/cjs/parser/order-by-parser.js +3 -4
- package/dist/cjs/parser/parse-utils.js +4 -5
- package/dist/cjs/parser/partition-by-parser.js +1 -2
- package/dist/cjs/parser/reference-parser.js +8 -9
- package/dist/cjs/parser/returning-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.js +2 -3
- package/dist/cjs/parser/set-operation-parser.js +1 -2
- package/dist/cjs/parser/table-parser.js +4 -5
- package/dist/cjs/parser/top-parser.js +1 -2
- package/dist/cjs/parser/unary-operation-parser.js +3 -4
- package/dist/cjs/parser/update-set-parser.js +2 -3
- package/dist/cjs/parser/value-parser.js +4 -5
- package/dist/cjs/parser/with-parser.js +1 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +54 -27
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +26 -21
- package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
- package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +219 -43
- package/dist/cjs/query-builder/delete-query-builder.js +95 -31
- package/dist/cjs/query-builder/function-module.d.ts +40 -93
- package/dist/cjs/query-builder/function-module.js +1 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +326 -67
- package/dist/cjs/query-builder/insert-query-builder.js +212 -61
- package/dist/cjs/query-builder/insert-result.d.ts +10 -5
- package/dist/cjs/query-builder/insert-result.js +10 -5
- package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
- package/dist/cjs/query-builder/json-path-builder.js +8 -5
- package/dist/cjs/query-builder/merge-query-builder.d.ts +312 -10
- package/dist/cjs/query-builder/merge-query-builder.js +98 -7
- package/dist/cjs/query-builder/no-result-error.js +2 -2
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +53 -20
- package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
- package/dist/cjs/query-builder/output-interface.d.ts +138 -0
- package/dist/cjs/query-builder/output-interface.js +2 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +7 -5
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +370 -73
- package/dist/cjs/query-builder/select-query-builder.js +14 -9
- package/dist/cjs/query-builder/update-query-builder.d.ts +225 -31
- package/dist/cjs/query-builder/update-query-builder.js +96 -17
- package/dist/cjs/query-builder/update-result.d.ts +9 -0
- package/dist/cjs/query-builder/update-result.js +9 -0
- package/dist/cjs/query-builder/where-interface.d.ts +6 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +45 -1
- package/dist/cjs/query-creator.d.ts +122 -21
- package/dist/cjs/query-creator.js +56 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
- package/dist/cjs/raw-builder/raw-builder.js +1 -2
- package/dist/cjs/raw-builder/sql.d.ts +31 -12
- package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
- package/dist/cjs/schema/alter-column-builder.js +20 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +44 -10
- package/dist/cjs/schema/alter-table-add-index-builder.js +27 -10
- package/dist/cjs/schema/alter-table-builder.js +1 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +286 -24
- package/dist/cjs/schema/column-definition-builder.js +288 -24
- package/dist/cjs/schema/create-table-builder.d.ts +86 -33
- package/dist/cjs/schema/create-table-builder.js +86 -33
- package/dist/cjs/util/assert.js +2 -3
- package/dist/cjs/util/column-type.d.ts +5 -9
- package/dist/cjs/util/compilable.js +1 -2
- package/dist/cjs/util/json-object-args.js +1 -2
- package/dist/cjs/util/log-once.js +1 -2
- package/dist/cjs/util/object-utils.js +38 -26
- package/dist/cjs/util/performance-now.js +1 -2
- package/dist/cjs/util/prevent-await.js +1 -2
- package/dist/cjs/util/query-id.js +1 -2
- package/dist/cjs/util/random-string.js +1 -2
- package/dist/cjs/util/require-all-props.d.ts +4 -2
- package/dist/cjs/util/require-all-props.js +5 -4
- package/dist/cjs/util/stack-trace-utils.js +1 -2
- package/dist/cjs/util/streamable.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +4 -2
- package/dist/esm/dialect/dialect-adapter-base.d.ts +13 -3
- package/dist/esm/dialect/dialect-adapter-base.js +4 -1
- package/dist/esm/dialect/dialect-adapter.d.ts +16 -2
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +12 -7
- package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +83 -55
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +114 -48
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/esm/driver/database-connection.d.ts +3 -1
- package/dist/esm/driver/dummy-driver.d.ts +13 -12
- package/dist/esm/driver/dummy-driver.js +13 -12
- package/dist/esm/dynamic/dynamic.d.ts +7 -7
- package/dist/esm/dynamic/dynamic.js +7 -7
- package/dist/esm/expression/expression-builder.d.ts +153 -62
- package/dist/esm/expression/expression-wrapper.d.ts +92 -23
- package/dist/esm/expression/expression.d.ts +40 -5
- package/dist/esm/helpers/mssql.d.ts +74 -14
- package/dist/esm/helpers/mssql.js +74 -14
- package/dist/esm/helpers/mysql.d.ts +17 -13
- package/dist/esm/helpers/mysql.js +17 -13
- package/dist/esm/helpers/postgres.d.ts +11 -8
- package/dist/esm/helpers/postgres.js +11 -8
- package/dist/esm/helpers/sqlite.d.ts +41 -16
- package/dist/esm/helpers/sqlite.js +41 -16
- package/dist/esm/index.d.ts +28 -21
- package/dist/esm/index.js +28 -21
- package/dist/esm/kysely.d.ts +100 -42
- package/dist/esm/kysely.js +61 -37
- package/dist/esm/migration/file-migration-provider.d.ts +2 -2
- package/dist/esm/migration/file-migration-provider.js +2 -2
- package/dist/esm/migration/migrator.d.ts +82 -14
- package/dist/esm/migration/migrator.js +82 -14
- package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/esm/operation-node/aggregate-function-node.js +9 -0
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
- package/dist/esm/operation-node/case-node.d.ts +1 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/data-type-node.d.ts +2 -2
- package/dist/esm/operation-node/data-type-node.js +15 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
- package/dist/esm/operation-node/having-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +3 -0
- package/dist/esm/operation-node/on-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +11 -3
- package/dist/esm/operation-node/operation-node-transformer.js +26 -3
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/output-node.d.ts +13 -0
- package/dist/esm/operation-node/output-node.js +24 -0
- package/dist/esm/operation-node/query-node.d.ts +15 -6
- package/dist/esm/operation-node/query-node.js +17 -0
- package/dist/esm/operation-node/select-query-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.js +6 -8
- package/dist/esm/operation-node/update-query-node.d.ts +3 -0
- package/dist/esm/operation-node/where-node.d.ts +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +54 -27
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +26 -21
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
- package/dist/esm/plugin/noop-plugin.d.ts +28 -6
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +219 -43
- package/dist/esm/query-builder/delete-query-builder.js +95 -31
- package/dist/esm/query-builder/function-module.d.ts +40 -93
- package/dist/esm/query-builder/insert-query-builder.d.ts +326 -67
- package/dist/esm/query-builder/insert-query-builder.js +212 -61
- package/dist/esm/query-builder/insert-result.d.ts +10 -5
- package/dist/esm/query-builder/insert-result.js +10 -5
- package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
- package/dist/esm/query-builder/json-path-builder.js +8 -5
- package/dist/esm/query-builder/merge-query-builder.d.ts +312 -10
- package/dist/esm/query-builder/merge-query-builder.js +98 -7
- package/dist/esm/query-builder/on-conflict-builder.d.ts +53 -20
- package/dist/esm/query-builder/on-conflict-builder.js +41 -16
- package/dist/esm/query-builder/output-interface.d.ts +138 -0
- package/dist/esm/query-builder/output-interface.js +2 -0
- package/dist/esm/query-builder/returning-interface.d.ts +7 -5
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +370 -73
- package/dist/esm/query-builder/select-query-builder.js +13 -7
- package/dist/esm/query-builder/update-query-builder.d.ts +225 -31
- package/dist/esm/query-builder/update-query-builder.js +96 -17
- package/dist/esm/query-builder/update-result.d.ts +9 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-builder/where-interface.d.ts +6 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +45 -1
- package/dist/esm/query-creator.d.ts +122 -21
- package/dist/esm/query-creator.js +56 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
- package/dist/esm/raw-builder/sql.d.ts +31 -12
- package/dist/esm/schema/alter-column-builder.d.ts +17 -3
- package/dist/esm/schema/alter-column-builder.js +20 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +44 -10
- package/dist/esm/schema/alter-table-add-index-builder.js +27 -10
- package/dist/esm/schema/alter-table-builder.js +1 -2
- package/dist/esm/schema/column-definition-builder.d.ts +286 -24
- package/dist/esm/schema/column-definition-builder.js +288 -24
- package/dist/esm/schema/create-table-builder.d.ts +86 -33
- package/dist/esm/schema/create-table-builder.js +86 -33
- package/dist/esm/util/column-type.d.ts +5 -9
- package/dist/esm/util/object-utils.js +18 -5
- package/dist/esm/util/require-all-props.d.ts +4 -2
- package/dist/esm/util/require-all-props.js +4 -2
- package/dist/esm/util/streamable.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +4 -2
- package/package.json +30 -24
|
@@ -44,7 +44,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
44
44
|
*
|
|
45
45
|
* await db.schema
|
|
46
46
|
* .createTable('person')
|
|
47
|
-
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
|
|
47
|
+
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
|
|
48
48
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
49
49
|
* .addColumn('last_name', 'varchar(255)')
|
|
50
50
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
@@ -52,7 +52,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
52
52
|
* // don't include it.
|
|
53
53
|
* .addColumn('data', sql`any_type_here`)
|
|
54
54
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
55
|
-
* col.references('person.id').onDelete('cascade')
|
|
55
|
+
* col.references('person.id').onDelete('cascade')
|
|
56
56
|
* )
|
|
57
57
|
* ```
|
|
58
58
|
*
|
|
@@ -63,11 +63,18 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
63
63
|
* `create table` query. See the next example:
|
|
64
64
|
*
|
|
65
65
|
* ```ts
|
|
66
|
+
* await db.schema
|
|
67
|
+
* .createTable('person')
|
|
68
|
+
* .addColumn('id', 'integer', (col) => col.primaryKey())
|
|
66
69
|
* .addColumn('parent_id', 'integer')
|
|
67
70
|
* .addForeignKeyConstraint(
|
|
68
|
-
* 'person_parent_id_fk',
|
|
71
|
+
* 'person_parent_id_fk',
|
|
72
|
+
* ['parent_id'],
|
|
73
|
+
* 'person',
|
|
74
|
+
* ['id'],
|
|
69
75
|
* (cb) => cb.onDelete('cascade')
|
|
70
76
|
* )
|
|
77
|
+
* .execute()
|
|
71
78
|
* ```
|
|
72
79
|
*
|
|
73
80
|
* Another good example is that PostgreSQL doesn't support the `auto_increment`
|
|
@@ -77,7 +84,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
77
84
|
* ```ts
|
|
78
85
|
* await db.schema
|
|
79
86
|
* .createTable('person')
|
|
80
|
-
* .addColumn('id', 'serial', (col) => col.primaryKey())
|
|
87
|
+
* .addColumn('id', 'serial', (col) => col.primaryKey())
|
|
88
|
+
* .execute()
|
|
81
89
|
* ```
|
|
82
90
|
*/
|
|
83
91
|
addColumn<CN extends string>(columnName: CN, dataType: DataTypeExpression, build?: ColumnBuilderCallback): CreateTableBuilder<TB, C | CN>;
|
|
@@ -90,7 +98,12 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
90
98
|
* ### Examples
|
|
91
99
|
*
|
|
92
100
|
* ```ts
|
|
93
|
-
*
|
|
101
|
+
* await db.schema
|
|
102
|
+
* .createTable('person')
|
|
103
|
+
* .addColumn('first_name', 'varchar(64)')
|
|
104
|
+
* .addColumn('last_name', 'varchar(64)')
|
|
105
|
+
* .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
|
|
106
|
+
* .execute()
|
|
94
107
|
* ```
|
|
95
108
|
*/
|
|
96
109
|
addPrimaryKeyConstraint(constraintName: string, columns: C[]): CreateTableBuilder<TB, C>;
|
|
@@ -103,12 +116,30 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
103
116
|
* ### Examples
|
|
104
117
|
*
|
|
105
118
|
* ```ts
|
|
106
|
-
*
|
|
119
|
+
* await db.schema
|
|
120
|
+
* .createTable('person')
|
|
121
|
+
* .addColumn('first_name', 'varchar(64)')
|
|
122
|
+
* .addColumn('last_name', 'varchar(64)')
|
|
123
|
+
* .addUniqueConstraint(
|
|
124
|
+
* 'first_name_last_name_unique',
|
|
125
|
+
* ['first_name', 'last_name']
|
|
126
|
+
* )
|
|
127
|
+
* .execute()
|
|
107
128
|
* ```
|
|
108
129
|
*
|
|
109
130
|
* In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|
131
|
+
*
|
|
110
132
|
* ```ts
|
|
111
|
-
*
|
|
133
|
+
* await db.schema
|
|
134
|
+
* .createTable('person')
|
|
135
|
+
* .addColumn('first_name', 'varchar(64)')
|
|
136
|
+
* .addColumn('last_name', 'varchar(64)')
|
|
137
|
+
* .addUniqueConstraint(
|
|
138
|
+
* 'first_name_last_name_unique',
|
|
139
|
+
* ['first_name', 'last_name'],
|
|
140
|
+
* (cb) => cb.nullsNotDistinct()
|
|
141
|
+
* )
|
|
142
|
+
* .execute()
|
|
112
143
|
* ```
|
|
113
144
|
*/
|
|
114
145
|
addUniqueConstraint(constraintName: string, columns: C[], build?: UniqueConstraintNodeBuilderCallback): CreateTableBuilder<TB, C>;
|
|
@@ -123,7 +154,11 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
123
154
|
* ```ts
|
|
124
155
|
* import { sql } from 'kysely'
|
|
125
156
|
*
|
|
126
|
-
*
|
|
157
|
+
* await db.schema
|
|
158
|
+
* .createTable('animal')
|
|
159
|
+
* .addColumn('number_of_legs', 'integer')
|
|
160
|
+
* .addCheckConstraint('check_legs', sql`number_of_legs < 5`)
|
|
161
|
+
* .execute()
|
|
127
162
|
* ```
|
|
128
163
|
*/
|
|
129
164
|
addCheckConstraint(constraintName: string, checkExpression: Expression<any>): CreateTableBuilder<TB, C>;
|
|
@@ -136,24 +171,33 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
136
171
|
* ### Examples
|
|
137
172
|
*
|
|
138
173
|
* ```ts
|
|
139
|
-
*
|
|
140
|
-
* '
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
174
|
+
* await db.schema
|
|
175
|
+
* .createTable('pet')
|
|
176
|
+
* .addColumn('owner_id', 'integer')
|
|
177
|
+
* .addForeignKeyConstraint(
|
|
178
|
+
* 'owner_id_foreign',
|
|
179
|
+
* ['owner_id'],
|
|
180
|
+
* 'person',
|
|
181
|
+
* ['id'],
|
|
182
|
+
* )
|
|
183
|
+
* .execute()
|
|
145
184
|
* ```
|
|
146
185
|
*
|
|
147
186
|
* Add constraint for multiple columns:
|
|
148
187
|
*
|
|
149
188
|
* ```ts
|
|
150
|
-
*
|
|
151
|
-
* '
|
|
152
|
-
*
|
|
153
|
-
* '
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
189
|
+
* await db.schema
|
|
190
|
+
* .createTable('pet')
|
|
191
|
+
* .addColumn('owner_id1', 'integer')
|
|
192
|
+
* .addColumn('owner_id2', 'integer')
|
|
193
|
+
* .addForeignKeyConstraint(
|
|
194
|
+
* 'owner_id_foreign',
|
|
195
|
+
* ['owner_id1', 'owner_id2'],
|
|
196
|
+
* 'person',
|
|
197
|
+
* ['id1', 'id2'],
|
|
198
|
+
* (cb) => cb.onDelete('cascade')
|
|
199
|
+
* )
|
|
200
|
+
* .execute()
|
|
157
201
|
* ```
|
|
158
202
|
*/
|
|
159
203
|
addForeignKeyConstraint(constraintName: string, columns: C[], targetTable: string, targetColumns: string[], build?: ForeignKeyConstraintBuilderCallback): CreateTableBuilder<TB, C>;
|
|
@@ -165,11 +209,14 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
165
209
|
* ### Examples
|
|
166
210
|
*
|
|
167
211
|
* ```ts
|
|
168
|
-
*
|
|
212
|
+
* import { sql } from 'kysely'
|
|
213
|
+
*
|
|
214
|
+
* await db.schema
|
|
215
|
+
* .createTable('person')
|
|
169
216
|
* .modifyFront(sql`global temporary`)
|
|
170
217
|
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
171
218
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
172
|
-
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
219
|
+
* .addColumn('last_name', 'varchar(64)', col => col.notNull())
|
|
173
220
|
* .execute()
|
|
174
221
|
* ```
|
|
175
222
|
*
|
|
@@ -192,10 +239,13 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
192
239
|
* ### Examples
|
|
193
240
|
*
|
|
194
241
|
* ```ts
|
|
195
|
-
*
|
|
196
|
-
*
|
|
242
|
+
* import { sql } from 'kysely'
|
|
243
|
+
*
|
|
244
|
+
* await db.schema
|
|
245
|
+
* .createTable('person')
|
|
246
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
197
247
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
198
|
-
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
248
|
+
* .addColumn('last_name', 'varchar(64)', col => col.notNull())
|
|
199
249
|
* .modifyEnd(sql`collate utf8_unicode_ci`)
|
|
200
250
|
* .execute()
|
|
201
251
|
* ```
|
|
@@ -217,7 +267,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
217
267
|
* ### Examples
|
|
218
268
|
*
|
|
219
269
|
* ```ts
|
|
220
|
-
* db.schema
|
|
270
|
+
* await db.schema
|
|
271
|
+
* .createTable('copy')
|
|
221
272
|
* .temporary()
|
|
222
273
|
* .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|
223
274
|
* .execute()
|
|
@@ -237,17 +288,19 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
237
288
|
* ### Examples
|
|
238
289
|
*
|
|
239
290
|
* ```ts
|
|
240
|
-
* db.schema
|
|
291
|
+
* await db.schema
|
|
241
292
|
* .createTable('test')
|
|
242
293
|
* .$call((builder) => builder.addColumn('id', 'integer'))
|
|
243
294
|
* .execute()
|
|
244
295
|
* ```
|
|
245
296
|
*
|
|
297
|
+
* This is useful for creating reusable functions that can be called with a builder.
|
|
298
|
+
*
|
|
246
299
|
* ```ts
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
* ) => {
|
|
250
|
-
* return
|
|
300
|
+
* import { type CreateTableBuilder, sql } from 'kysely'
|
|
301
|
+
*
|
|
302
|
+
* const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {
|
|
303
|
+
* return ctb
|
|
251
304
|
* .addColumn('id', 'integer', (col) => col.notNull())
|
|
252
305
|
* .addColumn('created_at', 'date', (col) =>
|
|
253
306
|
* col.notNull().defaultTo(sql`now()`)
|
|
@@ -257,7 +310,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
257
310
|
* )
|
|
258
311
|
* }
|
|
259
312
|
*
|
|
260
|
-
* db.schema
|
|
313
|
+
* await db.schema
|
|
261
314
|
* .createTable('test')
|
|
262
315
|
* .$call(addDefaultColumns)
|
|
263
316
|
* .execute()
|
|
@@ -73,7 +73,7 @@ export class CreateTableBuilder {
|
|
|
73
73
|
*
|
|
74
74
|
* await db.schema
|
|
75
75
|
* .createTable('person')
|
|
76
|
-
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
|
|
76
|
+
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
|
|
77
77
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
78
78
|
* .addColumn('last_name', 'varchar(255)')
|
|
79
79
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
@@ -81,7 +81,7 @@ export class CreateTableBuilder {
|
|
|
81
81
|
* // don't include it.
|
|
82
82
|
* .addColumn('data', sql`any_type_here`)
|
|
83
83
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
84
|
-
* col.references('person.id').onDelete('cascade')
|
|
84
|
+
* col.references('person.id').onDelete('cascade')
|
|
85
85
|
* )
|
|
86
86
|
* ```
|
|
87
87
|
*
|
|
@@ -92,11 +92,18 @@ export class CreateTableBuilder {
|
|
|
92
92
|
* `create table` query. See the next example:
|
|
93
93
|
*
|
|
94
94
|
* ```ts
|
|
95
|
+
* await db.schema
|
|
96
|
+
* .createTable('person')
|
|
97
|
+
* .addColumn('id', 'integer', (col) => col.primaryKey())
|
|
95
98
|
* .addColumn('parent_id', 'integer')
|
|
96
99
|
* .addForeignKeyConstraint(
|
|
97
|
-
* 'person_parent_id_fk',
|
|
100
|
+
* 'person_parent_id_fk',
|
|
101
|
+
* ['parent_id'],
|
|
102
|
+
* 'person',
|
|
103
|
+
* ['id'],
|
|
98
104
|
* (cb) => cb.onDelete('cascade')
|
|
99
105
|
* )
|
|
106
|
+
* .execute()
|
|
100
107
|
* ```
|
|
101
108
|
*
|
|
102
109
|
* Another good example is that PostgreSQL doesn't support the `auto_increment`
|
|
@@ -106,7 +113,8 @@ export class CreateTableBuilder {
|
|
|
106
113
|
* ```ts
|
|
107
114
|
* await db.schema
|
|
108
115
|
* .createTable('person')
|
|
109
|
-
* .addColumn('id', 'serial', (col) => col.primaryKey())
|
|
116
|
+
* .addColumn('id', 'serial', (col) => col.primaryKey())
|
|
117
|
+
* .execute()
|
|
110
118
|
* ```
|
|
111
119
|
*/
|
|
112
120
|
addColumn(columnName, dataType, build = noop) {
|
|
@@ -125,7 +133,12 @@ export class CreateTableBuilder {
|
|
|
125
133
|
* ### Examples
|
|
126
134
|
*
|
|
127
135
|
* ```ts
|
|
128
|
-
*
|
|
136
|
+
* await db.schema
|
|
137
|
+
* .createTable('person')
|
|
138
|
+
* .addColumn('first_name', 'varchar(64)')
|
|
139
|
+
* .addColumn('last_name', 'varchar(64)')
|
|
140
|
+
* .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
|
|
141
|
+
* .execute()
|
|
129
142
|
* ```
|
|
130
143
|
*/
|
|
131
144
|
addPrimaryKeyConstraint(constraintName, columns) {
|
|
@@ -143,12 +156,30 @@ export class CreateTableBuilder {
|
|
|
143
156
|
* ### Examples
|
|
144
157
|
*
|
|
145
158
|
* ```ts
|
|
146
|
-
*
|
|
159
|
+
* await db.schema
|
|
160
|
+
* .createTable('person')
|
|
161
|
+
* .addColumn('first_name', 'varchar(64)')
|
|
162
|
+
* .addColumn('last_name', 'varchar(64)')
|
|
163
|
+
* .addUniqueConstraint(
|
|
164
|
+
* 'first_name_last_name_unique',
|
|
165
|
+
* ['first_name', 'last_name']
|
|
166
|
+
* )
|
|
167
|
+
* .execute()
|
|
147
168
|
* ```
|
|
148
169
|
*
|
|
149
170
|
* In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|
171
|
+
*
|
|
150
172
|
* ```ts
|
|
151
|
-
*
|
|
173
|
+
* await db.schema
|
|
174
|
+
* .createTable('person')
|
|
175
|
+
* .addColumn('first_name', 'varchar(64)')
|
|
176
|
+
* .addColumn('last_name', 'varchar(64)')
|
|
177
|
+
* .addUniqueConstraint(
|
|
178
|
+
* 'first_name_last_name_unique',
|
|
179
|
+
* ['first_name', 'last_name'],
|
|
180
|
+
* (cb) => cb.nullsNotDistinct()
|
|
181
|
+
* )
|
|
182
|
+
* .execute()
|
|
152
183
|
* ```
|
|
153
184
|
*/
|
|
154
185
|
addUniqueConstraint(constraintName, columns, build = noop) {
|
|
@@ -169,7 +200,11 @@ export class CreateTableBuilder {
|
|
|
169
200
|
* ```ts
|
|
170
201
|
* import { sql } from 'kysely'
|
|
171
202
|
*
|
|
172
|
-
*
|
|
203
|
+
* await db.schema
|
|
204
|
+
* .createTable('animal')
|
|
205
|
+
* .addColumn('number_of_legs', 'integer')
|
|
206
|
+
* .addCheckConstraint('check_legs', sql`number_of_legs < 5`)
|
|
207
|
+
* .execute()
|
|
173
208
|
* ```
|
|
174
209
|
*/
|
|
175
210
|
addCheckConstraint(constraintName, checkExpression) {
|
|
@@ -187,24 +222,33 @@ export class CreateTableBuilder {
|
|
|
187
222
|
* ### Examples
|
|
188
223
|
*
|
|
189
224
|
* ```ts
|
|
190
|
-
*
|
|
191
|
-
* '
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
225
|
+
* await db.schema
|
|
226
|
+
* .createTable('pet')
|
|
227
|
+
* .addColumn('owner_id', 'integer')
|
|
228
|
+
* .addForeignKeyConstraint(
|
|
229
|
+
* 'owner_id_foreign',
|
|
230
|
+
* ['owner_id'],
|
|
231
|
+
* 'person',
|
|
232
|
+
* ['id'],
|
|
233
|
+
* )
|
|
234
|
+
* .execute()
|
|
196
235
|
* ```
|
|
197
236
|
*
|
|
198
237
|
* Add constraint for multiple columns:
|
|
199
238
|
*
|
|
200
239
|
* ```ts
|
|
201
|
-
*
|
|
202
|
-
* '
|
|
203
|
-
*
|
|
204
|
-
* '
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
240
|
+
* await db.schema
|
|
241
|
+
* .createTable('pet')
|
|
242
|
+
* .addColumn('owner_id1', 'integer')
|
|
243
|
+
* .addColumn('owner_id2', 'integer')
|
|
244
|
+
* .addForeignKeyConstraint(
|
|
245
|
+
* 'owner_id_foreign',
|
|
246
|
+
* ['owner_id1', 'owner_id2'],
|
|
247
|
+
* 'person',
|
|
248
|
+
* ['id1', 'id2'],
|
|
249
|
+
* (cb) => cb.onDelete('cascade')
|
|
250
|
+
* )
|
|
251
|
+
* .execute()
|
|
208
252
|
* ```
|
|
209
253
|
*/
|
|
210
254
|
addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {
|
|
@@ -222,11 +266,14 @@ export class CreateTableBuilder {
|
|
|
222
266
|
* ### Examples
|
|
223
267
|
*
|
|
224
268
|
* ```ts
|
|
225
|
-
*
|
|
269
|
+
* import { sql } from 'kysely'
|
|
270
|
+
*
|
|
271
|
+
* await db.schema
|
|
272
|
+
* .createTable('person')
|
|
226
273
|
* .modifyFront(sql`global temporary`)
|
|
227
274
|
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
228
275
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
229
|
-
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
276
|
+
* .addColumn('last_name', 'varchar(64)', col => col.notNull())
|
|
230
277
|
* .execute()
|
|
231
278
|
* ```
|
|
232
279
|
*
|
|
@@ -254,10 +301,13 @@ export class CreateTableBuilder {
|
|
|
254
301
|
* ### Examples
|
|
255
302
|
*
|
|
256
303
|
* ```ts
|
|
257
|
-
*
|
|
258
|
-
*
|
|
304
|
+
* import { sql } from 'kysely'
|
|
305
|
+
*
|
|
306
|
+
* await db.schema
|
|
307
|
+
* .createTable('person')
|
|
308
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
259
309
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
260
|
-
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
310
|
+
* .addColumn('last_name', 'varchar(64)', col => col.notNull())
|
|
261
311
|
* .modifyEnd(sql`collate utf8_unicode_ci`)
|
|
262
312
|
* .execute()
|
|
263
313
|
* ```
|
|
@@ -284,7 +334,8 @@ export class CreateTableBuilder {
|
|
|
284
334
|
* ### Examples
|
|
285
335
|
*
|
|
286
336
|
* ```ts
|
|
287
|
-
* db.schema
|
|
337
|
+
* await db.schema
|
|
338
|
+
* .createTable('copy')
|
|
288
339
|
* .temporary()
|
|
289
340
|
* .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|
290
341
|
* .execute()
|
|
@@ -311,17 +362,19 @@ export class CreateTableBuilder {
|
|
|
311
362
|
* ### Examples
|
|
312
363
|
*
|
|
313
364
|
* ```ts
|
|
314
|
-
* db.schema
|
|
365
|
+
* await db.schema
|
|
315
366
|
* .createTable('test')
|
|
316
367
|
* .$call((builder) => builder.addColumn('id', 'integer'))
|
|
317
368
|
* .execute()
|
|
318
369
|
* ```
|
|
319
370
|
*
|
|
371
|
+
* This is useful for creating reusable functions that can be called with a builder.
|
|
372
|
+
*
|
|
320
373
|
* ```ts
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
* ) => {
|
|
324
|
-
* return
|
|
374
|
+
* import { type CreateTableBuilder, sql } from 'kysely'
|
|
375
|
+
*
|
|
376
|
+
* const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {
|
|
377
|
+
* return ctb
|
|
325
378
|
* .addColumn('id', 'integer', (col) => col.notNull())
|
|
326
379
|
* .addColumn('created_at', 'date', (col) =>
|
|
327
380
|
* col.notNull().defaultTo(sql`now()`)
|
|
@@ -331,7 +384,7 @@ export class CreateTableBuilder {
|
|
|
331
384
|
* )
|
|
332
385
|
* }
|
|
333
386
|
*
|
|
334
|
-
* db.schema
|
|
387
|
+
* await db.schema
|
|
335
388
|
* .createTable('test')
|
|
336
389
|
* .$call(addDefaultColumns)
|
|
337
390
|
* .execute()
|
|
@@ -15,7 +15,7 @@ import { DrainOuterGeneric } from './type-utils.js';
|
|
|
15
15
|
* type is actually just a shortcut for the type in this example:
|
|
16
16
|
*
|
|
17
17
|
* ```ts
|
|
18
|
-
* ColumnType<number, number | undefined, number>
|
|
18
|
+
* type GeneratedNumber = ColumnType<number, number | undefined, number>
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
21
21
|
* The above example makes the column optional in inserts
|
|
@@ -24,14 +24,14 @@ import { DrainOuterGeneric } from './type-utils.js';
|
|
|
24
24
|
* can se the type as `never`:
|
|
25
25
|
*
|
|
26
26
|
* ```ts
|
|
27
|
-
* ColumnType<number, never, never>
|
|
27
|
+
* type ReadonlyNumber = ColumnType<number, never, never>
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
30
30
|
* Here's one more example where the type is different
|
|
31
31
|
* for each different operation:
|
|
32
32
|
*
|
|
33
33
|
* ```ts
|
|
34
|
-
* ColumnType<Date, string, never>
|
|
34
|
+
* type UnupdateableDate = ColumnType<Date, string, never>
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
37
|
export type ColumnType<SelectType, InsertType = SelectType, UpdateType = SelectType> = {
|
|
@@ -44,12 +44,8 @@ export type ColumnType<SelectType, InsertType = SelectType, UpdateType = SelectT
|
|
|
44
44
|
* is the same for all selects, inserts and updates but the
|
|
45
45
|
* column is optional for inserts and updates.
|
|
46
46
|
*
|
|
47
|
-
* The
|
|
48
|
-
*
|
|
49
|
-
* ```ts
|
|
50
|
-
* // The update type is `S` instead of `S | undefined` because
|
|
51
|
-
* // updates are always optional --> no need to specify optionality.
|
|
52
|
-
* type Generated<S> = ColumnType<S, S | undefined, S>
|
|
47
|
+
* The update type is `S` instead of `S | undefined` because updates are always
|
|
48
|
+
* optional --> no need to specify optionality.
|
|
53
49
|
* ```
|
|
54
50
|
*/
|
|
55
51
|
export type Generated<S> = ColumnType<S, S | undefined, S>;
|
|
@@ -44,11 +44,17 @@ export function isArrayBufferOrView(obj) {
|
|
|
44
44
|
return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
|
|
45
45
|
}
|
|
46
46
|
export function isPlainObject(obj) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
if (!isObject(obj) || getTag(obj) !== '[object Object]') {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (Object.getPrototypeOf(obj) === null) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
let proto = obj;
|
|
54
|
+
while (Object.getPrototypeOf(proto) !== null) {
|
|
55
|
+
proto = Object.getPrototypeOf(proto);
|
|
56
|
+
}
|
|
57
|
+
return Object.getPrototypeOf(obj) === proto;
|
|
52
58
|
}
|
|
53
59
|
export function getLast(arr) {
|
|
54
60
|
return arr[arr.length - 1];
|
|
@@ -126,3 +132,10 @@ function compareGenericObjects(obj1, obj2) {
|
|
|
126
132
|
}
|
|
127
133
|
return true;
|
|
128
134
|
}
|
|
135
|
+
const toString = Object.prototype.toString;
|
|
136
|
+
function getTag(value) {
|
|
137
|
+
if (value == null) {
|
|
138
|
+
return value === undefined ? '[object Undefined]' : '[object Null]';
|
|
139
|
+
}
|
|
140
|
+
return toString.call(value);
|
|
141
|
+
}
|
|
@@ -26,14 +26,16 @@ type AllProps<T> = T & {
|
|
|
26
26
|
* 1. Omit checked type - all checked properties will be expect as of type never
|
|
27
27
|
*
|
|
28
28
|
* ```ts
|
|
29
|
-
*
|
|
29
|
+
* type SomeType = { propA: string; propB?: number; }
|
|
30
|
+
* // const z: SomeType = requireAllProps({ propC: "no type will work" }); // Property 'propA' is missing in type '{ propC: string; }' but required in type 'SomeType'.
|
|
30
31
|
* ```
|
|
31
32
|
*
|
|
32
33
|
* 2. Apply to spreaded object - there is no way how to check in compile time if spreaded object contains all properties
|
|
33
34
|
*
|
|
34
35
|
* ```ts
|
|
36
|
+
* type SomeType = { propA: string; propB?: number; }
|
|
35
37
|
* const y: SomeType = { propA: "" }; // valid object according to SomeType declaration
|
|
36
|
-
* const x = requireAllProps<SomeType>(
|
|
38
|
+
* // const x = requireAllProps<SomeType>({ ...y }); // Argument of type '{ propA: string; propB?: number; }' is not assignable to parameter of type 'AllProps<SomeType>'.
|
|
37
39
|
* ```
|
|
38
40
|
*
|
|
39
41
|
* @param obj object to check if all properties has been used
|
|
@@ -19,14 +19,16 @@
|
|
|
19
19
|
* 1. Omit checked type - all checked properties will be expect as of type never
|
|
20
20
|
*
|
|
21
21
|
* ```ts
|
|
22
|
-
*
|
|
22
|
+
* type SomeType = { propA: string; propB?: number; }
|
|
23
|
+
* // const z: SomeType = requireAllProps({ propC: "no type will work" }); // Property 'propA' is missing in type '{ propC: string; }' but required in type 'SomeType'.
|
|
23
24
|
* ```
|
|
24
25
|
*
|
|
25
26
|
* 2. Apply to spreaded object - there is no way how to check in compile time if spreaded object contains all properties
|
|
26
27
|
*
|
|
27
28
|
* ```ts
|
|
29
|
+
* type SomeType = { propA: string; propB?: number; }
|
|
28
30
|
* const y: SomeType = { propA: "" }; // valid object according to SomeType declaration
|
|
29
|
-
* const x = requireAllProps<SomeType>(
|
|
31
|
+
* // const x = requireAllProps<SomeType>({ ...y }); // Argument of type '{ propA: string; propB?: number; }' is not assignable to parameter of type 'AllProps<SomeType>'.
|
|
30
32
|
* ```
|
|
31
33
|
*
|
|
32
34
|
* @param obj object to check if all properties has been used
|
|
@@ -125,7 +125,9 @@ export type NarrowPartial<O, T> = DrainOuterGeneric<T extends object ? {
|
|
|
125
125
|
* Example:
|
|
126
126
|
*
|
|
127
127
|
* ```ts
|
|
128
|
-
*
|
|
128
|
+
* import type { NotNull } from 'kysely'
|
|
129
|
+
*
|
|
130
|
+
* await db.selectFrom('person')
|
|
129
131
|
* .where('nullable_column', 'is not', null)
|
|
130
132
|
* .selectAll()
|
|
131
133
|
* .$narrowType<{ nullable_column: NotNull }>()
|
|
@@ -148,7 +150,7 @@ export type SqlBool = boolean | 0 | 1;
|
|
|
148
150
|
* A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<T>>>>>>>>>>>>>>>>>>>>>>>>
|
|
149
151
|
* >
|
|
150
152
|
*
|
|
151
|
-
* type Error = Test<number> // Type instantiation is excessively deep and possibly infinite.ts (2589)
|
|
153
|
+
* // type Error = Test<number> // Type instantiation is excessively deep and possibly infinite.ts (2589)
|
|
152
154
|
* ```
|
|
153
155
|
*
|
|
154
156
|
* To fix this, we can use `DrainOuterGeneric`:
|