kysely 0.22.0 → 0.23.1
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/CONTRIBUTING.md +70 -0
- package/README.md +25 -2
- package/dist/cjs/dialect/database-introspector.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
- package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +6 -2
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
- package/dist/cjs/expression/expression.d.ts +100 -0
- package/dist/cjs/expression/expression.js +16 -0
- package/dist/cjs/index.d.ts +10 -6
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/migration/file-migration-provider.js +5 -3
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -11
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
- package/dist/cjs/operation-node/alter-table-node.js +9 -1
- package/dist/cjs/operation-node/and-node.d.ts +3 -4
- package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/cjs/operation-node/binary-operation-node.js +20 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
- package/dist/cjs/operation-node/column-definition-node.js +16 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
- package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.js +1 -2
- package/dist/cjs/operation-node/explain-node.d.ts +2 -4
- package/dist/cjs/operation-node/explain-node.js +1 -1
- package/dist/cjs/operation-node/from-node.d.ts +3 -4
- package/dist/cjs/operation-node/generated-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/cjs/operation-node/having-node.d.ts +3 -4
- package/dist/cjs/operation-node/having-node.js +4 -4
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
- package/dist/cjs/operation-node/join-node.d.ts +5 -9
- package/dist/cjs/operation-node/join-node.js +6 -6
- package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/cjs/operation-node/on-conflict-node.js +12 -12
- package/dist/cjs/operation-node/on-node.d.ts +3 -4
- package/dist/cjs/operation-node/on-node.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +5 -3
- package/dist/cjs/operation-node/operator-node.js +3 -5
- package/dist/cjs/operation-node/or-node.d.ts +3 -4
- package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
- package/dist/cjs/operation-node/query-node.d.ts +2 -3
- package/dist/cjs/operation-node/query-node.js +6 -6
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/cjs/operation-node/select-modifier-node.js +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
- package/dist/cjs/operation-node/select-query-node.js +10 -10
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
- package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/cjs/operation-node/unary-operation-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
- package/dist/cjs/operation-node/where-node.d.ts +3 -4
- package/dist/cjs/operation-node/where-node.js +4 -4
- package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
- package/dist/cjs/parser/binary-operation-parser.js +99 -0
- package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
- package/dist/cjs/parser/coalesce-parser.js +11 -0
- package/dist/cjs/parser/data-type-parser.d.ts +5 -5
- package/dist/cjs/parser/default-value-parser.d.ts +4 -5
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/expression-parser.d.ts +10 -0
- package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
- package/dist/cjs/parser/identifier-parser.d.ts +2 -0
- package/dist/cjs/parser/identifier-parser.js +23 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.js +2 -2
- package/dist/cjs/parser/join-parser.js +2 -2
- package/dist/cjs/parser/order-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +14 -14
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -7
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
- package/dist/cjs/parser/table-parser.d.ts +11 -12
- package/dist/cjs/parser/table-parser.js +2 -2
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
- package/dist/cjs/parser/unary-operation-parser.js +17 -0
- package/dist/cjs/parser/update-set-parser.d.ts +1 -1
- package/dist/cjs/parser/value-parser.d.ts +5 -9
- package/dist/cjs/parser/value-parser.js +4 -4
- package/dist/cjs/parser/with-parser.d.ts +3 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
- package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
- package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/delete-query-builder.js +19 -16
- package/dist/cjs/query-builder/function-module.d.ts +123 -22
- package/dist/cjs/query-builder/function-module.js +91 -48
- package/dist/cjs/query-builder/having-interface.d.ts +9 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/cjs/query-builder/insert-query-builder.js +11 -9
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +12 -1
- package/dist/cjs/query-builder/join-builder.d.ts +9 -8
- package/dist/cjs/query-builder/join-builder.js +10 -9
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
- package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
- package/dist/cjs/query-builder/select-query-builder.js +39 -37
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/update-query-builder.js +19 -16
- package/dist/cjs/query-builder/where-interface.d.ts +12 -11
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
- package/dist/cjs/query-executor/query-executor-base.js +16 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
- package/dist/cjs/raw-builder/raw-builder.js +24 -14
- package/dist/cjs/raw-builder/sql.d.ts +4 -4
- package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
- package/dist/cjs/schema/alter-column-builder.js +55 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
- package/dist/cjs/schema/alter-table-builder.js +63 -278
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
- package/dist/cjs/schema/column-definition-builder.js +189 -0
- package/dist/cjs/schema/create-index-builder.d.ts +3 -3
- package/dist/cjs/schema/create-index-builder.js +7 -7
- package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
- package/dist/cjs/schema/create-schema-builder.js +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +39 -6
- package/dist/cjs/schema/create-table-builder.js +47 -12
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +2 -2
- package/dist/cjs/schema/create-view-builder.d.ts +4 -3
- package/dist/cjs/schema/create-view-builder.js +7 -7
- package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-index-builder.js +4 -4
- package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -3
- package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -3
- package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-type-builder.js +2 -2
- package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-view-builder.js +4 -4
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +14 -13
- package/dist/cjs/util/compilable.d.ts +2 -2
- package/dist/cjs/util/explainable.d.ts +2 -2
- package/dist/cjs/util/infer-result.d.ts +46 -0
- package/dist/cjs/util/infer-result.js +2 -0
- package/dist/cjs/util/log-once.d.ts +5 -0
- package/dist/cjs/util/log-once.js +16 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +5 -1
- package/dist/cjs/util/type-utils.d.ts +3 -17
- package/dist/esm/dialect/database-introspector.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +6 -2
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/esm/expression/expression.d.ts +100 -0
- package/dist/esm/expression/expression.js +12 -0
- package/dist/esm/index.d.ts +10 -6
- package/dist/esm/index.js +6 -2
- package/dist/esm/migration/file-migration-provider.js +5 -3
- package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/esm/operation-node/aggregate-function-node.js +17 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -11
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
- package/dist/esm/operation-node/alter-table-node.js +9 -1
- package/dist/esm/operation-node/and-node.d.ts +3 -4
- package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/esm/operation-node/binary-operation-node.js +18 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
- package/dist/esm/operation-node/column-definition-node.js +16 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/esm/operation-node/create-index-node.d.ts +1 -3
- package/dist/esm/operation-node/create-table-node.d.ts +4 -5
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -2
- package/dist/esm/operation-node/default-value-node.d.ts +2 -4
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.js +1 -2
- package/dist/esm/operation-node/explain-node.d.ts +2 -4
- package/dist/esm/operation-node/explain-node.js +1 -1
- package/dist/esm/operation-node/from-node.d.ts +3 -4
- package/dist/esm/operation-node/generated-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/esm/operation-node/having-node.d.ts +3 -4
- package/dist/esm/operation-node/having-node.js +4 -4
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
- package/dist/esm/operation-node/join-node.d.ts +5 -9
- package/dist/esm/operation-node/join-node.js +6 -6
- package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/esm/operation-node/on-conflict-node.js +12 -12
- package/dist/esm/operation-node/on-node.d.ts +3 -4
- package/dist/esm/operation-node/on-node.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-transformer.js +22 -15
- package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-visitor.js +2 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +5 -3
- package/dist/esm/operation-node/operator-node.js +2 -4
- package/dist/esm/operation-node/or-node.d.ts +3 -4
- package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
- package/dist/esm/operation-node/query-node.d.ts +2 -3
- package/dist/esm/operation-node/query-node.js +6 -6
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/esm/operation-node/select-modifier-node.js +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -6
- package/dist/esm/operation-node/select-query-node.js +10 -10
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
- package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/esm/operation-node/unary-operation-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/value-list-node.d.ts +2 -9
- package/dist/esm/operation-node/where-node.d.ts +3 -4
- package/dist/esm/operation-node/where-node.js +4 -4
- package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
- package/dist/esm/parser/binary-operation-parser.js +92 -0
- package/dist/esm/parser/coalesce-parser.d.ts +4 -0
- package/dist/esm/parser/coalesce-parser.js +8 -0
- package/dist/esm/parser/data-type-parser.d.ts +5 -5
- package/dist/esm/parser/default-value-parser.d.ts +4 -5
- package/dist/esm/parser/default-value-parser.js +2 -2
- package/dist/esm/parser/expression-parser.d.ts +10 -0
- package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
- package/dist/esm/parser/identifier-parser.d.ts +2 -0
- package/dist/esm/parser/identifier-parser.js +20 -0
- package/dist/esm/parser/insert-values-parser.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.js +2 -2
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/order-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +14 -14
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -7
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +2 -4
- package/dist/esm/parser/table-parser.d.ts +11 -12
- package/dist/esm/parser/table-parser.js +2 -2
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
- package/dist/esm/parser/unary-operation-parser.js +13 -0
- package/dist/esm/parser/update-set-parser.d.ts +1 -1
- package/dist/esm/parser/value-parser.d.ts +5 -9
- package/dist/esm/parser/value-parser.js +4 -4
- package/dist/esm/parser/with-parser.d.ts +3 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
- package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
- package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/delete-query-builder.js +19 -16
- package/dist/esm/query-builder/function-module.d.ts +123 -22
- package/dist/esm/query-builder/function-module.js +92 -49
- package/dist/esm/query-builder/having-interface.d.ts +9 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/esm/query-builder/insert-query-builder.js +11 -9
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +12 -1
- package/dist/esm/query-builder/join-builder.d.ts +9 -8
- package/dist/esm/query-builder/join-builder.js +10 -9
- package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/esm/query-builder/on-conflict-builder.js +18 -17
- package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
- package/dist/esm/query-builder/select-query-builder.js +38 -36
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/update-query-builder.js +19 -16
- package/dist/esm/query-builder/where-interface.d.ts +12 -11
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
- package/dist/esm/query-compiler/default-query-compiler.js +38 -34
- package/dist/esm/query-executor/query-executor-base.js +16 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
- package/dist/esm/raw-builder/raw-builder.js +23 -14
- package/dist/esm/raw-builder/sql.d.ts +4 -4
- package/dist/esm/schema/alter-column-builder.d.ts +28 -0
- package/dist/esm/schema/alter-column-builder.js +51 -0
- package/dist/esm/schema/alter-table-builder.d.ts +39 -341
- package/dist/esm/schema/alter-table-builder.js +59 -272
- package/dist/esm/schema/column-definition-builder.d.ts +43 -155
- package/dist/esm/schema/column-definition-builder.js +189 -0
- package/dist/esm/schema/create-index-builder.d.ts +3 -3
- package/dist/esm/schema/create-index-builder.js +7 -7
- package/dist/esm/schema/create-schema-builder.d.ts +1 -1
- package/dist/esm/schema/create-schema-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +39 -6
- package/dist/esm/schema/create-table-builder.js +47 -12
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +2 -2
- package/dist/esm/schema/create-view-builder.d.ts +4 -3
- package/dist/esm/schema/create-view-builder.js +7 -7
- package/dist/esm/schema/drop-index-builder.d.ts +1 -1
- package/dist/esm/schema/drop-index-builder.js +4 -4
- package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -3
- package/dist/esm/schema/drop-table-builder.d.ts +1 -1
- package/dist/esm/schema/drop-table-builder.js +3 -3
- package/dist/esm/schema/drop-type-builder.d.ts +1 -1
- package/dist/esm/schema/drop-type-builder.js +2 -2
- package/dist/esm/schema/drop-view-builder.d.ts +1 -1
- package/dist/esm/schema/drop-view-builder.js +4 -4
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +14 -13
- package/dist/esm/util/compilable.d.ts +2 -2
- package/dist/esm/util/explainable.d.ts +2 -2
- package/dist/esm/util/infer-result.d.ts +46 -0
- package/dist/esm/util/infer-result.js +2 -0
- package/dist/esm/util/log-once.d.ts +5 -0
- package/dist/esm/util/log-once.js +13 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +3 -0
- package/dist/esm/util/type-utils.d.ts +3 -17
- package/package.json +1 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/filter-node.js +0 -20
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/esm/operation-node/filter-node.d.ts +0 -18
- package/dist/esm/operation-node/filter-node.js +0 -18
- package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
2
|
export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
|
|
3
3
|
export interface Explainable {
|
|
4
|
-
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
4
|
+
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
|
|
5
5
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
|
+
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
|
+
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
5
|
+
import { Compilable } from './compilable.js';
|
|
6
|
+
/**
|
|
7
|
+
* A helper type that allows inferring a select/insert/update/delete query's result
|
|
8
|
+
* type from a query builder or compiled query.
|
|
9
|
+
*
|
|
10
|
+
* ### Examples
|
|
11
|
+
*
|
|
12
|
+
* Infer a query builder's result type:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { InferResult } from 'kysely'
|
|
16
|
+
*
|
|
17
|
+
* const query = db
|
|
18
|
+
* .selectFrom('person')
|
|
19
|
+
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
20
|
+
* .select(['person.first_name', 'pet.name'])
|
|
21
|
+
*
|
|
22
|
+
* type QueryResult = InferResult<typeof query> // { first_name: string; name: string; }[]
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Infer a compiled query's result type:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { InferResult } from 'kysely'
|
|
29
|
+
*
|
|
30
|
+
* const compiledQuery = db
|
|
31
|
+
* .insertInto('person')
|
|
32
|
+
* .values({
|
|
33
|
+
* first_name: 'Foo',
|
|
34
|
+
* last_name: 'Barson',
|
|
35
|
+
* gender: 'other',
|
|
36
|
+
* age: 15,
|
|
37
|
+
* })
|
|
38
|
+
* .returningAll()
|
|
39
|
+
* .compile()
|
|
40
|
+
*
|
|
41
|
+
* type QueryResult = InferResult<typeof compiledQuery> // Selectable<Person>[]
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
|
|
45
|
+
declare type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logOnce = void 0;
|
|
4
|
+
const LOGGED_MESSAGES = new Set();
|
|
5
|
+
/**
|
|
6
|
+
* Use for system-level logging, such as deprecation messages.
|
|
7
|
+
* Logs a message and ensures it won't be logged again.
|
|
8
|
+
*/
|
|
9
|
+
function logOnce(message) {
|
|
10
|
+
if (LOGGED_MESSAGES.has(message)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
LOGGED_MESSAGES.add(message);
|
|
14
|
+
console.log(message);
|
|
15
|
+
}
|
|
16
|
+
exports.logOnce = logOnce;
|
|
@@ -11,6 +11,7 @@ export declare function isBuffer(obj: unknown): obj is {
|
|
|
11
11
|
};
|
|
12
12
|
export declare function isFunction(obj: unknown): obj is Function;
|
|
13
13
|
export declare function isObject(obj: unknown): obj is Record<string, unknown>;
|
|
14
|
+
export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer | ArrayBufferView;
|
|
14
15
|
export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
|
|
15
16
|
export declare function freeze<T>(obj: T): Readonly<T>;
|
|
16
17
|
export declare function asArray<T>(arg: T | T[]): T[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compare = exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isUndefined = exports.isEmpty = void 0;
|
|
3
|
+
exports.compare = exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isArrayBufferOrView = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isUndefined = exports.isEmpty = void 0;
|
|
4
4
|
function isEmpty(obj) {
|
|
5
5
|
if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {
|
|
6
6
|
return obj.length === 0;
|
|
@@ -53,6 +53,10 @@ function isObject(obj) {
|
|
|
53
53
|
return typeof obj === 'object' && obj !== null;
|
|
54
54
|
}
|
|
55
55
|
exports.isObject = isObject;
|
|
56
|
+
function isArrayBufferOrView(obj) {
|
|
57
|
+
return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
|
|
58
|
+
}
|
|
59
|
+
exports.isArrayBufferOrView = isArrayBufferOrView;
|
|
56
60
|
function getLast(arr) {
|
|
57
61
|
return arr[arr.length - 1];
|
|
58
62
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
|
-
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
1
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
4
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
5
3
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
6
4
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
7
|
-
import { AggregateFunctionBuilder, AliasedAggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
|
|
8
5
|
/**
|
|
9
6
|
* Given an object type, extracts the union of all value types.
|
|
10
7
|
*/
|
|
@@ -100,24 +97,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
|
|
|
100
97
|
*/
|
|
101
98
|
export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
|
|
102
99
|
export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
|
|
103
|
-
export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
|
|
104
|
-
export declare type AnyRawBuilder = RawBuilder<any>;
|
|
105
|
-
export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
|
|
106
|
-
export declare type AnyAliasedAggregateFunctionBuilder = AliasedAggregateFunctionBuilder<any, any, any, any>;
|
|
107
|
-
export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
|
|
108
|
-
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
109
|
-
export declare type RawBuilderFactory<DB, TB extends keyof DB, O = any> = (qb: ExpressionBuilder<DB, TB>) => RawBuilder<O>;
|
|
110
|
-
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
111
|
-
export declare type AggregateFunctionBuilderFactory<DB, TB extends keyof DB, O = unknown> = (qb: ExpressionBuilder<DB, TB>) => AggregateFunctionBuilder<DB, TB, O>;
|
|
112
|
-
export declare type AliasedAggregateFunctionBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedAggregateFunctionBuilder;
|
|
113
100
|
export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
|
|
114
101
|
export declare type UnknownRow = Record<string, unknown>;
|
|
115
102
|
export declare type Nullable<T> = {
|
|
116
103
|
[P in keyof T]: T[P] | null;
|
|
117
104
|
};
|
|
118
|
-
export declare type NullableValues<T> = {
|
|
119
|
-
[P in keyof T]: Nullable<T[P]>;
|
|
120
|
-
};
|
|
121
105
|
/**
|
|
122
106
|
* Takes all properties from T1 and merges all properties from T2
|
|
123
107
|
* that don't exist in T1 as optional properties.
|
|
@@ -139,3 +123,5 @@ export declare type NullableValues<T> = {
|
|
|
139
123
|
* // { name: string, age: number, species?: 'cat' | 'dog' }
|
|
140
124
|
*/
|
|
141
125
|
export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
|
|
126
|
+
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
127
|
+
export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
|
|
@@ -49,6 +49,10 @@ export interface ColumnMetadata {
|
|
|
49
49
|
* on PostgreSQL, `INTEGER` on SQLite and `int` on MySQL.
|
|
50
50
|
*/
|
|
51
51
|
readonly dataType: string;
|
|
52
|
+
/**
|
|
53
|
+
* The schema this column's data type was created in.
|
|
54
|
+
*/
|
|
55
|
+
readonly dataTypeSchema?: string;
|
|
52
56
|
readonly isAutoIncrementing: boolean;
|
|
53
57
|
readonly isNullable: boolean;
|
|
54
58
|
readonly hasDefaultValue: boolean;
|
|
@@ -84,15 +84,18 @@ class MysqlConnection {
|
|
|
84
84
|
const result = await this.#executeQuery(compiledQuery);
|
|
85
85
|
if (isOkPacket(result)) {
|
|
86
86
|
const { insertId, affectedRows } = result;
|
|
87
|
+
const numAffectedRows = affectedRows !== undefined && affectedRows !== null
|
|
88
|
+
? BigInt(affectedRows)
|
|
89
|
+
: undefined;
|
|
87
90
|
return {
|
|
88
91
|
insertId: insertId !== undefined &&
|
|
89
92
|
insertId !== null &&
|
|
90
93
|
insertId.toString() !== '0'
|
|
91
94
|
? BigInt(insertId)
|
|
92
95
|
: undefined,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
// TODO: remove.
|
|
97
|
+
numUpdatedOrDeletedRows: numAffectedRows,
|
|
98
|
+
numAffectedRows,
|
|
96
99
|
rows: [],
|
|
97
100
|
};
|
|
98
101
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { sql } from '../../raw-builder/sql.js';
|
|
3
3
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
4
4
|
// Random id for our transaction lock.
|
|
5
|
-
const LOCK_ID =
|
|
5
|
+
const LOCK_ID = BigInt('3853314791062309107');
|
|
6
6
|
export class PostgresAdapter extends DialectAdapterBase {
|
|
7
7
|
get supportsTransactionalDdl() {
|
|
8
8
|
return true;
|
|
@@ -69,9 +69,14 @@ class PostgresConnection {
|
|
|
69
69
|
const result = await this.#client.query(compiledQuery.sql, [
|
|
70
70
|
...compiledQuery.parameters,
|
|
71
71
|
]);
|
|
72
|
-
if (result.command === '
|
|
72
|
+
if (result.command === 'INSERT' ||
|
|
73
|
+
result.command === 'UPDATE' ||
|
|
74
|
+
result.command === 'DELETE') {
|
|
75
|
+
const numAffectedRows = BigInt(result.rowCount);
|
|
73
76
|
return {
|
|
74
|
-
|
|
77
|
+
// TODO: remove.
|
|
78
|
+
numUpdatedOrDeletedRows: numAffectedRows,
|
|
79
|
+
numAffectedRows,
|
|
75
80
|
rows: result.rows ?? [],
|
|
76
81
|
};
|
|
77
82
|
}
|
|
@@ -17,10 +17,16 @@ export class PostgresIntrospector {
|
|
|
17
17
|
}
|
|
18
18
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
19
19
|
let query = this.#db
|
|
20
|
+
// column
|
|
20
21
|
.selectFrom('pg_catalog.pg_attribute as a')
|
|
22
|
+
// table
|
|
21
23
|
.innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')
|
|
24
|
+
// table schema
|
|
22
25
|
.innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')
|
|
26
|
+
// column data type
|
|
23
27
|
.innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')
|
|
28
|
+
// column data type schema
|
|
29
|
+
.innerJoin('pg_catalog.pg_namespace as dtns', 'typ.typnamespace', 'dtns.oid')
|
|
24
30
|
.select([
|
|
25
31
|
'a.attname as column',
|
|
26
32
|
'a.attnotnull as not_null',
|
|
@@ -28,6 +34,7 @@ export class PostgresIntrospector {
|
|
|
28
34
|
'c.relname as table',
|
|
29
35
|
'ns.nspname as schema',
|
|
30
36
|
'typ.typname as type',
|
|
37
|
+
'dtns.nspname as type_schema',
|
|
31
38
|
// Detect if the column is auto incrementing by finding the sequence
|
|
32
39
|
// that is created for `serial` and `bigserial` columns.
|
|
33
40
|
this.#db
|
|
@@ -77,6 +84,7 @@ export class PostgresIntrospector {
|
|
|
77
84
|
table.columns.push(freeze({
|
|
78
85
|
name: it.column,
|
|
79
86
|
dataType: it.type,
|
|
87
|
+
dataTypeSchema: it.type_schema,
|
|
80
88
|
isNullable: !it.not_null,
|
|
81
89
|
isAutoIncrementing: !!it.auto_incrementing,
|
|
82
90
|
hasDefaultValue: it.has_default,
|
|
@@ -55,10 +55,11 @@ class SqliteConnection {
|
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
57
|
const { changes, lastInsertRowid } = stmt.run(parameters);
|
|
58
|
+
const numAffectedRows = changes !== undefined && changes !== null ? BigInt(changes) : undefined;
|
|
58
59
|
return Promise.resolve({
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
// TODO: remove.
|
|
61
|
+
numUpdatedOrDeletedRows: numAffectedRows,
|
|
62
|
+
numAffectedRows,
|
|
62
63
|
insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
|
|
63
64
|
? BigInt(lastInsertRowid)
|
|
64
65
|
: undefined,
|
|
@@ -10,10 +10,14 @@ export interface DatabaseConnection {
|
|
|
10
10
|
}
|
|
11
11
|
export interface QueryResult<O> {
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* the number of rows the query updated/deleted.
|
|
13
|
+
* @deprecated use {@link QueryResult.numAffectedRows} instead.
|
|
15
14
|
*/
|
|
16
15
|
readonly numUpdatedOrDeletedRows?: bigint;
|
|
16
|
+
/**
|
|
17
|
+
* This is defined for insert, update and delete queries and contains
|
|
18
|
+
* the number of rows the query inserted/updated/deleted.
|
|
19
|
+
*/
|
|
20
|
+
readonly numAffectedRows?: bigint;
|
|
17
21
|
/**
|
|
18
22
|
* This is defined for insert queries on dialects that return
|
|
19
23
|
* the auto incrementing primary key from an insert.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
-
import {
|
|
2
|
+
import { SimpleReferenceExpressionNode } from '../operation-node/simple-reference-expression-node.js';
|
|
4
3
|
export declare class DynamicReferenceBuilder<R extends string = never> implements OperationNodeSource {
|
|
5
4
|
#private;
|
|
6
5
|
get dynamicReference(): string;
|
|
@@ -14,6 +13,6 @@ export declare class DynamicReferenceBuilder<R extends string = never> implement
|
|
|
14
13
|
*/
|
|
15
14
|
protected get refType(): R;
|
|
16
15
|
constructor(reference: string);
|
|
17
|
-
toOperationNode():
|
|
16
|
+
toOperationNode(): SimpleReferenceExpressionNode;
|
|
18
17
|
}
|
|
19
18
|
export declare function isDynamicReferenceBuilder(obj: unknown): obj is DynamicReferenceBuilder<any>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./dynamic-reference-builder.d.ts" />
|
|
2
2
|
import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
|
|
3
|
-
import {
|
|
3
|
+
import { parseSimpleReferenceExpression } from '../parser/reference-parser.js';
|
|
4
4
|
import { isObject, isString } from '../util/object-utils.js';
|
|
5
5
|
export class DynamicReferenceBuilder {
|
|
6
6
|
#dynamicReference;
|
|
@@ -22,7 +22,7 @@ export class DynamicReferenceBuilder {
|
|
|
22
22
|
this.#dynamicReference = reference;
|
|
23
23
|
}
|
|
24
24
|
toOperationNode() {
|
|
25
|
-
return
|
|
25
|
+
return parseSimpleReferenceExpression(this.#dynamicReference);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
export function isDynamicReferenceBuilder(obj) {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
|
+
/**
|
|
5
|
+
* `Expression` represents an arbitrary SQL expression with a type.
|
|
6
|
+
*
|
|
7
|
+
* Most Kysely methods accept instances of `Expression` and most classes like `SelectQueryBuilder`
|
|
8
|
+
* and the return value of the {@link sql} template tag implement it.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const exp1: Expression<string> = sql<string>`CONCAT('hello', ' ', 'world')`
|
|
12
|
+
* const exp2: Expression<{ first_name: string }> = db.selectFrom('person').select('first_name')
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* You can implement the `Expression` interface to create your own type-safe utilities for Kysely.
|
|
16
|
+
*/
|
|
17
|
+
export interface Expression<T> extends OperationNodeSource {
|
|
18
|
+
/**
|
|
19
|
+
* All expressions need to have this getter for complicated type-related reasons.
|
|
20
|
+
* Simply add this getter for your expression and always return `undefined` from it:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
24
|
+
* get expressionType(): T | undefined {
|
|
25
|
+
* return undefined
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* The getter is needed to make the expression assignable to another expression only
|
|
31
|
+
* if the types `T` are assignable. Without this property (or some other property
|
|
32
|
+
* that references `T`), you could assing `Expression<string>` to `Expression<number>`.
|
|
33
|
+
*/
|
|
34
|
+
get expressionType(): T | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
37
|
+
*
|
|
38
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
39
|
+
* template tag to build the node:
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
43
|
+
* toOperationNode(): OperationNode {
|
|
44
|
+
* return sql`some sql here`.toOperationNode()
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
toOperationNode(): OperationNode;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Just like `Expression<T>` but also holds an alias type `A`.
|
|
53
|
+
*
|
|
54
|
+
* `AliasedExpression<T, A>` can be used in places where, in addition to the value type `T`, you
|
|
55
|
+
* also need a name `A` for that value. For example anything you can pass into the `select` method
|
|
56
|
+
* needs to implement an `AliasedExpression<T, A>`. `A` becomes the name of the selected expression
|
|
57
|
+
* in the result and `T` becomes its type.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
*
|
|
61
|
+
* ```ts
|
|
62
|
+
* class SomeAliasedExpression<T, A extends string> implements AliasedExpression<T, A> {
|
|
63
|
+
* #expression: Expression<T>
|
|
64
|
+
* #alias: A
|
|
65
|
+
*
|
|
66
|
+
* constructor(expression: Expression<T>, alias: A) {
|
|
67
|
+
* this.#expression = expression
|
|
68
|
+
* this.#alias = alias
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* get expression(): Expression<T> {
|
|
72
|
+
* return this.#expression
|
|
73
|
+
* }
|
|
74
|
+
*
|
|
75
|
+
* get alias(): A {
|
|
76
|
+
* return this.#alias
|
|
77
|
+
* }
|
|
78
|
+
*
|
|
79
|
+
* toOperationNode(): AliasNode {
|
|
80
|
+
* return AliasNode.create(this.#expression.toOperationNode(), IdentifierNode.create(this.#alias))
|
|
81
|
+
* }
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export interface AliasedExpression<T, A extends string> extends OperationNodeSource {
|
|
86
|
+
/**
|
|
87
|
+
* Returns the aliased expression.
|
|
88
|
+
*/
|
|
89
|
+
get expression(): Expression<T>;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the alias.
|
|
92
|
+
*/
|
|
93
|
+
get alias(): A;
|
|
94
|
+
/**
|
|
95
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
96
|
+
*/
|
|
97
|
+
toOperationNode(): AliasNode;
|
|
98
|
+
}
|
|
99
|
+
export declare function isExpression(obj: unknown): obj is Expression<any>;
|
|
100
|
+
export declare function isAliasedExpression(obj: unknown): obj is AliasedExpression<any, any>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="./expression.d.ts" />
|
|
2
|
+
import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { isObject, isString } from '../util/object-utils.js';
|
|
4
|
+
export function isExpression(obj) {
|
|
5
|
+
return isObject(obj) && 'expressionType' in obj && isOperationNodeSource(obj);
|
|
6
|
+
}
|
|
7
|
+
export function isAliasedExpression(obj) {
|
|
8
|
+
return (isObject(obj) &&
|
|
9
|
+
'expression' in obj &&
|
|
10
|
+
isString(obj.alias) &&
|
|
11
|
+
isOperationNodeSource(obj));
|
|
12
|
+
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './kysely.js';
|
|
2
2
|
export * from './query-creator.js';
|
|
3
|
+
export * from './expression/expression.js';
|
|
3
4
|
export * from './query-builder/where-interface.js';
|
|
4
5
|
export * from './query-builder/returning-interface.js';
|
|
5
6
|
export * from './query-builder/having-interface.js';
|
|
@@ -38,6 +39,7 @@ export * from './schema/foreign-key-constraint-builder.js';
|
|
|
38
39
|
export * from './schema/alter-table-builder.js';
|
|
39
40
|
export * from './schema/create-view-builder.js';
|
|
40
41
|
export * from './schema/drop-view-builder.js';
|
|
42
|
+
export * from './schema/alter-column-builder.js';
|
|
41
43
|
export * from './dynamic/dynamic.js';
|
|
42
44
|
export * from './driver/driver.js';
|
|
43
45
|
export * from './driver/database-connection.js';
|
|
@@ -103,7 +105,6 @@ export * from './operation-node/drop-schema-node.js';
|
|
|
103
105
|
export * from './operation-node/drop-table-node.js';
|
|
104
106
|
export * from './operation-node/drop-type-node.js';
|
|
105
107
|
export * from './operation-node/drop-view-node.js';
|
|
106
|
-
export * from './operation-node/filter-node.js';
|
|
107
108
|
export * from './operation-node/foreign-key-constraint-node.js';
|
|
108
109
|
export * from './operation-node/from-node.js';
|
|
109
110
|
export * from './operation-node/generated-node.js';
|
|
@@ -122,7 +123,6 @@ export * from './operation-node/on-duplicate-key-node.js';
|
|
|
122
123
|
export * from './operation-node/on-node.js';
|
|
123
124
|
export * from './operation-node/operation-node-source.js';
|
|
124
125
|
export * from './operation-node/operation-node-transformer.js';
|
|
125
|
-
export * from './operation-node/operation-node-utils.js';
|
|
126
126
|
export * from './operation-node/operation-node-visitor.js';
|
|
127
127
|
export * from './operation-node/operation-node.js';
|
|
128
128
|
export * from './operation-node/operator-node.js';
|
|
@@ -157,18 +157,22 @@ export * from './operation-node/over-node.js';
|
|
|
157
157
|
export * from './operation-node/partition-by-node.js';
|
|
158
158
|
export * from './operation-node/partition-by-item-node.js';
|
|
159
159
|
export * from './operation-node/set-operation-node.js';
|
|
160
|
+
export * from './operation-node/binary-operation-node.js';
|
|
161
|
+
export * from './operation-node/unary-operation-node.js';
|
|
160
162
|
export * from './util/column-type.js';
|
|
161
163
|
export * from './util/compilable.js';
|
|
162
164
|
export * from './util/explainable.js';
|
|
163
165
|
export * from './util/log.js';
|
|
164
|
-
export { AnyColumn,
|
|
166
|
+
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, AnySelectQueryBuilder, Equals, UnknownRow, } from './util/type-utils.js';
|
|
167
|
+
export * from './util/infer-result.js';
|
|
168
|
+
export { logOnce } from './util/log-once.js';
|
|
165
169
|
export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
|
|
166
|
-
export { ReferenceExpression, ReferenceExpressionOrList, StringReference, } from './parser/reference-parser.js';
|
|
170
|
+
export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
|
|
167
171
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
168
|
-
export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
|
|
169
172
|
export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
|
|
170
173
|
export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
|
|
171
174
|
export { InsertObject } from './parser/insert-values-parser.js';
|
|
172
175
|
export { MutationObject } from './parser/update-set-parser.js';
|
|
173
176
|
export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
|
|
174
|
-
export {
|
|
177
|
+
export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, } from './parser/binary-operation-parser.js';
|
|
178
|
+
export { ExistsExpression } from './parser/unary-operation-parser.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="./index.d.ts" />
|
|
2
2
|
export * from './kysely.js';
|
|
3
3
|
export * from './query-creator.js';
|
|
4
|
+
export * from './expression/expression.js';
|
|
4
5
|
export * from './query-builder/where-interface.js';
|
|
5
6
|
export * from './query-builder/returning-interface.js';
|
|
6
7
|
export * from './query-builder/having-interface.js';
|
|
@@ -39,6 +40,7 @@ export * from './schema/foreign-key-constraint-builder.js';
|
|
|
39
40
|
export * from './schema/alter-table-builder.js';
|
|
40
41
|
export * from './schema/create-view-builder.js';
|
|
41
42
|
export * from './schema/drop-view-builder.js';
|
|
43
|
+
export * from './schema/alter-column-builder.js';
|
|
42
44
|
export * from './dynamic/dynamic.js';
|
|
43
45
|
export * from './driver/driver.js';
|
|
44
46
|
export * from './driver/database-connection.js';
|
|
@@ -104,7 +106,6 @@ export * from './operation-node/drop-schema-node.js';
|
|
|
104
106
|
export * from './operation-node/drop-table-node.js';
|
|
105
107
|
export * from './operation-node/drop-type-node.js';
|
|
106
108
|
export * from './operation-node/drop-view-node.js';
|
|
107
|
-
export * from './operation-node/filter-node.js';
|
|
108
109
|
export * from './operation-node/foreign-key-constraint-node.js';
|
|
109
110
|
export * from './operation-node/from-node.js';
|
|
110
111
|
export * from './operation-node/generated-node.js';
|
|
@@ -123,7 +124,6 @@ export * from './operation-node/on-duplicate-key-node.js';
|
|
|
123
124
|
export * from './operation-node/on-node.js';
|
|
124
125
|
export * from './operation-node/operation-node-source.js';
|
|
125
126
|
export * from './operation-node/operation-node-transformer.js';
|
|
126
|
-
export * from './operation-node/operation-node-utils.js';
|
|
127
127
|
export * from './operation-node/operation-node-visitor.js';
|
|
128
128
|
export * from './operation-node/operation-node.js';
|
|
129
129
|
export * from './operation-node/operator-node.js';
|
|
@@ -158,7 +158,11 @@ export * from './operation-node/over-node.js';
|
|
|
158
158
|
export * from './operation-node/partition-by-node.js';
|
|
159
159
|
export * from './operation-node/partition-by-item-node.js';
|
|
160
160
|
export * from './operation-node/set-operation-node.js';
|
|
161
|
+
export * from './operation-node/binary-operation-node.js';
|
|
162
|
+
export * from './operation-node/unary-operation-node.js';
|
|
161
163
|
export * from './util/column-type.js';
|
|
162
164
|
export * from './util/compilable.js';
|
|
163
165
|
export * from './util/explainable.js';
|
|
164
166
|
export * from './util/log.js';
|
|
167
|
+
export * from './util/infer-result.js';
|
|
168
|
+
export { logOnce } from './util/log-once.js';
|
|
@@ -25,11 +25,13 @@ export class FileMigrationProvider {
|
|
|
25
25
|
const migrations = {};
|
|
26
26
|
const files = await this.#props.fs.readdir(this.#props.migrationFolder);
|
|
27
27
|
for (const fileName of files) {
|
|
28
|
-
if (
|
|
29
|
-
!fileName.endsWith('.d.ts'))
|
|
28
|
+
if (fileName.endsWith('.js') ||
|
|
29
|
+
(fileName.endsWith('.ts') && !fileName.endsWith('.d.ts')) ||
|
|
30
|
+
fileName.endsWith('.mjs') ||
|
|
31
|
+
(fileName.endsWith('.mts') && !fileName.endsWith('.d.mts'))) {
|
|
30
32
|
const migration = await import(
|
|
31
33
|
/* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName));
|
|
32
|
-
const migrationKey = fileName.substring(0, fileName.
|
|
34
|
+
const migrationKey = fileName.substring(0, fileName.lastIndexOf('.'));
|
|
33
35
|
// Handle esModuleInterop export's `default` prop...
|
|
34
36
|
if (isMigration(migration?.default)) {
|
|
35
37
|
migrations[migrationKey] = migration.default;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { ColumnNode } from './column-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
2
|
import { OverNode } from './over-node.js';
|
|
4
|
-
import {
|
|
3
|
+
import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
|
|
4
|
+
import { WhereNode } from './where-node.js';
|
|
5
5
|
declare type AggregateFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
|
|
6
6
|
export interface AggregateFunctionNode extends OperationNode {
|
|
7
7
|
readonly kind: 'AggregateFunctionNode';
|
|
8
8
|
readonly func: AggregateFunction;
|
|
9
|
-
readonly column:
|
|
9
|
+
readonly column: SimpleReferenceExpressionNode;
|
|
10
10
|
readonly distinct?: boolean;
|
|
11
|
+
readonly filter?: WhereNode;
|
|
11
12
|
readonly over?: OverNode;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
@@ -15,8 +16,10 @@ export interface AggregateFunctionNode extends OperationNode {
|
|
|
15
16
|
*/
|
|
16
17
|
export declare const AggregateFunctionNode: Readonly<{
|
|
17
18
|
is(node: OperationNode): node is AggregateFunctionNode;
|
|
18
|
-
create(aggregateFunction: AggregateFunction, column:
|
|
19
|
+
create(aggregateFunction: AggregateFunction, column: SimpleReferenceExpressionNode): AggregateFunctionNode;
|
|
19
20
|
cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
|
|
21
|
+
cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
|
|
22
|
+
cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
|
|
20
23
|
cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
|
|
21
24
|
}>;
|
|
22
25
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="./aggregate-function-node.d.ts" />
|
|
2
2
|
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
import { WhereNode } from './where-node.js';
|
|
3
4
|
/**
|
|
4
5
|
* @internal
|
|
5
6
|
*/
|
|
@@ -20,6 +21,22 @@ export const AggregateFunctionNode = freeze({
|
|
|
20
21
|
distinct: true,
|
|
21
22
|
});
|
|
22
23
|
},
|
|
24
|
+
cloneWithFilter(aggregateFunctionNode, filter) {
|
|
25
|
+
return freeze({
|
|
26
|
+
...aggregateFunctionNode,
|
|
27
|
+
filter: aggregateFunctionNode.filter
|
|
28
|
+
? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'And', filter)
|
|
29
|
+
: WhereNode.create(filter),
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
cloneWithOrFilter(aggregateFunctionNode, filter) {
|
|
33
|
+
return freeze({
|
|
34
|
+
...aggregateFunctionNode,
|
|
35
|
+
filter: aggregateFunctionNode.filter
|
|
36
|
+
? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'Or', filter)
|
|
37
|
+
: WhereNode.create(filter),
|
|
38
|
+
});
|
|
39
|
+
},
|
|
23
40
|
cloneWithOver(aggregateFunctionNode, over) {
|
|
24
41
|
return freeze({
|
|
25
42
|
...aggregateFunctionNode,
|