@axium/server 0.22.13 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/chunks/{XdRahthI.js → B1E1cVbi.js} +1 -1
- package/build/client/_app/immutable/chunks/B1E1cVbi.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1E1cVbi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dext3JFj.js → Ci6FLQWx.js} +1 -1
- package/build/client/_app/immutable/chunks/Ci6FLQWx.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ci6FLQWx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js +51 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.C5LuJT06.js → app.DajZ-3z_.js} +2 -2
- package/build/client/_app/immutable/entry/app.DajZ-3z_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DajZ-3z_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CjB-0vPC.js +1 -0
- package/build/client/_app/immutable/entry/start.CjB-0vPC.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CjB-0vPC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BAsobPu4.js → 1.Bvl_5X3J.js} +1 -1
- package/build/client/_app/immutable/nodes/1.Bvl_5X3J.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.Bvl_5X3J.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js +7 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.eINJOagY.js → 4.Dhj0R0r7.js} +1 -1
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js +1 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.BbgUOuKV.js → 6.BtB2uWXy.js} +1 -1
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{1-5bszWZCQ.js → 1-C1tGJX1L.js} +2 -2
- package/build/server/chunks/{1-5bszWZCQ.js.map → 1-C1tGJX1L.js.map} +1 -1
- package/build/server/chunks/{3-CGyRgNsB.js → 3-Ds69w-dU.js} +3 -3
- package/build/server/chunks/{3-CGyRgNsB.js.map → 3-Ds69w-dU.js.map} +1 -1
- package/build/server/chunks/{4-BuMxaapL.js → 4-BscEiwUk.js} +3 -3
- package/build/server/chunks/{4-BuMxaapL.js.map → 4-BscEiwUk.js.map} +1 -1
- package/build/server/chunks/{5-BhHQT7ic.js → 5-H0ePIJBE.js} +3 -3
- package/build/server/chunks/{5-BhHQT7ic.js.map → 5-H0ePIJBE.js.map} +1 -1
- package/build/server/chunks/{6-Do2XsDIk.js → 6-BrPpcagX.js} +3 -3
- package/build/server/chunks/{6-Do2XsDIk.js.map → 6-BrPpcagX.js.map} +1 -1
- package/build/server/chunks/{FormDialog-BemX_bll.js → FormDialog-CB-2YGWi.js} +29 -26
- package/build/server/chunks/{FormDialog-BemX_bll.js.map → FormDialog-CB-2YGWi.js.map} +1 -1
- package/build/server/chunks/{Logout-BhQS74v2.js → Logout-LKOt-AST.js} +2 -2
- package/build/server/chunks/{Logout-BhQS74v2.js.map → Logout-LKOt-AST.js.map} +1 -1
- package/build/server/chunks/_page.svelte-B1LK5J87.js +11 -0
- package/build/server/chunks/{_page.svelte-BdL0IPY2.js.map → _page.svelte-B1LK5J87.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Q_wBpED1.js → _page.svelte-CMtkwvbP.js} +3 -3
- package/build/server/chunks/{_page.svelte-Q_wBpED1.js.map → _page.svelte-CMtkwvbP.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Cw9An0SZ.js → _page.svelte-CbI2KxeA.js} +3 -3
- package/build/server/chunks/{_page.svelte-Cw9An0SZ.js.map → _page.svelte-CbI2KxeA.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-D6BUZio7.js → _page.svelte-dZWfu9yR.js} +7 -4
- package/build/server/chunks/_page.svelte-dZWfu9yR.js.map +1 -0
- package/build/server/chunks/{hooks.server-B7iBt6uC.js → hooks.server-BBmyHiWm.js} +169 -152
- package/build/server/chunks/hooks.server-BBmyHiWm.js.map +1 -0
- package/build/server/chunks/{index-wXTeP1jh.js → index-CvHf_GW2.js} +257 -275
- package/build/server/chunks/index-CvHf_GW2.js.map +1 -0
- package/build/server/index.js +3 -3
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +6 -6
- package/build/server/manifest.js.map +1 -1
- package/dist/api/metadata.js +3 -4
- package/dist/api/passkeys.js +1 -1
- package/dist/api/register.js +3 -3
- package/dist/api/users.js +5 -4
- package/dist/apps.d.ts +1 -4
- package/dist/apps.js +0 -5
- package/dist/auth.d.ts +1 -3
- package/dist/auth.js +1 -1
- package/dist/config.d.ts +6 -6
- package/dist/plugins.d.ts +12 -0
- package/dist/plugins.js +8 -0
- package/dist/requests.js +4 -2
- package/package.json +2 -2
- package/web/template.html +0 -3
- package/build/client/_app/immutable/chunks/CiUsfGrc.js +0 -43
- package/build/client/_app/immutable/chunks/CiUsfGrc.js.br +0 -0
- package/build/client/_app/immutable/chunks/CiUsfGrc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dext3JFj.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dext3JFj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/XdRahthI.js.br +0 -0
- package/build/client/_app/immutable/chunks/XdRahthI.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.C5LuJT06.js.br +0 -0
- package/build/client/_app/immutable/entry/app.C5LuJT06.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BQJupvGE.js +0 -1
- package/build/client/_app/immutable/entry/start.BQJupvGE.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BQJupvGE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BAsobPu4.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BAsobPu4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.C18mc0nK.js +0 -7
- package/build/client/_app/immutable/nodes/3.C18mc0nK.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.C18mc0nK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.eINJOagY.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.eINJOagY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DITFCLgK.js +0 -1
- package/build/client/_app/immutable/nodes/5.DITFCLgK.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DITFCLgK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BbgUOuKV.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BbgUOuKV.js.gz +0 -0
- package/build/server/chunks/_page.svelte-BdL0IPY2.js +0 -11
- package/build/server/chunks/_page.svelte-D6BUZio7.js.map +0 -1
- package/build/server/chunks/hooks.server-B7iBt6uC.js.map +0 -1
- package/build/server/chunks/index-wXTeP1jh.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.server-BBmyHiWm.js","sources":["../../../../node_modules/zod/v4/core/function.js","../../../dist/state.js","../../../dist/io.js","../../../../core/dist/access.js","../../../../core/dist/apps.js","../../../../core/dist/passkeys.js","../../../../core/dist/preferences.js","../../../../core/dist/requests.js","../../../../core/dist/schemas.js","../../../../core/dist/user.js","../../../dist/apps.js","../../../dist/plugins.js","../../../dist/config.js","../../../../node_modules/kysely/dist/esm/util/object-utils.js","../../../../node_modules/kysely/dist/esm/operation-node/alter-table-node.js","../../../../node_modules/kysely/dist/esm/operation-node/identifier-node.js","../../../../node_modules/kysely/dist/esm/operation-node/create-index-node.js","../../../../node_modules/kysely/dist/esm/operation-node/create-schema-node.js","../../../../node_modules/kysely/dist/esm/operation-node/create-table-node.js","../../../../node_modules/kysely/dist/esm/operation-node/schemable-identifier-node.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-index-node.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-schema-node.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-table-node.js","../../../../node_modules/kysely/dist/esm/operation-node/alias-node.js","../../../../node_modules/kysely/dist/esm/operation-node/table-node.js","../../../../node_modules/kysely/dist/esm/operation-node/operation-node-source.js","../../../../node_modules/kysely/dist/esm/expression/expression.js","../../../../node_modules/kysely/dist/esm/operation-node/select-modifier-node.js","../../../../node_modules/kysely/dist/esm/operation-node/and-node.js","../../../../node_modules/kysely/dist/esm/operation-node/or-node.js","../../../../node_modules/kysely/dist/esm/operation-node/on-node.js","../../../../node_modules/kysely/dist/esm/operation-node/join-node.js","../../../../node_modules/kysely/dist/esm/operation-node/binary-operation-node.js","../../../../node_modules/kysely/dist/esm/operation-node/operator-node.js","../../../../node_modules/kysely/dist/esm/operation-node/column-node.js","../../../../node_modules/kysely/dist/esm/operation-node/select-all-node.js","../../../../node_modules/kysely/dist/esm/operation-node/reference-node.js","../../../../node_modules/kysely/dist/esm/dynamic/dynamic-reference-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/order-by-item-node.js","../../../../node_modules/kysely/dist/esm/operation-node/raw-node.js","../../../../node_modules/kysely/dist/esm/operation-node/collate-node.js","../../../../node_modules/kysely/dist/esm/query-builder/order-by-item-builder.js","../../../../node_modules/kysely/dist/esm/util/log-once.js","../../../../node_modules/kysely/dist/esm/parser/order-by-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/json-reference-node.js","../../../../node_modules/kysely/dist/esm/operation-node/json-operator-chain-node.js","../../../../node_modules/kysely/dist/esm/operation-node/json-path-node.js","../../../../node_modules/kysely/dist/esm/parser/reference-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/primitive-value-list-node.js","../../../../node_modules/kysely/dist/esm/operation-node/value-list-node.js","../../../../node_modules/kysely/dist/esm/operation-node/value-node.js","../../../../node_modules/kysely/dist/esm/parser/value-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/parens-node.js","../../../../node_modules/kysely/dist/esm/parser/binary-operation-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/order-by-node.js","../../../../node_modules/kysely/dist/esm/operation-node/partition-by-node.js","../../../../node_modules/kysely/dist/esm/operation-node/over-node.js","../../../../node_modules/kysely/dist/esm/operation-node/from-node.js","../../../../node_modules/kysely/dist/esm/operation-node/group-by-node.js","../../../../node_modules/kysely/dist/esm/operation-node/having-node.js","../../../../node_modules/kysely/dist/esm/operation-node/insert-query-node.js","../../../../node_modules/kysely/dist/esm/operation-node/list-node.js","../../../../node_modules/kysely/dist/esm/operation-node/update-query-node.js","../../../../node_modules/kysely/dist/esm/operation-node/using-node.js","../../../../node_modules/kysely/dist/esm/operation-node/delete-query-node.js","../../../../node_modules/kysely/dist/esm/operation-node/where-node.js","../../../../node_modules/kysely/dist/esm/operation-node/returning-node.js","../../../../node_modules/kysely/dist/esm/operation-node/explain-node.js","../../../../node_modules/kysely/dist/esm/operation-node/when-node.js","../../../../node_modules/kysely/dist/esm/operation-node/merge-query-node.js","../../../../node_modules/kysely/dist/esm/operation-node/output-node.js","../../../../node_modules/kysely/dist/esm/operation-node/query-node.js","../../../../node_modules/kysely/dist/esm/operation-node/select-query-node.js","../../../../node_modules/kysely/dist/esm/query-builder/join-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/partition-by-item-node.js","../../../../node_modules/kysely/dist/esm/parser/partition-by-parser.js","../../../../node_modules/kysely/dist/esm/query-builder/over-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/selection-node.js","../../../../node_modules/kysely/dist/esm/parser/select-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/values-node.js","../../../../node_modules/kysely/dist/esm/operation-node/default-insert-value-node.js","../../../../node_modules/kysely/dist/esm/parser/insert-values-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/column-update-node.js","../../../../node_modules/kysely/dist/esm/parser/update-set-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/on-duplicate-key-node.js","../../../../node_modules/kysely/dist/esm/query-builder/insert-result.js","../../../../node_modules/kysely/dist/esm/query-builder/no-result-error.js","../../../../node_modules/kysely/dist/esm/operation-node/on-conflict-node.js","../../../../node_modules/kysely/dist/esm/query-builder/on-conflict-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/top-node.js","../../../../node_modules/kysely/dist/esm/parser/top-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/or-action-node.js","../../../../node_modules/kysely/dist/esm/query-builder/insert-query-builder.js","../../../../node_modules/kysely/dist/esm/query-builder/delete-result.js","../../../../node_modules/kysely/dist/esm/operation-node/limit-node.js","../../../../node_modules/kysely/dist/esm/query-builder/delete-query-builder.js","../../../../node_modules/kysely/dist/esm/query-builder/update-result.js","../../../../node_modules/kysely/dist/esm/query-builder/update-query-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/common-table-expression-name-node.js","../../../../node_modules/kysely/dist/esm/operation-node/common-table-expression-node.js","../../../../node_modules/kysely/dist/esm/query-builder/cte-builder.js","../../../../node_modules/kysely/dist/esm/parser/with-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/with-node.js","../../../../node_modules/kysely/dist/esm/util/random-string.js","../../../../node_modules/kysely/dist/esm/util/query-id.js","../../../../node_modules/kysely/dist/esm/util/require-all-props.js","../../../../node_modules/kysely/dist/esm/operation-node/operation-node-transformer.js","../../../../node_modules/kysely/dist/esm/plugin/with-schema/with-schema-transformer.js","../../../../node_modules/kysely/dist/esm/plugin/with-schema/with-schema-plugin.js","../../../../node_modules/kysely/dist/esm/operation-node/matched-node.js","../../../../node_modules/kysely/dist/esm/parser/merge-parser.js","../../../../node_modules/kysely/dist/esm/util/deferred.js","../../../../node_modules/kysely/dist/esm/util/provide-controlled-connection.js","../../../../node_modules/kysely/dist/esm/query-executor/query-executor-base.js","../../../../node_modules/kysely/dist/esm/query-executor/noop-query-executor.js","../../../../node_modules/kysely/dist/esm/query-builder/merge-result.js","../../../../node_modules/kysely/dist/esm/query-builder/merge-query-builder.js","../../../../node_modules/kysely/dist/esm/query-creator.js","../../../../node_modules/kysely/dist/esm/parser/parse-utils.js","../../../../node_modules/kysely/dist/esm/parser/join-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/offset-node.js","../../../../node_modules/kysely/dist/esm/operation-node/group-by-item-node.js","../../../../node_modules/kysely/dist/esm/parser/group-by-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/set-operation-node.js","../../../../node_modules/kysely/dist/esm/parser/set-operation-parser.js","../../../../node_modules/kysely/dist/esm/expression/expression-wrapper.js","../../../../node_modules/kysely/dist/esm/operation-node/fetch-node.js","../../../../node_modules/kysely/dist/esm/parser/fetch-parser.js","../../../../node_modules/kysely/dist/esm/query-builder/select-query-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/aggregate-function-node.js","../../../../node_modules/kysely/dist/esm/operation-node/function-node.js","../../../../node_modules/kysely/dist/esm/query-builder/aggregate-function-builder.js","../../../../node_modules/kysely/dist/esm/query-builder/function-module.js","../../../../node_modules/kysely/dist/esm/operation-node/unary-operation-node.js","../../../../node_modules/kysely/dist/esm/parser/unary-operation-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/case-node.js","../../../../node_modules/kysely/dist/esm/query-builder/case-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/json-path-leg-node.js","../../../../node_modules/kysely/dist/esm/query-builder/json-path-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/tuple-node.js","../../../../node_modules/kysely/dist/esm/operation-node/data-type-node.js","../../../../node_modules/kysely/dist/esm/parser/data-type-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/cast-node.js","../../../../node_modules/kysely/dist/esm/expression/expression-builder.js","../../../../node_modules/kysely/dist/esm/parser/expression-parser.js","../../../../node_modules/kysely/dist/esm/dynamic/dynamic-table-builder.js","../../../../node_modules/kysely/dist/esm/parser/table-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/add-column-node.js","../../../../node_modules/kysely/dist/esm/operation-node/column-definition-node.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-column-node.js","../../../../node_modules/kysely/dist/esm/operation-node/rename-column-node.js","../../../../node_modules/kysely/dist/esm/operation-node/check-constraint-node.js","../../../../node_modules/kysely/dist/esm/operation-node/references-node.js","../../../../node_modules/kysely/dist/esm/parser/default-value-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/generated-node.js","../../../../node_modules/kysely/dist/esm/operation-node/default-value-node.js","../../../../node_modules/kysely/dist/esm/parser/on-modify-action-parser.js","../../../../node_modules/kysely/dist/esm/schema/column-definition-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/modify-column-node.js","../../../../node_modules/kysely/dist/esm/operation-node/foreign-key-constraint-node.js","../../../../node_modules/kysely/dist/esm/schema/foreign-key-constraint-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/add-constraint-node.js","../../../../node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-constraint-node.js","../../../../node_modules/kysely/dist/esm/operation-node/alter-column-node.js","../../../../node_modules/kysely/dist/esm/schema/alter-column-builder.js","../../../../node_modules/kysely/dist/esm/schema/alter-table-executor.js","../../../../node_modules/kysely/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js","../../../../node_modules/kysely/dist/esm/schema/alter-table-drop-constraint-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/primary-key-constraint-node.js","../../../../node_modules/kysely/dist/esm/operation-node/add-index-node.js","../../../../node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.js","../../../../node_modules/kysely/dist/esm/schema/unique-constraint-builder.js","../../../../node_modules/kysely/dist/esm/schema/primary-key-constraint-builder.js","../../../../node_modules/kysely/dist/esm/schema/check-constraint-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/rename-constraint-node.js","../../../../node_modules/kysely/dist/esm/schema/alter-table-builder.js","../../../../node_modules/kysely/dist/esm/plugin/immediate-value/immediate-value-transformer.js","../../../../node_modules/kysely/dist/esm/schema/create-index-builder.js","../../../../node_modules/kysely/dist/esm/schema/create-schema-builder.js","../../../../node_modules/kysely/dist/esm/parser/on-commit-action-parse.js","../../../../node_modules/kysely/dist/esm/schema/create-table-builder.js","../../../../node_modules/kysely/dist/esm/schema/drop-index-builder.js","../../../../node_modules/kysely/dist/esm/schema/drop-schema-builder.js","../../../../node_modules/kysely/dist/esm/schema/drop-table-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/create-view-node.js","../../../../node_modules/kysely/dist/esm/plugin/immediate-value/immediate-value-plugin.js","../../../../node_modules/kysely/dist/esm/schema/create-view-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-view-node.js","../../../../node_modules/kysely/dist/esm/schema/drop-view-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/create-type-node.js","../../../../node_modules/kysely/dist/esm/schema/create-type-builder.js","../../../../node_modules/kysely/dist/esm/operation-node/drop-type-node.js","../../../../node_modules/kysely/dist/esm/schema/drop-type-builder.js","../../../../node_modules/kysely/dist/esm/parser/identifier-parser.js","../../../../node_modules/kysely/dist/esm/operation-node/refresh-materialized-view-node.js","../../../../node_modules/kysely/dist/esm/schema/refresh-materialized-view-builder.js","../../../../node_modules/kysely/dist/esm/schema/schema.js","../../../../node_modules/kysely/dist/esm/dynamic/dynamic.js","../../../../node_modules/kysely/dist/esm/driver/default-connection-provider.js","../../../../node_modules/kysely/dist/esm/query-executor/default-query-executor.js","../../../../node_modules/kysely/dist/esm/util/performance-now.js","../../../../node_modules/kysely/dist/esm/driver/runtime-driver.js","../../../../node_modules/kysely/dist/esm/driver/single-connection-provider.js","../../../../node_modules/kysely/dist/esm/driver/driver.js","../../../../node_modules/kysely/dist/esm/util/log.js","../../../../node_modules/kysely/dist/esm/util/compilable.js","../../../../node_modules/kysely/dist/esm/kysely.js","../../../../node_modules/kysely/dist/esm/raw-builder/raw-builder.js","../../../../node_modules/kysely/dist/esm/raw-builder/sql.js","../../../../node_modules/kysely/dist/esm/operation-node/operation-node-visitor.js","../../../../node_modules/kysely/dist/esm/query-compiler/default-query-compiler.js","../../../../node_modules/kysely/dist/esm/query-compiler/compiled-query.js","../../../../node_modules/kysely/dist/esm/dialect/dialect-adapter-base.js","../../../../node_modules/kysely/dist/esm/parser/savepoint-parser.js","../../../../node_modules/kysely/dist/esm/migration/migrator.js","../../../../node_modules/kysely/dist/esm/dialect/postgres/postgres-query-compiler.js","../../../../node_modules/kysely/dist/esm/dialect/postgres/postgres-introspector.js","../../../../node_modules/kysely/dist/esm/dialect/postgres/postgres-adapter.js","../../../../node_modules/kysely/dist/esm/util/stack-trace-utils.js","../../../../node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js","../../../../node_modules/kysely/dist/esm/dialect/postgres/postgres-dialect.js","../../../../node_modules/kysely/dist/esm/helpers/postgres.js","../../../dist/database.js","../../../dist/audit.js","../../../dist/requests.js","../../../dist/auth.js","../../../dist/routes.js","../../../dist/api/metadata.js","../../../dist/api/passkeys.js","../../../dist/api/register.js","../../../dist/api/session.js","../../../dist/api/users.js","../../../dist/serve.js","../../../dist/sveltekit.js","../../../.svelte-kit/adapter-node/chunks/hooks.server.js"],"sourcesContent":["import { _array, _tuple, _unknown } from \"./api.js\";\nimport { parse, parseAsync } from \"./parse.js\";\nimport * as schemas from \"./schemas.js\";\nimport { $ZodTuple } from \"./schemas.js\";\nexport class $ZodFunction {\n constructor(def) {\n this._def = def;\n this.def = def;\n }\n implement(func) {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n const impl = ((...args) => {\n const parsedArgs = this._def.input ? parse(this._def.input, args, undefined, { callee: impl }) : args;\n if (!Array.isArray(parsedArgs)) {\n throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n }\n const output = func(...parsedArgs);\n return this._def.output ? parse(this._def.output, output, undefined, { callee: impl }) : output;\n });\n return impl;\n }\n implementAsync(func) {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n const impl = (async (...args) => {\n const parsedArgs = this._def.input ? await parseAsync(this._def.input, args, undefined, { callee: impl }) : args;\n if (!Array.isArray(parsedArgs)) {\n throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n }\n const output = await func(...parsedArgs);\n return this._def.output ? parseAsync(this._def.output, output, undefined, { callee: impl }) : output;\n });\n return impl;\n }\n input(...args) {\n const F = this.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: this._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: this._def.output,\n });\n }\n output(output) {\n const F = this.constructor;\n return new F({\n type: \"function\",\n input: this._def.input,\n output,\n });\n }\n}\nfunction _function(params) {\n return new $ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input)\n ? _tuple(schemas.$ZodTuple, params?.input)\n : (params?.input ?? _array(schemas.$ZodArray, _unknown(schemas.$ZodUnknown))),\n output: params?.output ?? _unknown(schemas.$ZodUnknown),\n });\n}\nexport { _function as function };\n","import { styleText } from 'node:util';\nconst sym = Symbol.for('Axium:state');\nglobalThis[sym] ||= Object.create({ _errored: false });\nlet _doWarnings = false;\nexport function _duplicateStateWarnings(value) {\n _doWarnings = value;\n}\n/**\n * Prevent duplicate shared state.\n */\nexport function _unique(id, value) {\n const state = globalThis[sym];\n const _err = new Error();\n Error.captureStackTrace(_err, _unique);\n const stack = _err.stack.slice(6);\n if (!(id in state)) {\n state[id] = { value, stack };\n return value;\n }\n if (!state._errored) {\n console.error(styleText('red', 'Duplicate Axium server state! You might have multiple instances of the same module loaded.'));\n state._errored = true;\n }\n _doWarnings && console.warn(styleText('yellow', `Mitigating duplicate state! (${id})\\n${stack}\\nFrom original\\n${state[id].stack}`));\n return state[id].value;\n}\n","import { Logger } from 'logzen';\nimport { exec } from 'node:child_process';\nimport * as fs from 'node:fs';\nimport { homedir } from 'node:os';\nimport { dirname, join, resolve } from 'node:path/posix';\nimport { styleText } from 'node:util';\nimport { _unique } from './state.js';\nexport const systemDir = '/etc/axium';\nexport const userDir = join(homedir(), '.axium');\nexport const dirs = _unique('dirs', [systemDir, userDir]);\nfor (let dir = resolve(process.cwd()); dir !== '/'; dir = dirname(dir)) {\n if (fs.existsSync(join(dir, '.axium')))\n dirs.push(join(dir, '.axium'));\n}\nif (process.env.AXIUM_DIR)\n dirs.push(process.env.AXIUM_DIR);\ntry {\n fs.mkdirSync(systemDir, { recursive: true });\n}\ncatch {\n // Missing permissions\n}\nfs.mkdirSync(userDir, { recursive: true });\nexport const logger = new Logger({\n hideWarningStack: true,\n noGlobalConsole: true,\n});\n/**\n * @internal\n */\nexport const output = {\n constructor: { name: 'Console' },\n error(message) {\n console.error(message.startsWith('\\x1b') ? message : styleText('red', message));\n },\n warn(message) {\n console.warn(message.startsWith('\\x1b') ? message : styleText('yellow', message));\n },\n info(message) {\n console.info(message.startsWith('\\x1b') ? message : styleText('blue', message));\n },\n log(message) {\n console.log(message);\n },\n debug(message) {\n _debugOutput && console.debug(message.startsWith('\\x1b') ? message : styleText('gray', message));\n },\n};\nlogger.attach(output);\nlet timeout = 1000;\nexport function setCommandTimeout(value) {\n timeout = value;\n}\n/**\n * Run a system command with the fancy \"Example... done.\"\n * @internal\n */\nexport async function run(message, command) {\n let stderr;\n try {\n start(message);\n const { promise, resolve, reject } = Promise.withResolvers();\n exec(command, { timeout }, (err, stdout, _stderr) => {\n stderr = _stderr.startsWith('ERROR:') ? _stderr.slice(6).trim() : _stderr;\n if (err)\n reject('[command]');\n else\n resolve(stdout);\n });\n const value = await promise;\n done();\n return value;\n }\n catch (error) {\n throw error == '[command]'\n ? stderr?.slice(0, 100) || 'failed.'\n : typeof error == 'object' && 'message' in error\n ? error.message\n : error;\n }\n}\n/** Yet another convenience function */\nexport function exit(message, code = 1) {\n if (message instanceof Error)\n message = message.message;\n output.error(message);\n process.exit(code);\n}\nexport function handleError(e) {\n if (typeof e == 'number')\n process.exit(e);\n else\n exit(e);\n}\nlet _debugOutput = false;\n/**\n * Enable or disable debug output.\n */\nexport function _setDebugOutput(enabled) {\n _debugOutput = enabled;\n}\nfunction defaultOutput(tag, message = '') {\n switch (tag) {\n case 'debug':\n _debugOutput && output.debug(message);\n break;\n case 'info':\n console.log(message);\n break;\n case 'warn':\n console.warn(styleText('yellow', message));\n break;\n case 'error':\n console.error(styleText('red', message));\n break;\n case 'start':\n process.stdout.write(message + '... ');\n break;\n case 'done':\n console.log('done.');\n break;\n case 'plugin':\n console.log(styleText('whiteBright', 'Running plugin: ' + message));\n }\n}\nlet _taggedOutput = defaultOutput;\nexport function useTaggedOutput(output) {\n _taggedOutput = output;\n}\n// Shortcuts for tagged output\nexport function done() {\n _taggedOutput?.('done');\n}\nexport function start(message) {\n _taggedOutput?.('start', message);\n}\nexport function plugin(name) {\n _taggedOutput?.('plugin', name);\n}\nexport function debug(message) {\n _taggedOutput?.('debug', message);\n}\nexport function info(message) {\n _taggedOutput?.('info', message);\n}\nexport function warn(message) {\n _taggedOutput?.('warn', message);\n}\nexport function error(message) {\n _taggedOutput?.('error', message);\n}\n/** @internal */\nexport const _portMethods = ['node-cap'];\n/** @internal */\nexport const _portActions = ['enable', 'disable'];\n/**\n * This changes if Axium can use restricted ports (like 80 and 443) without root privileges.\n * Use of these ports is needed so the origin doesn't have a port.\n * If the origin has a port, passkeys do not work correctly with some password managers.\n */\nexport async function restrictedPorts(opt) {\n start('Checking for root privileges');\n if (process.getuid?.() != 0)\n throw 'root privileges are needed to change restricted ports.';\n done();\n start('Checking ports method');\n if (!_portMethods.includes(opt.method))\n throw 'invalid';\n done();\n start('Checking ports action');\n if (!_portActions.includes(opt.action))\n throw 'invalid';\n done();\n switch (opt.method) {\n case 'node-cap': {\n const setcap = await run('Finding setcap', 'command -v setcap')\n .then(e => e.trim())\n .catch(() => {\n warn('not in path.');\n start('Checking for /usr/sbin/setcap');\n fs.accessSync('/usr/sbin/setcap', fs.constants.X_OK);\n done();\n return '/usr/sbin/setcap';\n });\n debug('Using setcap at ' + setcap);\n let { node } = opt;\n node ||= await run('Finding node', 'command -v node')\n .then(e => e.trim())\n .catch(() => {\n warn('not in path.');\n start('Checking for /usr/bin/node');\n fs.accessSync('/usr/bin/node', fs.constants.X_OK);\n done();\n return '/usr/bin/node';\n });\n start('Resolving real path for node');\n node = fs.realpathSync(node);\n done();\n debug('Using node at ' + node);\n await run('Setting ports capability', `${setcap} cap_net_bind_service=${opt.action == 'enable' ? '+' : '-'}ep ${node}`);\n break;\n }\n }\n}\n/**\n * This is a factory for handling errors when performing operations.\n * The handler will allow the parent scope to continue if a relation already exists,\n * rather than fatally exiting.\n */\nexport function someWarnings(...allowList) {\n return (error) => {\n error = typeof error == 'object' && 'message' in error ? error.message : error;\n for (const [pattern, message = error] of allowList) {\n if (!pattern.test(error))\n continue;\n warn(message);\n return;\n }\n throw error;\n };\n}\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n// Shortcut to convert to 2-digit. Mostly used to make the line shorter.\nconst _2 = (v) => v.toString().padStart(2, '0');\n/**\n * Get a human-readable string for a date that also fits into CLIs well (fixed-width)\n */\nexport function prettyDate(date) {\n return `${date.getFullYear()} ${months[date.getMonth()]} ${_2(date.getDate())} ${_2(date.getHours())}:${_2(date.getMinutes())}:${_2(date.getSeconds())}.${date.getMilliseconds().toString().padStart(3, '0')}`;\n}\n","export var Permission;\n(function (Permission) {\n Permission[Permission[\"None\"] = 0] = \"None\";\n Permission[Permission[\"Read\"] = 1] = \"Read\";\n Permission[Permission[\"Comment\"] = 2] = \"Comment\";\n Permission[Permission[\"Edit\"] = 3] = \"Edit\";\n Permission[Permission[\"Manage\"] = 5] = \"Manage\";\n})(Permission || (Permission = {}));\nexport const permissionNames = {\n [Permission.None]: 'No Permissions',\n [Permission.Read]: 'Reader',\n [Permission.Comment]: 'Commenter',\n [Permission.Edit]: 'Editor',\n [Permission.Manage]: 'Manager',\n};\nexport function hasPermission(item, userId, permission) {\n if (item.publicPermission >= permission)\n return true;\n if (!userId)\n return false;\n if (item.userId == userId)\n return true;\n const entry = item.acl?.find(entry => entry.userId == userId);\n if (!entry)\n return false;\n return entry.permission >= permission;\n}\n","import * as z from 'zod';\nexport const App = z.object({\n id: z.string(),\n name: z.string().optional(),\n image: z.string().optional(),\n icon: z.string().optional(),\n});\n","import * as z from 'zod';\nconst transports = ['ble', 'cable', 'hybrid', 'internal', 'nfc', 'smart-card', 'usb'];\nexport const authenticatorAttachment = z.literal(['platform', 'cross-platform']).optional();\nexport const PasskeyRegistration = z.object({\n id: z.string(),\n rawId: z.string(),\n response: z.object({\n clientDataJSON: z.string(),\n attestationObject: z.string(),\n authenticatorData: z.string().optional(),\n transports: z.array(z.enum(transports)).optional(),\n publicKeyAlgorithm: z.number().optional(),\n publicKey: z.string().optional(),\n }),\n authenticatorAttachment,\n clientExtensionResults: z.record(z.any(), z.any()),\n type: z.literal('public-key'),\n});\n/**\n * POSTed to the `/users/:id/login` endpoint.\n */\nexport const PasskeyAuthenticationResponse = z.object({\n id: z.string(),\n rawId: z.string(),\n response: z.object({\n clientDataJSON: z.string(),\n authenticatorData: z.string(),\n signature: z.string(),\n userHandle: z.string().optional(),\n }),\n authenticatorAttachment,\n clientExtensionResults: z.record(z.any(), z.any()),\n type: z.literal('public-key'),\n});\nexport const PasskeyChangeable = z.object({ name: z.string() }).partial();\n","import * as z from 'zod';\n/**\n * @internal\n */\nexport const preferenceSchemas = {\n debug: z.boolean(),\n};\n/**\n * @internal\n */\nexport const preferenceDefaults = {\n debug: false,\n};\n/**\n * @internal\n * @todo Implement proper localization\n */\nexport const preferenceLabels = {\n debug: 'Debug mode',\n};\nexport const preferenceDescriptions = {};\nexport function addPreference(init) {\n preferenceSchemas[init.name] = init.schema;\n preferenceDefaults[init.name] = init.initial;\n preferenceLabels[init.name] = init.label;\n preferenceDescriptions[init.name] = init.descriptions;\n}\n","export const requestMethods = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'PATCH'];\n","import * as z from 'zod';\n/** Needed for discriminated union type narrowing */\nexport function zIs(schema, type) {\n return schema.def.type == type;\n}\nexport function zFunction(schema) {\n return z.custom((fn) => schema.implement(fn));\n}\nexport function zAsyncFunction(schema) {\n return z.custom((fn) => schema.implementAsync(fn));\n}\n","import * as z from 'zod';\nimport { PasskeyRegistration } from './passkeys.js';\nexport const User = z.object({\n id: z.uuid(),\n name: z.string().min(1, 'Name is required').max(255, 'Name is too long'),\n email: z.email(),\n emailVerified: z.date().nullish(),\n image: z.url().nullish(),\n preferences: z.record(z.string(), z.any()),\n roles: z.array(z.string()),\n registeredAt: z.date(),\n});\nexport const userPublicFields = ['id', 'image', 'name', 'registeredAt', 'roles'];\nexport const userProtectedFields = ['email', 'emailVerified', 'preferences'];\nexport const UserChangeable = User.pick({\n name: true,\n email: true,\n image: true,\n preferences: true,\n}).partial();\nexport function getUserImage(user) {\n if (user.image)\n return user.image;\n user.name ??= '\\0';\n let color = user.name.charCodeAt(0);\n for (let i = 1; i < user.name.length; i++) {\n color *= user.name.charCodeAt(i);\n }\n color &= 0xbfbfbf;\n const r = (color >> 16) & 0xff;\n const g = (color >> 8) & 0xff;\n const b = color & 0xff;\n return `data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" style=\"background-color:rgb(${r},${g},${b});display:flex;align-items:center;justify-content:center;\">\n\t\t<text x=\"23\" y=\"28\" style=\"font-family:sans-serif;font-weight:bold;\" fill=\"white\">${user.name.replaceAll(/\\W/g, '')[0]}</text>\n\t</svg>`.replaceAll(/[\\t\\n]/g, '');\n}\nexport const UserRegistration = z.object({\n name: z.string().min(1).max(100),\n email: z.email(),\n userId: z.uuid(),\n response: PasskeyRegistration,\n});\nexport const UserAuthOptions = z.object({ type: z.literal(['login', 'action']) });\nexport const LogoutSessions = z.object({\n id: z.array(z.uuid()).optional(),\n confirm_all: z.boolean().optional(),\n});\n","import { _unique } from './state.js';\nexport const apps = _unique('apps', new Map());\nexport const appDisabledContent = {\n head: '<title>App Disabled</title>',\n body: '<h1>App Disabled</h1><p>This app is currently disabled.</p>',\n};\n","import { App } from '@axium/core';\nimport { zAsyncFunction } from '@axium/core/schemas';\nimport * as fs from 'node:fs';\nimport { resolve } from 'node:path/posix';\nimport { styleText } from 'node:util';\nimport * as z from 'zod';\nimport { apps } from './apps.js';\nimport { output } from './io.js';\nimport { _unique } from './state.js';\nexport const PluginMetadata = z.looseObject({\n name: z.string(),\n version: z.string(),\n description: z.string().optional(),\n routes: z.string().optional(),\n apps: z.array(App).optional(),\n});\nconst hookNames = ['db_init', 'remove', 'db_wipe', 'clean'];\nconst fn = z.custom(data => typeof data === 'function');\nexport const Plugin = PluginMetadata.extend({\n statusText: zAsyncFunction(z.function({ input: [], output: z.string() })),\n hooks: z.partialRecord(z.literal(hookNames), fn).optional(),\n});\nconst kSpecifier = Symbol('specifier');\nexport const plugins = _unique('plugins', new Set());\nexport function resolvePlugin(search) {\n for (const plugin of plugins) {\n if (plugin.name === search)\n return plugin;\n }\n}\nexport function pluginText(plugin) {\n return [\n styleText('whiteBright', plugin.name),\n `Version: ${plugin.version}`,\n `Description: ${plugin.description ?? styleText('dim', '(none)')}`,\n `Hooks: ${Object.keys(plugin.hooks).join(', ') || styleText('dim', '(none)')}`,\n // @todo list the routes when debug output is enabled\n `Routes: ${plugin.routes || styleText('dim', '(none)')}`,\n ].join('\\n');\n}\nexport async function loadPlugin(specifier) {\n try {\n const imported = await import(/* @vite-ignore */ specifier);\n const maybePlugin = 'default' in imported ? imported.default : imported;\n const plugin = Object.assign({ hooks: {}, [kSpecifier]: specifier }, await Plugin.parseAsync(maybePlugin).catch(e => {\n throw e instanceof z.core.$ZodError ? z.prettifyError(e) : e;\n }));\n if (plugin.name.startsWith('#') || plugin.name.includes(' ')) {\n throw 'Invalid plugin name. Plugin names can not start with a hash or contain spaces.';\n }\n for (const app of plugin.apps ?? []) {\n if (apps.has(app.id))\n throw new ReferenceError(`App with ID \"${app.id}\" already exists.`);\n apps.set(app.id, app);\n }\n plugins.add(plugin);\n output.debug(`Loaded plugin: ${plugin.name} ${plugin.version}`);\n }\n catch (e) {\n output.debug(`Failed to load plugin from ${specifier}: ${e ? (e instanceof Error ? e.message : e.toString()) : e}`);\n }\n}\nexport function getSpecifier(plugin) {\n return plugin[kSpecifier];\n}\nexport async function loadPlugins(dir) {\n fs.mkdirSync(dir, { recursive: true });\n const files = fs.readdirSync(dir);\n for (const file of files) {\n const path = resolve(dir, file);\n const stats = fs.statSync(path);\n if (stats.isDirectory() || !['.js', '.mjs'].some(ext => path.endsWith(ext)))\n return;\n await loadPlugin(path);\n }\n}\n","import { levelText } from 'logzen';\nimport { existsSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path/posix';\nimport { capitalize, deepAssign, omit } from 'utilium';\nimport * as z from 'zod';\nimport { _setDebugOutput, dirs, logger, output } from './io.js';\nimport { loadPlugin } from './plugins.js';\nimport { _duplicateStateWarnings, _unique } from './state.js';\nconst audit_severity_levels = ['emergency', 'alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug'];\nconst z_audit_severity = z.literal([...audit_severity_levels, ...audit_severity_levels.map(capitalize)]);\nexport const ConfigSchema = z\n .looseObject({\n allow_new_users: z.boolean(),\n apps: z\n .looseObject({\n disabled: z.array(z.string()),\n })\n .partial(),\n audit: z\n .looseObject({\n allow_raw: z.boolean(),\n /** How many days to keep events in the audit log */\n retention: z.number().min(0),\n min_severity: z_audit_severity,\n auto_suspend: z_audit_severity,\n })\n .partial(),\n auth: z\n .looseObject({\n origin: z.string(),\n /** In minutes */\n passkey_probation: z.number(),\n rp_id: z.string(),\n rp_name: z.string(),\n secure_cookies: z.boolean(),\n /** In minutes */\n verification_timeout: z.number(),\n /** Whether users can verify emails */\n email_verification: z.boolean(),\n /** Whether only the `Authorization` header can be used to authenticate requests. */\n header_only: z.boolean(),\n })\n .partial(),\n db: z\n .looseObject({\n host: z.string(),\n port: z.number(),\n password: z.string(),\n user: z.string(),\n database: z.string(),\n })\n .partial(),\n debug: z.boolean(),\n log: z\n .looseObject({\n level: z.enum(levelText),\n console: z.boolean(),\n })\n .partial(),\n show_duplicate_state: z.boolean(),\n web: z\n .looseObject({\n assets: z.string(),\n build: z.string(),\n disable_cache: z.boolean(),\n port: z.number().min(1).max(65535),\n prefix: z.string(),\n routes: z.string(),\n secure: z.boolean(),\n ssl_key: z.string(),\n ssl_cert: z.string(),\n template: z.string(),\n })\n .partial(),\n})\n .partial();\nexport const configFiles = _unique('configFiles', new Map());\nexport function plainConfig() {\n return omit(config, Object.keys(configShortcuts));\n}\nconst configShortcuts = {\n findPath: findConfigPaths,\n load: loadConfig,\n loadDefaults: loadDefaultConfigs,\n plain: plainConfig,\n save: saveConfig,\n saveTo: saveConfigTo,\n set: setConfig,\n files: configFiles,\n};\nexport const config = _unique('config', {\n ...configShortcuts,\n allow_new_users: true,\n apps: {\n disabled: [],\n },\n audit: {\n allow_raw: false,\n retention: 30,\n min_severity: 'error',\n auto_suspend: 'critical',\n },\n auth: {\n origin: 'https://test.localhost',\n passkey_probation: 60,\n rp_id: 'test.localhost',\n rp_name: 'Axium',\n secure_cookies: true,\n verification_timeout: 60,\n email_verification: false,\n header_only: false,\n },\n db: {\n database: process.env.PGDATABASE || 'axium',\n host: process.env.PGHOST || 'localhost',\n password: process.env.PGPASSWORD || '',\n port: process.env.PGPORT && Number.isSafeInteger(parseInt(process.env.PGPORT)) ? parseInt(process.env.PGPORT) : 5432,\n user: process.env.PGUSER || 'axium',\n },\n debug: await z\n .stringbool()\n .optional()\n .default(false)\n .parseAsync(process.env.AXIUM_DEBUG)\n .catch(() => false),\n log: {\n console: true,\n level: 'info',\n },\n show_duplicate_state: false,\n web: {\n assets: '',\n build: '../build/handler.js',\n disable_cache: false,\n port: 443,\n prefix: '',\n routes: 'routes',\n secure: true,\n ssl_key: resolve(dirs[0], 'ssl_key.pem'),\n ssl_cert: resolve(dirs[0], 'ssl_cert.pem'),\n template: join(import.meta.dirname, '../web/template.html'),\n },\n});\nexport default config;\n// config from file\nexport const FileSchema = z\n .looseObject({\n ...ConfigSchema.shape,\n include: z.array(z.string()),\n plugins: z.array(z.string()),\n})\n .partial();\nexport function addConfigDefaults(other, _target = config) {\n for (const [key, value] of Object.entries(other)) {\n if (!(key in _target) || _target[key] === null || _target[key] === undefined || Number.isNaN(_target[key])) {\n _target[key] = value;\n continue;\n }\n if (typeof value == 'object' && value != null && typeof _target[key] == 'object') {\n addConfigDefaults(value, _target[key]);\n }\n }\n}\n/**\n * Update the current config\n */\nexport function setConfig(other) {\n deepAssign(config, other);\n logger.detach(output);\n if (config.log.console)\n logger.attach(output, { output: config.log.level });\n _setDebugOutput(config.debug);\n _duplicateStateWarnings(config.show_duplicate_state);\n}\n/**\n * Load the config from the provided path\n */\nexport async function loadConfig(path, options = {}) {\n if (configFiles.has(path))\n return;\n let json;\n try {\n json = JSON.parse(readFileSync(path, 'utf8'));\n }\n catch (e) {\n if (!options.optional)\n throw e;\n output.debug(`Skipping config at ${path} (${e.message})`);\n return;\n }\n let file;\n try {\n file = FileSchema.parse(json);\n }\n catch (e) {\n if (!options.loose)\n throw e;\n output.debug(`Loading invalid config from ${path} (${e.message})`);\n file = json;\n }\n configFiles.set(path, file);\n setConfig(file);\n output.debug('Loaded config: ' + path);\n for (const include of file.include ?? [])\n await loadConfig(join(dirname(path), include), { optional: true });\n for (const plugin of file.plugins ?? [])\n await loadPlugin(plugin.startsWith('.') ? resolve(dirname(path), plugin) : plugin);\n}\nexport async function loadDefaultConfigs() {\n for (const path of findConfigPaths()) {\n if (!existsSync(path)) {\n try {\n writeFileSync(path, '{}');\n }\n catch {\n continue;\n }\n }\n await loadConfig(path, { optional: true });\n }\n}\n/**\n * Update the current config and write the updated config to the appropriate file\n */\nexport function saveConfig(changed, global = false) {\n saveConfigTo(findConfigPaths().at(global ? 0 : -1), changed);\n}\n/**\n * Update the current config and write the updated config to the provided path\n */\nexport function saveConfigTo(path, changed) {\n setConfig(changed);\n const config = configFiles.get(path) ?? {};\n Object.assign(config, { ...changed, db: { ...config.db, ...changed.db } });\n output.debug(`Wrote config to ${path}`);\n writeFileSync(path, JSON.stringify(config));\n}\n/**\n * Find the path to the config file(s)\n * This array should roughly be in the order of most global to most local.\n */\nexport function findConfigPaths() {\n const paths = dirs.map(dir => join(dir, 'config.json'));\n if (process.env.AXIUM_CONFIG)\n paths.push(process.env.AXIUM_CONFIG);\n return paths;\n}\nif (process.env.AXIUM_CONFIG)\n await loadConfig(process.env.AXIUM_CONFIG);\n","/// <reference types=\"./object-utils.d.ts\" />\nexport function isEmpty(obj) {\n if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {\n return obj.length === 0;\n }\n else if (obj) {\n return Object.keys(obj).length === 0;\n }\n return false;\n}\nexport function isUndefined(obj) {\n return typeof obj === 'undefined' || obj === undefined;\n}\nexport function isString(obj) {\n return typeof obj === 'string';\n}\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\nexport function isBoolean(obj) {\n return typeof obj === 'boolean';\n}\nexport function isNull(obj) {\n return obj === null;\n}\nexport function isDate(obj) {\n return obj instanceof Date;\n}\nexport function isBigInt(obj) {\n return typeof obj === 'bigint';\n}\n// Don't change the returnd type to `obj is Buffer` to not create a\n// hard dependency to node.\nexport function isBuffer(obj) {\n return typeof Buffer !== 'undefined' && Buffer.isBuffer(obj);\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\nexport function isObject(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nexport function isArrayBufferOrView(obj) {\n return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);\n}\nexport function isPlainObject(obj) {\n if (!isObject(obj) || getTag(obj) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function getLast(arr) {\n return arr[arr.length - 1];\n}\nexport function freeze(obj) {\n return Object.freeze(obj);\n}\nexport function asArray(arg) {\n if (isReadonlyArray(arg)) {\n return arg;\n }\n else {\n return [arg];\n }\n}\nexport function asReadonlyArray(arg) {\n if (isReadonlyArray(arg)) {\n return arg;\n }\n else {\n return freeze([arg]);\n }\n}\nexport function isReadonlyArray(arg) {\n return Array.isArray(arg);\n}\nexport function noop(obj) {\n return obj;\n}\nexport function compare(obj1, obj2) {\n if (isReadonlyArray(obj1) && isReadonlyArray(obj2)) {\n return compareArrays(obj1, obj2);\n }\n else if (isObject(obj1) && isObject(obj2)) {\n return compareObjects(obj1, obj2);\n }\n return obj1 === obj2;\n}\nfunction compareArrays(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; ++i) {\n if (!compare(arr1[i], arr2[i])) {\n return false;\n }\n }\n return true;\n}\nfunction compareObjects(obj1, obj2) {\n if (isBuffer(obj1) && isBuffer(obj2)) {\n return compareBuffers(obj1, obj2);\n }\n else if (isDate(obj1) && isDate(obj2)) {\n return compareDates(obj1, obj2);\n }\n return compareGenericObjects(obj1, obj2);\n}\nfunction compareBuffers(buf1, buf2) {\n return Buffer.compare(buf1, buf2) === 0;\n}\nfunction compareDates(date1, date2) {\n return date1.getTime() === date2.getTime();\n}\nfunction compareGenericObjects(obj1, obj2) {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (!compare(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n}\nconst toString = Object.prototype.toString;\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return toString.call(value);\n}\n","/// <reference types=\"./alter-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AlterTableNode = freeze({\n is(node) {\n return node.kind === 'AlterTableNode';\n },\n create(table) {\n return freeze({\n kind: 'AlterTableNode',\n table,\n });\n },\n cloneWithTableProps(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumnAlteration(node, columnAlteration) {\n return freeze({\n ...node,\n columnAlterations: node.columnAlterations\n ? [...node.columnAlterations, columnAlteration]\n : [columnAlteration],\n });\n },\n});\n","/// <reference types=\"./identifier-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const IdentifierNode = freeze({\n is(node) {\n return node.kind === 'IdentifierNode';\n },\n create(name) {\n return freeze({\n kind: 'IdentifierNode',\n name,\n });\n },\n});\n","/// <reference types=\"./create-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CreateIndexNode = freeze({\n is(node) {\n return node.kind === 'CreateIndexNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateIndexNode',\n name: IdentifierNode.create(name),\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...(node.columns || []), ...columns],\n });\n },\n});\n","/// <reference types=\"./create-schema-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CreateSchemaNode = freeze({\n is(node) {\n return node.kind === 'CreateSchemaNode';\n },\n create(schema, params) {\n return freeze({\n kind: 'CreateSchemaNode',\n schema: IdentifierNode.create(schema),\n ...params,\n });\n },\n cloneWith(createSchema, params) {\n return freeze({\n ...createSchema,\n ...params,\n });\n },\n});\n","/// <reference types=\"./create-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport const ON_COMMIT_ACTIONS = ['preserve rows', 'delete rows', 'drop'];\n/**\n * @internal\n */\nexport const CreateTableNode = freeze({\n is(node) {\n return node.kind === 'CreateTableNode';\n },\n create(table) {\n return freeze({\n kind: 'CreateTableNode',\n table,\n columns: freeze([]),\n });\n },\n cloneWithColumn(createTable, column) {\n return freeze({\n ...createTable,\n columns: freeze([...createTable.columns, column]),\n });\n },\n cloneWithConstraint(createTable, constraint) {\n return freeze({\n ...createTable,\n constraints: createTable.constraints\n ? freeze([...createTable.constraints, constraint])\n : freeze([constraint]),\n });\n },\n cloneWithFrontModifier(createTable, modifier) {\n return freeze({\n ...createTable,\n frontModifiers: createTable.frontModifiers\n ? freeze([...createTable.frontModifiers, modifier])\n : freeze([modifier]),\n });\n },\n cloneWithEndModifier(createTable, modifier) {\n return freeze({\n ...createTable,\n endModifiers: createTable.endModifiers\n ? freeze([...createTable.endModifiers, modifier])\n : freeze([modifier]),\n });\n },\n cloneWith(createTable, params) {\n return freeze({\n ...createTable,\n ...params,\n });\n },\n});\n","/// <reference types=\"./schemable-identifier-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const SchemableIdentifierNode = freeze({\n is(node) {\n return node.kind === 'SchemableIdentifierNode';\n },\n create(identifier) {\n return freeze({\n kind: 'SchemableIdentifierNode',\n identifier: IdentifierNode.create(identifier),\n });\n },\n createWithSchema(schema, identifier) {\n return freeze({\n kind: 'SchemableIdentifierNode',\n schema: IdentifierNode.create(schema),\n identifier: IdentifierNode.create(identifier),\n });\n },\n});\n","/// <reference types=\"./drop-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const DropIndexNode = freeze({\n is(node) {\n return node.kind === 'DropIndexNode';\n },\n create(name, params) {\n return freeze({\n kind: 'DropIndexNode',\n name: SchemableIdentifierNode.create(name),\n ...params,\n });\n },\n cloneWith(dropIndex, props) {\n return freeze({\n ...dropIndex,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-schema-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const DropSchemaNode = freeze({\n is(node) {\n return node.kind === 'DropSchemaNode';\n },\n create(schema, params) {\n return freeze({\n kind: 'DropSchemaNode',\n schema: IdentifierNode.create(schema),\n ...params,\n });\n },\n cloneWith(dropSchema, params) {\n return freeze({\n ...dropSchema,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DropTableNode = freeze({\n is(node) {\n return node.kind === 'DropTableNode';\n },\n create(table, params) {\n return freeze({\n kind: 'DropTableNode',\n table,\n ...params,\n });\n },\n cloneWith(dropIndex, params) {\n return freeze({\n ...dropIndex,\n ...params,\n });\n },\n});\n","/// <reference types=\"./alias-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AliasNode = freeze({\n is(node) {\n return node.kind === 'AliasNode';\n },\n create(node, alias) {\n return freeze({\n kind: 'AliasNode',\n node,\n alias,\n });\n },\n});\n","/// <reference types=\"./table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const TableNode = freeze({\n is(node) {\n return node.kind === 'TableNode';\n },\n create(table) {\n return freeze({\n kind: 'TableNode',\n table: SchemableIdentifierNode.create(table),\n });\n },\n createWithSchema(schema, table) {\n return freeze({\n kind: 'TableNode',\n table: SchemableIdentifierNode.createWithSchema(schema, table),\n });\n },\n});\n","/// <reference types=\"./operation-node-source.d.ts\" />\nimport { isFunction, isObject } from '../util/object-utils.js';\nexport function isOperationNodeSource(obj) {\n return isObject(obj) && isFunction(obj.toOperationNode);\n}\n","/// <reference types=\"./expression.d.ts\" />\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { isObject, isString } from '../util/object-utils.js';\nexport function isExpression(obj) {\n return isObject(obj) && 'expressionType' in obj && isOperationNodeSource(obj);\n}\nexport function isAliasedExpression(obj) {\n return (isObject(obj) &&\n 'expression' in obj &&\n isString(obj.alias) &&\n isOperationNodeSource(obj));\n}\n","/// <reference types=\"./select-modifier-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const SelectModifierNode = freeze({\n is(node) {\n return node.kind === 'SelectModifierNode';\n },\n create(modifier, of) {\n return freeze({\n kind: 'SelectModifierNode',\n modifier,\n of,\n });\n },\n createWithExpression(modifier) {\n return freeze({\n kind: 'SelectModifierNode',\n rawModifier: modifier,\n });\n },\n});\n","/// <reference types=\"./and-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AndNode = freeze({\n is(node) {\n return node.kind === 'AndNode';\n },\n create(left, right) {\n return freeze({\n kind: 'AndNode',\n left,\n right,\n });\n },\n});\n","/// <reference types=\"./or-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrNode = freeze({\n is(node) {\n return node.kind === 'OrNode';\n },\n create(left, right) {\n return freeze({\n kind: 'OrNode',\n left,\n right,\n });\n },\n});\n","/// <reference types=\"./on-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AndNode } from './and-node.js';\nimport { OrNode } from './or-node.js';\n/**\n * @internal\n */\nexport const OnNode = freeze({\n is(node) {\n return node.kind === 'OnNode';\n },\n create(filter) {\n return freeze({\n kind: 'OnNode',\n on: filter,\n });\n },\n cloneWithOperation(onNode, operator, operation) {\n return freeze({\n ...onNode,\n on: operator === 'And'\n ? AndNode.create(onNode.on, operation)\n : OrNode.create(onNode.on, operation),\n });\n },\n});\n","/// <reference types=\"./join-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { OnNode } from './on-node.js';\n/**\n * @internal\n */\nexport const JoinNode = freeze({\n is(node) {\n return node.kind === 'JoinNode';\n },\n create(joinType, table) {\n return freeze({\n kind: 'JoinNode',\n joinType,\n table,\n on: undefined,\n });\n },\n createWithOn(joinType, table, on) {\n return freeze({\n kind: 'JoinNode',\n joinType,\n table,\n on: OnNode.create(on),\n });\n },\n cloneWithOn(joinNode, operation) {\n return freeze({\n ...joinNode,\n on: joinNode.on\n ? OnNode.cloneWithOperation(joinNode.on, 'And', operation)\n : OnNode.create(operation),\n });\n },\n});\n","/// <reference types=\"./binary-operation-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const BinaryOperationNode = freeze({\n is(node) {\n return node.kind === 'BinaryOperationNode';\n },\n create(leftOperand, operator, rightOperand) {\n return freeze({\n kind: 'BinaryOperationNode',\n leftOperand,\n operator,\n rightOperand,\n });\n },\n});\n","/// <reference types=\"./operator-node.d.ts\" />\nimport { freeze, isString } from '../util/object-utils.js';\nexport const COMPARISON_OPERATORS = [\n '=',\n '==',\n '!=',\n '<>',\n '>',\n '>=',\n '<',\n '<=',\n 'in',\n 'not in',\n 'is',\n 'is not',\n 'like',\n 'not like',\n 'match',\n 'ilike',\n 'not ilike',\n '@>',\n '<@',\n '^@',\n '&&',\n '?',\n '?&',\n '?|',\n '!<',\n '!>',\n '<=>',\n '!~',\n '~',\n '~*',\n '!~*',\n '@@',\n '@@@',\n '!!',\n '<->',\n 'regexp',\n 'is distinct from',\n 'is not distinct from',\n];\nexport const ARITHMETIC_OPERATORS = [\n '+',\n '-',\n '*',\n '/',\n '%',\n '^',\n '&',\n '|',\n '#',\n '<<',\n '>>',\n];\nexport const JSON_OPERATORS = ['->', '->>'];\nexport const BINARY_OPERATORS = [\n ...COMPARISON_OPERATORS,\n ...ARITHMETIC_OPERATORS,\n '&&',\n '||',\n];\nexport const UNARY_FILTER_OPERATORS = ['exists', 'not exists'];\nexport const UNARY_OPERATORS = ['not', '-', ...UNARY_FILTER_OPERATORS];\nexport const OPERATORS = [\n ...BINARY_OPERATORS,\n ...JSON_OPERATORS,\n ...UNARY_OPERATORS,\n 'between',\n 'between symmetric',\n];\n/**\n * @internal\n */\nexport const OperatorNode = freeze({\n is(node) {\n return node.kind === 'OperatorNode';\n },\n create(operator) {\n return freeze({\n kind: 'OperatorNode',\n operator,\n });\n },\n});\nexport function isOperator(op) {\n return isString(op) && OPERATORS.includes(op);\n}\nexport function isBinaryOperator(op) {\n return isString(op) && BINARY_OPERATORS.includes(op);\n}\nexport function isComparisonOperator(op) {\n return isString(op) && COMPARISON_OPERATORS.includes(op);\n}\nexport function isArithmeticOperator(op) {\n return isString(op) && ARITHMETIC_OPERATORS.includes(op);\n}\nexport function isJSONOperator(op) {\n return isString(op) && JSON_OPERATORS.includes(op);\n}\n","/// <reference types=\"./column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const ColumnNode = freeze({\n is(node) {\n return node.kind === 'ColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'ColumnNode',\n column: IdentifierNode.create(column),\n });\n },\n});\n","/// <reference types=\"./select-all-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const SelectAllNode = freeze({\n is(node) {\n return node.kind === 'SelectAllNode';\n },\n create() {\n return freeze({\n kind: 'SelectAllNode',\n });\n },\n});\n","/// <reference types=\"./reference-node.d.ts\" />\nimport { SelectAllNode } from './select-all-node.js';\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ReferenceNode = freeze({\n is(node) {\n return node.kind === 'ReferenceNode';\n },\n create(column, table) {\n return freeze({\n kind: 'ReferenceNode',\n table,\n column,\n });\n },\n createSelectAll(table) {\n return freeze({\n kind: 'ReferenceNode',\n table,\n column: SelectAllNode.create(),\n });\n },\n});\n","/// <reference types=\"./dynamic-reference-builder.d.ts\" />\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { parseSimpleReferenceExpression } from '../parser/reference-parser.js';\nimport { isObject, isString } from '../util/object-utils.js';\nexport class DynamicReferenceBuilder {\n #dynamicReference;\n get dynamicReference() {\n return this.#dynamicReference;\n }\n /**\n * @private\n *\n * This needs to be here just so that the typings work. Without this\n * the generated .d.ts file contains no reference to the type param R\n * which causes this type to be equal to DynamicReferenceBuilder with\n * any R.\n */\n get refType() {\n return undefined;\n }\n constructor(reference) {\n this.#dynamicReference = reference;\n }\n toOperationNode() {\n return parseSimpleReferenceExpression(this.#dynamicReference);\n }\n}\nexport function isDynamicReferenceBuilder(obj) {\n return (isObject(obj) &&\n isOperationNodeSource(obj) &&\n isString(obj.dynamicReference));\n}\n","/// <reference types=\"./order-by-item-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrderByItemNode = freeze({\n is(node) {\n return node.kind === 'OrderByItemNode';\n },\n create(orderBy, direction) {\n return freeze({\n kind: 'OrderByItemNode',\n orderBy,\n direction,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./raw-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const RawNode = freeze({\n is(node) {\n return node.kind === 'RawNode';\n },\n create(sqlFragments, parameters) {\n return freeze({\n kind: 'RawNode',\n sqlFragments: freeze(sqlFragments),\n parameters: freeze(parameters),\n });\n },\n createWithSql(sql) {\n return RawNode.create([sql], []);\n },\n createWithChild(child) {\n return RawNode.create(['', ''], [child]);\n },\n createWithChildren(children) {\n return RawNode.create(new Array(children.length + 1).fill(''), children);\n },\n});\n","/// <reference types=\"./collate-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CollateNode = {\n is(node) {\n return node.kind === 'CollateNode';\n },\n create(collation) {\n return freeze({\n kind: 'CollateNode',\n collation: IdentifierNode.create(collation),\n });\n },\n};\n","/// <reference types=\"./order-by-item-builder.d.ts\" />\nimport { CollateNode } from '../operation-node/collate-node.js';\nimport { OrderByItemNode } from '../operation-node/order-by-item-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class OrderByItemBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds `desc` to the `order by` item.\n *\n * See {@link asc} for the opposite.\n */\n desc() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n direction: RawNode.createWithSql('desc'),\n }),\n });\n }\n /**\n * Adds `asc` to the `order by` item.\n *\n * See {@link desc} for the opposite.\n */\n asc() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n direction: RawNode.createWithSql('asc'),\n }),\n });\n }\n /**\n * Adds `nulls last` to the `order by` item.\n *\n * This is only supported by some dialects like PostgreSQL and SQLite.\n *\n * See {@link nullsFirst} for the opposite.\n */\n nullsLast() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, { nulls: 'last' }),\n });\n }\n /**\n * Adds `nulls first` to the `order by` item.\n *\n * This is only supported by some dialects like PostgreSQL and SQLite.\n *\n * See {@link nullsLast} for the opposite.\n */\n nullsFirst() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, { nulls: 'first' }),\n });\n }\n /**\n * Adds `collate <collationName>` to the `order by` item.\n */\n collate(collation) {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n collation: CollateNode.create(collation),\n }),\n });\n }\n toOperationNode() {\n return this.#props.node;\n }\n}\n","/// <reference types=\"./log-once.d.ts\" />\nconst LOGGED_MESSAGES = new Set();\n/**\n * Use for system-level logging, such as deprecation messages.\n * Logs a message and ensures it won't be logged again.\n */\nexport function logOnce(message) {\n if (LOGGED_MESSAGES.has(message)) {\n return;\n }\n LOGGED_MESSAGES.add(message);\n console.log(message);\n}\n","/// <reference types=\"./order-by-parser.d.ts\" />\nimport { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';\nimport { isExpression } from '../expression/expression.js';\nimport { OrderByItemNode } from '../operation-node/order-by-item-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { OrderByItemBuilder } from '../query-builder/order-by-item-builder.js';\nimport { logOnce } from '../util/log-once.js';\nimport { isExpressionOrFactory, parseExpression, } from './expression-parser.js';\nimport { parseStringReference, } from './reference-parser.js';\nexport function isOrderByDirection(thing) {\n return thing === 'asc' || thing === 'desc';\n}\nexport function parseOrderBy(args) {\n if (args.length === 2) {\n return [parseOrderByItem(args[0], args[1])];\n }\n if (args.length === 1) {\n const [orderBy] = args;\n if (Array.isArray(orderBy)) {\n logOnce('orderBy(array) is deprecated, use multiple orderBy calls instead.');\n return orderBy.map((item) => parseOrderByItem(item));\n }\n return [parseOrderByItem(orderBy)];\n }\n throw new Error(`Invalid number of arguments at order by! expected 1-2, received ${args.length}`);\n}\nexport function parseOrderByItem(expr, modifiers) {\n const parsedRef = parseOrderByExpression(expr);\n if (OrderByItemNode.is(parsedRef)) {\n if (modifiers) {\n throw new Error('Cannot specify direction twice!');\n }\n return parsedRef;\n }\n return parseOrderByWithModifiers(parsedRef, modifiers);\n}\nfunction parseOrderByExpression(expr) {\n if (isExpressionOrFactory(expr)) {\n return parseExpression(expr);\n }\n if (isDynamicReferenceBuilder(expr)) {\n return expr.toOperationNode();\n }\n const [ref, direction] = expr.split(' ');\n if (direction) {\n logOnce(\"`orderBy('column asc')` is deprecated. Use `orderBy('column', 'asc')` instead.\");\n return parseOrderByWithModifiers(parseStringReference(ref), direction);\n }\n return parseStringReference(expr);\n}\nfunction parseOrderByWithModifiers(expr, modifiers) {\n if (typeof modifiers === 'string') {\n if (!isOrderByDirection(modifiers)) {\n throw new Error(`Invalid order by direction: ${modifiers}`);\n }\n return OrderByItemNode.create(expr, RawNode.createWithSql(modifiers));\n }\n if (isExpression(modifiers)) {\n logOnce(\"`orderBy(..., expr)` is deprecated. Use `orderBy(..., 'asc')` or `orderBy(..., (ob) => ...)` instead.\");\n return OrderByItemNode.create(expr, modifiers.toOperationNode());\n }\n const node = OrderByItemNode.create(expr);\n if (!modifiers) {\n return node;\n }\n return modifiers(new OrderByItemBuilder({ node })).toOperationNode();\n}\n","/// <reference types=\"./json-reference-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONReferenceNode = freeze({\n is(node) {\n return node.kind === 'JSONReferenceNode';\n },\n create(reference, traversal) {\n return freeze({\n kind: 'JSONReferenceNode',\n reference,\n traversal,\n });\n },\n cloneWithTraversal(node, traversal) {\n return freeze({\n ...node,\n traversal,\n });\n },\n});\n","/// <reference types=\"./json-operator-chain-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONOperatorChainNode = freeze({\n is(node) {\n return node.kind === 'JSONOperatorChainNode';\n },\n create(operator) {\n return freeze({\n kind: 'JSONOperatorChainNode',\n operator,\n values: freeze([]),\n });\n },\n cloneWithValue(node, value) {\n return freeze({\n ...node,\n values: freeze([...node.values, value]),\n });\n },\n});\n","/// <reference types=\"./json-path-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONPathNode = freeze({\n is(node) {\n return node.kind === 'JSONPathNode';\n },\n create(inOperator) {\n return freeze({\n kind: 'JSONPathNode',\n inOperator,\n pathLegs: freeze([]),\n });\n },\n cloneWithLeg(jsonPathNode, pathLeg) {\n return freeze({\n ...jsonPathNode,\n pathLegs: freeze([...jsonPathNode.pathLegs, pathLeg]),\n });\n },\n});\n","/// <reference types=\"./reference-parser.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ReferenceNode } from '../operation-node/reference-node.js';\nimport { TableNode } from '../operation-node/table-node.js';\nimport { isReadonlyArray, isString } from '../util/object-utils.js';\nimport { parseExpression, isExpressionOrFactory, } from './expression-parser.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOrderByDirection, parseOrderBy, } from './order-by-parser.js';\nimport { OperatorNode, isJSONOperator, } from '../operation-node/operator-node.js';\nimport { JSONReferenceNode } from '../operation-node/json-reference-node.js';\nimport { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';\nimport { JSONPathNode } from '../operation-node/json-path-node.js';\nexport function parseSimpleReferenceExpression(exp) {\n if (isString(exp)) {\n return parseStringReference(exp);\n }\n return exp.toOperationNode();\n}\nexport function parseReferenceExpressionOrList(arg) {\n if (isReadonlyArray(arg)) {\n return arg.map((it) => parseReferenceExpression(it));\n }\n else {\n return [parseReferenceExpression(arg)];\n }\n}\nexport function parseReferenceExpression(exp) {\n if (isExpressionOrFactory(exp)) {\n return parseExpression(exp);\n }\n return parseSimpleReferenceExpression(exp);\n}\nexport function parseJSONReference(ref, op) {\n const referenceNode = parseStringReference(ref);\n if (isJSONOperator(op)) {\n return JSONReferenceNode.create(referenceNode, JSONOperatorChainNode.create(OperatorNode.create(op)));\n }\n const opWithoutLastChar = op.slice(0, -1);\n if (isJSONOperator(opWithoutLastChar)) {\n return JSONReferenceNode.create(referenceNode, JSONPathNode.create(OperatorNode.create(opWithoutLastChar)));\n }\n throw new Error(`Invalid JSON operator: ${op}`);\n}\nexport function parseStringReference(ref) {\n const COLUMN_SEPARATOR = '.';\n if (!ref.includes(COLUMN_SEPARATOR)) {\n return ReferenceNode.create(ColumnNode.create(ref));\n }\n const parts = ref.split(COLUMN_SEPARATOR).map(trim);\n if (parts.length === 3) {\n return parseStringReferenceWithTableAndSchema(parts);\n }\n if (parts.length === 2) {\n return parseStringReferenceWithTable(parts);\n }\n throw new Error(`invalid column reference ${ref}`);\n}\nexport function parseAliasedStringReference(ref) {\n const ALIAS_SEPARATOR = ' as ';\n if (ref.includes(ALIAS_SEPARATOR)) {\n const [columnRef, alias] = ref.split(ALIAS_SEPARATOR).map(trim);\n return AliasNode.create(parseStringReference(columnRef), IdentifierNode.create(alias));\n }\n else {\n return parseStringReference(ref);\n }\n}\nexport function parseColumnName(column) {\n return ColumnNode.create(column);\n}\nexport function parseOrderedColumnName(column) {\n const ORDER_SEPARATOR = ' ';\n if (column.includes(ORDER_SEPARATOR)) {\n const [columnName, order] = column.split(ORDER_SEPARATOR).map(trim);\n if (!isOrderByDirection(order)) {\n throw new Error(`invalid order direction \"${order}\" next to \"${columnName}\"`);\n }\n return parseOrderBy([columnName, order])[0];\n }\n else {\n return parseColumnName(column);\n }\n}\nfunction parseStringReferenceWithTableAndSchema(parts) {\n const [schema, table, column] = parts;\n return ReferenceNode.create(ColumnNode.create(column), TableNode.createWithSchema(schema, table));\n}\nfunction parseStringReferenceWithTable(parts) {\n const [table, column] = parts;\n return ReferenceNode.create(ColumnNode.create(column), TableNode.create(table));\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./primitive-value-list-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const PrimitiveValueListNode = freeze({\n is(node) {\n return node.kind === 'PrimitiveValueListNode';\n },\n create(values) {\n return freeze({\n kind: 'PrimitiveValueListNode',\n values: freeze([...values]),\n });\n },\n});\n","/// <reference types=\"./value-list-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ValueListNode = freeze({\n is(node) {\n return node.kind === 'ValueListNode';\n },\n create(values) {\n return freeze({\n kind: 'ValueListNode',\n values: freeze(values),\n });\n },\n});\n","/// <reference types=\"./value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ValueNode = freeze({\n is(node) {\n return node.kind === 'ValueNode';\n },\n create(value) {\n return freeze({\n kind: 'ValueNode',\n value,\n });\n },\n createImmediate(value) {\n return freeze({\n kind: 'ValueNode',\n value,\n immediate: true,\n });\n },\n});\n","/// <reference types=\"./value-parser.d.ts\" />\nimport { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';\nimport { ValueListNode } from '../operation-node/value-list-node.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nimport { isBoolean, isNull, isNumber, isReadonlyArray, } from '../util/object-utils.js';\nimport { parseExpression, isExpressionOrFactory, } from './expression-parser.js';\nexport function parseValueExpressionOrList(arg) {\n if (isReadonlyArray(arg)) {\n return parseValueExpressionList(arg);\n }\n return parseValueExpression(arg);\n}\nexport function parseValueExpression(exp) {\n if (isExpressionOrFactory(exp)) {\n return parseExpression(exp);\n }\n return ValueNode.create(exp);\n}\nexport function isSafeImmediateValue(value) {\n return isNumber(value) || isBoolean(value) || isNull(value);\n}\nexport function parseSafeImmediateValue(value) {\n if (!isSafeImmediateValue(value)) {\n throw new Error(`unsafe immediate value ${JSON.stringify(value)}`);\n }\n return ValueNode.createImmediate(value);\n}\nfunction parseValueExpressionList(arg) {\n if (arg.some(isExpressionOrFactory)) {\n return ValueListNode.create(arg.map((it) => parseValueExpression(it)));\n }\n return PrimitiveValueListNode.create(arg);\n}\n","/// <reference types=\"./parens-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ParensNode = freeze({\n is(node) {\n return node.kind === 'ParensNode';\n },\n create(node) {\n return freeze({\n kind: 'ParensNode',\n node,\n });\n },\n});\n","/// <reference types=\"./binary-operation-parser.d.ts\" />\nimport { BinaryOperationNode } from '../operation-node/binary-operation-node.js';\nimport { isBoolean, isNull, isString, isUndefined, } from '../util/object-utils.js';\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { OperatorNode, OPERATORS, } from '../operation-node/operator-node.js';\nimport { parseReferenceExpression, } from './reference-parser.js';\nimport { parseValueExpression, parseValueExpressionOrList, } from './value-parser.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nimport { AndNode } from '../operation-node/and-node.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { OrNode } from '../operation-node/or-node.js';\nexport function parseValueBinaryOperationOrExpression(args) {\n if (args.length === 3) {\n return parseValueBinaryOperation(args[0], args[1], args[2]);\n }\n else if (args.length === 1) {\n return parseValueExpression(args[0]);\n }\n throw new Error(`invalid arguments: ${JSON.stringify(args)}`);\n}\nexport function parseValueBinaryOperation(left, operator, right) {\n if (isIsOperator(operator) && needsIsOperator(right)) {\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), ValueNode.createImmediate(right));\n }\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), parseValueExpressionOrList(right));\n}\nexport function parseReferentialBinaryOperation(left, operator, right) {\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), parseReferenceExpression(right));\n}\nexport function parseFilterObject(obj, combinator) {\n return parseFilterList(Object.entries(obj)\n .filter(([, v]) => !isUndefined(v))\n .map(([k, v]) => parseValueBinaryOperation(k, needsIsOperator(v) ? 'is' : '=', v)), combinator);\n}\nexport function parseFilterList(list, combinator, withParens = true) {\n const combine = combinator === 'and' ? AndNode.create : OrNode.create;\n if (list.length === 0) {\n return BinaryOperationNode.create(ValueNode.createImmediate(1), OperatorNode.create('='), ValueNode.createImmediate(combinator === 'and' ? 1 : 0));\n }\n let node = toOperationNode(list[0]);\n for (let i = 1; i < list.length; ++i) {\n node = combine(node, toOperationNode(list[i]));\n }\n if (list.length > 1 && withParens) {\n return ParensNode.create(node);\n }\n return node;\n}\nfunction isIsOperator(operator) {\n return operator === 'is' || operator === 'is not';\n}\nfunction needsIsOperator(value) {\n return isNull(value) || isBoolean(value);\n}\nfunction parseOperator(operator) {\n if (isString(operator) && OPERATORS.includes(operator)) {\n return OperatorNode.create(operator);\n }\n if (isOperationNodeSource(operator)) {\n return operator.toOperationNode();\n }\n throw new Error(`invalid operator ${JSON.stringify(operator)}`);\n}\nfunction toOperationNode(nodeOrSource) {\n return isOperationNodeSource(nodeOrSource)\n ? nodeOrSource.toOperationNode()\n : nodeOrSource;\n}\n","/// <reference types=\"./order-by-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrderByNode = freeze({\n is(node) {\n return node.kind === 'OrderByNode';\n },\n create(items) {\n return freeze({\n kind: 'OrderByNode',\n items: freeze([...items]),\n });\n },\n cloneWithItems(orderBy, items) {\n return freeze({\n ...orderBy,\n items: freeze([...orderBy.items, ...items]),\n });\n },\n});\n","/// <reference types=\"./partition-by-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const PartitionByNode = freeze({\n is(node) {\n return node.kind === 'PartitionByNode';\n },\n create(items) {\n return freeze({\n kind: 'PartitionByNode',\n items: freeze(items),\n });\n },\n cloneWithItems(partitionBy, items) {\n return freeze({\n ...partitionBy,\n items: freeze([...partitionBy.items, ...items]),\n });\n },\n});\n","/// <reference types=\"./over-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { OrderByNode } from './order-by-node.js';\nimport { PartitionByNode } from './partition-by-node.js';\n/**\n * @internal\n */\nexport const OverNode = freeze({\n is(node) {\n return node.kind === 'OverNode';\n },\n create() {\n return freeze({\n kind: 'OverNode',\n });\n },\n cloneWithOrderByItems(overNode, items) {\n return freeze({\n ...overNode,\n orderBy: overNode.orderBy\n ? OrderByNode.cloneWithItems(overNode.orderBy, items)\n : OrderByNode.create(items),\n });\n },\n cloneWithPartitionByItems(overNode, items) {\n return freeze({\n ...overNode,\n partitionBy: overNode.partitionBy\n ? PartitionByNode.cloneWithItems(overNode.partitionBy, items)\n : PartitionByNode.create(items),\n });\n },\n});\n","/// <reference types=\"./from-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const FromNode = freeze({\n is(node) {\n return node.kind === 'FromNode';\n },\n create(froms) {\n return freeze({\n kind: 'FromNode',\n froms: freeze(froms),\n });\n },\n cloneWithFroms(from, froms) {\n return freeze({\n ...from,\n froms: freeze([...from.froms, ...froms]),\n });\n },\n});\n","/// <reference types=\"./group-by-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GroupByNode = freeze({\n is(node) {\n return node.kind === 'GroupByNode';\n },\n create(items) {\n return freeze({\n kind: 'GroupByNode',\n items: freeze(items),\n });\n },\n cloneWithItems(groupBy, items) {\n return freeze({\n ...groupBy,\n items: freeze([...groupBy.items, ...items]),\n });\n },\n});\n","/// <reference types=\"./having-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AndNode } from './and-node.js';\nimport { OrNode } from './or-node.js';\n/**\n * @internal\n */\nexport const HavingNode = freeze({\n is(node) {\n return node.kind === 'HavingNode';\n },\n create(filter) {\n return freeze({\n kind: 'HavingNode',\n having: filter,\n });\n },\n cloneWithOperation(havingNode, operator, operation) {\n return freeze({\n ...havingNode,\n having: operator === 'And'\n ? AndNode.create(havingNode.having, operation)\n : OrNode.create(havingNode.having, operation),\n });\n },\n});\n","/// <reference types=\"./insert-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const InsertQueryNode = freeze({\n is(node) {\n return node.kind === 'InsertQueryNode';\n },\n create(into, withNode, replace) {\n return freeze({\n kind: 'InsertQueryNode',\n into,\n ...(withNode && { with: withNode }),\n replace,\n });\n },\n createWithoutInto() {\n return freeze({\n kind: 'InsertQueryNode',\n });\n },\n cloneWith(insertQuery, props) {\n return freeze({\n ...insertQuery,\n ...props,\n });\n },\n});\n","/// <reference types=\"./list-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ListNode = freeze({\n is(node) {\n return node.kind === 'ListNode';\n },\n create(items) {\n return freeze({\n kind: 'ListNode',\n items: freeze(items),\n });\n },\n});\n","/// <reference types=\"./update-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { FromNode } from './from-node.js';\nimport { ListNode } from './list-node.js';\n/**\n * @internal\n */\nexport const UpdateQueryNode = freeze({\n is(node) {\n return node.kind === 'UpdateQueryNode';\n },\n create(tables, withNode) {\n return freeze({\n kind: 'UpdateQueryNode',\n // For backwards compatibility, use the raw table node when there's only one table\n // and don't rename the property to something like `tables`.\n table: tables.length === 1 ? tables[0] : ListNode.create(tables),\n ...(withNode && { with: withNode }),\n });\n },\n createWithoutTable() {\n return freeze({\n kind: 'UpdateQueryNode',\n });\n },\n cloneWithFromItems(updateQuery, fromItems) {\n return freeze({\n ...updateQuery,\n from: updateQuery.from\n ? FromNode.cloneWithFroms(updateQuery.from, fromItems)\n : FromNode.create(fromItems),\n });\n },\n cloneWithUpdates(updateQuery, updates) {\n return freeze({\n ...updateQuery,\n updates: updateQuery.updates\n ? freeze([...updateQuery.updates, ...updates])\n : updates,\n });\n },\n cloneWithLimit(updateQuery, limit) {\n return freeze({\n ...updateQuery,\n limit,\n });\n },\n});\n","/// <reference types=\"./using-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const UsingNode = freeze({\n is(node) {\n return node.kind === 'UsingNode';\n },\n create(tables) {\n return freeze({\n kind: 'UsingNode',\n tables: freeze(tables),\n });\n },\n cloneWithTables(using, tables) {\n return freeze({\n ...using,\n tables: freeze([...using.tables, ...tables]),\n });\n },\n});\n","/// <reference types=\"./delete-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { FromNode } from './from-node.js';\nimport { UsingNode } from './using-node.js';\nimport { QueryNode } from './query-node.js';\n/**\n * @internal\n */\nexport const DeleteQueryNode = freeze({\n is(node) {\n return node.kind === 'DeleteQueryNode';\n },\n create(fromItems, withNode) {\n return freeze({\n kind: 'DeleteQueryNode',\n from: FromNode.create(fromItems),\n ...(withNode && { with: withNode }),\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),\n cloneWithLimit(deleteNode, limit) {\n return freeze({\n ...deleteNode,\n limit,\n });\n },\n cloneWithoutLimit(deleteNode) {\n return freeze({\n ...deleteNode,\n limit: undefined,\n });\n },\n cloneWithUsing(deleteNode, tables) {\n return freeze({\n ...deleteNode,\n using: deleteNode.using !== undefined\n ? UsingNode.cloneWithTables(deleteNode.using, tables)\n : UsingNode.create(tables),\n });\n },\n});\n","/// <reference types=\"./where-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AndNode } from './and-node.js';\nimport { OrNode } from './or-node.js';\n/**\n * @internal\n */\nexport const WhereNode = freeze({\n is(node) {\n return node.kind === 'WhereNode';\n },\n create(filter) {\n return freeze({\n kind: 'WhereNode',\n where: filter,\n });\n },\n cloneWithOperation(whereNode, operator, operation) {\n return freeze({\n ...whereNode,\n where: operator === 'And'\n ? AndNode.create(whereNode.where, operation)\n : OrNode.create(whereNode.where, operation),\n });\n },\n});\n","/// <reference types=\"./returning-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ReturningNode = freeze({\n is(node) {\n return node.kind === 'ReturningNode';\n },\n create(selections) {\n return freeze({\n kind: 'ReturningNode',\n selections: freeze(selections),\n });\n },\n cloneWithSelections(returning, selections) {\n return freeze({\n ...returning,\n selections: returning.selections\n ? freeze([...returning.selections, ...selections])\n : freeze(selections),\n });\n },\n});\n","/// <reference types=\"./explain-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ExplainNode = freeze({\n is(node) {\n return node.kind === 'ExplainNode';\n },\n create(format, options) {\n return freeze({\n kind: 'ExplainNode',\n format,\n options,\n });\n },\n});\n","/// <reference types=\"./when-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const WhenNode = freeze({\n is(node) {\n return node.kind === 'WhenNode';\n },\n create(condition) {\n return freeze({\n kind: 'WhenNode',\n condition,\n });\n },\n cloneWithResult(whenNode, result) {\n return freeze({\n ...whenNode,\n result,\n });\n },\n});\n","/// <reference types=\"./merge-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhenNode } from './when-node.js';\n/**\n * @internal\n */\nexport const MergeQueryNode = freeze({\n is(node) {\n return node.kind === 'MergeQueryNode';\n },\n create(into, withNode) {\n return freeze({\n kind: 'MergeQueryNode',\n into,\n ...(withNode && { with: withNode }),\n });\n },\n cloneWithUsing(mergeNode, using) {\n return freeze({\n ...mergeNode,\n using,\n });\n },\n cloneWithWhen(mergeNode, when) {\n return freeze({\n ...mergeNode,\n whens: mergeNode.whens\n ? freeze([...mergeNode.whens, when])\n : freeze([when]),\n });\n },\n cloneWithThen(mergeNode, then) {\n return freeze({\n ...mergeNode,\n whens: mergeNode.whens\n ? freeze([\n ...mergeNode.whens.slice(0, -1),\n WhenNode.cloneWithResult(mergeNode.whens[mergeNode.whens.length - 1], then),\n ])\n : undefined,\n });\n },\n});\n","/// <reference types=\"./output-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OutputNode = freeze({\n is(node) {\n return node.kind === 'OutputNode';\n },\n create(selections) {\n return freeze({\n kind: 'OutputNode',\n selections: freeze(selections),\n });\n },\n cloneWithSelections(output, selections) {\n return freeze({\n ...output,\n selections: output.selections\n ? freeze([...output.selections, ...selections])\n : freeze(selections),\n });\n },\n});\n","/// <reference types=\"./query-node.d.ts\" />\nimport { InsertQueryNode } from './insert-query-node.js';\nimport { SelectQueryNode } from './select-query-node.js';\nimport { UpdateQueryNode } from './update-query-node.js';\nimport { DeleteQueryNode } from './delete-query-node.js';\nimport { WhereNode } from './where-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { ReturningNode } from './returning-node.js';\nimport { ExplainNode } from './explain-node.js';\nimport { MergeQueryNode } from './merge-query-node.js';\nimport { OutputNode } from './output-node.js';\nimport { OrderByNode } from './order-by-node.js';\n/**\n * @internal\n */\nexport const QueryNode = freeze({\n is(node) {\n return (SelectQueryNode.is(node) ||\n InsertQueryNode.is(node) ||\n UpdateQueryNode.is(node) ||\n DeleteQueryNode.is(node) ||\n MergeQueryNode.is(node));\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers\n ? freeze([...node.endModifiers, modifier])\n : freeze([modifier]),\n });\n },\n cloneWithWhere(node, operation) {\n return freeze({\n ...node,\n where: node.where\n ? WhereNode.cloneWithOperation(node.where, 'And', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithJoin(node, join) {\n return freeze({\n ...node,\n joins: node.joins ? freeze([...node.joins, join]) : freeze([join]),\n });\n },\n cloneWithReturning(node, selections) {\n return freeze({\n ...node,\n returning: node.returning\n ? ReturningNode.cloneWithSelections(node.returning, selections)\n : ReturningNode.create(selections),\n });\n },\n cloneWithoutReturning(node) {\n return freeze({\n ...node,\n returning: undefined,\n });\n },\n cloneWithoutWhere(node) {\n return freeze({\n ...node,\n where: undefined,\n });\n },\n cloneWithExplain(node, format, options) {\n return freeze({\n ...node,\n explain: ExplainNode.create(format, options?.toOperationNode()),\n });\n },\n cloneWithTop(node, top) {\n return freeze({\n ...node,\n top,\n });\n },\n cloneWithOutput(node, selections) {\n return freeze({\n ...node,\n output: node.output\n ? OutputNode.cloneWithSelections(node.output, selections)\n : OutputNode.create(selections),\n });\n },\n cloneWithOrderByItems(node, items) {\n return freeze({\n ...node,\n orderBy: node.orderBy\n ? OrderByNode.cloneWithItems(node.orderBy, items)\n : OrderByNode.create(items),\n });\n },\n cloneWithoutOrderBy(node) {\n return freeze({\n ...node,\n orderBy: undefined,\n });\n },\n});\n","/// <reference types=\"./select-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { FromNode } from './from-node.js';\nimport { GroupByNode } from './group-by-node.js';\nimport { HavingNode } from './having-node.js';\nimport { QueryNode } from './query-node.js';\n/**\n * @internal\n */\nexport const SelectQueryNode = freeze({\n is(node) {\n return node.kind === 'SelectQueryNode';\n },\n create(withNode) {\n return freeze({\n kind: 'SelectQueryNode',\n ...(withNode && { with: withNode }),\n });\n },\n createFrom(fromItems, withNode) {\n return freeze({\n kind: 'SelectQueryNode',\n from: FromNode.create(fromItems),\n ...(withNode && { with: withNode }),\n });\n },\n cloneWithSelections(select, selections) {\n return freeze({\n ...select,\n selections: select.selections\n ? freeze([...select.selections, ...selections])\n : freeze(selections),\n });\n },\n cloneWithDistinctOn(select, expressions) {\n return freeze({\n ...select,\n distinctOn: select.distinctOn\n ? freeze([...select.distinctOn, ...expressions])\n : freeze(expressions),\n });\n },\n cloneWithFrontModifier(select, modifier) {\n return freeze({\n ...select,\n frontModifiers: select.frontModifiers\n ? freeze([...select.frontModifiers, modifier])\n : freeze([modifier]),\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),\n cloneWithGroupByItems(selectNode, items) {\n return freeze({\n ...selectNode,\n groupBy: selectNode.groupBy\n ? GroupByNode.cloneWithItems(selectNode.groupBy, items)\n : GroupByNode.create(items),\n });\n },\n cloneWithLimit(selectNode, limit) {\n return freeze({\n ...selectNode,\n limit,\n });\n },\n cloneWithOffset(selectNode, offset) {\n return freeze({\n ...selectNode,\n offset,\n });\n },\n cloneWithFetch(selectNode, fetch) {\n return freeze({\n ...selectNode,\n fetch,\n });\n },\n cloneWithHaving(selectNode, operation) {\n return freeze({\n ...selectNode,\n having: selectNode.having\n ? HavingNode.cloneWithOperation(selectNode.having, 'And', operation)\n : HavingNode.create(operation),\n });\n },\n cloneWithSetOperations(selectNode, setOperations) {\n return freeze({\n ...selectNode,\n setOperations: selectNode.setOperations\n ? freeze([...selectNode.setOperations, ...setOperations])\n : freeze([...setOperations]),\n });\n },\n cloneWithoutSelections(select) {\n return freeze({\n ...select,\n selections: [],\n });\n },\n cloneWithoutLimit(select) {\n return freeze({\n ...select,\n limit: undefined,\n });\n },\n cloneWithoutOffset(select) {\n return freeze({\n ...select,\n offset: undefined,\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),\n cloneWithoutGroupBy(select) {\n return freeze({\n ...select,\n groupBy: undefined,\n });\n },\n});\n","/// <reference types=\"./join-builder.d.ts\" />\nimport { JoinNode } from '../operation-node/join-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class JoinBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n on(...args) {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n /**\n * Just like {@link WhereInterface.whereRef} but adds an item to the join's\n * `on` clause instead.\n *\n * See {@link WhereInterface.whereRef} for documentation and examples.\n */\n onRef(lhs, op, rhs) {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n /**\n * Adds `on true`.\n */\n onTrue() {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, RawNode.createWithSql('true')),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.joinNode;\n }\n}\n","/// <reference types=\"./partition-by-item-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const PartitionByItemNode = freeze({\n is(node) {\n return node.kind === 'PartitionByItemNode';\n },\n create(partitionBy) {\n return freeze({\n kind: 'PartitionByItemNode',\n partitionBy,\n });\n },\n});\n","/// <reference types=\"./partition-by-parser.d.ts\" />\nimport { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';\nimport { parseReferenceExpressionOrList, } from './reference-parser.js';\nexport function parsePartitionBy(partitionBy) {\n return parseReferenceExpressionOrList(partitionBy).map(PartitionByItemNode.create);\n}\n","/// <reference types=\"./over-builder.d.ts\" />\nimport { OverNode } from '../operation-node/over-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { parsePartitionBy, } from '../parser/partition-by-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class OverBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n orderBy(...args) {\n return new OverBuilder({\n overNode: OverNode.cloneWithOrderByItems(this.#props.overNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new OverBuilder({\n overNode: QueryNode.cloneWithoutOrderBy(this.#props.overNode),\n });\n }\n partitionBy(partitionBy) {\n return new OverBuilder({\n overNode: OverNode.cloneWithPartitionByItems(this.#props.overNode, parsePartitionBy(partitionBy)),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.overNode;\n }\n}\n","/// <reference types=\"./selection-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ReferenceNode } from './reference-node.js';\nimport { SelectAllNode } from './select-all-node.js';\n/**\n * @internal\n */\nexport const SelectionNode = freeze({\n is(node) {\n return node.kind === 'SelectionNode';\n },\n create(selection) {\n return freeze({\n kind: 'SelectionNode',\n selection: selection,\n });\n },\n createSelectAll() {\n return freeze({\n kind: 'SelectionNode',\n selection: SelectAllNode.create(),\n });\n },\n createSelectAllFromTable(table) {\n return freeze({\n kind: 'SelectionNode',\n selection: ReferenceNode.createSelectAll(table),\n });\n },\n});\n","/// <reference types=\"./select-parser.d.ts\" />\nimport { isFunction, isReadonlyArray, isString } from '../util/object-utils.js';\nimport { SelectionNode } from '../operation-node/selection-node.js';\nimport { parseAliasedStringReference } from './reference-parser.js';\nimport { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';\nimport { parseAliasedExpression, } from './expression-parser.js';\nimport { parseTable } from './table-parser.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nexport function parseSelectArg(selection) {\n if (isFunction(selection)) {\n return parseSelectArg(selection(expressionBuilder()));\n }\n else if (isReadonlyArray(selection)) {\n return selection.map((it) => parseSelectExpression(it));\n }\n else {\n return [parseSelectExpression(selection)];\n }\n}\nfunction parseSelectExpression(selection) {\n if (isString(selection)) {\n return SelectionNode.create(parseAliasedStringReference(selection));\n }\n else if (isDynamicReferenceBuilder(selection)) {\n return SelectionNode.create(selection.toOperationNode());\n }\n else {\n return SelectionNode.create(parseAliasedExpression(selection));\n }\n}\nexport function parseSelectAll(table) {\n if (!table) {\n return [SelectionNode.createSelectAll()];\n }\n else if (Array.isArray(table)) {\n return table.map(parseSelectAllArg);\n }\n else {\n return [parseSelectAllArg(table)];\n }\n}\nfunction parseSelectAllArg(table) {\n if (isString(table)) {\n return SelectionNode.createSelectAllFromTable(parseTable(table));\n }\n throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);\n}\n","/// <reference types=\"./values-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ValuesNode = freeze({\n is(node) {\n return node.kind === 'ValuesNode';\n },\n create(values) {\n return freeze({\n kind: 'ValuesNode',\n values: freeze(values),\n });\n },\n});\n","/// <reference types=\"./default-insert-value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DefaultInsertValueNode = freeze({\n is(node) {\n return node.kind === 'DefaultInsertValueNode';\n },\n create() {\n return freeze({\n kind: 'DefaultInsertValueNode',\n });\n },\n});\n","/// <reference types=\"./insert-values-parser.d.ts\" />\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';\nimport { ValueListNode } from '../operation-node/value-list-node.js';\nimport { freeze, isFunction, isReadonlyArray, isUndefined, } from '../util/object-utils.js';\nimport { parseValueExpression } from './value-parser.js';\nimport { ValuesNode } from '../operation-node/values-node.js';\nimport { isExpressionOrFactory } from './expression-parser.js';\nimport { DefaultInsertValueNode } from '../operation-node/default-insert-value-node.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nexport function parseInsertExpression(arg) {\n const objectOrList = isFunction(arg) ? arg(expressionBuilder()) : arg;\n const list = isReadonlyArray(objectOrList)\n ? objectOrList\n : freeze([objectOrList]);\n return parseInsertColumnsAndValues(list);\n}\nfunction parseInsertColumnsAndValues(rows) {\n const columns = parseColumnNamesAndIndexes(rows);\n return [\n freeze([...columns.keys()].map(ColumnNode.create)),\n ValuesNode.create(rows.map((row) => parseRowValues(row, columns))),\n ];\n}\nfunction parseColumnNamesAndIndexes(rows) {\n const columns = new Map();\n for (const row of rows) {\n const cols = Object.keys(row);\n for (const col of cols) {\n if (!columns.has(col) && row[col] !== undefined) {\n columns.set(col, columns.size);\n }\n }\n }\n return columns;\n}\nfunction parseRowValues(row, columns) {\n const rowColumns = Object.keys(row);\n const rowValues = Array.from({\n length: columns.size,\n });\n let hasUndefinedOrComplexColumns = false;\n let indexedRowColumns = rowColumns.length;\n for (const col of rowColumns) {\n const columnIdx = columns.get(col);\n if (isUndefined(columnIdx)) {\n indexedRowColumns--;\n continue;\n }\n const value = row[col];\n if (isUndefined(value) || isExpressionOrFactory(value)) {\n hasUndefinedOrComplexColumns = true;\n }\n rowValues[columnIdx] = value;\n }\n const hasMissingColumns = indexedRowColumns < columns.size;\n if (hasMissingColumns || hasUndefinedOrComplexColumns) {\n const defaultValue = DefaultInsertValueNode.create();\n return ValueListNode.create(rowValues.map((it) => isUndefined(it) ? defaultValue : parseValueExpression(it)));\n }\n return PrimitiveValueListNode.create(rowValues);\n}\n","/// <reference types=\"./column-update-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ColumnUpdateNode = freeze({\n is(node) {\n return node.kind === 'ColumnUpdateNode';\n },\n create(column, value) {\n return freeze({\n kind: 'ColumnUpdateNode',\n column,\n value,\n });\n },\n});\n","/// <reference types=\"./update-set-parser.d.ts\" />\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ColumnUpdateNode } from '../operation-node/column-update-node.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nimport { isFunction } from '../util/object-utils.js';\nimport { parseValueExpression } from './value-parser.js';\nimport { parseReferenceExpression, } from './reference-parser.js';\nexport function parseUpdate(...args) {\n if (args.length === 2) {\n return [\n ColumnUpdateNode.create(parseReferenceExpression(args[0]), parseValueExpression(args[1])),\n ];\n }\n return parseUpdateObjectExpression(args[0]);\n}\nexport function parseUpdateObjectExpression(update) {\n const updateObj = isFunction(update) ? update(expressionBuilder()) : update;\n return Object.entries(updateObj)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => {\n return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));\n });\n}\n","/// <reference types=\"./on-duplicate-key-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OnDuplicateKeyNode = freeze({\n is(node) {\n return node.kind === 'OnDuplicateKeyNode';\n },\n create(updates) {\n return freeze({\n kind: 'OnDuplicateKeyNode',\n updates,\n });\n },\n});\n","/// <reference types=\"./insert-result.d.ts\" />\n/**\n * The result of an insert query.\n *\n * If the table has an auto incrementing primary key {@link insertId} will hold\n * the generated id on dialects that support it. For example PostgreSQL doesn't\n * return the id by default and {@link insertId} is undefined. On PostgreSQL you\n * need to use {@link ReturningInterface.returning} or {@link ReturningInterface.returningAll}\n * to get out the inserted id.\n *\n * {@link numInsertedOrUpdatedRows} holds the number of (actually) inserted rows.\n * On MySQL, updated rows are counted twice when using `on duplicate key update`.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function insertPerson(person: NewPerson) {\n * const result = await db\n * .insertInto('person')\n * .values(person)\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.insertId) // relevant on MySQL\n * console.log(result.numInsertedOrUpdatedRows) // always relevant\n * }\n * ```\n */\nexport class InsertResult {\n /**\n * The auto incrementing primary key of the inserted row.\n *\n * This property can be undefined when the query contains an `on conflict`\n * clause that makes the query succeed even when nothing gets inserted.\n *\n * This property is always undefined on dialects like PostgreSQL that\n * don't return the inserted id by default. On those dialects you need\n * to use the {@link ReturningInterface.returning | returning} method.\n */\n insertId;\n /**\n * Affected rows count.\n */\n numInsertedOrUpdatedRows;\n constructor(insertId, numInsertedOrUpdatedRows) {\n this.insertId = insertId;\n this.numInsertedOrUpdatedRows = numInsertedOrUpdatedRows;\n }\n}\n","/// <reference types=\"./no-result-error.d.ts\" />\nexport class NoResultError extends Error {\n /**\n * The operation node tree of the query that was executed.\n */\n node;\n constructor(node) {\n super('no result');\n this.node = node;\n }\n}\nexport function isNoResultErrorConstructor(fn) {\n return Object.prototype.hasOwnProperty.call(fn, 'prototype');\n}\n","/// <reference types=\"./on-conflict-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhereNode } from './where-node.js';\n/**\n * @internal\n */\nexport const OnConflictNode = freeze({\n is(node) {\n return node.kind === 'OnConflictNode';\n },\n create() {\n return freeze({\n kind: 'OnConflictNode',\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithIndexWhere(node, operation) {\n return freeze({\n ...node,\n indexWhere: node.indexWhere\n ? WhereNode.cloneWithOperation(node.indexWhere, 'And', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithIndexOrWhere(node, operation) {\n return freeze({\n ...node,\n indexWhere: node.indexWhere\n ? WhereNode.cloneWithOperation(node.indexWhere, 'Or', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithUpdateWhere(node, operation) {\n return freeze({\n ...node,\n updateWhere: node.updateWhere\n ? WhereNode.cloneWithOperation(node.updateWhere, 'And', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithUpdateOrWhere(node, operation) {\n return freeze({\n ...node,\n updateWhere: node.updateWhere\n ? WhereNode.cloneWithOperation(node.updateWhere, 'Or', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithoutIndexWhere(node) {\n return freeze({\n ...node,\n indexWhere: undefined,\n });\n },\n cloneWithoutUpdateWhere(node) {\n return freeze({\n ...node,\n updateWhere: undefined,\n });\n },\n});\n","/// <reference types=\"./on-conflict-builder.d.ts\" />\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { OnConflictNode } from '../operation-node/on-conflict-node.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class OnConflictBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specify a single column as the conflict target.\n *\n * Also see the {@link columns}, {@link constraint} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n column(column) {\n const columnNode = ColumnNode.create(column);\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n columns: this.#props.onConflictNode.columns\n ? freeze([...this.#props.onConflictNode.columns, columnNode])\n : freeze([columnNode]),\n }),\n });\n }\n /**\n * Specify a list of columns as the conflict target.\n *\n * Also see the {@link column}, {@link constraint} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n columns(columns) {\n const columnNodes = columns.map(ColumnNode.create);\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n columns: this.#props.onConflictNode.columns\n ? freeze([...this.#props.onConflictNode.columns, ...columnNodes])\n : freeze(columnNodes),\n }),\n });\n }\n /**\n * Specify a specific constraint by name as the conflict target.\n *\n * Also see the {@link column}, {@link columns} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n constraint(constraintName) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n constraint: IdentifierNode.create(constraintName),\n }),\n });\n }\n /**\n * Specify an expression as the conflict target.\n *\n * This can be used if the unique index is an expression index.\n *\n * Also see the {@link column}, {@link columns} and {@link constraint}\n * methods for alternative ways to specify the conflict target.\n */\n expression(expression) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n indexExpression: expression.toOperationNode(),\n }),\n });\n }\n where(...args) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithoutIndexWhere(this.#props.onConflictNode),\n });\n }\n /**\n * Adds the \"do nothing\" conflict action.\n *\n * ### Examples\n *\n * ```ts\n * const id = 1\n * const first_name = 'John'\n *\n * await db\n * .insertInto('person')\n * .values({ first_name, id })\n * .onConflict((oc) => oc\n * .column('id')\n * .doNothing()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"id\")\n * values ($1, $2)\n * on conflict (\"id\") do nothing\n * ```\n */\n doNothing() {\n return new OnConflictDoNothingBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n doNothing: true,\n }),\n });\n }\n /**\n * Adds the \"do update set\" conflict action.\n *\n * ### Examples\n *\n * ```ts\n * const id = 1\n * const first_name = 'John'\n *\n * await db\n * .insertInto('person')\n * .values({ first_name, id })\n * .onConflict((oc) => oc\n * .column('id')\n * .doUpdateSet({ first_name })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"id\")\n * values ($1, $2)\n * on conflict (\"id\")\n * do update set \"first_name\" = $3\n * ```\n *\n * In the next example we use the `ref` method to reference\n * columns of the virtual table `excluded` in a type-safe way\n * to create an upsert operation:\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function upsertPerson(person: NewPerson): Promise<void> {\n * await db.insertInto('person')\n * .values(person)\n * .onConflict((oc) => oc\n * .column('id')\n * .doUpdateSet((eb) => ({\n * first_name: eb.ref('excluded.first_name'),\n * last_name: eb.ref('excluded.last_name')\n * })\n * )\n * )\n * .execute()\n * }\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\")\n * values ($1, $2)\n * on conflict (\"id\")\n * do update set\n * \"first_name\" = excluded.\"first_name\",\n * \"last_name\" = excluded.\"last_name\"\n * ```\n */\n doUpdateSet(update) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n updates: parseUpdateObjectExpression(update),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\nexport class OnConflictDoNothingBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.onConflictNode;\n }\n}\nexport class OnConflictUpdateBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n /**\n * Specify a where condition for the update operation.\n *\n * See {@link WhereInterface.whereRef} for more info.\n */\n whereRef(lhs, op, rhs) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithoutUpdateWhere(this.#props.onConflictNode),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.onConflictNode;\n }\n}\n","/// <reference types=\"./top-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const TopNode = freeze({\n is(node) {\n return node.kind === 'TopNode';\n },\n create(expression, modifiers) {\n return freeze({\n kind: 'TopNode',\n expression,\n modifiers,\n });\n },\n});\n","/// <reference types=\"./top-parser.d.ts\" />\nimport { TopNode } from '../operation-node/top-node.js';\nimport { isBigInt, isNumber, isUndefined } from '../util/object-utils.js';\nexport function parseTop(expression, modifiers) {\n if (!isNumber(expression) && !isBigInt(expression)) {\n throw new Error(`Invalid top expression: ${expression}`);\n }\n if (!isUndefined(modifiers) && !isTopModifiers(modifiers)) {\n throw new Error(`Invalid top modifiers: ${modifiers}`);\n }\n return TopNode.create(expression, modifiers);\n}\nfunction isTopModifiers(modifiers) {\n return (modifiers === 'percent' ||\n modifiers === 'with ties' ||\n modifiers === 'percent with ties');\n}\n","/// <reference types=\"./or-action-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrActionNode = freeze({\n is(node) {\n return node.kind === 'OrActionNode';\n },\n create(action) {\n return freeze({\n kind: 'OrActionNode',\n action,\n });\n },\n});\n","/// <reference types=\"./insert-query-builder.d.ts\" />\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { parseInsertExpression, } from '../parser/insert-values-parser.js';\nimport { InsertQueryNode } from '../operation-node/insert-query-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';\nimport { InsertResult } from './insert-result.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { parseExpression, } from '../parser/expression-parser.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { OnConflictBuilder, } from './on-conflict-builder.js';\nimport { OnConflictNode } from '../operation-node/on-conflict-node.js';\nimport { parseTop } from '../parser/top-parser.js';\nimport { OrActionNode } from '../operation-node/or-action-node.js';\nexport class InsertQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Sets the values to insert for an {@link Kysely.insertInto | insert} query.\n *\n * This method takes an object whose keys are column names and values are\n * values to insert. In addition to the column's type, the values can be\n * raw {@link sql} snippets or select queries.\n *\n * You must provide all fields you haven't explicitly marked as nullable\n * or optional using {@link Generated} or {@link ColumnType}.\n *\n * The return value of an `insert` query is an instance of {@link InsertResult}. The\n * {@link InsertResult.insertId | insertId} field holds the auto incremented primary\n * key if the database returned one.\n *\n * On PostgreSQL and some other dialects, you need to call `returning` to get\n * something out of the query.\n *\n * Also see the {@link expression} method for inserting the result of a select\n * query or any other expression.\n *\n * ### Examples\n *\n * <!-- siteExample(\"insert\", \"Single row\", 10) -->\n *\n * Insert a single row:\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40\n * })\n * .executeTakeFirst()\n *\n * // `insertId` is only available on dialects that\n * // automatically return the id of the inserted row\n * // such as MySQL and SQLite. On PostgreSQL, for example,\n * // you need to add a `returning` clause to the query to\n * // get anything out. See the \"returning data\" example.\n * console.log(result.insertId)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)\n * ```\n *\n * <!-- siteExample(\"insert\", \"Multiple rows\", 20) -->\n *\n * On dialects that support it (for example PostgreSQL) you can insert multiple\n * rows by providing an array. Note that the return value is once again very\n * dialect-specific. Some databases may only return the id of the *last* inserted\n * row and some return nothing at all unless you call `returning`.\n *\n * ```ts\n * await db\n * .insertInto('person')\n * .values([{\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * }, {\n * first_name: 'Arnold',\n * last_name: 'Schwarzenegger',\n * age: 70,\n * }])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\") values (($1, $2, $3), ($4, $5, $6))\n * ```\n *\n * <!-- siteExample(\"insert\", \"Returning data\", 30) -->\n *\n * On supported dialects like PostgreSQL you need to chain `returning` to the query to get\n * the inserted row's columns (or any other expression) as the return value. `returning`\n * works just like `select`. Refer to `select` method's examples and documentation for\n * more info.\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning(['id', 'first_name as name'])\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\") values ($1, $2, $3) returning \"id\", \"first_name\" as \"name\"\n * ```\n *\n * <!-- siteExample(\"insert\", \"Complex values\", 40) -->\n *\n * In addition to primitives, the values can also be arbitrary expressions.\n * You can build the expressions by using a callback and calling the methods\n * on the expression builder passed to it:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const ani = \"Ani\"\n * const ston = \"ston\"\n *\n * const result = await db\n * .insertInto('person')\n * .values(({ ref, selectFrom, fn }) => ({\n * first_name: 'Jennifer',\n * last_name: sql<string>`concat(${ani}, ${ston})`,\n * middle_name: ref('first_name'),\n * age: selectFrom('person')\n * .select(fn.avg<number>('age').as('avg_age')),\n * }))\n * .executeTakeFirst()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\n * \"first_name\",\n * \"last_name\",\n * \"middle_name\",\n * \"age\"\n * )\n * values (\n * $1,\n * concat($2, $3),\n * \"first_name\",\n * (select avg(\"age\") as \"avg_age\" from \"person\")\n * )\n * ```\n *\n * You can also use the callback version of subqueries or raw expressions:\n *\n * ```ts\n * await db.with('jennifer', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'first_name', 'gender'])\n * .limit(1)\n * ).insertInto('pet').values((eb) => ({\n * owner_id: eb.selectFrom('jennifer').select('id'),\n * name: eb.selectFrom('jennifer').select('first_name'),\n * species: 'cat',\n * }))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * with \"jennifer\" as (\n * select \"id\", \"first_name\", \"gender\"\n * from \"person\"\n * where \"first_name\" = $1\n * limit $2\n * )\n * insert into \"pet\" (\"owner_id\", \"name\", \"species\")\n * values (\n * (select \"id\" from \"jennifer\"),\n * (select \"first_name\" from \"jennifer\"),\n * $3\n * )\n * ```\n */\n values(insert) {\n const [columns, values] = parseInsertExpression(insert);\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n columns,\n values,\n }),\n });\n }\n /**\n * Sets the columns to insert.\n *\n * The {@link values} method sets both the columns and the values and this method\n * is not needed. But if you are using the {@link expression} method, you can use\n * this method to set the columns to insert.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .columns(['first_name'])\n * .expression((eb) => eb.selectFrom('pet').select('pet.name'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\")\n * select \"pet\".\"name\" from \"pet\"\n * ```\n */\n columns(columns) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n columns: freeze(columns.map(ColumnNode.create)),\n }),\n });\n }\n /**\n * Insert an arbitrary expression. For example the result of a select query.\n *\n * ### Examples\n *\n * <!-- siteExample(\"insert\", \"Insert subquery\", 50) -->\n *\n * You can create an `INSERT INTO SELECT FROM` query using the `expression` method.\n * This API doesn't follow our WYSIWYG principles and might be a bit difficult to\n * remember. The reasons for this design stem from implementation difficulties.\n *\n * ```ts\n * const result = await db.insertInto('person')\n * .columns(['first_name', 'last_name', 'age'])\n * .expression((eb) => eb\n * .selectFrom('pet')\n * .select((eb) => [\n * 'pet.name',\n * eb.val('Petson').as('last_name'),\n * eb.lit(7).as('age'),\n * ])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\")\n * select \"pet\".\"name\", $1 as \"last_name\", 7 as \"age from \"pet\"\n * ```\n */\n expression(expression) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n values: parseExpression(expression),\n }),\n });\n }\n /**\n * Creates an `insert into \"person\" default values` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .defaultValues()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" default values\n * ```\n */\n defaultValues() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n defaultValues: true,\n }),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .modifyEnd(sql`-- This is a comment`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (\"first_name\", \"last_name\", \"gender\")\n * values (?, ?, ?) -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Changes an `insert into` query to an `insert ignore into` query.\n *\n * This is only supported by some dialects like MySQL.\n *\n * To avoid a footgun, when invoked with the SQLite dialect, this method will\n * be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},\n * {@link orReplace}, and {@link orRollback}.\n *\n * If you use the ignore modifier, ignorable errors that occur while executing the\n * insert statement are ignored. For example, without ignore, a row that duplicates\n * an existing unique index or primary key value in the table causes a duplicate-key\n * error and the statement is aborted. With ignore, the row is discarded and no error\n * occurs.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .ignore()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or ignore into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n ignore() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('ignore'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or ignore into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * To avoid a footgun, when invoked with the MySQL dialect, this method will\n * be handled like {@link ignore}.\n *\n * See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orIgnore()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or ignore into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)\n * ```\n */\n orIgnore() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('ignore'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or abort into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orAbort()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or abort into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orAbort() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('abort'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or fail into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orFail()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or fail into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orFail() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('fail'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or replace into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * You can also use {@link Kysely.replaceInto} to achieve the same result.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orReplace()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or replace into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orReplace() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('replace'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or rollback into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orRollback()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or rollback into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orRollback() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('rollback'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert top into` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Insert the first 5 rows:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .top(5)\n * .columns(['first_name', 'gender'])\n * .expression(\n * (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * insert top(5) into \"person\" (\"first_name\", \"gender\") select \"name\", 'other' as \"gender\" from \"pet\"\n * ```\n *\n * Insert the first 50 percent of rows:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .top(50, 'percent')\n * .columns(['first_name', 'gender'])\n * .expression(\n * (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * insert top(50) percent into \"person\" (\"first_name\", \"gender\") select \"name\", 'other' as \"gender\" from \"pet\"\n * ```\n */\n top(expression, modifiers) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n /**\n * Adds an `on conflict` clause to the query.\n *\n * `on conflict` is only supported by some dialects like PostgreSQL and SQLite. On MySQL\n * you can use {@link ignore} and {@link onDuplicateKeyUpdate} to achieve similar results.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\")\n * do update set \"species\" = $4\n * ```\n *\n * You can provide the name of the constraint instead of a column name:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .constraint('pet_name_key')\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict on constraint \"pet_name_key\"\n * do update set \"species\" = $4\n * ```\n *\n * You can also specify an expression as the conflict target in case\n * the unique index is an expression index:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .expression(sql<string>`lower(name)`)\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (lower(name))\n * do update set \"species\" = $4\n * ```\n *\n * You can add a filter for the update statement like this:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doUpdateSet({ species: 'hamster' })\n * .where('excluded.name', '!=', 'Catto')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\")\n * do update set \"species\" = $4\n * where \"excluded\".\"name\" != $5\n * ```\n *\n * You can create an `on conflict do nothing` clauses like this:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doNothing()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\") do nothing\n * ```\n *\n * You can refer to the columns of the virtual `excluded` table\n * in a type-safe way using a callback and the `ref` method of\n * `ExpressionBuilder`:\n *\n * ```ts\n * await db.insertInto('person')\n * .values({\n * id: 1,\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .onConflict(oc => oc\n * .column('id')\n * .doUpdateSet({\n * first_name: (eb) => eb.ref('excluded.first_name'),\n * last_name: (eb) => eb.ref('excluded.last_name')\n * })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"id\", \"first_name\", \"last_name\", \"gender\")\n * values ($1, $2, $3, $4)\n * on conflict (\"id\")\n * do update set\n * \"first_name\" = \"excluded\".\"first_name\",\n * \"last_name\" = \"excluded\".\"last_name\"\n * ```\n */\n onConflict(callback) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n onConflict: callback(new OnConflictBuilder({\n onConflictNode: OnConflictNode.create(),\n })).toOperationNode(),\n }),\n });\n }\n /**\n * Adds `on duplicate key update` to the query.\n *\n * If you specify `on duplicate key update`, and a row is inserted that would cause\n * a duplicate value in a unique index or primary key, an update of the old row occurs.\n *\n * This is only implemented by some dialects like MySQL. On most dialects you should\n * use {@link onConflict} instead.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .insertInto('person')\n * .values({\n * id: 1,\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .onDuplicateKeyUpdate({ updated_at: new Date().toISOString() })\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (`id`, `first_name`, `last_name`, `gender`)\n * values (?, ?, ?, ?)\n * on duplicate key update `updated_at` = ?\n * ```\n */\n onDuplicateKeyUpdate(update) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObjectExpression(update)),\n }),\n });\n }\n returning(selection) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll()),\n });\n }\n output(args) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .values({ first_name: 'James', last_name: 'Smith', gender: 'male' })\n * .returning(['first_name'])\n * .clearReturning()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"gender\") values ($1, $2, $3)\n * ```\n */\n clearReturning() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.insertInto('person')\n * .values({ first_name: 'John', last_name: 'Doe', gender: 'male' })\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function insertPerson(values: NewPerson, returnLastName: boolean) {\n * return await db\n * .insertInto('person')\n * .values(values)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `insertPerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new InsertQueryBuilder({\n ...this.#props,\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `InsertQueryBuilder` with a new output type.\n */\n $castTo() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query based on {@link values} input\n * when using {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const person = await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * nullable_column: 'hell yeah!'\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const person = await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * nullable_column: 'hell yeah!'\n * })\n * .returningAll()\n * .$narrowType<{ nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson, NewPet, Species } from 'type-editor' // imaginary module\n *\n * async function insertPersonAndPet(person: NewPerson, pet: Omit<NewPet, 'owner_id'>) {\n * return await db\n * .with('new_person', (qb) => qb\n * .insertInto('person')\n * .values(person)\n * .returning('id')\n * .$assertType<{ id: number }>()\n * )\n * .with('new_pet', (qb) => qb\n * .insertInto('pet')\n * .values((eb) => ({\n * owner_id: eb.selectFrom('new_person').select('id'),\n * ...pet\n * }))\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['new_person', 'new_pet'])\n * .selectAll()\n * .executeTakeFirstOrThrow()\n * }\n * ```\n */\n $assertType() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this InsertQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new InsertQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [\n new InsertResult(result.insertId, result.numAffectedRows ?? BigInt(0)),\n ];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n","/// <reference types=\"./delete-result.d.ts\" />\nexport class DeleteResult {\n numDeletedRows;\n constructor(numDeletedRows) {\n this.numDeletedRows = numDeletedRows;\n }\n}\n","/// <reference types=\"./limit-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const LimitNode = freeze({\n is(node) {\n return node.kind === 'LimitNode';\n },\n create(limit) {\n return freeze({\n kind: 'LimitNode',\n limit,\n });\n },\n});\n","/// <reference types=\"./delete-query-builder.d.ts\" />\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseTableExpressionOrList, } from '../parser/table-parser.js';\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { DeleteResult } from './delete-result.js';\nimport { DeleteQueryNode } from '../operation-node/delete-query-node.js';\nimport { LimitNode } from '../operation-node/limit-node.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { parseValueExpression, } from '../parser/value-parser.js';\nimport { parseTop } from '../parser/top-parser.js';\nexport class DeleteQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n /**\n * Changes a `delete from` query into a `delete top from` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Delete the first 5 rows:\n *\n * ```ts\n * await db\n * .deleteFrom('person')\n * .top(5)\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * delete top(5) from \"person\" where \"age\" > @1\n * ```\n *\n * Delete the first 50% of rows:\n *\n * ```ts\n * await db\n * .deleteFrom('person')\n * .top(50, 'percent')\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * delete top(50) percent from \"person\" where \"age\" > @1\n * ```\n */\n top(expression, modifiers) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n using(tables) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithUsing(this.#props.queryNode, parseTableExpressionOrList(tables)),\n });\n }\n innerJoin(...args) {\n return this.#join('InnerJoin', args);\n }\n leftJoin(...args) {\n return this.#join('LeftJoin', args);\n }\n rightJoin(...args) {\n return this.#join('RightJoin', args);\n }\n fullJoin(...args) {\n return this.#join('FullJoin', args);\n }\n #join(joinType, args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n returning(selection) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll(table) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.deleteFrom('pet')\n * .returningAll()\n * .where('name', '=', 'Max')\n * .clearReturning()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * delete from \"pet\" where \"name\" = \"Max\"\n * ```\n */\n clearReturning() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),\n });\n }\n /**\n * Clears the `limit` clause from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.deleteFrom('pet')\n * .returningAll()\n * .where('name', '=', 'Max')\n * .limit(5)\n * .clearLimit()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * delete from \"pet\" where \"name\" = \"Max\" returning *\n * ```\n */\n clearLimit() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),\n });\n }\n orderBy(...args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n /**\n * Adds a limit clause to the query.\n *\n * A limit clause in a delete query is only supported by some dialects\n * like MySQL.\n *\n * ### Examples\n *\n * Delete 5 oldest items in a table:\n *\n * ```ts\n * await db\n * .deleteFrom('pet')\n * .orderBy('created_at')\n * .limit(5)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `pet` order by `created_at` limit ?\n * ```\n */\n limit(limit) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.deleteFrom('person')\n * .where('first_name', '=', 'John')\n * .modifyEnd(sql`-- This is a comment`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `person`\n * where `first_name` = \"John\" -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.deleteFrom('person')\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * async function deletePerson(id: number, returnLastName: boolean) {\n * return await db\n * .deleteFrom('person')\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `deletePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new DeleteQueryBuilder({\n ...this.#props,\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `DeleteQueryBuilder` with a new output type.\n */\n $castTo() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query when using {@link where} and {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const person = await db.deleteFrom('person')\n * .where('id', '=', 3)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const person = await db.deleteFrom('person')\n * .where('id', '=', 3)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .$narrowType<{ nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { Species } from 'type-editor' // imaginary module\n *\n * async function deletePersonAndPets(personId: number) {\n * return await db\n * .with('deleted_person', (qb) => qb\n * .deleteFrom('person')\n * .where('id', '=', personId)\n * .returning('first_name')\n * .$assertType<{ first_name: string }>()\n * )\n * .with('deleted_pets', (qb) => qb\n * .deleteFrom('pet')\n * .where('owner_id', '=', personId)\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['deleted_person', 'deleted_pets'])\n * .selectAll()\n * .execute()\n * }\n * ```\n */\n $assertType() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new DeleteQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [new DeleteResult(result.numAffectedRows ?? BigInt(0))];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n","/// <reference types=\"./update-result.d.ts\" />\nexport class UpdateResult {\n /**\n * The number of rows the update query updated (even if not changed).\n */\n numUpdatedRows;\n /**\n * The number of rows the update query changed.\n *\n * This is **optional** and only supported in dialects such as MySQL.\n * You would probably use {@link numUpdatedRows} in most cases.\n */\n numChangedRows;\n constructor(numUpdatedRows, numChangedRows) {\n this.numUpdatedRows = numUpdatedRows;\n this.numChangedRows = numChangedRows;\n }\n}\n","/// <reference types=\"./update-query-builder.d.ts\" />\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseTableExpressionOrList, } from '../parser/table-parser.js';\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { UpdateQueryNode } from '../operation-node/update-query-node.js';\nimport { parseUpdate, } from '../parser/update-set-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { UpdateResult } from './update-result.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { parseValueExpression, } from '../parser/value-parser.js';\nimport { LimitNode } from '../operation-node/limit-node.js';\nimport { parseTop } from '../parser/top-parser.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nexport class UpdateQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n /**\n * Changes an `update` query into a `update top` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Update the first row:\n *\n * ```ts\n * await db.updateTable('person')\n * .top(1)\n * .set({ first_name: 'Foo' })\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * update top(1) \"person\" set \"first_name\" = @1 where \"age\" > @2\n * ```\n *\n * Update the 50% first rows:\n *\n * ```ts\n * await db.updateTable('person')\n * .top(50, 'percent')\n * .set({ first_name: 'Foo' })\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * update top(50) percent \"person\" set \"first_name\" = @1 where \"age\" > @2\n * ```\n */\n top(expression, modifiers) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n from(from) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithFromItems(this.#props.queryNode, parseTableExpressionOrList(from)),\n });\n }\n innerJoin(...args) {\n return this.#join('InnerJoin', args);\n }\n leftJoin(...args) {\n return this.#join('LeftJoin', args);\n }\n rightJoin(...args) {\n return this.#join('RightJoin', args);\n }\n fullJoin(...args) {\n return this.#join('FullJoin', args);\n }\n #join(joinType, args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n orderBy(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n /**\n * Adds a limit clause to the update query for supported databases, such as MySQL.\n *\n * ### Examples\n *\n * Update the first 2 rows in the 'person' table:\n *\n * ```ts\n * await db\n * .updateTable('person')\n * .set({ first_name: 'Foo' })\n * .limit(2)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * update `person` set `first_name` = ? limit ?\n * ```\n */\n limit(limit) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n set(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdate(...args)),\n });\n }\n returning(selection) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll(table) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.updateTable('person')\n * .set({ age: 39 })\n * .where('first_name', '=', 'John')\n * .modifyEnd(sql.raw('-- This is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * update `person`\n * set `age` = 39\n * where `first_name` = \"John\" -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * db.updateTable('person')\n * .returningAll()\n * .set({ age: 39 })\n * .where('first_name', '=', 'John')\n * .clearReturning()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * update \"person\" set \"age\" = 39 where \"first_name\" = \"John\"\n * ```\n */\n clearReturning() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * const values = {\n * first_name: 'John',\n * } satisfies PersonUpdate\n *\n * db.updateTable('person')\n * .set(values)\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {\n * return await db\n * .updateTable('person')\n * .set(updates)\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `updatePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new UpdateQueryBuilder({\n ...this.#props,\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `UpdateQueryBuilder` with a new output type.\n */\n $castTo() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query based on {@link set} input\n * when using {@link where} and/or {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const id = 1\n * const now = new Date().toISOString()\n *\n * const person = await db.updateTable('person')\n * .set({ deleted_at: now })\n * .where('id', '=', id)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const id = 1\n * const now = new Date().toISOString()\n *\n * const person = await db.updateTable('person')\n * .set({ deleted_at: now })\n * .where('id', '=', id)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .$narrowType<{ deleted_at: Date; nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate, PetUpdate, Species } from 'type-editor' // imaginary module\n *\n * const person = {\n * id: 1,\n * gender: 'other',\n * } satisfies PersonUpdate\n *\n * const pet = {\n * name: 'Fluffy',\n * } satisfies PetUpdate\n *\n * const result = await db\n * .with('updated_person', (qb) => qb\n * .updateTable('person')\n * .set(person)\n * .where('id', '=', person.id)\n * .returning('first_name')\n * .$assertType<{ first_name: string }>()\n * )\n * .with('updated_pet', (qb) => qb\n * .updateTable('pet')\n * .set(pet)\n * .where('owner_id', '=', person.id)\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['updated_person', 'updated_pet'])\n * .selectAll()\n * .executeTakeFirstOrThrow()\n * ```\n */\n $assertType() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new UpdateQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [\n new UpdateResult(result.numAffectedRows ?? BigInt(0), result.numChangedRows),\n ];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n","/// <reference types=\"./common-table-expression-name-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { TableNode } from './table-node.js';\n/**\n * @internal\n */\nexport const CommonTableExpressionNameNode = freeze({\n is(node) {\n return node.kind === 'CommonTableExpressionNameNode';\n },\n create(tableName, columnNames) {\n return freeze({\n kind: 'CommonTableExpressionNameNode',\n table: TableNode.create(tableName),\n columns: columnNames\n ? freeze(columnNames.map(ColumnNode.create))\n : undefined,\n });\n },\n});\n","/// <reference types=\"./common-table-expression-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const CommonTableExpressionNode = freeze({\n is(node) {\n return node.kind === 'CommonTableExpressionNode';\n },\n create(name, expression) {\n return freeze({\n kind: 'CommonTableExpressionNode',\n name,\n expression,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./cte-builder.d.ts\" />\nimport { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class CTEBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the common table expression materialized.\n */\n materialized() {\n return new CTEBuilder({\n ...this.#props,\n node: CommonTableExpressionNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n /**\n * Makes the common table expression not materialized.\n */\n notMaterialized() {\n return new CTEBuilder({\n ...this.#props,\n node: CommonTableExpressionNode.cloneWith(this.#props.node, {\n materialized: false,\n }),\n });\n }\n toOperationNode() {\n return this.#props.node;\n }\n}\n","/// <reference types=\"./with-parser.d.ts\" />\nimport { CommonTableExpressionNameNode } from '../operation-node/common-table-expression-name-node.js';\nimport { createQueryCreator } from './parse-utils.js';\nimport { isFunction } from '../util/object-utils.js';\nimport { CTEBuilder } from '../query-builder/cte-builder.js';\nimport { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';\nexport function parseCommonTableExpression(nameOrBuilderCallback, expression) {\n const expressionNode = expression(createQueryCreator()).toOperationNode();\n if (isFunction(nameOrBuilderCallback)) {\n return nameOrBuilderCallback(cteBuilderFactory(expressionNode)).toOperationNode();\n }\n return CommonTableExpressionNode.create(parseCommonTableExpressionName(nameOrBuilderCallback), expressionNode);\n}\nfunction cteBuilderFactory(expressionNode) {\n return (name) => {\n return new CTEBuilder({\n node: CommonTableExpressionNode.create(parseCommonTableExpressionName(name), expressionNode),\n });\n };\n}\nfunction parseCommonTableExpressionName(name) {\n if (name.includes('(')) {\n const parts = name.split(/[\\(\\)]/);\n const table = parts[0];\n const columns = parts[1].split(',').map((it) => it.trim());\n return CommonTableExpressionNameNode.create(table, columns);\n }\n else {\n return CommonTableExpressionNameNode.create(name);\n }\n}\n","/// <reference types=\"./with-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const WithNode = freeze({\n is(node) {\n return node.kind === 'WithNode';\n },\n create(expression, params) {\n return freeze({\n kind: 'WithNode',\n expressions: freeze([expression]),\n ...params,\n });\n },\n cloneWithExpression(withNode, expression) {\n return freeze({\n ...withNode,\n expressions: freeze([...withNode.expressions, expression]),\n });\n },\n});\n","/// <reference types=\"./random-string.d.ts\" />\nconst CHARS = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n];\nexport function randomString(length) {\n let chars = '';\n for (let i = 0; i < length; ++i) {\n chars += randomChar();\n }\n return chars;\n}\nfunction randomChar() {\n return CHARS[~~(Math.random() * CHARS.length)];\n}\n","/// <reference types=\"./query-id.d.ts\" />\nimport { randomString } from './random-string.js';\nexport function createQueryId() {\n return new LazyQueryId();\n}\nclass LazyQueryId {\n #queryId;\n get queryId() {\n if (this.#queryId === undefined) {\n this.#queryId = randomString(8);\n }\n return this.#queryId;\n }\n}\n","/// <reference types=\"./require-all-props.d.ts\" />\n/**\n * Helper function to check listed properties according to given type. Check if all properties has been used when object is initialised.\n *\n * Example use:\n *\n * ```ts\n * type SomeType = { propA: string; propB?: number; }\n *\n * // propB has to be mentioned even it is optional. It still should be initialized with undefined.\n * const a: SomeType = requireAllProps<SomeType>({ propA: \"value A\", propB: undefined });\n *\n * // checked type is implicit for variable.\n * const b = requireAllProps<SomeType>({ propA: \"value A\", propB: undefined });\n * ```\n *\n * Wrong use of this helper:\n *\n * 1. Omit checked type - all checked properties will be expect as of type never\n *\n * ```ts\n * type SomeType = { propA: string; propB?: number; }\n * // const z: SomeType = requireAllProps({ propC: \"no type will work\" }); // Property 'propA' is missing in type '{ propC: string; }' but required in type 'SomeType'.\n * ```\n *\n * 2. Apply to spreaded object - there is no way how to check in compile time if spreaded object contains all properties\n *\n * ```ts\n * type SomeType = { propA: string; propB?: number; }\n * const y: SomeType = { propA: \"\" }; // valid object according to SomeType declaration\n * // const x = requireAllProps<SomeType>({ ...y }); // Argument of type '{ propA: string; propB?: number; }' is not assignable to parameter of type 'AllProps<SomeType>'.\n * ```\n *\n * @param obj object to check if all properties has been used\n * @returns untouched obj parameter is returned\n */\nexport function requireAllProps(obj) {\n return obj;\n}\n","/// <reference types=\"./operation-node-transformer.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { requireAllProps } from '../util/require-all-props.js';\n/**\n * Transforms an operation node tree into another one.\n *\n * Kysely queries are expressed internally as a tree of objects (operation nodes).\n * `OperationNodeTransformer` takes such a tree as its input and returns a\n * transformed deep copy of it. By default the `OperationNodeTransformer`\n * does nothing. You need to override one or more methods to make it do\n * something.\n *\n * There's a method for each node type. For example if you'd like to convert\n * each identifier (table name, column name, alias etc.) from camelCase to\n * snake_case, you'd do something like this:\n *\n * ```ts\n * import { type IdentifierNode, OperationNodeTransformer } from 'kysely'\n * import snakeCase from 'lodash/snakeCase'\n *\n * class CamelCaseTransformer extends OperationNodeTransformer {\n * override transformIdentifier(node: IdentifierNode): IdentifierNode {\n * node = super.transformIdentifier(node)\n *\n * return {\n * ...node,\n * name: snakeCase(node.name),\n * }\n * }\n * }\n *\n * const transformer = new CamelCaseTransformer()\n *\n * const query = db.selectFrom('person').select(['first_name', 'last_name'])\n *\n * const tree = transformer.transformNode(query.toOperationNode())\n * ```\n */\nexport class OperationNodeTransformer {\n nodeStack = [];\n #transformers = freeze({\n AliasNode: this.transformAlias.bind(this),\n ColumnNode: this.transformColumn.bind(this),\n IdentifierNode: this.transformIdentifier.bind(this),\n SchemableIdentifierNode: this.transformSchemableIdentifier.bind(this),\n RawNode: this.transformRaw.bind(this),\n ReferenceNode: this.transformReference.bind(this),\n SelectQueryNode: this.transformSelectQuery.bind(this),\n SelectionNode: this.transformSelection.bind(this),\n TableNode: this.transformTable.bind(this),\n FromNode: this.transformFrom.bind(this),\n SelectAllNode: this.transformSelectAll.bind(this),\n AndNode: this.transformAnd.bind(this),\n OrNode: this.transformOr.bind(this),\n ValueNode: this.transformValue.bind(this),\n ValueListNode: this.transformValueList.bind(this),\n PrimitiveValueListNode: this.transformPrimitiveValueList.bind(this),\n ParensNode: this.transformParens.bind(this),\n JoinNode: this.transformJoin.bind(this),\n OperatorNode: this.transformOperator.bind(this),\n WhereNode: this.transformWhere.bind(this),\n InsertQueryNode: this.transformInsertQuery.bind(this),\n DeleteQueryNode: this.transformDeleteQuery.bind(this),\n ReturningNode: this.transformReturning.bind(this),\n CreateTableNode: this.transformCreateTable.bind(this),\n AddColumnNode: this.transformAddColumn.bind(this),\n ColumnDefinitionNode: this.transformColumnDefinition.bind(this),\n DropTableNode: this.transformDropTable.bind(this),\n DataTypeNode: this.transformDataType.bind(this),\n OrderByNode: this.transformOrderBy.bind(this),\n OrderByItemNode: this.transformOrderByItem.bind(this),\n GroupByNode: this.transformGroupBy.bind(this),\n GroupByItemNode: this.transformGroupByItem.bind(this),\n UpdateQueryNode: this.transformUpdateQuery.bind(this),\n ColumnUpdateNode: this.transformColumnUpdate.bind(this),\n LimitNode: this.transformLimit.bind(this),\n OffsetNode: this.transformOffset.bind(this),\n OnConflictNode: this.transformOnConflict.bind(this),\n OnDuplicateKeyNode: this.transformOnDuplicateKey.bind(this),\n CreateIndexNode: this.transformCreateIndex.bind(this),\n DropIndexNode: this.transformDropIndex.bind(this),\n ListNode: this.transformList.bind(this),\n PrimaryKeyConstraintNode: this.transformPrimaryKeyConstraint.bind(this),\n UniqueConstraintNode: this.transformUniqueConstraint.bind(this),\n ReferencesNode: this.transformReferences.bind(this),\n CheckConstraintNode: this.transformCheckConstraint.bind(this),\n WithNode: this.transformWith.bind(this),\n CommonTableExpressionNode: this.transformCommonTableExpression.bind(this),\n CommonTableExpressionNameNode: this.transformCommonTableExpressionName.bind(this),\n HavingNode: this.transformHaving.bind(this),\n CreateSchemaNode: this.transformCreateSchema.bind(this),\n DropSchemaNode: this.transformDropSchema.bind(this),\n AlterTableNode: this.transformAlterTable.bind(this),\n DropColumnNode: this.transformDropColumn.bind(this),\n RenameColumnNode: this.transformRenameColumn.bind(this),\n AlterColumnNode: this.transformAlterColumn.bind(this),\n ModifyColumnNode: this.transformModifyColumn.bind(this),\n AddConstraintNode: this.transformAddConstraint.bind(this),\n DropConstraintNode: this.transformDropConstraint.bind(this),\n RenameConstraintNode: this.transformRenameConstraint.bind(this),\n ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),\n CreateViewNode: this.transformCreateView.bind(this),\n RefreshMaterializedViewNode: this.transformRefreshMaterializedView.bind(this),\n DropViewNode: this.transformDropView.bind(this),\n GeneratedNode: this.transformGenerated.bind(this),\n DefaultValueNode: this.transformDefaultValue.bind(this),\n OnNode: this.transformOn.bind(this),\n ValuesNode: this.transformValues.bind(this),\n SelectModifierNode: this.transformSelectModifier.bind(this),\n CreateTypeNode: this.transformCreateType.bind(this),\n DropTypeNode: this.transformDropType.bind(this),\n ExplainNode: this.transformExplain.bind(this),\n DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),\n AggregateFunctionNode: this.transformAggregateFunction.bind(this),\n OverNode: this.transformOver.bind(this),\n PartitionByNode: this.transformPartitionBy.bind(this),\n PartitionByItemNode: this.transformPartitionByItem.bind(this),\n SetOperationNode: this.transformSetOperation.bind(this),\n BinaryOperationNode: this.transformBinaryOperation.bind(this),\n UnaryOperationNode: this.transformUnaryOperation.bind(this),\n UsingNode: this.transformUsing.bind(this),\n FunctionNode: this.transformFunction.bind(this),\n CaseNode: this.transformCase.bind(this),\n WhenNode: this.transformWhen.bind(this),\n JSONReferenceNode: this.transformJSONReference.bind(this),\n JSONPathNode: this.transformJSONPath.bind(this),\n JSONPathLegNode: this.transformJSONPathLeg.bind(this),\n JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),\n TupleNode: this.transformTuple.bind(this),\n MergeQueryNode: this.transformMergeQuery.bind(this),\n MatchedNode: this.transformMatched.bind(this),\n AddIndexNode: this.transformAddIndex.bind(this),\n CastNode: this.transformCast.bind(this),\n FetchNode: this.transformFetch.bind(this),\n TopNode: this.transformTop.bind(this),\n OutputNode: this.transformOutput.bind(this),\n OrActionNode: this.transformOrAction.bind(this),\n CollateNode: this.transformCollate.bind(this),\n });\n transformNode(node, queryId) {\n if (!node) {\n return node;\n }\n this.nodeStack.push(node);\n const out = this.transformNodeImpl(node, queryId);\n this.nodeStack.pop();\n return freeze(out);\n }\n transformNodeImpl(node, queryId) {\n return this.#transformers[node.kind](node, queryId);\n }\n transformNodeList(list, queryId) {\n if (!list) {\n return list;\n }\n return freeze(list.map((node) => this.transformNode(node, queryId)));\n }\n transformSelectQuery(node, queryId) {\n return requireAllProps({\n kind: 'SelectQueryNode',\n from: this.transformNode(node.from, queryId),\n selections: this.transformNodeList(node.selections, queryId),\n distinctOn: this.transformNodeList(node.distinctOn, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n groupBy: this.transformNode(node.groupBy, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n where: this.transformNode(node.where, queryId),\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n limit: this.transformNode(node.limit, queryId),\n offset: this.transformNode(node.offset, queryId),\n with: this.transformNode(node.with, queryId),\n having: this.transformNode(node.having, queryId),\n explain: this.transformNode(node.explain, queryId),\n setOperations: this.transformNodeList(node.setOperations, queryId),\n fetch: this.transformNode(node.fetch, queryId),\n top: this.transformNode(node.top, queryId),\n });\n }\n transformSelection(node, queryId) {\n return requireAllProps({\n kind: 'SelectionNode',\n selection: this.transformNode(node.selection, queryId),\n });\n }\n transformColumn(node, queryId) {\n return requireAllProps({\n kind: 'ColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformAlias(node, queryId) {\n return requireAllProps({\n kind: 'AliasNode',\n node: this.transformNode(node.node, queryId),\n alias: this.transformNode(node.alias, queryId),\n });\n }\n transformTable(node, queryId) {\n return requireAllProps({\n kind: 'TableNode',\n table: this.transformNode(node.table, queryId),\n });\n }\n transformFrom(node, queryId) {\n return requireAllProps({\n kind: 'FromNode',\n froms: this.transformNodeList(node.froms, queryId),\n });\n }\n transformReference(node, queryId) {\n return requireAllProps({\n kind: 'ReferenceNode',\n column: this.transformNode(node.column, queryId),\n table: this.transformNode(node.table, queryId),\n });\n }\n transformAnd(node, queryId) {\n return requireAllProps({\n kind: 'AndNode',\n left: this.transformNode(node.left, queryId),\n right: this.transformNode(node.right, queryId),\n });\n }\n transformOr(node, queryId) {\n return requireAllProps({\n kind: 'OrNode',\n left: this.transformNode(node.left, queryId),\n right: this.transformNode(node.right, queryId),\n });\n }\n transformValueList(node, queryId) {\n return requireAllProps({\n kind: 'ValueListNode',\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformParens(node, queryId) {\n return requireAllProps({\n kind: 'ParensNode',\n node: this.transformNode(node.node, queryId),\n });\n }\n transformJoin(node, queryId) {\n return requireAllProps({\n kind: 'JoinNode',\n joinType: node.joinType,\n table: this.transformNode(node.table, queryId),\n on: this.transformNode(node.on, queryId),\n });\n }\n transformRaw(node, queryId) {\n return requireAllProps({\n kind: 'RawNode',\n sqlFragments: freeze([...node.sqlFragments]),\n parameters: this.transformNodeList(node.parameters, queryId),\n });\n }\n transformWhere(node, queryId) {\n return requireAllProps({\n kind: 'WhereNode',\n where: this.transformNode(node.where, queryId),\n });\n }\n transformInsertQuery(node, queryId) {\n return requireAllProps({\n kind: 'InsertQueryNode',\n into: this.transformNode(node.into, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n values: this.transformNode(node.values, queryId),\n returning: this.transformNode(node.returning, queryId),\n onConflict: this.transformNode(node.onConflict, queryId),\n onDuplicateKey: this.transformNode(node.onDuplicateKey, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n ignore: node.ignore,\n orAction: this.transformNode(node.orAction, queryId),\n replace: node.replace,\n explain: this.transformNode(node.explain, queryId),\n defaultValues: node.defaultValues,\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n });\n }\n transformValues(node, queryId) {\n return requireAllProps({\n kind: 'ValuesNode',\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformDeleteQuery(node, queryId) {\n return requireAllProps({\n kind: 'DeleteQueryNode',\n from: this.transformNode(node.from, queryId),\n using: this.transformNode(node.using, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n where: this.transformNode(node.where, queryId),\n returning: this.transformNode(node.returning, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n limit: this.transformNode(node.limit, queryId),\n explain: this.transformNode(node.explain, queryId),\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n });\n }\n transformReturning(node, queryId) {\n return requireAllProps({\n kind: 'ReturningNode',\n selections: this.transformNodeList(node.selections, queryId),\n });\n }\n transformCreateTable(node, queryId) {\n return requireAllProps({\n kind: 'CreateTableNode',\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n constraints: this.transformNodeList(node.constraints, queryId),\n temporary: node.temporary,\n ifNotExists: node.ifNotExists,\n onCommit: node.onCommit,\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n selectQuery: this.transformNode(node.selectQuery, queryId),\n });\n }\n transformColumnDefinition(node, queryId) {\n return requireAllProps({\n kind: 'ColumnDefinitionNode',\n column: this.transformNode(node.column, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n references: this.transformNode(node.references, queryId),\n primaryKey: node.primaryKey,\n autoIncrement: node.autoIncrement,\n unique: node.unique,\n notNull: node.notNull,\n unsigned: node.unsigned,\n defaultTo: this.transformNode(node.defaultTo, queryId),\n check: this.transformNode(node.check, queryId),\n generated: this.transformNode(node.generated, queryId),\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n identity: node.identity,\n ifNotExists: node.ifNotExists,\n });\n }\n transformAddColumn(node, queryId) {\n return requireAllProps({\n kind: 'AddColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformDropTable(node, queryId) {\n return requireAllProps({\n kind: 'DropTableNode',\n table: this.transformNode(node.table, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade,\n });\n }\n transformOrderBy(node, queryId) {\n return requireAllProps({\n kind: 'OrderByNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformOrderByItem(node, queryId) {\n return requireAllProps({\n kind: 'OrderByItemNode',\n orderBy: this.transformNode(node.orderBy, queryId),\n direction: this.transformNode(node.direction, queryId),\n collation: this.transformNode(node.collation, queryId),\n nulls: node.nulls,\n });\n }\n transformGroupBy(node, queryId) {\n return requireAllProps({\n kind: 'GroupByNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformGroupByItem(node, queryId) {\n return requireAllProps({\n kind: 'GroupByItemNode',\n groupBy: this.transformNode(node.groupBy, queryId),\n });\n }\n transformUpdateQuery(node, queryId) {\n return requireAllProps({\n kind: 'UpdateQueryNode',\n table: this.transformNode(node.table, queryId),\n from: this.transformNode(node.from, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n where: this.transformNode(node.where, queryId),\n updates: this.transformNodeList(node.updates, queryId),\n returning: this.transformNode(node.returning, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n explain: this.transformNode(node.explain, queryId),\n limit: this.transformNode(node.limit, queryId),\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n });\n }\n transformColumnUpdate(node, queryId) {\n return requireAllProps({\n kind: 'ColumnUpdateNode',\n column: this.transformNode(node.column, queryId),\n value: this.transformNode(node.value, queryId),\n });\n }\n transformLimit(node, queryId) {\n return requireAllProps({\n kind: 'LimitNode',\n limit: this.transformNode(node.limit, queryId),\n });\n }\n transformOffset(node, queryId) {\n return requireAllProps({\n kind: 'OffsetNode',\n offset: this.transformNode(node.offset, queryId),\n });\n }\n transformOnConflict(node, queryId) {\n return requireAllProps({\n kind: 'OnConflictNode',\n columns: this.transformNodeList(node.columns, queryId),\n constraint: this.transformNode(node.constraint, queryId),\n indexExpression: this.transformNode(node.indexExpression, queryId),\n indexWhere: this.transformNode(node.indexWhere, queryId),\n updates: this.transformNodeList(node.updates, queryId),\n updateWhere: this.transformNode(node.updateWhere, queryId),\n doNothing: node.doNothing,\n });\n }\n transformOnDuplicateKey(node, queryId) {\n return requireAllProps({\n kind: 'OnDuplicateKeyNode',\n updates: this.transformNodeList(node.updates, queryId),\n });\n }\n transformCreateIndex(node, queryId) {\n return requireAllProps({\n kind: 'CreateIndexNode',\n name: this.transformNode(node.name, queryId),\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n unique: node.unique,\n using: this.transformNode(node.using, queryId),\n ifNotExists: node.ifNotExists,\n where: this.transformNode(node.where, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n });\n }\n transformList(node, queryId) {\n return requireAllProps({\n kind: 'ListNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformDropIndex(node, queryId) {\n return requireAllProps({\n kind: 'DropIndexNode',\n name: this.transformNode(node.name, queryId),\n table: this.transformNode(node.table, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade,\n });\n }\n transformPrimaryKeyConstraint(node, queryId) {\n return requireAllProps({\n kind: 'PrimaryKeyConstraintNode',\n columns: this.transformNodeList(node.columns, queryId),\n name: this.transformNode(node.name, queryId),\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred,\n });\n }\n transformUniqueConstraint(node, queryId) {\n return requireAllProps({\n kind: 'UniqueConstraintNode',\n columns: this.transformNodeList(node.columns, queryId),\n name: this.transformNode(node.name, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred,\n });\n }\n transformForeignKeyConstraint(node, queryId) {\n return requireAllProps({\n kind: 'ForeignKeyConstraintNode',\n columns: this.transformNodeList(node.columns, queryId),\n references: this.transformNode(node.references, queryId),\n name: this.transformNode(node.name, queryId),\n onDelete: node.onDelete,\n onUpdate: node.onUpdate,\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred,\n });\n }\n transformSetOperation(node, queryId) {\n return requireAllProps({\n kind: 'SetOperationNode',\n operator: node.operator,\n expression: this.transformNode(node.expression, queryId),\n all: node.all,\n });\n }\n transformReferences(node, queryId) {\n return requireAllProps({\n kind: 'ReferencesNode',\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n onDelete: node.onDelete,\n onUpdate: node.onUpdate,\n });\n }\n transformCheckConstraint(node, queryId) {\n return requireAllProps({\n kind: 'CheckConstraintNode',\n expression: this.transformNode(node.expression, queryId),\n name: this.transformNode(node.name, queryId),\n });\n }\n transformWith(node, queryId) {\n return requireAllProps({\n kind: 'WithNode',\n expressions: this.transformNodeList(node.expressions, queryId),\n recursive: node.recursive,\n });\n }\n transformCommonTableExpression(node, queryId) {\n return requireAllProps({\n kind: 'CommonTableExpressionNode',\n name: this.transformNode(node.name, queryId),\n materialized: node.materialized,\n expression: this.transformNode(node.expression, queryId),\n });\n }\n transformCommonTableExpressionName(node, queryId) {\n return requireAllProps({\n kind: 'CommonTableExpressionNameNode',\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n });\n }\n transformHaving(node, queryId) {\n return requireAllProps({\n kind: 'HavingNode',\n having: this.transformNode(node.having, queryId),\n });\n }\n transformCreateSchema(node, queryId) {\n return requireAllProps({\n kind: 'CreateSchemaNode',\n schema: this.transformNode(node.schema, queryId),\n ifNotExists: node.ifNotExists,\n });\n }\n transformDropSchema(node, queryId) {\n return requireAllProps({\n kind: 'DropSchemaNode',\n schema: this.transformNode(node.schema, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade,\n });\n }\n transformAlterTable(node, queryId) {\n return requireAllProps({\n kind: 'AlterTableNode',\n table: this.transformNode(node.table, queryId),\n renameTo: this.transformNode(node.renameTo, queryId),\n setSchema: this.transformNode(node.setSchema, queryId),\n columnAlterations: this.transformNodeList(node.columnAlterations, queryId),\n addConstraint: this.transformNode(node.addConstraint, queryId),\n dropConstraint: this.transformNode(node.dropConstraint, queryId),\n renameConstraint: this.transformNode(node.renameConstraint, queryId),\n addIndex: this.transformNode(node.addIndex, queryId),\n dropIndex: this.transformNode(node.dropIndex, queryId),\n });\n }\n transformDropColumn(node, queryId) {\n return requireAllProps({\n kind: 'DropColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformRenameColumn(node, queryId) {\n return requireAllProps({\n kind: 'RenameColumnNode',\n column: this.transformNode(node.column, queryId),\n renameTo: this.transformNode(node.renameTo, queryId),\n });\n }\n transformAlterColumn(node, queryId) {\n return requireAllProps({\n kind: 'AlterColumnNode',\n column: this.transformNode(node.column, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n dataTypeExpression: this.transformNode(node.dataTypeExpression, queryId),\n setDefault: this.transformNode(node.setDefault, queryId),\n dropDefault: node.dropDefault,\n setNotNull: node.setNotNull,\n dropNotNull: node.dropNotNull,\n });\n }\n transformModifyColumn(node, queryId) {\n return requireAllProps({\n kind: 'ModifyColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformAddConstraint(node, queryId) {\n return requireAllProps({\n kind: 'AddConstraintNode',\n constraint: this.transformNode(node.constraint, queryId),\n });\n }\n transformDropConstraint(node, queryId) {\n return requireAllProps({\n kind: 'DropConstraintNode',\n constraintName: this.transformNode(node.constraintName, queryId),\n ifExists: node.ifExists,\n modifier: node.modifier,\n });\n }\n transformRenameConstraint(node, queryId) {\n return requireAllProps({\n kind: 'RenameConstraintNode',\n oldName: this.transformNode(node.oldName, queryId),\n newName: this.transformNode(node.newName, queryId),\n });\n }\n transformCreateView(node, queryId) {\n return requireAllProps({\n kind: 'CreateViewNode',\n name: this.transformNode(node.name, queryId),\n temporary: node.temporary,\n orReplace: node.orReplace,\n ifNotExists: node.ifNotExists,\n materialized: node.materialized,\n columns: this.transformNodeList(node.columns, queryId),\n as: this.transformNode(node.as, queryId),\n });\n }\n transformRefreshMaterializedView(node, queryId) {\n return requireAllProps({\n kind: 'RefreshMaterializedViewNode',\n name: this.transformNode(node.name, queryId),\n concurrently: node.concurrently,\n withNoData: node.withNoData,\n });\n }\n transformDropView(node, queryId) {\n return requireAllProps({\n kind: 'DropViewNode',\n name: this.transformNode(node.name, queryId),\n ifExists: node.ifExists,\n materialized: node.materialized,\n cascade: node.cascade,\n });\n }\n transformGenerated(node, queryId) {\n return requireAllProps({\n kind: 'GeneratedNode',\n byDefault: node.byDefault,\n always: node.always,\n identity: node.identity,\n stored: node.stored,\n expression: this.transformNode(node.expression, queryId),\n });\n }\n transformDefaultValue(node, queryId) {\n return requireAllProps({\n kind: 'DefaultValueNode',\n defaultValue: this.transformNode(node.defaultValue, queryId),\n });\n }\n transformOn(node, queryId) {\n return requireAllProps({\n kind: 'OnNode',\n on: this.transformNode(node.on, queryId),\n });\n }\n transformSelectModifier(node, queryId) {\n return requireAllProps({\n kind: 'SelectModifierNode',\n modifier: node.modifier,\n rawModifier: this.transformNode(node.rawModifier, queryId),\n of: this.transformNodeList(node.of, queryId),\n });\n }\n transformCreateType(node, queryId) {\n return requireAllProps({\n kind: 'CreateTypeNode',\n name: this.transformNode(node.name, queryId),\n enum: this.transformNode(node.enum, queryId),\n });\n }\n transformDropType(node, queryId) {\n return requireAllProps({\n kind: 'DropTypeNode',\n name: this.transformNode(node.name, queryId),\n ifExists: node.ifExists,\n });\n }\n transformExplain(node, queryId) {\n return requireAllProps({\n kind: 'ExplainNode',\n format: node.format,\n options: this.transformNode(node.options, queryId),\n });\n }\n transformSchemableIdentifier(node, queryId) {\n return requireAllProps({\n kind: 'SchemableIdentifierNode',\n schema: this.transformNode(node.schema, queryId),\n identifier: this.transformNode(node.identifier, queryId),\n });\n }\n transformAggregateFunction(node, queryId) {\n return requireAllProps({\n kind: 'AggregateFunctionNode',\n func: node.func,\n aggregated: this.transformNodeList(node.aggregated, queryId),\n distinct: node.distinct,\n orderBy: this.transformNode(node.orderBy, queryId),\n withinGroup: this.transformNode(node.withinGroup, queryId),\n filter: this.transformNode(node.filter, queryId),\n over: this.transformNode(node.over, queryId),\n });\n }\n transformOver(node, queryId) {\n return requireAllProps({\n kind: 'OverNode',\n orderBy: this.transformNode(node.orderBy, queryId),\n partitionBy: this.transformNode(node.partitionBy, queryId),\n });\n }\n transformPartitionBy(node, queryId) {\n return requireAllProps({\n kind: 'PartitionByNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformPartitionByItem(node, queryId) {\n return requireAllProps({\n kind: 'PartitionByItemNode',\n partitionBy: this.transformNode(node.partitionBy, queryId),\n });\n }\n transformBinaryOperation(node, queryId) {\n return requireAllProps({\n kind: 'BinaryOperationNode',\n leftOperand: this.transformNode(node.leftOperand, queryId),\n operator: this.transformNode(node.operator, queryId),\n rightOperand: this.transformNode(node.rightOperand, queryId),\n });\n }\n transformUnaryOperation(node, queryId) {\n return requireAllProps({\n kind: 'UnaryOperationNode',\n operator: this.transformNode(node.operator, queryId),\n operand: this.transformNode(node.operand, queryId),\n });\n }\n transformUsing(node, queryId) {\n return requireAllProps({\n kind: 'UsingNode',\n tables: this.transformNodeList(node.tables, queryId),\n });\n }\n transformFunction(node, queryId) {\n return requireAllProps({\n kind: 'FunctionNode',\n func: node.func,\n arguments: this.transformNodeList(node.arguments, queryId),\n });\n }\n transformCase(node, queryId) {\n return requireAllProps({\n kind: 'CaseNode',\n value: this.transformNode(node.value, queryId),\n when: this.transformNodeList(node.when, queryId),\n else: this.transformNode(node.else, queryId),\n isStatement: node.isStatement,\n });\n }\n transformWhen(node, queryId) {\n return requireAllProps({\n kind: 'WhenNode',\n condition: this.transformNode(node.condition, queryId),\n result: this.transformNode(node.result, queryId),\n });\n }\n transformJSONReference(node, queryId) {\n return requireAllProps({\n kind: 'JSONReferenceNode',\n reference: this.transformNode(node.reference, queryId),\n traversal: this.transformNode(node.traversal, queryId),\n });\n }\n transformJSONPath(node, queryId) {\n return requireAllProps({\n kind: 'JSONPathNode',\n inOperator: this.transformNode(node.inOperator, queryId),\n pathLegs: this.transformNodeList(node.pathLegs, queryId),\n });\n }\n transformJSONPathLeg(node, _queryId) {\n return requireAllProps({\n kind: 'JSONPathLegNode',\n type: node.type,\n value: node.value,\n });\n }\n transformJSONOperatorChain(node, queryId) {\n return requireAllProps({\n kind: 'JSONOperatorChainNode',\n operator: this.transformNode(node.operator, queryId),\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformTuple(node, queryId) {\n return requireAllProps({\n kind: 'TupleNode',\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformMergeQuery(node, queryId) {\n return requireAllProps({\n kind: 'MergeQueryNode',\n into: this.transformNode(node.into, queryId),\n using: this.transformNode(node.using, queryId),\n whens: this.transformNodeList(node.whens, queryId),\n with: this.transformNode(node.with, queryId),\n top: this.transformNode(node.top, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n output: this.transformNode(node.output, queryId),\n returning: this.transformNode(node.returning, queryId),\n });\n }\n transformMatched(node, _queryId) {\n return requireAllProps({\n kind: 'MatchedNode',\n not: node.not,\n bySource: node.bySource,\n });\n }\n transformAddIndex(node, queryId) {\n return requireAllProps({\n kind: 'AddIndexNode',\n name: this.transformNode(node.name, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n unique: node.unique,\n using: this.transformNode(node.using, queryId),\n ifNotExists: node.ifNotExists,\n });\n }\n transformCast(node, queryId) {\n return requireAllProps({\n kind: 'CastNode',\n expression: this.transformNode(node.expression, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n });\n }\n transformFetch(node, queryId) {\n return requireAllProps({\n kind: 'FetchNode',\n rowCount: this.transformNode(node.rowCount, queryId),\n modifier: node.modifier,\n });\n }\n transformTop(node, _queryId) {\n return requireAllProps({\n kind: 'TopNode',\n expression: node.expression,\n modifiers: node.modifiers,\n });\n }\n transformOutput(node, queryId) {\n return requireAllProps({\n kind: 'OutputNode',\n selections: this.transformNodeList(node.selections, queryId),\n });\n }\n transformDataType(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformSelectAll(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformIdentifier(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformValue(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformPrimitiveValueList(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformOperator(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformDefaultInsertValue(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformOrAction(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformCollate(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n}\n","/// <reference types=\"./with-schema-transformer.d.ts\" />\nimport { AliasNode } from '../../operation-node/alias-node.js';\nimport { IdentifierNode } from '../../operation-node/identifier-node.js';\nimport { ListNode } from '../../operation-node/list-node.js';\nimport { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';\nimport { SchemableIdentifierNode } from '../../operation-node/schemable-identifier-node.js';\nimport { TableNode } from '../../operation-node/table-node.js';\nimport { freeze } from '../../util/object-utils.js';\n// This object exist only so that we get a type error when a new RootOperationNode\n// is added. If you get a type error here, make sure to add the new root node and\n// handle it correctly in the transformer.\n//\n// DO NOT REFACTOR THIS EVEN IF IT SEEMS USELESS TO YOU!\nconst ROOT_OPERATION_NODES = freeze({\n AlterTableNode: true,\n CreateIndexNode: true,\n CreateSchemaNode: true,\n CreateTableNode: true,\n CreateTypeNode: true,\n CreateViewNode: true,\n RefreshMaterializedViewNode: true,\n DeleteQueryNode: true,\n DropIndexNode: true,\n DropSchemaNode: true,\n DropTableNode: true,\n DropTypeNode: true,\n DropViewNode: true,\n InsertQueryNode: true,\n RawNode: true,\n SelectQueryNode: true,\n UpdateQueryNode: true,\n MergeQueryNode: true,\n});\nconst SCHEMALESS_FUNCTIONS = {\n json_agg: true,\n to_json: true,\n};\nexport class WithSchemaTransformer extends OperationNodeTransformer {\n #schema;\n #schemableIds = new Set();\n #ctes = new Set();\n constructor(schema) {\n super();\n this.#schema = schema;\n }\n transformNodeImpl(node, queryId) {\n if (!this.#isRootOperationNode(node)) {\n return super.transformNodeImpl(node, queryId);\n }\n const ctes = this.#collectCTEs(node);\n for (const cte of ctes) {\n this.#ctes.add(cte);\n }\n const tables = this.#collectSchemableIds(node);\n for (const table of tables) {\n this.#schemableIds.add(table);\n }\n const transformed = super.transformNodeImpl(node, queryId);\n for (const table of tables) {\n this.#schemableIds.delete(table);\n }\n for (const cte of ctes) {\n this.#ctes.delete(cte);\n }\n return transformed;\n }\n transformSchemableIdentifier(node, queryId) {\n const transformed = super.transformSchemableIdentifier(node, queryId);\n if (transformed.schema || !this.#schemableIds.has(node.identifier.name)) {\n return transformed;\n }\n return {\n ...transformed,\n schema: IdentifierNode.create(this.#schema),\n };\n }\n transformReferences(node, queryId) {\n const transformed = super.transformReferences(node, queryId);\n if (transformed.table.table.schema) {\n return transformed;\n }\n return {\n ...transformed,\n table: TableNode.createWithSchema(this.#schema, transformed.table.table.identifier.name),\n };\n }\n transformAggregateFunction(node, queryId) {\n return {\n ...super.transformAggregateFunction({ ...node, aggregated: [] }, queryId),\n aggregated: this.#transformTableArgsWithoutSchemas(node, queryId, 'aggregated'),\n };\n }\n transformFunction(node, queryId) {\n return {\n ...super.transformFunction({ ...node, arguments: [] }, queryId),\n arguments: this.#transformTableArgsWithoutSchemas(node, queryId, 'arguments'),\n };\n }\n #transformTableArgsWithoutSchemas(node, queryId, argsKey) {\n return SCHEMALESS_FUNCTIONS[node.func]\n ? node[argsKey].map((arg) => !TableNode.is(arg) || arg.table.schema\n ? this.transformNode(arg, queryId)\n : {\n ...arg,\n table: this.transformIdentifier(arg.table.identifier, queryId),\n })\n : this.transformNodeList(node[argsKey], queryId);\n }\n #isRootOperationNode(node) {\n return node.kind in ROOT_OPERATION_NODES;\n }\n #collectSchemableIds(node) {\n const schemableIds = new Set();\n if ('name' in node && node.name && SchemableIdentifierNode.is(node.name)) {\n this.#collectSchemableId(node.name, schemableIds);\n }\n if ('from' in node && node.from) {\n for (const from of node.from.froms) {\n this.#collectSchemableIdsFromTableExpr(from, schemableIds);\n }\n }\n if ('into' in node && node.into) {\n this.#collectSchemableIdsFromTableExpr(node.into, schemableIds);\n }\n if ('table' in node && node.table) {\n this.#collectSchemableIdsFromTableExpr(node.table, schemableIds);\n }\n if ('joins' in node && node.joins) {\n for (const join of node.joins) {\n this.#collectSchemableIdsFromTableExpr(join.table, schemableIds);\n }\n }\n if ('using' in node && node.using) {\n this.#collectSchemableIdsFromTableExpr(node.using, schemableIds);\n }\n return schemableIds;\n }\n #collectCTEs(node) {\n const ctes = new Set();\n if ('with' in node && node.with) {\n this.#collectCTEIds(node.with, ctes);\n }\n return ctes;\n }\n #collectSchemableIdsFromTableExpr(node, schemableIds) {\n if (TableNode.is(node)) {\n this.#collectSchemableId(node.table, schemableIds);\n }\n else if (AliasNode.is(node) && TableNode.is(node.node)) {\n this.#collectSchemableId(node.node.table, schemableIds);\n }\n else if (ListNode.is(node)) {\n for (const table of node.items) {\n this.#collectSchemableIdsFromTableExpr(table, schemableIds);\n }\n }\n }\n #collectSchemableId(node, schemableIds) {\n const id = node.identifier.name;\n if (!this.#schemableIds.has(id) && !this.#ctes.has(id)) {\n schemableIds.add(id);\n }\n }\n #collectCTEIds(node, ctes) {\n for (const expr of node.expressions) {\n const cteId = expr.name.table.table.identifier.name;\n if (!this.#ctes.has(cteId)) {\n ctes.add(cteId);\n }\n }\n }\n}\n","/// <reference types=\"./with-schema-plugin.d.ts\" />\nimport { WithSchemaTransformer } from './with-schema-transformer.js';\nexport class WithSchemaPlugin {\n #transformer;\n constructor(schema) {\n this.#transformer = new WithSchemaTransformer(schema);\n }\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n async transformResult(args) {\n return args.result;\n }\n}\n","/// <reference types=\"./matched-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const MatchedNode = freeze({\n is(node) {\n return node.kind === 'MatchedNode';\n },\n create(not, bySource = false) {\n return freeze({\n kind: 'MatchedNode',\n not,\n bySource,\n });\n },\n});\n","/// <reference types=\"./merge-parser.d.ts\" />\nimport { MatchedNode } from '../operation-node/matched-node.js';\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { WhenNode } from '../operation-node/when-node.js';\nimport { isString } from '../util/object-utils.js';\nimport { parseFilterList, parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression, } from './binary-operation-parser.js';\nexport function parseMergeWhen(type, args, refRight) {\n return WhenNode.create(parseFilterList([\n MatchedNode.create(!type.isMatched, type.bySource),\n ...(args && args.length > 0\n ? [\n args.length === 3 && refRight\n ? parseReferentialBinaryOperation(args[0], args[1], args[2])\n : parseValueBinaryOperationOrExpression(args),\n ]\n : []),\n ], 'and', false));\n}\nexport function parseMergeThen(result) {\n if (isString(result)) {\n return RawNode.create([result], []);\n }\n if (isOperationNodeSource(result)) {\n return result.toOperationNode();\n }\n return result;\n}\n","/// <reference types=\"./deferred.d.ts\" />\nexport class Deferred {\n #promise;\n #resolve;\n #reject;\n constructor() {\n this.#promise = new Promise((resolve, reject) => {\n this.#reject = reject;\n this.#resolve = resolve;\n });\n }\n get promise() {\n return this.#promise;\n }\n resolve = (value) => {\n if (this.#resolve) {\n this.#resolve(value);\n }\n };\n reject = (reason) => {\n if (this.#reject) {\n this.#reject(reason);\n }\n };\n}\n","/// <reference types=\"./provide-controlled-connection.d.ts\" />\nimport { Deferred } from './deferred.js';\nimport { freeze } from './object-utils.js';\nexport async function provideControlledConnection(connectionProvider) {\n const connectionDefer = new Deferred();\n const connectionReleaseDefer = new Deferred();\n connectionProvider\n .provideConnection(async (connection) => {\n connectionDefer.resolve(connection);\n return await connectionReleaseDefer.promise;\n })\n .catch((ex) => connectionDefer.reject(ex));\n // Create composite of the connection and the release method instead of\n // modifying the connection or creating a new nesting `DatabaseConnection`.\n // This way we don't accidentally override any methods of 3rd party\n // connections and don't return wrapped connections to drivers that\n // expect a certain specific connection class.\n return freeze({\n connection: await connectionDefer.promise,\n release: connectionReleaseDefer.resolve,\n });\n}\n","/// <reference types=\"./query-executor-base.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { provideControlledConnection } from '../util/provide-controlled-connection.js';\nimport { logOnce } from '../util/log-once.js';\nconst NO_PLUGINS = freeze([]);\nexport class QueryExecutorBase {\n #plugins;\n constructor(plugins = NO_PLUGINS) {\n this.#plugins = plugins;\n }\n get plugins() {\n return this.#plugins;\n }\n transformQuery(node, queryId) {\n for (const plugin of this.#plugins) {\n const transformedNode = plugin.transformQuery({ node, queryId });\n // We need to do a runtime check here. There is no good way\n // to write types that enforce this constraint.\n if (transformedNode.kind === node.kind) {\n node = transformedNode;\n }\n else {\n throw new Error([\n `KyselyPlugin.transformQuery must return a node`,\n `of the same kind that was given to it.`,\n `The plugin was given a ${node.kind}`,\n `but it returned a ${transformedNode.kind}`,\n ].join(' '));\n }\n }\n return node;\n }\n async executeQuery(compiledQuery) {\n return await this.provideConnection(async (connection) => {\n const result = await connection.executeQuery(compiledQuery);\n if ('numUpdatedOrDeletedRows' in result) {\n logOnce('kysely:warning: outdated driver/plugin detected! `QueryResult.numUpdatedOrDeletedRows` has been replaced with `QueryResult.numAffectedRows`.');\n }\n return await this.#transformResult(result, compiledQuery.queryId);\n });\n }\n async *stream(compiledQuery, chunkSize) {\n const { connection, release } = await provideControlledConnection(this);\n try {\n for await (const result of connection.streamQuery(compiledQuery, chunkSize)) {\n yield await this.#transformResult(result, compiledQuery.queryId);\n }\n }\n finally {\n release();\n }\n }\n async #transformResult(result, queryId) {\n for (const plugin of this.#plugins) {\n result = await plugin.transformResult({ result, queryId });\n }\n return result;\n }\n}\n","/// <reference types=\"./noop-query-executor.d.ts\" />\nimport { QueryExecutorBase } from './query-executor-base.js';\n/**\n * A {@link QueryExecutor} subclass that can be used when you don't\n * have a {@link QueryCompiler}, {@link ConnectionProvider} or any\n * other needed things to actually execute queries.\n */\nexport class NoopQueryExecutor extends QueryExecutorBase {\n get adapter() {\n throw new Error('this query cannot be compiled to SQL');\n }\n compileQuery() {\n throw new Error('this query cannot be compiled to SQL');\n }\n provideConnection() {\n throw new Error('this query cannot be executed');\n }\n withConnectionProvider() {\n throw new Error('this query cannot have a connection provider');\n }\n withPlugin(plugin) {\n return new NoopQueryExecutor([...this.plugins, plugin]);\n }\n withPlugins(plugins) {\n return new NoopQueryExecutor([...this.plugins, ...plugins]);\n }\n withPluginAtFront(plugin) {\n return new NoopQueryExecutor([plugin, ...this.plugins]);\n }\n withoutPlugins() {\n return new NoopQueryExecutor([]);\n }\n}\nexport const NOOP_QUERY_EXECUTOR = new NoopQueryExecutor();\n","/// <reference types=\"./merge-result.d.ts\" />\nexport class MergeResult {\n numChangedRows;\n constructor(numChangedRows) {\n this.numChangedRows = numChangedRows;\n }\n}\n","/// <reference types=\"./merge-query-builder.d.ts\" />\nimport { InsertQueryNode } from '../operation-node/insert-query-node.js';\nimport { MergeQueryNode } from '../operation-node/merge-query-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { UpdateQueryNode } from '../operation-node/update-query-node.js';\nimport { parseInsertExpression, } from '../parser/insert-values-parser.js';\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseMergeThen, parseMergeWhen } from '../parser/merge-parser.js';\nimport { parseSelectAll, parseSelectArg, } from '../parser/select-parser.js';\nimport { parseTop } from '../parser/top-parser.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { freeze } from '../util/object-utils.js';\nimport { MergeResult } from './merge-result.js';\nimport { NoResultError, isNoResultErrorConstructor, } from './no-result-error.js';\nimport { UpdateQueryBuilder } from './update-query-builder.js';\nexport class MergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .mergeInto('person')\n * .using('pet', 'pet.owner_id', 'person.id')\n * .whenMatched()\n * .thenDelete()\n * .modifyEnd(sql.raw('-- this is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" using \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\" when matched then delete -- this is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Changes a `merge into` query to an `merge top into` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Affect 5 matched rows at most:\n *\n * ```ts\n * await db.mergeInto('person')\n * .top(5)\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * merge top(5) into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n *\n * Affect 50% of matched rows:\n *\n * ```ts\n * await db.mergeInto('person')\n * .top(50, 'percent')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * merge top(50) percent into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n top(expression, modifiers) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n using(...args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithUsing(this.#props.queryNode, parseJoin('Using', args)),\n });\n }\n returning(args) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n returningAll(table) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n}\nexport class WheneableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .mergeInto('person')\n * .using('pet', 'pet.owner_id', 'person.id')\n * .whenMatched()\n * .thenDelete()\n * .modifyEnd(sql.raw('-- this is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" using \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\" when matched then delete -- this is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * See {@link MergeQueryBuilder.top}.\n */\n top(expression, modifiers) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n /**\n * Adds a simple `when matched` clause to the query.\n *\n * For a `when matched` clause with an `and` condition, see {@link whenMatchedAnd}.\n *\n * For a simple `when not matched` clause, see {@link whenNotMatched}.\n *\n * For a `when not matched` clause with an `and` condition, see {@link whenNotMatchedAnd}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n whenMatched() {\n return this.#whenMatched([]);\n }\n whenMatchedAnd(...args) {\n return this.#whenMatched(args);\n }\n /**\n * Adds the `when matched` clause to the query with an `and` condition. But unlike\n * {@link whenMatchedAnd}, this method accepts a column reference as the 3rd argument.\n *\n * This method is similar to {@link SelectQueryBuilder.whereRef}, so see the documentation\n * for that method for more examples.\n */\n whenMatchedAndRef(lhs, op, rhs) {\n return this.#whenMatched([lhs, op, rhs], true);\n }\n #whenMatched(args, refRight) {\n return new MatchedThenableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithWhen(this.#props.queryNode, parseMergeWhen({ isMatched: true }, args, refRight)),\n });\n }\n /**\n * Adds a simple `when not matched` clause to the query.\n *\n * For a `when not matched` clause with an `and` condition, see {@link whenNotMatchedAnd}.\n *\n * For a simple `when matched` clause, see {@link whenMatched}.\n *\n * For a `when matched` clause with an `and` condition, see {@link whenMatchedAnd}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenNotMatched()\n * .thenInsertValues({\n * first_name: 'John',\n * last_name: 'Doe',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when not matched then\n * insert (\"first_name\", \"last_name\") values ($1, $2)\n * ```\n */\n whenNotMatched() {\n return this.#whenNotMatched([]);\n }\n whenNotMatchedAnd(...args) {\n return this.#whenNotMatched(args);\n }\n /**\n * Adds the `when not matched` clause to the query with an `and` condition. But unlike\n * {@link whenNotMatchedAnd}, this method accepts a column reference as the 3rd argument.\n *\n * Unlike {@link whenMatchedAndRef}, you cannot reference columns from the target table.\n *\n * This method is similar to {@link SelectQueryBuilder.whereRef}, so see the documentation\n * for that method for more examples.\n */\n whenNotMatchedAndRef(lhs, op, rhs) {\n return this.#whenNotMatched([lhs, op, rhs], true);\n }\n /**\n * Adds a simple `when not matched by source` clause to the query.\n *\n * Supported in MS SQL Server.\n *\n * Similar to {@link whenNotMatched}, but returns a {@link MatchedThenableMergeQueryBuilder}.\n */\n whenNotMatchedBySource() {\n return this.#whenNotMatched([], false, true);\n }\n whenNotMatchedBySourceAnd(...args) {\n return this.#whenNotMatched(args, false, true);\n }\n /**\n * Adds the `when not matched by source` clause to the query with an `and` condition.\n *\n * Similar to {@link whenNotMatchedAndRef}, but you can reference columns from\n * the target table, and not from source table and returns a {@link MatchedThenableMergeQueryBuilder}.\n */\n whenNotMatchedBySourceAndRef(lhs, op, rhs) {\n return this.#whenNotMatched([lhs, op, rhs], true, true);\n }\n returning(args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n returningAll(table) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n #whenNotMatched(args, refRight = false, bySource = false) {\n const props = {\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithWhen(this.#props.queryNode, parseMergeWhen({ isMatched: false, bySource }, args, refRight)),\n };\n const Builder = bySource\n ? MatchedThenableMergeQueryBuilder\n : NotMatchedThenableMergeQueryBuilder;\n return new Builder(props);\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.updateTable('person')\n * .set({ first_name: 'John' })\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {\n * return await db\n * .updateTable('person')\n * .set(updates)\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `updatePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [new MergeResult(result.numAffectedRows)];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n}\nexport class MatchedThenableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Performs the `delete` action.\n *\n * To perform the `do nothing` action, see {@link thenDoNothing}.\n *\n * To perform the `update` action, see {@link thenUpdate} or {@link thenUpdateSet}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n thenDelete() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen('delete')),\n });\n }\n /**\n * Performs the `do nothing` action.\n *\n * This is supported in PostgreSQL.\n *\n * To perform the `delete` action, see {@link thenDelete}.\n *\n * To perform the `update` action, see {@link thenUpdate} or {@link thenUpdateSet}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDoNothing()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * do nothing\n * ```\n */\n thenDoNothing() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen('do nothing')),\n });\n }\n /**\n * Perform an `update` operation with a full-fledged {@link UpdateQueryBuilder}.\n * This is handy when multiple `set` invocations are needed.\n *\n * For a shorthand version of this method, see {@link thenUpdateSet}.\n *\n * To perform the `delete` action, see {@link thenDelete}.\n *\n * To perform the `do nothing` action, see {@link thenDoNothing}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenUpdate((ub) => ub\n * .set(sql`metadata['has_pets']`, 'Y')\n * .set({\n * updated_at: new Date().toISOString(),\n * })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * update set metadata['has_pets'] = $1, \"updated_at\" = $2\n * ```\n */\n thenUpdate(set) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(set(new UpdateQueryBuilder({\n queryId: this.#props.queryId,\n executor: NOOP_QUERY_EXECUTOR,\n queryNode: UpdateQueryNode.createWithoutTable(),\n })))),\n });\n }\n thenUpdateSet(...args) {\n // @ts-ignore not sure how to type this so it won't complain about set(...args).\n return this.thenUpdate((ub) => ub.set(...args));\n }\n}\nexport class NotMatchedThenableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Performs the `do nothing` action.\n *\n * This is supported in PostgreSQL.\n *\n * To perform the `insert` action, see {@link thenInsertValues}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenNotMatched()\n * .thenDoNothing()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when not matched then\n * do nothing\n * ```\n */\n thenDoNothing() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen('do nothing')),\n });\n }\n thenInsertValues(insert) {\n const [columns, values] = parseInsertExpression(insert);\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(InsertQueryNode.cloneWith(InsertQueryNode.createWithoutInto(), {\n columns,\n values,\n }))),\n });\n }\n}\n","/// <reference types=\"./query-creator.d.ts\" />\nimport { createSelectQueryBuilder, } from './query-builder/select-query-builder.js';\nimport { InsertQueryBuilder } from './query-builder/insert-query-builder.js';\nimport { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';\nimport { UpdateQueryBuilder } from './query-builder/update-query-builder.js';\nimport { DeleteQueryNode } from './operation-node/delete-query-node.js';\nimport { InsertQueryNode } from './operation-node/insert-query-node.js';\nimport { SelectQueryNode } from './operation-node/select-query-node.js';\nimport { UpdateQueryNode } from './operation-node/update-query-node.js';\nimport { parseTable, parseTableExpressionOrList, parseAliasedTable, } from './parser/table-parser.js';\nimport { parseCommonTableExpression, } from './parser/with-parser.js';\nimport { WithNode } from './operation-node/with-node.js';\nimport { createQueryId } from './util/query-id.js';\nimport { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';\nimport { freeze } from './util/object-utils.js';\nimport { parseSelectArg, } from './parser/select-parser.js';\nimport { MergeQueryBuilder } from './query-builder/merge-query-builder.js';\nimport { MergeQueryNode } from './operation-node/merge-query-node.js';\nexport class QueryCreator {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Creates a `select` query builder for the given table or tables.\n *\n * The tables passed to this method are built as the query's `from` clause.\n *\n * ### Examples\n *\n * Create a select query for one table:\n *\n * ```ts\n * db.selectFrom('person').selectAll()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select * from \"person\"\n * ```\n *\n * Create a select query for one table with an alias:\n *\n * ```ts\n * const persons = await db.selectFrom('person as p')\n * .select(['p.id', 'first_name'])\n * .execute()\n *\n * console.log(persons[0].id)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"id\", \"first_name\" from \"person\" as \"p\"\n * ```\n *\n * Create a select query from a subquery:\n *\n * ```ts\n * const persons = await db.selectFrom(\n * (eb) => eb.selectFrom('person').select('person.id as identifier').as('p')\n * )\n * .select('p.identifier')\n * .execute()\n *\n * console.log(persons[0].identifier)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"identifier\",\n * from (\n * select \"person\".\"id\" as \"identifier\" from \"person\"\n * ) as p\n * ```\n *\n * Create a select query from raw sql:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const items = await db\n * .selectFrom(sql<{ one: number }>`(select 1 as one)`.as('q'))\n * .select('q.one')\n * .execute()\n *\n * console.log(items[0].one)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"q\".\"one\",\n * from (\n * select 1 as one\n * ) as q\n * ```\n *\n * When you use the `sql` tag you need to also provide the result type of the\n * raw snippet / query so that Kysely can figure out what columns are\n * available for the rest of the query.\n *\n * The `selectFrom` method also accepts an array for multiple tables. All\n * the above examples can also be used in an array.\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const items = await db.selectFrom([\n * 'person as p',\n * db.selectFrom('pet').select('pet.species').as('a'),\n * sql<{ one: number }>`(select 1 as one)`.as('q')\n * ])\n * .select(['p.id', 'a.species', 'q.one'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".id, \"a\".\"species\", \"q\".\"one\"\n * from\n * \"person\" as \"p\",\n * (select \"pet\".\"species\" from \"pet\") as a,\n * (select 1 as one) as \"q\"\n * ```\n */\n selectFrom(from) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(from), this.#props.withNode),\n });\n }\n selectNoFrom(selection) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: SelectQueryNode.cloneWithSelections(SelectQueryNode.create(this.#props.withNode), parseSelectArg(selection)),\n });\n }\n /**\n * Creates an insert query.\n *\n * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}\n * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of\n * the inserted row if the db returned one.\n *\n * See the {@link InsertQueryBuilder.values | values} method for more info and examples. Also see\n * the {@link ReturningInterface.returning | returning} method for a way to return columns\n * on supported databases like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .executeTakeFirst()\n *\n * console.log(result.insertId)\n * ```\n *\n * Some databases like PostgreSQL support the `returning` method:\n *\n * ```ts\n * const { id } = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n * ```\n */\n insertInto(table) {\n return new InsertQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode),\n });\n }\n /**\n * Creates a \"replace into\" query.\n *\n * This is only supported by some dialects like MySQL or SQLite.\n *\n * Similar to MySQL's {@link InsertQueryBuilder.onDuplicateKeyUpdate} that deletes\n * and inserts values on collision instead of updating existing rows.\n *\n * An alias of SQLite's {@link InsertQueryBuilder.orReplace}.\n *\n * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}\n * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of\n * the inserted row if the db returned one.\n *\n * See the {@link InsertQueryBuilder.values | values} method for more info and examples.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .replaceInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.insertId)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * replace into `person` (`first_name`, `last_name`) values (?, ?)\n * ```\n */\n replaceInto(table) {\n return new InsertQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode, true),\n });\n }\n /**\n * Creates a delete query.\n *\n * See the {@link DeleteQueryBuilder.where} method for examples on how to specify\n * a where clause for the delete operation.\n *\n * The return value of the query is an instance of {@link DeleteResult}.\n *\n * ### Examples\n *\n * <!-- siteExample(\"delete\", \"Single row\", 10) -->\n *\n * Delete a single row:\n *\n * ```ts\n * const result = await db\n * .deleteFrom('person')\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n *\n * console.log(result.numDeletedRows)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * delete from \"person\" where \"person\".\"id\" = $1\n * ```\n *\n * Some databases such as MySQL support deleting from multiple tables:\n *\n * ```ts\n * const result = await db\n * .deleteFrom(['person', 'pet'])\n * .using('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `person`, `pet`\n * using `person`\n * inner join `pet` on `pet`.`owner_id` = `person`.`id`\n * where `person`.`id` = ?\n * ```\n */\n deleteFrom(from) {\n return new DeleteQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: DeleteQueryNode.create(parseTableExpressionOrList(from), this.#props.withNode),\n });\n }\n /**\n * Creates an update query.\n *\n * See the {@link UpdateQueryBuilder.where} method for examples on how to specify\n * a where clause for the update operation.\n *\n * See the {@link UpdateQueryBuilder.set} method for examples on how to\n * specify the updates.\n *\n * The return value of the query is an {@link UpdateResult}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .updateTable('person')\n * .set({ first_name: 'Jennifer' })\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n *\n * console.log(result.numUpdatedRows)\n * ```\n */\n updateTable(tables) {\n return new UpdateQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: UpdateQueryNode.create(parseTableExpressionOrList(tables), this.#props.withNode),\n });\n }\n /**\n * Creates a merge query.\n *\n * The return value of the query is a {@link MergeResult}.\n *\n * See the {@link MergeQueryBuilder.using} method for examples on how to specify\n * the other table.\n *\n * ### Examples\n *\n * <!-- siteExample(\"merge\", \"Source row existence\", 10) -->\n *\n * Update a target column based on the existence of a source row:\n *\n * ```ts\n * const result = await db\n * .mergeInto('person as target')\n * .using('pet as source', 'source.owner_id', 'target.id')\n * .whenMatchedAnd('target.has_pets', '!=', 'Y')\n * .thenUpdateSet({ has_pets: 'Y' })\n * .whenNotMatchedBySourceAnd('target.has_pets', '=', 'Y')\n * .thenUpdateSet({ has_pets: 'N' })\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.numChangedRows)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\"\n * on \"pet\".\"owner_id\" = \"person\".\"id\"\n * when matched and \"has_pets\" != $1\n * then update set \"has_pets\" = $2\n * when not matched by source and \"has_pets\" = $3\n * then update set \"has_pets\" = $4\n * ```\n *\n * <!-- siteExample(\"merge\", \"Temporary changes table\", 20) -->\n *\n * Merge new entries from a temporary changes table:\n *\n * ```ts\n * const result = await db\n * .mergeInto('wine as target')\n * .using(\n * 'wine_stock_change as source',\n * 'source.wine_name',\n * 'target.name',\n * )\n * .whenNotMatchedAnd('source.stock_delta', '>', 0)\n * .thenInsertValues(({ ref }) => ({\n * name: ref('source.wine_name'),\n * stock: ref('source.stock_delta'),\n * }))\n * .whenMatchedAnd(\n * (eb) => eb('target.stock', '+', eb.ref('source.stock_delta')),\n * '>',\n * 0,\n * )\n * .thenUpdateSet('stock', (eb) =>\n * eb('target.stock', '+', eb.ref('source.stock_delta')),\n * )\n * .whenMatched()\n * .thenDelete()\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"wine\" as \"target\"\n * using \"wine_stock_change\" as \"source\"\n * on \"source\".\"wine_name\" = \"target\".\"name\"\n * when not matched and \"source\".\"stock_delta\" > $1\n * then insert (\"name\", \"stock\") values (\"source\".\"wine_name\", \"source\".\"stock_delta\")\n * when matched and \"target\".\"stock\" + \"source\".\"stock_delta\" > $2\n * then update set \"stock\" = \"target\".\"stock\" + \"source\".\"stock_delta\"\n * when matched\n * then delete\n * ```\n */\n mergeInto(targetTable) {\n return new MergeQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: MergeQueryNode.create(parseAliasedTable(targetTable), this.#props.withNode),\n });\n }\n /**\n * Creates a `with` query (Common Table Expression).\n *\n * ### Examples\n *\n * <!-- siteExample(\"cte\", \"Simple selects\", 10) -->\n *\n * Common table expressions (CTE) are a great way to modularize complex queries.\n * Essentially they allow you to run multiple separate queries within a\n * single roundtrip to the DB.\n *\n * Since CTEs are a part of the main query, query optimizers inside DB\n * engines are able to optimize the overall query. For example, postgres\n * is able to inline the CTEs inside the using queries if it decides it's\n * faster.\n *\n * ```ts\n * const result = await db\n * // Create a CTE called `jennifers` that selects all\n * // persons named 'Jennifer'.\n * .with('jennifers', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'age'])\n * )\n * // Select all rows from the `jennifers` CTE and\n * // further filter it.\n * .with('adult_jennifers', (db) => db\n * .selectFrom('jennifers')\n * .where('age', '>', 18)\n * .select(['id', 'age'])\n * )\n * // Finally select all adult jennifers that are\n * // also younger than 60.\n * .selectFrom('adult_jennifers')\n * .where('age', '<', 60)\n * .selectAll()\n * .execute()\n * ```\n *\n * <!-- siteExample(\"cte\", \"Inserts, updates and deletions\", 20) -->\n *\n * Some databases like postgres also allow you to run other queries than selects\n * in CTEs. On these databases CTEs are extremely powerful:\n *\n * ```ts\n * const result = await db\n * .with('new_person', (db) => db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * age: 35,\n * })\n * .returning('id')\n * )\n * .with('new_pet', (db) => db\n * .insertInto('pet')\n * .values({\n * name: 'Doggo',\n * species: 'dog',\n * is_favorite: true,\n * // Use the id of the person we just inserted.\n * owner_id: db\n * .selectFrom('new_person')\n * .select('id')\n * })\n * .returning('id')\n * )\n * .selectFrom(['new_person', 'new_pet'])\n * .select([\n * 'new_person.id as person_id',\n * 'new_pet.id as pet_id'\n * ])\n * .execute()\n * ```\n *\n * The CTE name can optionally specify column names in addition to\n * a name. In that case Kysely requires the expression to retun\n * rows with the same columns.\n *\n * ```ts\n * await db\n * .with('jennifers(id, age)', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * // This is ok since we return columns with the same\n * // names as specified by `jennifers(id, age)`.\n * .select(['id', 'age'])\n * )\n * .selectFrom('jennifers')\n * .selectAll()\n * .execute()\n * ```\n *\n * The first argument can also be a callback. The callback is passed\n * a `CTEBuilder` instance that can be used to configure the CTE:\n *\n * ```ts\n * await db\n * .with(\n * (cte) => cte('jennifers').materialized(),\n * (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'age'])\n * )\n * .selectFrom('jennifers')\n * .selectAll()\n * .execute()\n * ```\n */\n with(nameOrBuilder, expression) {\n const cte = parseCommonTableExpression(nameOrBuilder, expression);\n return new QueryCreator({\n ...this.#props,\n withNode: this.#props.withNode\n ? WithNode.cloneWithExpression(this.#props.withNode, cte)\n : WithNode.create(cte),\n });\n }\n /**\n * Creates a recursive `with` query (Common Table Expression).\n *\n * Note that recursiveness is a property of the whole `with` statement.\n * You cannot have recursive and non-recursive CTEs in a same `with` statement.\n * Therefore the recursiveness is determined by the **first** `with` or\n * `withRecusive` call you make.\n *\n * See the {@link with} method for examples and more documentation.\n */\n withRecursive(nameOrBuilder, expression) {\n const cte = parseCommonTableExpression(nameOrBuilder, expression);\n return new QueryCreator({\n ...this.#props,\n withNode: this.#props.withNode\n ? WithNode.cloneWithExpression(this.#props.withNode, cte)\n : WithNode.create(cte, { recursive: true }),\n });\n }\n /**\n * Returns a copy of this query creator instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n /**\n * Returns a copy of this query creator instance without any plugins.\n */\n withoutPlugins() {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n /**\n * Sets the schema to be used for all table references that don't explicitly\n * specify a schema.\n *\n * This only affects the query created through the builder returned from\n * this method and doesn't modify the `db` instance.\n *\n * See [this recipe](https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0007-schemas.md)\n * for a more detailed explanation.\n *\n * ### Examples\n *\n * ```\n * await db\n * .withSchema('mammals')\n * .selectFrom('pet')\n * .selectAll()\n * .innerJoin('public.person', 'public.person.id', 'pet.owner_id')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select * from \"mammals\".\"pet\"\n * inner join \"public\".\"person\"\n * on \"public\".\"person\".\"id\" = \"mammals\".\"pet\".\"owner_id\"\n * ```\n *\n * `withSchema` is smart enough to not add schema for aliases,\n * common table expressions or other places where the schema\n * doesn't belong to:\n *\n * ```\n * await db\n * .withSchema('mammals')\n * .selectFrom('pet as p')\n * .select('p.name')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"name\" from \"mammals\".\"pet\" as \"p\"\n * ```\n */\n withSchema(schema) {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n}\n","/// <reference types=\"./parse-utils.d.ts\" />\nimport { JoinNode } from '../operation-node/join-node.js';\nimport { OverNode } from '../operation-node/over-node.js';\nimport { SelectQueryNode } from '../operation-node/select-query-node.js';\nimport { JoinBuilder } from '../query-builder/join-builder.js';\nimport { OverBuilder } from '../query-builder/over-builder.js';\nimport { createSelectQueryBuilder as newSelectQueryBuilder, } from '../query-builder/select-query-builder.js';\nimport { QueryCreator } from '../query-creator.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { parseTableExpression, parseTableExpressionOrList, } from './table-parser.js';\nexport function createSelectQueryBuilder() {\n return newSelectQueryBuilder({\n queryId: createQueryId(),\n executor: NOOP_QUERY_EXECUTOR,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList([])),\n });\n}\nexport function createQueryCreator() {\n return new QueryCreator({\n executor: NOOP_QUERY_EXECUTOR,\n });\n}\nexport function createJoinBuilder(joinType, table) {\n return new JoinBuilder({\n joinNode: JoinNode.create(joinType, parseTableExpression(table)),\n });\n}\nexport function createOverBuilder() {\n return new OverBuilder({\n overNode: OverNode.create(),\n });\n}\n","/// <reference types=\"./join-parser.d.ts\" />\nimport { JoinNode } from '../operation-node/join-node.js';\nimport { parseReferentialBinaryOperation } from './binary-operation-parser.js';\nimport { createJoinBuilder } from './parse-utils.js';\nimport { parseTableExpression, } from './table-parser.js';\nexport function parseJoin(joinType, args) {\n if (args.length === 3) {\n return parseSingleOnJoin(joinType, args[0], args[1], args[2]);\n }\n else if (args.length === 2) {\n return parseCallbackJoin(joinType, args[0], args[1]);\n }\n else if (args.length === 1) {\n return parseOnlessJoin(joinType, args[0]);\n }\n else {\n throw new Error('not implemented');\n }\n}\nfunction parseCallbackJoin(joinType, from, callback) {\n return callback(createJoinBuilder(joinType, from)).toOperationNode();\n}\nfunction parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {\n return JoinNode.createWithOn(joinType, parseTableExpression(from), parseReferentialBinaryOperation(lhsColumn, '=', rhsColumn));\n}\nfunction parseOnlessJoin(joinType, from) {\n return JoinNode.create(joinType, parseTableExpression(from));\n}\n","/// <reference types=\"./offset-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OffsetNode = freeze({\n is(node) {\n return node.kind === 'OffsetNode';\n },\n create(offset) {\n return freeze({\n kind: 'OffsetNode',\n offset,\n });\n },\n});\n","/// <reference types=\"./group-by-item-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GroupByItemNode = freeze({\n is(node) {\n return node.kind === 'GroupByItemNode';\n },\n create(groupBy) {\n return freeze({\n kind: 'GroupByItemNode',\n groupBy,\n });\n },\n});\n","/// <reference types=\"./group-by-parser.d.ts\" />\nimport { GroupByItemNode } from '../operation-node/group-by-item-node.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nimport { isFunction } from '../util/object-utils.js';\nimport { parseReferenceExpressionOrList, } from './reference-parser.js';\nexport function parseGroupBy(groupBy) {\n groupBy = isFunction(groupBy) ? groupBy(expressionBuilder()) : groupBy;\n return parseReferenceExpressionOrList(groupBy).map(GroupByItemNode.create);\n}\n","/// <reference types=\"./set-operation-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const SetOperationNode = freeze({\n is(node) {\n return node.kind === 'SetOperationNode';\n },\n create(operator, expression, all) {\n return freeze({\n kind: 'SetOperationNode',\n operator,\n expression,\n all,\n });\n },\n});\n","/// <reference types=\"./set-operation-parser.d.ts\" />\nimport { createExpressionBuilder, } from '../expression/expression-builder.js';\nimport { SetOperationNode, } from '../operation-node/set-operation-node.js';\nimport { isFunction, isReadonlyArray } from '../util/object-utils.js';\nimport { parseExpression } from './expression-parser.js';\nexport function parseSetOperations(operator, expression, all) {\n if (isFunction(expression)) {\n expression = expression(createExpressionBuilder());\n }\n if (!isReadonlyArray(expression)) {\n expression = [expression];\n }\n return expression.map((expr) => SetOperationNode.create(operator, parseExpression(expr), all));\n}\n","/// <reference types=\"./expression-wrapper.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { AndNode } from '../operation-node/and-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { OrNode } from '../operation-node/or-node.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nexport class ExpressionWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n or(...args) {\n return new OrWrapper(OrNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n and(...args) {\n return new AndWrapper(AndNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `ExpressionWrapper` with a new output type.\n */\n $castTo() {\n return new ExpressionWrapper(this.#node);\n }\n /**\n * Omit null from the expression's type.\n *\n * This function can be useful in cases where you know an expression can't be\n * null, but Kysely is unable to infer it.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of `this` with a new output type.\n */\n $notNull() {\n return new ExpressionWrapper(this.#node);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nexport class AliasedExpressionWrapper {\n #expr;\n #alias;\n constructor(expr, alias) {\n this.#expr = expr;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#expr;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#expr.toOperationNode(), isOperationNodeSource(this.#alias)\n ? this.#alias.toOperationNode()\n : IdentifierNode.create(this.#alias));\n }\n}\nexport class OrWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n or(...args) {\n return new OrWrapper(OrNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `OrWrapper` with a new output type.\n */\n $castTo() {\n return new OrWrapper(this.#node);\n }\n toOperationNode() {\n return ParensNode.create(this.#node);\n }\n}\nexport class AndWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n and(...args) {\n return new AndWrapper(AndNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `AndWrapper` with a new output type.\n */\n $castTo() {\n return new AndWrapper(this.#node);\n }\n toOperationNode() {\n return ParensNode.create(this.#node);\n }\n}\n","/// <reference types=\"./fetch-node.d.ts\" />\nimport { ValueNode } from './value-node.js';\n/**\n * @internal\n */\nexport const FetchNode = {\n is(node) {\n return node.kind === 'FetchNode';\n },\n create(rowCount, modifier) {\n return {\n kind: 'FetchNode',\n rowCount: ValueNode.create(rowCount),\n modifier,\n };\n },\n};\n","/// <reference types=\"./fetch-parser.d.ts\" />\nimport { FetchNode } from '../operation-node/fetch-node.js';\nimport { isBigInt, isNumber } from '../util/object-utils.js';\nexport function parseFetch(rowCount, modifier) {\n if (!isNumber(rowCount) && !isBigInt(rowCount)) {\n throw new Error(`Invalid fetch row count: ${rowCount}`);\n }\n if (!isFetchModifier(modifier)) {\n throw new Error(`Invalid fetch modifier: ${modifier}`);\n }\n return FetchNode.create(rowCount, modifier);\n}\nfunction isFetchModifier(value) {\n return value === 'only' || value === 'with ties';\n}\n","/// <reference types=\"./select-query-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { SelectModifierNode } from '../operation-node/select-modifier-node.js';\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';\nimport { SelectQueryNode } from '../operation-node/select-query-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { LimitNode } from '../operation-node/limit-node.js';\nimport { OffsetNode } from '../operation-node/offset-node.js';\nimport { asArray, freeze } from '../util/object-utils.js';\nimport { parseGroupBy } from '../parser/group-by-parser.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { parseSetOperations, } from '../parser/set-operation-parser.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { ExpressionWrapper } from '../expression/expression-wrapper.js';\nimport { parseValueExpression, } from '../parser/value-parser.js';\nimport { parseFetch } from '../parser/fetch-parser.js';\nimport { parseTop } from '../parser/top-parser.js';\nclass SelectQueryBuilderImpl {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n get expressionType() {\n return undefined;\n }\n get isSelectQueryBuilder() {\n return true;\n }\n where(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n having(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n havingRef(lhs, op, rhs) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n select(selection) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n distinctOn(selection) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, parseReferenceExpressionOrList(selection)),\n });\n }\n modifyFront(modifier) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),\n });\n }\n modifyEnd(modifier) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),\n });\n }\n distinct() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.create('Distinct')),\n });\n }\n forUpdate(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForUpdate', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n forShare(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForShare', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n forKeyShare(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForKeyShare', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n forNoKeyUpdate(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForNoKeyUpdate', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n skipLocked() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('SkipLocked')),\n });\n }\n noWait() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('NoWait')),\n });\n }\n selectAll(table) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n innerJoin(...args) {\n return this.#join('InnerJoin', args);\n }\n leftJoin(...args) {\n return this.#join('LeftJoin', args);\n }\n rightJoin(...args) {\n return this.#join('RightJoin', args);\n }\n fullJoin(...args) {\n return this.#join('FullJoin', args);\n }\n crossJoin(...args) {\n return this.#join('CrossJoin', args);\n }\n innerJoinLateral(...args) {\n return this.#join('LateralInnerJoin', args);\n }\n leftJoinLateral(...args) {\n return this.#join('LateralLeftJoin', args);\n }\n crossJoinLateral(...args) {\n return this.#join('LateralCrossJoin', args);\n }\n crossApply(...args) {\n return this.#join('CrossApply', args);\n }\n outerApply(...args) {\n return this.#join('OuterApply', args);\n }\n #join(joinType, args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n orderBy(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n groupBy(groupBy) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(groupBy)),\n });\n }\n limit(limit) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n offset(offset) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(parseValueExpression(offset))),\n });\n }\n fetch(rowCount, modifier = 'only') {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFetch(this.#props.queryNode, parseFetch(rowCount, modifier)),\n });\n }\n top(expression, modifiers) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n union(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('union', expression, false)),\n });\n }\n unionAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('union', expression, true)),\n });\n }\n intersect(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('intersect', expression, false)),\n });\n }\n intersectAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('intersect', expression, true)),\n });\n }\n except(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('except', expression, false)),\n });\n }\n exceptAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('except', expression, true)),\n });\n }\n as(alias) {\n return new AliasedSelectQueryBuilderImpl(this, alias);\n }\n clearSelect() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutSelections(this.#props.queryNode),\n });\n }\n clearWhere() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n clearLimit() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutLimit(this.#props.queryNode),\n });\n }\n clearOffset() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutOffset(this.#props.queryNode),\n });\n }\n clearOrderBy() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n clearGroupBy() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutGroupBy(this.#props.queryNode),\n });\n }\n $call(func) {\n return func(this);\n }\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new SelectQueryBuilderImpl({\n ...this.#props,\n });\n }\n $castTo() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $narrowType() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $assertType() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $asTuple() {\n return new ExpressionWrapper(this.toOperationNode());\n }\n $asScalar() {\n return new ExpressionWrapper(this.toOperationNode());\n }\n withPlugin(plugin) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n return result.rows;\n }\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\nexport function createSelectQueryBuilder(props) {\n return new SelectQueryBuilderImpl(props);\n}\n/**\n * {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.\n */\nclass AliasedSelectQueryBuilderImpl {\n #queryBuilder;\n #alias;\n constructor(queryBuilder, alias) {\n this.#queryBuilder = queryBuilder;\n this.#alias = alias;\n }\n get expression() {\n return this.#queryBuilder;\n }\n get alias() {\n return this.#alias;\n }\n get isAliasedSelectQueryBuilder() {\n return true;\n }\n toOperationNode() {\n return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./aggregate-function-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhereNode } from './where-node.js';\nimport { OrderByNode } from './order-by-node.js';\n/**\n * @internal\n */\nexport const AggregateFunctionNode = freeze({\n is(node) {\n return node.kind === 'AggregateFunctionNode';\n },\n create(aggregateFunction, aggregated = []) {\n return freeze({\n kind: 'AggregateFunctionNode',\n func: aggregateFunction,\n aggregated,\n });\n },\n cloneWithDistinct(aggregateFunctionNode) {\n return freeze({\n ...aggregateFunctionNode,\n distinct: true,\n });\n },\n cloneWithOrderBy(aggregateFunctionNode, orderItems, withinGroup = false) {\n const prop = withinGroup ? 'withinGroup' : 'orderBy';\n return freeze({\n ...aggregateFunctionNode,\n [prop]: aggregateFunctionNode[prop]\n ? OrderByNode.cloneWithItems(aggregateFunctionNode[prop], orderItems)\n : OrderByNode.create(orderItems),\n });\n },\n cloneWithFilter(aggregateFunctionNode, filter) {\n return freeze({\n ...aggregateFunctionNode,\n filter: aggregateFunctionNode.filter\n ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'And', filter)\n : WhereNode.create(filter),\n });\n },\n cloneWithOrFilter(aggregateFunctionNode, filter) {\n return freeze({\n ...aggregateFunctionNode,\n filter: aggregateFunctionNode.filter\n ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'Or', filter)\n : WhereNode.create(filter),\n });\n },\n cloneWithOver(aggregateFunctionNode, over) {\n return freeze({\n ...aggregateFunctionNode,\n over,\n });\n },\n});\n","/// <reference types=\"./function-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const FunctionNode = freeze({\n is(node) {\n return node.kind === 'FunctionNode';\n },\n create(func, args) {\n return freeze({\n kind: 'FunctionNode',\n func,\n arguments: args,\n });\n },\n});\n","/// <reference types=\"./aggregate-function-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { createOverBuilder } from '../parser/parse-utils.js';\nimport { parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nexport class AggregateFunctionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n /**\n * Returns an aliased version of the function.\n *\n * In addition to slapping `as \"the_alias\"` to the end of the SQL,\n * this method also provides strict typing:\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.count<number>('id').as('person_count')\n * )\n * .executeTakeFirstOrThrow()\n *\n * // `person_count: number` field exists in the result type.\n * console.log(result.person_count)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select count(\"id\") as \"person_count\"\n * from \"person\"\n * ```\n */\n as(alias) {\n return new AliasedAggregateFunctionBuilder(this, alias);\n }\n /**\n * Adds a `distinct` clause inside the function.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select((eb) =>\n * eb.fn.count<number>('first_name').distinct().as('first_name_count')\n * )\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select count(distinct \"first_name\") as \"first_name_count\"\n * from \"person\"\n * ```\n */\n distinct() {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithDistinct(this.#props.aggregateFunctionNode),\n });\n }\n orderBy(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: QueryNode.cloneWithOrderByItems(this.#props.aggregateFunctionNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: QueryNode.cloneWithoutOrderBy(this.#props.aggregateFunctionNode),\n });\n }\n withinGroupOrderBy(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithOrderBy(this.#props.aggregateFunctionNode, parseOrderBy(args), true),\n });\n }\n filterWhere(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n /**\n * Adds a `filter` clause with a nested `where` clause after the function, where\n * both sides of the operator are references to columns.\n *\n * Similar to {@link WhereInterface}'s `whereRef` method.\n *\n * ### Examples\n *\n * Count people with same first and last names versus general public:\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select((eb) => [\n * eb.fn\n * .count<number>('id')\n * .filterWhereRef('first_name', '=', 'last_name')\n * .as('repeat_name_count'),\n * eb.fn.count<number>('id').as('total_count'),\n * ])\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select\n * count(\"id\") filter(where \"first_name\" = \"last_name\") as \"repeat_name_count\",\n * count(\"id\") as \"total_count\"\n * from \"person\"\n * ```\n */\n filterWhereRef(lhs, op, rhs) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n /**\n * Adds an `over` clause (window functions) after the function.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.avg<number>('age').over().as('average_age')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select avg(\"age\") over() as \"average_age\"\n * from \"person\"\n * ```\n *\n * Also supports passing a callback that returns an over builder,\n * allowing to add partition by and sort by clauses inside over.\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.avg<number>('age').over(\n * ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')\n * ).as('average_age')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select avg(\"age\") over(partition by \"last_name\" order by \"first_name\" asc) as \"average_age\"\n * from \"person\"\n * ```\n */\n over(over) {\n const builder = createOverBuilder();\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithOver(this.#props.aggregateFunctionNode, (over ? over(builder) : builder).toOperationNode()),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n /**\n * Casts the expression to the given type.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `AggregateFunctionBuilder` with a new output type.\n */\n $castTo() {\n return new AggregateFunctionBuilder(this.#props);\n }\n /**\n * Omit null from the expression's type.\n *\n * This function can be useful in cases where you know an expression can't be\n * null, but Kysely is unable to infer it.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of `this` with a new output type.\n */\n $notNull() {\n return new AggregateFunctionBuilder(this.#props);\n }\n toOperationNode() {\n return this.#props.aggregateFunctionNode;\n }\n}\n/**\n * {@link AggregateFunctionBuilder} with an alias. The result of calling {@link AggregateFunctionBuilder.as}.\n */\nexport class AliasedAggregateFunctionBuilder {\n #aggregateFunctionBuilder;\n #alias;\n constructor(aggregateFunctionBuilder, alias) {\n this.#aggregateFunctionBuilder = aggregateFunctionBuilder;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#aggregateFunctionBuilder;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#aggregateFunctionBuilder.toOperationNode(), IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./function-module.d.ts\" />\nimport { ExpressionWrapper } from '../expression/expression-wrapper.js';\nimport { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';\nimport { FunctionNode } from '../operation-node/function-node.js';\nimport { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';\nimport { parseSelectAll } from '../parser/select-parser.js';\nimport { AggregateFunctionBuilder } from './aggregate-function-builder.js';\nimport { isString } from '../util/object-utils.js';\nimport { parseTable } from '../parser/table-parser.js';\nexport function createFunctionModule() {\n const fn = (name, args) => {\n return new ExpressionWrapper(FunctionNode.create(name, parseReferenceExpressionOrList(args ?? [])));\n };\n const agg = (name, args) => {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create(name, args ? parseReferenceExpressionOrList(args) : undefined),\n });\n };\n return Object.assign(fn, {\n agg,\n avg(column) {\n return agg('avg', [column]);\n },\n coalesce(...values) {\n return fn('coalesce', values);\n },\n count(column) {\n return agg('count', [column]);\n },\n countAll(table) {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create('count', parseSelectAll(table)),\n });\n },\n max(column) {\n return agg('max', [column]);\n },\n min(column) {\n return agg('min', [column]);\n },\n sum(column) {\n return agg('sum', [column]);\n },\n any(column) {\n return fn('any', [column]);\n },\n jsonAgg(table) {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create('json_agg', [\n isString(table) ? parseTable(table) : table.toOperationNode(),\n ]),\n });\n },\n toJson(table) {\n return new ExpressionWrapper(FunctionNode.create('to_json', [\n isString(table) ? parseTable(table) : table.toOperationNode(),\n ]));\n },\n });\n}\n","/// <reference types=\"./unary-operation-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const UnaryOperationNode = freeze({\n is(node) {\n return node.kind === 'UnaryOperationNode';\n },\n create(operator, operand) {\n return freeze({\n kind: 'UnaryOperationNode',\n operator,\n operand,\n });\n },\n});\n","/// <reference types=\"./unary-operation-parser.d.ts\" />\nimport { OperatorNode } from '../operation-node/operator-node.js';\nimport { UnaryOperationNode } from '../operation-node/unary-operation-node.js';\nimport { parseReferenceExpression, } from './reference-parser.js';\nexport function parseExists(operand) {\n return parseUnaryOperation('exists', operand);\n}\nexport function parseNotExists(operand) {\n return parseUnaryOperation('not exists', operand);\n}\nexport function parseUnaryOperation(operator, operand) {\n return UnaryOperationNode.create(OperatorNode.create(operator), parseReferenceExpression(operand));\n}\n","/// <reference types=\"./case-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhenNode } from './when-node.js';\n/**\n * @internal\n */\nexport const CaseNode = freeze({\n is(node) {\n return node.kind === 'CaseNode';\n },\n create(value) {\n return freeze({\n kind: 'CaseNode',\n value,\n });\n },\n cloneWithWhen(caseNode, when) {\n return freeze({\n ...caseNode,\n when: freeze(caseNode.when ? [...caseNode.when, when] : [when]),\n });\n },\n cloneWithThen(caseNode, then) {\n return freeze({\n ...caseNode,\n when: caseNode.when\n ? freeze([\n ...caseNode.when.slice(0, -1),\n WhenNode.cloneWithResult(caseNode.when[caseNode.when.length - 1], then),\n ])\n : undefined,\n });\n },\n cloneWith(caseNode, props) {\n return freeze({\n ...caseNode,\n ...props,\n });\n },\n});\n","/// <reference types=\"./case-builder.d.ts\" />\nimport { ExpressionWrapper } from '../expression/expression-wrapper.js';\nimport { freeze } from '../util/object-utils.js';\nimport { CaseNode } from '../operation-node/case-node.js';\nimport { WhenNode } from '../operation-node/when-node.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { isSafeImmediateValue, parseSafeImmediateValue, parseValueExpression, } from '../parser/value-parser.js';\nexport class CaseBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n when(...args) {\n return new CaseThenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseValueBinaryOperationOrExpression(args))),\n });\n }\n}\nexport class CaseThenBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n then(valueExpression) {\n return new CaseWhenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithThen(this.#props.node, isSafeImmediateValue(valueExpression)\n ? parseSafeImmediateValue(valueExpression)\n : parseValueExpression(valueExpression)),\n });\n }\n}\nexport class CaseWhenBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n when(...args) {\n return new CaseThenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseValueBinaryOperationOrExpression(args))),\n });\n }\n else(valueExpression) {\n return new CaseEndBuilder({\n ...this.#props,\n node: CaseNode.cloneWith(this.#props.node, {\n else: isSafeImmediateValue(valueExpression)\n ? parseSafeImmediateValue(valueExpression)\n : parseValueExpression(valueExpression),\n }),\n });\n }\n end() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));\n }\n endCase() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));\n }\n}\nexport class CaseEndBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n end() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));\n }\n endCase() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));\n }\n}\n","/// <reference types=\"./json-path-leg-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONPathLegNode = freeze({\n is(node) {\n return node.kind === 'JSONPathLegNode';\n },\n create(type, value) {\n return freeze({\n kind: 'JSONPathLegNode',\n type,\n value,\n });\n },\n});\n","/// <reference types=\"./json-path-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';\nimport { JSONPathLegNode, } from '../operation-node/json-path-leg-node.js';\nimport { JSONPathNode } from '../operation-node/json-path-node.js';\nimport { JSONReferenceNode } from '../operation-node/json-reference-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nexport class JSONPathBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Access an element of a JSON array in a specific location.\n *\n * Since there's no guarantee an element exists in the given array location, the\n * resulting type is always nullable. If you're sure the element exists, you\n * should use {@link SelectQueryBuilder.$assertType} to narrow the type safely.\n *\n * See also {@link key} to access properties of JSON objects.\n *\n * ### Examples\n *\n * ```ts\n * await db.selectFrom('person')\n * .select(eb =>\n * eb.ref('nicknames', '->').at(0).as('primary_nickname')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"nicknames\"->0 as \"primary_nickname\" from \"person\"\n *```\n *\n * Combined with {@link key}:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('experience', '->').at(0).key('role').as('first_role')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"experience\"->0->'role' as \"first_role\" from \"person\"\n * ```\n *\n * You can use `'last'` to access the last element of the array in MySQL:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('nicknames', '->$').at('last').as('last_nickname')\n * )\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * select `nicknames`->'$[last]' as `last_nickname` from `person`\n * ```\n *\n * Or `'#-1'` in SQLite:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('nicknames', '->>$').at('#-1').as('last_nickname')\n * )\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * select \"nicknames\"->>'$[#-1]' as `last_nickname` from `person`\n * ```\n */\n at(index) {\n return this.#createBuilderWithPathLeg('ArrayLocation', index);\n }\n /**\n * Access a property of a JSON object.\n *\n * If a field is optional, the resulting type will be nullable.\n *\n * See also {@link at} to access elements of JSON arrays.\n *\n * ### Examples\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('address', '->').key('city').as('city')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"address\"->'city' as \"city\" from \"person\"\n * ```\n *\n * Going deeper:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('profile', '->$').key('website').key('url').as('website_url')\n * )\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * select `profile`->'$.website.url' as `website_url` from `person`\n * ```\n *\n * Combined with {@link at}:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('profile', '->').key('addresses').at(0).key('city').as('city')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"profile\"->'addresses'->0->'city' as \"city\" from \"person\"\n * ```\n */\n key(key) {\n return this.#createBuilderWithPathLeg('Member', key);\n }\n #createBuilderWithPathLeg(legType, value) {\n if (JSONReferenceNode.is(this.#node)) {\n return new TraversedJSONPathBuilder(JSONReferenceNode.cloneWithTraversal(this.#node, JSONPathNode.is(this.#node.traversal)\n ? JSONPathNode.cloneWithLeg(this.#node.traversal, JSONPathLegNode.create(legType, value))\n : JSONOperatorChainNode.cloneWithValue(this.#node.traversal, ValueNode.createImmediate(value))));\n }\n return new TraversedJSONPathBuilder(JSONPathNode.cloneWithLeg(this.#node, JSONPathLegNode.create(legType, value)));\n }\n}\nexport class TraversedJSONPathBuilder extends JSONPathBuilder {\n #node;\n constructor(node) {\n super(node);\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedJSONPathBuilder(this, alias);\n }\n /**\n * Change the output type of the json path.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `JSONPathBuilder` with a new output type.\n */\n $castTo() {\n return new TraversedJSONPathBuilder(this.#node);\n }\n $notNull() {\n return new TraversedJSONPathBuilder(this.#node);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nexport class AliasedJSONPathBuilder {\n #jsonPath;\n #alias;\n constructor(jsonPath, alias) {\n this.#jsonPath = jsonPath;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#jsonPath;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#jsonPath.toOperationNode(), isOperationNodeSource(this.#alias)\n ? this.#alias.toOperationNode()\n : IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./tuple-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const TupleNode = freeze({\n is(node) {\n return node.kind === 'TupleNode';\n },\n create(values) {\n return freeze({\n kind: 'TupleNode',\n values: freeze(values),\n });\n },\n});\n","/// <reference types=\"./data-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nconst SIMPLE_COLUMN_DATA_TYPES = [\n 'varchar',\n 'char',\n 'text',\n 'integer',\n 'int2',\n 'int4',\n 'int8',\n 'smallint',\n 'bigint',\n 'boolean',\n 'real',\n 'double precision',\n 'float4',\n 'float8',\n 'decimal',\n 'numeric',\n 'binary',\n 'bytea',\n 'date',\n 'datetime',\n 'time',\n 'timetz',\n 'timestamp',\n 'timestamptz',\n 'serial',\n 'bigserial',\n 'uuid',\n 'json',\n 'jsonb',\n 'blob',\n 'varbinary',\n 'int4range',\n 'int4multirange',\n 'int8range',\n 'int8multirange',\n 'numrange',\n 'nummultirange',\n 'tsrange',\n 'tsmultirange',\n 'tstzrange',\n 'tstzmultirange',\n 'daterange',\n 'datemultirange',\n];\nconst COLUMN_DATA_TYPE_REGEX = [\n /^varchar\\(\\d+\\)$/,\n /^char\\(\\d+\\)$/,\n /^decimal\\(\\d+, \\d+\\)$/,\n /^numeric\\(\\d+, \\d+\\)$/,\n /^binary\\(\\d+\\)$/,\n /^datetime\\(\\d+\\)$/,\n /^time\\(\\d+\\)$/,\n /^timetz\\(\\d+\\)$/,\n /^timestamp\\(\\d+\\)$/,\n /^timestamptz\\(\\d+\\)$/,\n /^varbinary\\(\\d+\\)$/,\n];\n/**\n * @internal\n */\nexport const DataTypeNode = freeze({\n is(node) {\n return node.kind === 'DataTypeNode';\n },\n create(dataType) {\n return freeze({\n kind: 'DataTypeNode',\n dataType,\n });\n },\n});\nexport function isColumnDataType(dataType) {\n if (SIMPLE_COLUMN_DATA_TYPES.includes(dataType)) {\n return true;\n }\n if (COLUMN_DATA_TYPE_REGEX.some((r) => r.test(dataType))) {\n return true;\n }\n return false;\n}\n","/// <reference types=\"./data-type-parser.d.ts\" />\nimport { DataTypeNode, isColumnDataType, } from '../operation-node/data-type-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nexport function parseDataTypeExpression(dataType) {\n if (isOperationNodeSource(dataType)) {\n return dataType.toOperationNode();\n }\n if (isColumnDataType(dataType)) {\n return DataTypeNode.create(dataType);\n }\n throw new Error(`invalid column data type ${JSON.stringify(dataType)}`);\n}\n","/// <reference types=\"./cast-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const CastNode = freeze({\n is(node) {\n return node.kind === 'CastNode';\n },\n create(expression, dataType) {\n return freeze({\n kind: 'CastNode',\n expression,\n dataType,\n });\n },\n});\n","/// <reference types=\"./expression-builder.d.ts\" />\nimport { createSelectQueryBuilder, } from '../query-builder/select-query-builder.js';\nimport { SelectQueryNode } from '../operation-node/select-query-node.js';\nimport { parseTableExpressionOrList, parseTable, } from '../parser/table-parser.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { createFunctionModule, } from '../query-builder/function-module.js';\nimport { parseJSONReference, parseReferenceExpression, parseStringReference, } from '../parser/reference-parser.js';\nimport { parseFilterList, parseFilterObject, parseValueBinaryOperation, parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { ExpressionWrapper } from './expression-wrapper.js';\nimport { OperatorNode, } from '../operation-node/operator-node.js';\nimport { parseUnaryOperation } from '../parser/unary-operation-parser.js';\nimport { parseSafeImmediateValue, parseValueExpression, } from '../parser/value-parser.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { CaseBuilder } from '../query-builder/case-builder.js';\nimport { CaseNode } from '../operation-node/case-node.js';\nimport { isReadonlyArray, isUndefined } from '../util/object-utils.js';\nimport { JSONPathBuilder } from '../query-builder/json-path-builder.js';\nimport { BinaryOperationNode } from '../operation-node/binary-operation-node.js';\nimport { AndNode } from '../operation-node/and-node.js';\nimport { TupleNode } from '../operation-node/tuple-node.js';\nimport { JSONPathNode } from '../operation-node/json-path-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { CastNode } from '../operation-node/cast-node.js';\nexport function createExpressionBuilder(executor = NOOP_QUERY_EXECUTOR) {\n function binary(lhs, op, rhs) {\n return new ExpressionWrapper(parseValueBinaryOperation(lhs, op, rhs));\n }\n function unary(op, expr) {\n return new ExpressionWrapper(parseUnaryOperation(op, expr));\n }\n const eb = Object.assign(binary, {\n fn: undefined,\n eb: undefined,\n selectFrom(table) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(table)),\n });\n },\n case(reference) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(reference)\n ? undefined\n : parseReferenceExpression(reference)),\n });\n },\n ref(reference, op) {\n if (isUndefined(op)) {\n return new ExpressionWrapper(parseStringReference(reference));\n }\n return new JSONPathBuilder(parseJSONReference(reference, op));\n },\n jsonPath() {\n return new JSONPathBuilder(JSONPathNode.create());\n },\n table(table) {\n return new ExpressionWrapper(parseTable(table));\n },\n val(value) {\n return new ExpressionWrapper(parseValueExpression(value));\n },\n refTuple(...values) {\n return new ExpressionWrapper(TupleNode.create(values.map(parseReferenceExpression)));\n },\n tuple(...values) {\n return new ExpressionWrapper(TupleNode.create(values.map(parseValueExpression)));\n },\n lit(value) {\n return new ExpressionWrapper(parseSafeImmediateValue(value));\n },\n unary,\n not(expr) {\n return unary('not', expr);\n },\n exists(expr) {\n return unary('exists', expr);\n },\n neg(expr) {\n return unary('-', expr);\n },\n between(expr, start, end) {\n return new ExpressionWrapper(BinaryOperationNode.create(parseReferenceExpression(expr), OperatorNode.create('between'), AndNode.create(parseValueExpression(start), parseValueExpression(end))));\n },\n betweenSymmetric(expr, start, end) {\n return new ExpressionWrapper(BinaryOperationNode.create(parseReferenceExpression(expr), OperatorNode.create('between symmetric'), AndNode.create(parseValueExpression(start), parseValueExpression(end))));\n },\n and(exprs) {\n if (isReadonlyArray(exprs)) {\n return new ExpressionWrapper(parseFilterList(exprs, 'and'));\n }\n return new ExpressionWrapper(parseFilterObject(exprs, 'and'));\n },\n or(exprs) {\n if (isReadonlyArray(exprs)) {\n return new ExpressionWrapper(parseFilterList(exprs, 'or'));\n }\n return new ExpressionWrapper(parseFilterObject(exprs, 'or'));\n },\n parens(...args) {\n const node = parseValueBinaryOperationOrExpression(args);\n if (ParensNode.is(node)) {\n // No double wrapping.\n return new ExpressionWrapper(node);\n }\n else {\n return new ExpressionWrapper(ParensNode.create(node));\n }\n },\n cast(expr, dataType) {\n return new ExpressionWrapper(CastNode.create(parseReferenceExpression(expr), parseDataTypeExpression(dataType)));\n },\n withSchema(schema) {\n return createExpressionBuilder(executor.withPluginAtFront(new WithSchemaPlugin(schema)));\n },\n });\n eb.fn = createFunctionModule();\n eb.eb = eb;\n return eb;\n}\nexport function expressionBuilder(_) {\n return createExpressionBuilder();\n}\n","/// <reference types=\"./expression-parser.d.ts\" />\nimport { isAliasedExpression, isExpression, } from '../expression/expression.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nimport { isFunction } from '../util/object-utils.js';\nexport function parseExpression(exp) {\n if (isOperationNodeSource(exp)) {\n return exp.toOperationNode();\n }\n else if (isFunction(exp)) {\n return exp(expressionBuilder()).toOperationNode();\n }\n throw new Error(`invalid expression: ${JSON.stringify(exp)}`);\n}\nexport function parseAliasedExpression(exp) {\n if (isOperationNodeSource(exp)) {\n return exp.toOperationNode();\n }\n else if (isFunction(exp)) {\n return exp(expressionBuilder()).toOperationNode();\n }\n throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);\n}\nexport function isExpressionOrFactory(obj) {\n return isExpression(obj) || isAliasedExpression(obj) || isFunction(obj);\n}\n","/// <reference types=\"./dynamic-table-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { isObject, isString } from '../util/object-utils.js';\nexport class DynamicTableBuilder {\n #table;\n get table() {\n return this.#table;\n }\n constructor(table) {\n this.#table = table;\n }\n as(alias) {\n return new AliasedDynamicTableBuilder(this.#table, alias);\n }\n}\nexport class AliasedDynamicTableBuilder {\n #table;\n #alias;\n get table() {\n return this.#table;\n }\n get alias() {\n return this.#alias;\n }\n constructor(table, alias) {\n this.#table = table;\n this.#alias = alias;\n }\n toOperationNode() {\n return AliasNode.create(parseTable(this.#table), IdentifierNode.create(this.#alias));\n }\n}\nexport function isAliasedDynamicTableBuilder(obj) {\n return (isObject(obj) &&\n isOperationNodeSource(obj) &&\n isString(obj.table) &&\n isString(obj.alias));\n}\n","/// <reference types=\"./table-parser.d.ts\" />\nimport { isReadonlyArray, isString } from '../util/object-utils.js';\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { TableNode } from '../operation-node/table-node.js';\nimport { parseAliasedExpression, } from './expression-parser.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isAliasedDynamicTableBuilder, } from '../dynamic/dynamic-table-builder.js';\nexport function parseTableExpressionOrList(table) {\n if (isReadonlyArray(table)) {\n return table.map((it) => parseTableExpression(it));\n }\n else {\n return [parseTableExpression(table)];\n }\n}\nexport function parseTableExpression(table) {\n if (isString(table)) {\n return parseAliasedTable(table);\n }\n else if (isAliasedDynamicTableBuilder(table)) {\n return table.toOperationNode();\n }\n else {\n return parseAliasedExpression(table);\n }\n}\nexport function parseAliasedTable(from) {\n const ALIAS_SEPARATOR = ' as ';\n if (from.includes(ALIAS_SEPARATOR)) {\n const [table, alias] = from.split(ALIAS_SEPARATOR).map(trim);\n return AliasNode.create(parseTable(table), IdentifierNode.create(alias));\n }\n else {\n return parseTable(from);\n }\n}\nexport function parseTable(from) {\n const SCHEMA_SEPARATOR = '.';\n if (from.includes(SCHEMA_SEPARATOR)) {\n const [schema, table] = from.split(SCHEMA_SEPARATOR).map(trim);\n return TableNode.createWithSchema(schema, table);\n }\n else {\n return TableNode.create(from);\n }\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./add-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AddColumnNode = freeze({\n is(node) {\n return node.kind === 'AddColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'AddColumnNode',\n column,\n });\n },\n});\n","/// <reference types=\"./column-definition-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const ColumnDefinitionNode = freeze({\n is(node) {\n return node.kind === 'ColumnDefinitionNode';\n },\n create(column, dataType) {\n return freeze({\n kind: 'ColumnDefinitionNode',\n column: ColumnNode.create(column),\n dataType,\n });\n },\n cloneWithFrontModifier(node, modifier) {\n return freeze({\n ...node,\n frontModifiers: node.frontModifiers\n ? freeze([...node.frontModifiers, modifier])\n : [modifier],\n });\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers\n ? freeze([...node.endModifiers, modifier])\n : [modifier],\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const DropColumnNode = freeze({\n is(node) {\n return node.kind === 'DropColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'DropColumnNode',\n column: ColumnNode.create(column),\n });\n },\n});\n","/// <reference types=\"./rename-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const RenameColumnNode = freeze({\n is(node) {\n return node.kind === 'RenameColumnNode';\n },\n create(column, newColumn) {\n return freeze({\n kind: 'RenameColumnNode',\n column: ColumnNode.create(column),\n renameTo: ColumnNode.create(newColumn),\n });\n },\n});\n","/// <reference types=\"./check-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CheckConstraintNode = freeze({\n is(node) {\n return node.kind === 'CheckConstraintNode';\n },\n create(expression, constraintName) {\n return freeze({\n kind: 'CheckConstraintNode',\n expression,\n name: constraintName ? IdentifierNode.create(constraintName) : undefined,\n });\n },\n});\n","/// <reference types=\"./references-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport const ON_MODIFY_FOREIGN_ACTIONS = [\n 'no action',\n 'restrict',\n 'cascade',\n 'set null',\n 'set default',\n];\n/**\n * @internal\n */\nexport const ReferencesNode = freeze({\n is(node) {\n return node.kind === 'ReferencesNode';\n },\n create(table, columns) {\n return freeze({\n kind: 'ReferencesNode',\n table,\n columns: freeze([...columns]),\n });\n },\n cloneWithOnDelete(references, onDelete) {\n return freeze({\n ...references,\n onDelete,\n });\n },\n cloneWithOnUpdate(references, onUpdate) {\n return freeze({\n ...references,\n onUpdate,\n });\n },\n});\n","/// <reference types=\"./default-value-parser.d.ts\" />\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nexport function parseDefaultValueExpression(value) {\n return isOperationNodeSource(value)\n ? value.toOperationNode()\n : ValueNode.createImmediate(value);\n}\n","/// <reference types=\"./generated-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GeneratedNode = freeze({\n is(node) {\n return node.kind === 'GeneratedNode';\n },\n create(params) {\n return freeze({\n kind: 'GeneratedNode',\n ...params,\n });\n },\n createWithExpression(expression) {\n return freeze({\n kind: 'GeneratedNode',\n always: true,\n expression,\n });\n },\n cloneWith(node, params) {\n return freeze({\n ...node,\n ...params,\n });\n },\n});\n","/// <reference types=\"./default-value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DefaultValueNode = freeze({\n is(node) {\n return node.kind === 'DefaultValueNode';\n },\n create(defaultValue) {\n return freeze({\n kind: 'DefaultValueNode',\n defaultValue,\n });\n },\n});\n","/// <reference types=\"./on-modify-action-parser.d.ts\" />\nimport { ON_MODIFY_FOREIGN_ACTIONS, } from '../operation-node/references-node.js';\nexport function parseOnModifyForeignAction(action) {\n if (ON_MODIFY_FOREIGN_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnModifyForeignAction ${action}`);\n}\n","/// <reference types=\"./column-definition-builder.d.ts\" />\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { ReferencesNode, } from '../operation-node/references-node.js';\nimport { SelectAllNode } from '../operation-node/select-all-node.js';\nimport { parseStringReference } from '../parser/reference-parser.js';\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { parseDefaultValueExpression, } from '../parser/default-value-parser.js';\nimport { GeneratedNode } from '../operation-node/generated-node.js';\nimport { DefaultValueNode } from '../operation-node/default-value-node.js';\nimport { parseOnModifyForeignAction } from '../parser/on-modify-action-parser.js';\nexport class ColumnDefinitionBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `auto_increment` or `autoincrement` to the column definition\n * depending on the dialect.\n *\n * Some dialects like PostgreSQL don't support this. On PostgreSQL\n * you can use the `serial` or `bigserial` data type instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.autoIncrement().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key auto_increment\n * )\n * ```\n */\n autoIncrement() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));\n }\n /**\n * Makes the column an identity column.\n *\n * This only works on some dialects like MS SQL Server (MSSQL).\n *\n * For PostgreSQL's `generated always as identity` use {@link generatedAlwaysAsIdentity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.identity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MSSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer identity primary key\n * )\n * ```\n */\n identity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { identity: true }));\n }\n /**\n * Makes the column the primary key.\n *\n * If you want to specify a composite primary key use the\n * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key\n * )\n */\n primaryKey() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));\n }\n /**\n * Adds a foreign key constraint for the column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer', (col) => col.references('person.id'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\")\n * )\n * ```\n */\n references(ref) {\n const references = parseStringReference(ref);\n if (!references.table || SelectAllNode.is(references.column)) {\n throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.create(references.table, [\n references.column,\n ]),\n }));\n }\n /**\n * Adds an `on delete` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on delete cascade\n * )\n * ```\n */\n onDelete(onDelete) {\n if (!this.#node.references) {\n throw new Error('on delete constraint can only be added for foreign keys');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnDelete(this.#node.references, parseOnModifyForeignAction(onDelete)),\n }));\n }\n /**\n * Adds an `on update` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onUpdate('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on update cascade\n * )\n * ```\n */\n onUpdate(onUpdate) {\n if (!this.#node.references) {\n throw new Error('on update constraint can only be added for foreign keys');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnUpdate(this.#node.references, parseOnModifyForeignAction(onUpdate)),\n }));\n }\n /**\n * Adds a unique constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `email` varchar(255) unique\n * )\n * ```\n */\n unique() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));\n }\n /**\n * Adds a `not null` constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(255)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `first_name` varchar(255) not null\n * )\n * ```\n */\n notNull() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));\n }\n /**\n * Adds a `unsigned` modifier for the column.\n *\n * This only works on some dialects like MySQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('age', 'integer', col => col.unsigned())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `age` integer unsigned\n * )\n * ```\n */\n unsigned() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));\n }\n /**\n * Adds a default value constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer default 4\n * )\n * ```\n *\n * Values passed to `defaultTo` are interpreted as value literals by default. You can define\n * an arbitrary SQL expression using the {@link sql} template tag:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'created_at',\n * 'timestamp',\n * (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `created_at` timestamp default CURRENT_TIMESTAMP\n * )\n * ```\n */\n defaultTo(value) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),\n }));\n }\n /**\n * Adds a check constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) =>\n * col.check(sql`number_of_legs < 5`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer check (number_of_legs < 5)\n * )\n * ```\n */\n check(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n check: CheckConstraintNode.create(expression.toOperationNode()),\n }));\n }\n /**\n * Makes the column a generated column using a `generated always as` statement.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)',\n * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name))\n * )\n * ```\n */\n generatedAlwaysAs(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.createWithExpression(expression.toOperationNode()),\n }));\n }\n /**\n * Adds the `generated always as identity` specifier.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedAlwaysAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated always as identity primary key\n * )\n * ```\n */\n generatedAlwaysAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, always: true }),\n }));\n }\n /**\n * Adds the `generated by default as identity` specifier on supported dialects.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedByDefaultAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated by default as identity primary key\n * )\n * ```\n */\n generatedByDefaultAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, byDefault: true }),\n }));\n }\n /**\n * Makes a generated column stored instead of virtual. This method can only\n * be used with {@link generatedAlwaysAs}\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)', (col) => col\n * .generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * .stored()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name)) stored\n * )\n * ```\n */\n stored() {\n if (!this.#node.generated) {\n throw new Error('stored() can only be called after generatedAlwaysAs');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.cloneWith(this.#node.generated, {\n stored: true,\n }),\n }));\n }\n /**\n * This can be used to add any additional SQL right after the column's data type.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'first_name',\n * 'varchar(36)',\n * (col) => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(36) collate utf8mb4_general_ci not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Adds `nulls not distinct` specifier.\n * Should be used with `unique` constraint.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(30) unique nulls not distinct\n * )\n * ```\n */\n nullsNotDistinct() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n /**\n * Adds `if not exists` specifier. This only works for PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique().ifNotExists())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * alter table \"person\" add column if not exists \"email\" varchar(255) unique\n * ```\n */\n ifNotExists() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { ifNotExists: true }));\n }\n /**\n * This can be used to add any additional SQL to the end of the column definition.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'age',\n * 'integer',\n * col => col.unsigned()\n * .notNull()\n * .modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'\n * )\n * ```\n */\n modifyEnd(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./modify-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ModifyColumnNode = freeze({\n is(node) {\n return node.kind === 'ModifyColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'ModifyColumnNode',\n column,\n });\n },\n});\n","/// <reference types=\"./foreign-key-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\nimport { ReferencesNode } from './references-node.js';\n/**\n * @internal\n */\nexport const ForeignKeyConstraintNode = freeze({\n is(node) {\n return node.kind === 'ForeignKeyConstraintNode';\n },\n create(sourceColumns, targetTable, targetColumns, constraintName) {\n return freeze({\n kind: 'ForeignKeyConstraintNode',\n columns: sourceColumns,\n references: ReferencesNode.create(targetTable, targetColumns),\n name: constraintName ? IdentifierNode.create(constraintName) : undefined,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./foreign-key-constraint-builder.d.ts\" />\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { parseOnModifyForeignAction } from '../parser/on-modify-action-parser.js';\nexport class ForeignKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n onDelete(onDelete) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onDelete: parseOnModifyForeignAction(onDelete),\n }));\n }\n onUpdate(onUpdate) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onUpdate: parseOnModifyForeignAction(onUpdate),\n }));\n }\n deferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./add-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AddConstraintNode = freeze({\n is(node) {\n return node.kind === 'AddConstraintNode';\n },\n create(constraint) {\n return freeze({\n kind: 'AddConstraintNode',\n constraint,\n });\n },\n});\n","/// <reference types=\"./unique-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const UniqueConstraintNode = freeze({\n is(node) {\n return node.kind === 'UniqueConstraintNode';\n },\n create(columns, constraintName, nullsNotDistinct) {\n return freeze({\n kind: 'UniqueConstraintNode',\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName ? IdentifierNode.create(constraintName) : undefined,\n nullsNotDistinct,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const DropConstraintNode = freeze({\n is(node) {\n return node.kind === 'DropConstraintNode';\n },\n create(constraintName) {\n return freeze({\n kind: 'DropConstraintNode',\n constraintName: IdentifierNode.create(constraintName),\n });\n },\n cloneWith(dropConstraint, props) {\n return freeze({\n ...dropConstraint,\n ...props,\n });\n },\n});\n","/// <reference types=\"./alter-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const AlterColumnNode = freeze({\n is(node) {\n return node.kind === 'AlterColumnNode';\n },\n create(column, prop, value) {\n return freeze({\n kind: 'AlterColumnNode',\n column: ColumnNode.create(column),\n [prop]: value,\n });\n },\n});\n","/// <reference types=\"./alter-column-builder.d.ts\" />\nimport { AlterColumnNode } from '../operation-node/alter-column-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { parseDefaultValueExpression, } from '../parser/default-value-parser.js';\nexport class AlterColumnBuilder {\n #column;\n constructor(column) {\n this.#column = column;\n }\n setDataType(dataType) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dataType', parseDataTypeExpression(dataType)));\n }\n setDefault(value) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setDefault', parseDefaultValueExpression(value)));\n }\n dropDefault() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropDefault', true));\n }\n setNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setNotNull', true));\n }\n dropNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropNotNull', true));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\n/**\n * Allows us to force consumers to do exactly one alteration to a column.\n *\n * One cannot do no alterations:\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.\n * ```\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.\n * // .execute()\n * ```\n *\n * One cannot do multiple alterations:\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.\n * // .execute()\n * ```\n *\n * Which would now throw a compilation error, instead of a runtime error.\n */\nexport class AlteredColumnBuilder {\n #alterColumnNode;\n constructor(alterColumnNode) {\n this.#alterColumnNode = alterColumnNode;\n }\n toOperationNode() {\n return this.#alterColumnNode;\n }\n}\n","/// <reference types=\"./alter-table-executor.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableExecutor {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./alter-table-add-foreign-key-constraint-builder.d.ts\" />\nimport { AddConstraintNode } from '../operation-node/add-constraint-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableAddForeignKeyConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n onDelete(onDelete) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete),\n });\n }\n onUpdate(onUpdate) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),\n });\n }\n deferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.deferrable(),\n });\n }\n notDeferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.notDeferrable(),\n });\n }\n initiallyDeferred() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyDeferred(),\n });\n }\n initiallyImmediate() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyImmediate(),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),\n }), this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./alter-table-drop-constraint-builder.d.ts\" />\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { DropConstraintNode } from '../operation-node/drop-constraint-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableDropConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n ifExists: true,\n }),\n }),\n });\n }\n cascade() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: 'cascade',\n }),\n }),\n });\n }\n restrict() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: 'restrict',\n }),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./primary-key-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const PrimaryKeyConstraintNode = freeze({\n is(node) {\n return node.kind === 'PrimaryKeyConstraintNode';\n },\n create(columns, constraintName) {\n return freeze({\n kind: 'PrimaryKeyConstraintNode',\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName ? IdentifierNode.create(constraintName) : undefined,\n });\n },\n cloneWith(node, props) {\n return freeze({ ...node, ...props });\n },\n});\n/**\n * Backwards compatibility for a typo in the codebase.\n *\n * @deprecated Use {@link PrimaryKeyConstraintNode} instead.\n */\nexport const PrimaryConstraintNode = PrimaryKeyConstraintNode;\n","/// <reference types=\"./add-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const AddIndexNode = freeze({\n is(node) {\n return node.kind === 'AddIndexNode';\n },\n create(name) {\n return freeze({\n kind: 'AddIndexNode',\n name: IdentifierNode.create(name),\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...(node.columns || []), ...columns],\n });\n },\n});\n","/// <reference types=\"./alter-table-add-index-builder.d.ts\" />\nimport { AddIndexNode } from '../operation-node/add-index-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseOrderedColumnName, } from '../parser/reference-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableAddIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the index unique.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .unique()\n * .column('email')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_first_name_index` (`email`)\n * ```\n */\n unique() {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n unique: true,\n }),\n }),\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n column(column) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n parseOrderedColumnName(column),\n ]),\n }),\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n columns(columns) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(parseOrderedColumnName)),\n }),\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .expression(sql<boolean>`(first_name < 'Sami')`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))\n * ```\n */\n expression(expression) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n expression.toOperationNode(),\n ]),\n }),\n });\n }\n using(indexType) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n using: RawNode.createWithSql(indexType),\n }),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./unique-constraint-builder.d.ts\" />\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nexport class UniqueConstraintNodeBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `nulls not distinct` to the unique constraint definition\n *\n * Supported by PostgreSQL dialect only\n */\n nullsNotDistinct() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n deferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./primary-key-constraint-builder.d.ts\" />\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nexport class PrimaryKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n deferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./check-constraint-builder.d.ts\" />\nexport class CheckConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./rename-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const RenameConstraintNode = freeze({\n is(node) {\n return node.kind === 'RenameConstraintNode';\n },\n create(oldName, newName) {\n return freeze({\n kind: 'RenameConstraintNode',\n oldName: IdentifierNode.create(oldName),\n newName: IdentifierNode.create(newName),\n });\n },\n});\n","/// <reference types=\"./alter-table-builder.d.ts\" />\nimport { AddColumnNode } from '../operation-node/add-column-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { DropColumnNode } from '../operation-node/drop-column-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { RenameColumnNode } from '../operation-node/rename-column-node.js';\nimport { freeze, noop } from '../util/object-utils.js';\nimport { ColumnDefinitionBuilder, } from './column-definition-builder.js';\nimport { ModifyColumnNode } from '../operation-node/modify-column-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';\nimport { AddConstraintNode } from '../operation-node/add-constraint-node.js';\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { DropConstraintNode } from '../operation-node/drop-constraint-node.js';\nimport { AlterColumnBuilder, } from './alter-column-builder.js';\nimport { AlterTableExecutor } from './alter-table-executor.js';\nimport { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';\nimport { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { AddIndexNode } from '../operation-node/add-index-node.js';\nimport { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';\nimport { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';\nimport { PrimaryKeyConstraintBuilder, } from './primary-key-constraint-builder.js';\nimport { CheckConstraintBuilder, } from './check-constraint-builder.js';\nimport { RenameConstraintNode } from '../operation-node/rename-constraint-node.js';\n/**\n * This builder can be used to create a `alter table` query.\n */\nexport class AlterTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n renameTo(newTableName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameTo: parseTable(newTableName),\n }),\n });\n }\n setSchema(newSchema) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n setSchema: IdentifierNode.create(newSchema),\n }),\n });\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column)),\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn)),\n });\n }\n addColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode())),\n });\n }\n modifyColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode())),\n });\n }\n /**\n * See {@link CreateTableBuilder.addUniqueConstraint}\n */\n addUniqueConstraint(constraintName, columns, build = noop) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),\n }),\n });\n }\n /**\n * See {@link CreateTableBuilder.addCheckConstraint}\n */\n addCheckConstraint(constraintName, checkExpression, build = noop) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode()),\n }),\n });\n }\n /**\n * See {@link CreateTableBuilder.addForeignKeyConstraint}\n *\n * Unlike {@link CreateTableBuilder.addForeignKeyConstraint} this method returns\n * the constraint builder and doesn't take a callback as the last argument. This\n * is because you can only add one column per `ALTER TABLE` query.\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {\n const constraintBuilder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder,\n });\n }\n /**\n * See {@link CreateTableBuilder.addPrimaryKeyConstraint}\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode()),\n }),\n });\n }\n dropConstraint(constraintName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.create(constraintName),\n }),\n });\n }\n renameConstraint(oldName, newName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameConstraint: RenameConstraintNode.create(oldName, newName),\n }),\n });\n }\n /**\n * This can be used to add index to table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .addIndex('person_email_index')\n * .column('email')\n * .unique()\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_email_index` (`email`)\n * ```\n */\n addIndex(indexName) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.create(indexName),\n }),\n });\n }\n /**\n * This can be used to drop index from table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .dropIndex('person_email_index')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` drop index `test_first_name_index`\n * ```\n */\n dropIndex(indexName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropIndex: DropIndexNode.create(indexName),\n }),\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * See {@link CreateTableBuilder.$call}\n */\n $call(func) {\n return func(this);\n }\n}\nexport class AlterTableColumnAlteringBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column)),\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn)),\n });\n }\n addColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode())),\n });\n }\n modifyColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode())),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./immediate-value-transformer.d.ts\" />\nimport { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';\nimport { ValueListNode } from '../../operation-node/value-list-node.js';\nimport { ValueNode } from '../../operation-node/value-node.js';\n/**\n * Transforms all ValueNodes to immediate.\n *\n * WARNING! This should never be part of the public API. Users should never use this.\n * This is an internal helper.\n *\n * @internal\n */\nexport class ImmediateValueTransformer extends OperationNodeTransformer {\n transformPrimitiveValueList(node) {\n return ValueListNode.create(node.values.map(ValueNode.createImmediate));\n }\n transformValue(node) {\n return ValueNode.createImmediate(node.value);\n }\n}\n","/// <reference types=\"./create-index-builder.d.ts\" />\nimport { CreateIndexNode, } from '../operation-node/create-index-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseOrderedColumnName, } from '../parser/reference-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { ImmediateValueTransformer } from '../plugin/immediate-value/immediate-value-transformer.js';\nexport class CreateIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the index already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n /**\n * Makes the index unique.\n */\n unique() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n unique: true,\n }),\n });\n }\n /**\n * Adds `nulls not distinct` specifier to index.\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createIndex('person_first_name_index')\n * .on('person')\n * .column('first_name')\n * .nullsNotDistinct()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\"\n * on \"test\" (\"first_name\")\n * nulls not distinct;\n * ```\n */\n nullsNotDistinct() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n nullsNotDistinct: true,\n }),\n });\n }\n /**\n * Specifies the table for the index.\n */\n on(table) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table),\n }),\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n column(column) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n parseOrderedColumnName(column),\n ]),\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n columns(columns) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, columns.map(parseOrderedColumnName)),\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createIndex('person_first_name_index')\n * .on('person')\n * .expression(sql`first_name COLLATE \"fi_FI\"`)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\" on \"person\" (first_name COLLATE \"fi_FI\")\n * ```\n */\n expression(expression) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n expression.toOperationNode(),\n ]),\n });\n }\n using(indexType) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n using: RawNode.createWithSql(indexType),\n }),\n });\n }\n where(...args) {\n const transformer = new ImmediateValueTransformer();\n return new CreateIndexBuilder({\n ...this.#props,\n node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseValueBinaryOperationOrExpression(args), this.#props.queryId)),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-schema-builder.d.ts\" />\nimport { CreateSchemaNode } from '../operation-node/create-schema-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class CreateSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifNotExists() {\n return new CreateSchemaBuilder({\n ...this.#props,\n node: CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./on-commit-action-parse.d.ts\" />\nimport { ON_COMMIT_ACTIONS, } from '../operation-node/create-table-node.js';\nexport function parseOnCommitAction(action) {\n if (ON_COMMIT_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnCommitAction ${action}`);\n}\n","/// <reference types=\"./create-table-builder.d.ts\" />\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { CreateTableNode, } from '../operation-node/create-table-node.js';\nimport { ColumnDefinitionBuilder } from './column-definition-builder.js';\nimport { freeze, noop } from '../util/object-utils.js';\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseOnCommitAction } from '../parser/on-commit-action-parse.js';\nimport { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';\nimport { parseExpression } from '../parser/expression-parser.js';\nimport { PrimaryKeyConstraintBuilder, } from './primary-key-constraint-builder.js';\nimport { CheckConstraintBuilder, } from './check-constraint-builder.js';\n/**\n * This builder can be used to create a `create table` query.\n */\nexport class CreateTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary table.\n */\n temporary() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n temporary: true,\n }),\n });\n }\n /**\n * Adds an \"on commit\" statement.\n *\n * This can be used in conjunction with temporary tables on supported databases\n * like PostgreSQL.\n */\n onCommit(onCommit) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n onCommit: parseOnCommitAction(onCommit),\n }),\n });\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the table already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n /**\n * Adds a column to the table.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())\n * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())\n * .addColumn('last_name', 'varchar(255)')\n * .addColumn('bank_balance', 'numeric(8, 2)')\n * // You can specify any data type using the `sql` tag if the types\n * // don't include it.\n * .addColumn('data', sql`any_type_here`)\n * .addColumn('parent_id', 'integer', (col) =>\n * col.references('person.id').onDelete('cascade')\n * )\n * ```\n *\n * With this method, it's once again good to remember that Kysely just builds the\n * query and doesn't provide the same API for all databases. For example, some\n * databases like older MySQL don't support the `references` statement in the\n * column definition. Instead foreign key constraints need to be defined in the\n * `create table` query. See the next example:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.primaryKey())\n * .addColumn('parent_id', 'integer')\n * .addForeignKeyConstraint(\n * 'person_parent_id_fk',\n * ['parent_id'],\n * 'person',\n * ['id'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * Another good example is that PostgreSQL doesn't support the `auto_increment`\n * keyword and you need to define an autoincrementing column for example using\n * `serial`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'serial', (col) => col.primaryKey())\n * .execute()\n * ```\n */\n addColumn(columnName, dataType, build = noop) {\n const columnBuilder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithColumn(this.#props.node, columnBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a primary key constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])\n * .execute()\n * ```\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a unique constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name']\n * )\n * .execute()\n * ```\n *\n * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name'],\n * (cb) => cb.nullsNotDistinct()\n * )\n * .execute()\n * ```\n */\n addUniqueConstraint(constraintName, columns, build = noop) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a check constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('animal')\n * .addColumn('number_of_legs', 'integer')\n * .addCheckConstraint('check_legs', sql`number_of_legs < 5`)\n * .execute()\n * ```\n */\n addCheckConstraint(constraintName, checkExpression, build = noop) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a foreign key constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id'],\n * 'person',\n * ['id'],\n * )\n * .execute()\n * ```\n *\n * Add constraint for multiple columns:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id1', 'integer')\n * .addColumn('owner_id2', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id1', 'owner_id2'],\n * 'person',\n * ['id1', 'id2'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {\n const builder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, builder.toOperationNode()),\n });\n }\n /**\n * This can be used to add any additional SQL to the front of the query __after__ the `create` keyword.\n *\n * Also see {@link temporary}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .modifyFront(sql`global temporary`)\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (Postgres):\n *\n * ```sql\n * create global temporary table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(64) not null,\n * \"last_name\" varchar(64) not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithFrontModifier(this.#props.node, modifier.toOperationNode()),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * Also see {@link onCommit}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .modifyEnd(sql`collate utf8_unicode_ci`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(64) not null,\n * `last_name` varchar(64) not null\n * ) collate utf8_unicode_ci\n * ```\n */\n modifyEnd(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode()),\n });\n }\n /**\n * Allows to create table from `select` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('copy')\n * .temporary()\n * .as(db.selectFrom('person').select(['first_name', 'last_name']))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create temporary table \"copy\" as\n * select \"first_name\", \"last_name\" from \"person\"\n * ```\n */\n as(expression) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n selectQuery: parseExpression(expression),\n }),\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('test')\n * .$call((builder) => builder.addColumn('id', 'integer'))\n * .execute()\n * ```\n *\n * This is useful for creating reusable functions that can be called with a builder.\n *\n * ```ts\n * import { type CreateTableBuilder, sql } from 'kysely'\n *\n * const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {\n * return ctb\n * .addColumn('id', 'integer', (col) => col.notNull())\n * .addColumn('created_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * .addColumn('updated_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * }\n *\n * await db.schema\n * .createTable('test')\n * .$call(addDefaultColumns)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-index-builder.d.ts\" />\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specifies the table the index was created for. This is not needed\n * in all dialects.\n */\n on(table) {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table),\n }),\n });\n }\n ifExists() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-schema-builder.d.ts\" />\nimport { DropSchemaNode } from '../operation-node/drop-schema-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-table-builder.d.ts\" />\nimport { DropTableNode } from '../operation-node/drop-table-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const CreateViewNode = freeze({\n is(node) {\n return node.kind === 'CreateViewNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(createView, params) {\n return freeze({\n ...createView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./immediate-value-plugin.d.ts\" />\nimport { ImmediateValueTransformer } from './immediate-value-transformer.js';\n/**\n * Transforms all ValueNodes to immediate.\n *\n * WARNING! This should never be part of the public API. Users should never use this.\n * This is an internal helper.\n *\n * @internal\n */\nexport class ImmediateValuePlugin {\n #transformer = new ImmediateValueTransformer();\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n transformResult(args) {\n return Promise.resolve(args.result);\n }\n}\n","/// <reference types=\"./create-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { parseColumnName } from '../parser/reference-parser.js';\nimport { ImmediateValuePlugin } from '../plugin/immediate-value/immediate-value-plugin.js';\nexport class CreateViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary view.\n */\n temporary() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n temporary: true,\n }),\n });\n }\n materialized() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n /**\n * Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.\n */\n ifNotExists() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n orReplace() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n orReplace: true,\n }),\n });\n }\n columns(columns) {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n columns: columns.map(parseColumnName),\n }),\n });\n }\n /**\n * Sets the select query or a `values` statement that creates the view.\n *\n * WARNING!\n * Some dialects don't support parameterized queries in DDL statements and therefore\n * the query or raw {@link sql } expression passed here is interpolated into a single\n * string opening an SQL injection vulnerability. DO NOT pass unchecked user input\n * into the query or raw expression passed to this method!\n */\n as(query) {\n const queryNode = query\n .withPlugin(new ImmediateValuePlugin())\n .toOperationNode();\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n as: queryNode,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const DropViewNode = freeze({\n is(node) {\n return node.kind === 'DropViewNode';\n },\n create(name) {\n return freeze({\n kind: 'DropViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(dropView, params) {\n return freeze({\n ...dropView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { DropViewNode } from '../operation-node/drop-view-node.js';\nexport class DropViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n materialized() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n ifExists() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ValueListNode } from './value-list-node.js';\nimport { ValueNode } from './value-node.js';\n/**\n * @internal\n */\nexport const CreateTypeNode = freeze({\n is(node) {\n return node.kind === 'CreateTypeNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateTypeNode',\n name,\n });\n },\n cloneWithEnum(createType, values) {\n return freeze({\n ...createType,\n enum: ValueListNode.create(values.map(ValueNode.createImmediate)),\n });\n },\n});\n","/// <reference types=\"./create-type-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { CreateTypeNode } from '../operation-node/create-type-node.js';\nexport class CreateTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n /**\n * Creates an anum type.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createType('species').asEnum(['cat', 'dog', 'frog'])\n * ```\n */\n asEnum(values) {\n return new CreateTypeBuilder({\n ...this.#props,\n node: CreateTypeNode.cloneWithEnum(this.#props.node, values),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DropTypeNode = freeze({\n is(node) {\n return node.kind === 'DropTypeNode';\n },\n create(name) {\n return freeze({\n kind: 'DropTypeNode',\n name,\n });\n },\n cloneWith(dropType, params) {\n return freeze({\n ...dropType,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-type-builder.d.ts\" />\nimport { DropTypeNode } from '../operation-node/drop-type-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTypeBuilder({\n ...this.#props,\n node: DropTypeNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./identifier-parser.d.ts\" />\nimport { SchemableIdentifierNode } from '../operation-node/schemable-identifier-node.js';\nexport function parseSchemableIdentifier(id) {\n const SCHEMA_SEPARATOR = '.';\n if (id.includes(SCHEMA_SEPARATOR)) {\n const parts = id.split(SCHEMA_SEPARATOR).map(trim);\n if (parts.length === 2) {\n return SchemableIdentifierNode.createWithSchema(parts[0], parts[1]);\n }\n else {\n throw new Error(`invalid schemable identifier ${id}`);\n }\n }\n else {\n return SchemableIdentifierNode.create(id);\n }\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./refresh-materialized-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const RefreshMaterializedViewNode = freeze({\n is(node) {\n return node.kind === 'RefreshMaterializedViewNode';\n },\n create(name) {\n return freeze({\n kind: 'RefreshMaterializedViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(createView, params) {\n return freeze({\n ...createView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./refresh-materialized-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';\nexport class RefreshMaterializedViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"concurrently\" modifier.\n *\n * Use this to refresh the view without locking out concurrent selects on the materialized view.\n *\n * WARNING!\n * This cannot be used with the \"with no data\" modifier.\n */\n concurrently() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n concurrently: true,\n withNoData: false,\n }),\n });\n }\n /**\n * Adds the \"with data\" modifier.\n *\n * If specified (or defaults) the backing query is executed to provide the new data, and the materialized view is left in a scannable state\n */\n withData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: false,\n }),\n });\n }\n /**\n * Adds the \"with no data\" modifier.\n *\n * If specified, no new data is generated and the materialized view is left in an unscannable state.\n *\n * WARNING!\n * This cannot be used with the \"concurrently\" modifier.\n */\n withNoData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: true,\n concurrently: false,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./schema.d.ts\" />\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { CreateIndexNode } from '../operation-node/create-index-node.js';\nimport { CreateSchemaNode } from '../operation-node/create-schema-node.js';\nimport { CreateTableNode } from '../operation-node/create-table-node.js';\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { DropSchemaNode } from '../operation-node/drop-schema-node.js';\nimport { DropTableNode } from '../operation-node/drop-table-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { AlterTableBuilder } from './alter-table-builder.js';\nimport { CreateIndexBuilder } from './create-index-builder.js';\nimport { CreateSchemaBuilder } from './create-schema-builder.js';\nimport { CreateTableBuilder } from './create-table-builder.js';\nimport { DropIndexBuilder } from './drop-index-builder.js';\nimport { DropSchemaBuilder } from './drop-schema-builder.js';\nimport { DropTableBuilder } from './drop-table-builder.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { CreateViewBuilder } from './create-view-builder.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { DropViewBuilder } from './drop-view-builder.js';\nimport { DropViewNode } from '../operation-node/drop-view-node.js';\nimport { CreateTypeBuilder } from './create-type-builder.js';\nimport { DropTypeBuilder } from './drop-type-builder.js';\nimport { CreateTypeNode } from '../operation-node/create-type-node.js';\nimport { DropTypeNode } from '../operation-node/drop-type-node.js';\nimport { parseSchemableIdentifier } from '../parser/identifier-parser.js';\nimport { RefreshMaterializedViewBuilder } from './refresh-materialized-view-builder.js';\nimport { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';\n/**\n * Provides methods for building database schema.\n */\nexport class SchemaModule {\n #executor;\n constructor(executor) {\n this.#executor = executor;\n }\n /**\n * Create a new table.\n *\n * ### Examples\n *\n * This example creates a new table with columns `id`, `first_name`,\n * `last_name` and `gender`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('first_name', 'varchar', col => col.notNull())\n * .addColumn('last_name', 'varchar', col => col.notNull())\n * .addColumn('gender', 'varchar')\n * .execute()\n * ```\n *\n * This example creates a table with a foreign key. Not all database\n * engines support column-level foreign key constraint definitions.\n * For example if you are using MySQL 5.X see the next example after\n * this one.\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer', col => col\n * .references('person.id')\n * .onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * This example adds a foreign key constraint for a columns just\n * like the previous example, but using a table-level statement.\n * On MySQL 5.X you need to define foreign key constraints like\n * this:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],\n * (constraint) => constraint.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n createTable(table) {\n return new CreateTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTableNode.create(parseTable(table)),\n });\n }\n /**\n * Drop a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropTable('person')\n * .execute()\n * ```\n */\n dropTable(table) {\n return new DropTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTableNode.create(parseTable(table)),\n });\n }\n /**\n * Create a new index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_full_name_unique_index')\n * .on('person')\n * .columns(['first_name', 'last_name'])\n * .execute()\n * ```\n */\n createIndex(indexName) {\n return new CreateIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateIndexNode.create(indexName),\n });\n }\n /**\n * Drop an index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropIndex('person_full_name_unique_index')\n * .execute()\n * ```\n */\n dropIndex(indexName) {\n return new DropIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropIndexNode.create(indexName),\n });\n }\n /**\n * Create a new schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createSchema('some_schema')\n * .execute()\n * ```\n */\n createSchema(schema) {\n return new CreateSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateSchemaNode.create(schema),\n });\n }\n /**\n * Drop a schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropSchema('some_schema')\n * .execute()\n * ```\n */\n dropSchema(schema) {\n return new DropSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropSchemaNode.create(schema),\n });\n }\n /**\n * Alter a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .alterColumn('first_name', (ac) => ac.setDataType('text'))\n * .execute()\n * ```\n */\n alterTable(table) {\n return new AlterTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: AlterTableNode.create(parseTable(table)),\n });\n }\n /**\n * Create a new view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createView('dogs')\n * .orReplace()\n * .as(db.selectFrom('pet').selectAll().where('species', '=', 'dog'))\n * .execute()\n * ```\n */\n createView(viewName) {\n return new CreateViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateViewNode.create(viewName),\n });\n }\n /**\n * Refresh a materialized view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .refreshMaterializedView('my_view')\n * .concurrently()\n * .execute()\n * ```\n */\n refreshMaterializedView(viewName) {\n return new RefreshMaterializedViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: RefreshMaterializedViewNode.create(viewName),\n });\n }\n /**\n * Drop a view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropView('dogs')\n * .ifExists()\n * .execute()\n * ```\n */\n dropView(viewName) {\n return new DropViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropViewNode.create(viewName),\n });\n }\n /**\n * Create a new type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createType('species')\n * .asEnum(['dog', 'cat', 'frog'])\n * .execute()\n * ```\n */\n createType(typeName) {\n return new CreateTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTypeNode.create(parseSchemableIdentifier(typeName)),\n });\n }\n /**\n * Drop a type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropType('species')\n * .ifExists()\n * .execute()\n * ```\n */\n dropType(typeName) {\n return new DropTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTypeNode.create(parseSchemableIdentifier(typeName)),\n });\n }\n /**\n * Returns a copy of this schema module with the given plugin installed.\n */\n withPlugin(plugin) {\n return new SchemaModule(this.#executor.withPlugin(plugin));\n }\n /**\n * Returns a copy of this schema module without any plugins.\n */\n withoutPlugins() {\n return new SchemaModule(this.#executor.withoutPlugins());\n }\n /**\n * See {@link QueryCreator.withSchema}\n */\n withSchema(schema) {\n return new SchemaModule(this.#executor.withPluginAtFront(new WithSchemaPlugin(schema)));\n }\n}\n","/// <reference types=\"./dynamic.d.ts\" />\nimport { DynamicReferenceBuilder } from './dynamic-reference-builder.js';\nimport { DynamicTableBuilder } from './dynamic-table-builder.js';\nexport class DynamicModule {\n /**\n * Creates a dynamic reference to a column that is not know at compile time.\n *\n * Kysely is built in a way that by default you can't refer to tables or columns\n * that are not actually visible in the current query and context. This is all\n * done by TypeScript at compile time, which means that you need to know the\n * columns and tables at compile time. This is not always the case of course.\n *\n * This method is meant to be used in those cases where the column names\n * come from the user input or are not otherwise known at compile time.\n *\n * WARNING! Unlike values, column names are not escaped by the database engine\n * or Kysely and if you pass in unchecked column names using this method, you\n * create an SQL injection vulnerability. Always __always__ validate the user\n * input before passing it to this method.\n *\n * There are couple of examples below for some use cases, but you can pass\n * `ref` to other methods as well. If the types allow you to pass a `ref`\n * value to some place, it should work.\n *\n * ### Examples\n *\n * Filter by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(filterColumn: string, filterValue: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .selectAll()\n * .where(ref(filterColumn), '=', filterValue)\n * .execute()\n * }\n *\n * someQuery('first_name', 'Arnold')\n * someQuery('person.last_name', 'Aniston')\n * ```\n *\n * Order by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(orderBy: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .select('person.first_name as fn')\n * .orderBy(ref(orderBy))\n * .execute()\n * }\n *\n * someQuery('fn')\n * ```\n *\n * In this example we add selections dynamically:\n *\n * ```ts\n * const { ref } = db.dynamic\n *\n * // Some column name provided by the user. Value not known at compile time.\n * const columnFromUserInput: PossibleColumns = 'birthdate';\n *\n * // A type that lists all possible values `columnFromUserInput` can have.\n * // You can use `keyof Person` if any column of an interface is allowed.\n * type PossibleColumns = 'last_name' | 'first_name' | 'birthdate'\n *\n * const [person] = await db.selectFrom('person')\n * .select([\n * ref<PossibleColumns>(columnFromUserInput),\n * 'id'\n * ])\n * .execute()\n *\n * // The resulting type contains all `PossibleColumns` as optional fields\n * // because we cannot know which field was actually selected before\n * // running the code.\n * const lastName: string | null | undefined = person?.last_name\n * const firstName: string | undefined = person?.first_name\n * const birthDate: Date | null | undefined = person?.birthdate\n *\n * // The result type also contains the compile time selection `id`.\n * person?.id\n * ```\n */\n ref(reference) {\n return new DynamicReferenceBuilder(reference);\n }\n /**\n * Creates a table reference to a table that's not fully known at compile time.\n *\n * The type `T` is allowed to be a union of multiple tables.\n *\n * <!-- siteExample(\"select\", \"Generic find query\", 130) -->\n *\n * A generic type-safe helper function for finding a row by a column value:\n *\n * ```ts\n * import { SelectType } from 'kysely'\n * import { Database } from 'type-editor'\n *\n * async function getRowByColumn<\n * T extends keyof Database,\n * C extends keyof Database[T] & string,\n * V extends SelectType<Database[T][C]>,\n * >(t: T, c: C, v: V) {\n * // We need to use the dynamic module since the table name\n * // is not known at compile time.\n * const { table, ref } = db.dynamic\n *\n * return await db\n * .selectFrom(table(t).as('t'))\n * .selectAll()\n * .where(ref(c), '=', v)\n * .orderBy('t.id')\n * .executeTakeFirstOrThrow()\n * }\n *\n * const person = await getRowByColumn('person', 'first_name', 'Arnold')\n * ```\n */\n table(table) {\n return new DynamicTableBuilder(table);\n }\n}\n","/// <reference types=\"./default-connection-provider.d.ts\" />\nexport class DefaultConnectionProvider {\n #driver;\n constructor(driver) {\n this.#driver = driver;\n }\n async provideConnection(consumer) {\n const connection = await this.#driver.acquireConnection();\n try {\n return await consumer(connection);\n }\n finally {\n await this.#driver.releaseConnection(connection);\n }\n }\n}\n","/// <reference types=\"./default-query-executor.d.ts\" />\nimport { QueryExecutorBase } from './query-executor-base.js';\nexport class DefaultQueryExecutor extends QueryExecutorBase {\n #compiler;\n #adapter;\n #connectionProvider;\n constructor(compiler, adapter, connectionProvider, plugins = []) {\n super(plugins);\n this.#compiler = compiler;\n this.#adapter = adapter;\n this.#connectionProvider = connectionProvider;\n }\n get adapter() {\n return this.#adapter;\n }\n compileQuery(node, queryId) {\n return this.#compiler.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#connectionProvider.provideConnection(consumer);\n }\n withPlugins(plugins) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, ...plugins]);\n }\n withPlugin(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, plugin]);\n }\n withPluginAtFront(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [plugin, ...this.plugins]);\n }\n withConnectionProvider(connectionProvider) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, connectionProvider, [...this.plugins]);\n }\n withoutPlugins() {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, []);\n }\n}\n","/// <reference types=\"./performance-now.d.ts\" />\nimport { isFunction } from './object-utils.js';\nexport function performanceNow() {\n if (typeof performance !== 'undefined' && isFunction(performance.now)) {\n return performance.now();\n }\n else {\n return Date.now();\n }\n}\n","/// <reference types=\"./runtime-driver.d.ts\" />\nimport { performanceNow } from '../util/performance-now.js';\n/**\n * A small wrapper around {@link Driver} that makes sure the driver is\n * initialized before it is used, only initialized and destroyed\n * once etc.\n */\nexport class RuntimeDriver {\n #driver;\n #log;\n #initPromise;\n #initDone;\n #destroyPromise;\n #connections = new WeakSet();\n constructor(driver, log) {\n this.#initDone = false;\n this.#driver = driver;\n this.#log = log;\n }\n async init() {\n if (this.#destroyPromise) {\n throw new Error('driver has already been destroyed');\n }\n if (!this.#initPromise) {\n this.#initPromise = this.#driver\n .init()\n .then(() => {\n this.#initDone = true;\n })\n .catch((err) => {\n this.#initPromise = undefined;\n return Promise.reject(err);\n });\n }\n await this.#initPromise;\n }\n async acquireConnection() {\n if (this.#destroyPromise) {\n throw new Error('driver has already been destroyed');\n }\n if (!this.#initDone) {\n await this.init();\n }\n const connection = await this.#driver.acquireConnection();\n if (!this.#connections.has(connection)) {\n if (this.#needsLogging()) {\n this.#addLogging(connection);\n }\n this.#connections.add(connection);\n }\n return connection;\n }\n async releaseConnection(connection) {\n await this.#driver.releaseConnection(connection);\n }\n beginTransaction(connection, settings) {\n return this.#driver.beginTransaction(connection, settings);\n }\n commitTransaction(connection) {\n return this.#driver.commitTransaction(connection);\n }\n rollbackTransaction(connection) {\n return this.#driver.rollbackTransaction(connection);\n }\n savepoint(connection, savepointName, compileQuery) {\n if (this.#driver.savepoint) {\n return this.#driver.savepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `savepoint` method is not supported by this driver');\n }\n rollbackToSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.rollbackToSavepoint) {\n return this.#driver.rollbackToSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `rollbackToSavepoint` method is not supported by this driver');\n }\n releaseSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.releaseSavepoint) {\n return this.#driver.releaseSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `releaseSavepoint` method is not supported by this driver');\n }\n async destroy() {\n if (!this.#initPromise) {\n return;\n }\n await this.#initPromise;\n if (!this.#destroyPromise) {\n this.#destroyPromise = this.#driver.destroy().catch((err) => {\n this.#destroyPromise = undefined;\n return Promise.reject(err);\n });\n }\n await this.#destroyPromise;\n }\n #needsLogging() {\n return (this.#log.isLevelEnabled('query') || this.#log.isLevelEnabled('error'));\n }\n // This method monkey patches the database connection's executeQuery method\n // by adding logging code around it. Monkey patching is not pretty, but it's\n // the best option in this case.\n #addLogging(connection) {\n const executeQuery = connection.executeQuery;\n const streamQuery = connection.streamQuery;\n const dis = this;\n connection.executeQuery = async (compiledQuery) => {\n let caughtError;\n const startTime = performanceNow();\n try {\n return await executeQuery.call(connection, compiledQuery);\n }\n catch (error) {\n caughtError = error;\n await dis.#logError(error, compiledQuery, startTime);\n throw error;\n }\n finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime);\n }\n }\n };\n connection.streamQuery = async function* (compiledQuery, chunkSize) {\n let caughtError;\n const startTime = performanceNow();\n try {\n for await (const result of streamQuery.call(connection, compiledQuery, chunkSize)) {\n yield result;\n }\n }\n catch (error) {\n caughtError = error;\n await dis.#logError(error, compiledQuery, startTime);\n throw error;\n }\n finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime, true);\n }\n }\n };\n }\n async #logError(error, compiledQuery, startTime) {\n await this.#log.error(() => ({\n level: 'error',\n error,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime),\n }));\n }\n async #logQuery(compiledQuery, startTime, isStream = false) {\n await this.#log.query(() => ({\n level: 'query',\n isStream,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime),\n }));\n }\n #calculateDurationMillis(startTime) {\n return performanceNow() - startTime;\n }\n}\n","/// <reference types=\"./single-connection-provider.d.ts\" />\nconst ignoreError = () => { };\nexport class SingleConnectionProvider {\n #connection;\n #runningPromise;\n constructor(connection) {\n this.#connection = connection;\n }\n async provideConnection(consumer) {\n while (this.#runningPromise) {\n await this.#runningPromise.catch(ignoreError);\n }\n // `#runningPromise` must be set to undefined before it's\n // resolved or rejected. Otherwise the while loop above\n // will misbehave.\n this.#runningPromise = this.#run(consumer).finally(() => {\n this.#runningPromise = undefined;\n });\n return this.#runningPromise;\n }\n // Run the runner in an async function to make sure it doesn't\n // throw synchronous errors.\n async #run(runner) {\n return await runner(this.#connection);\n }\n}\n","/// <reference types=\"./driver.d.ts\" />\nexport const TRANSACTION_ACCESS_MODES = ['read only', 'read write'];\nexport const TRANSACTION_ISOLATION_LEVELS = [\n 'read uncommitted',\n 'read committed',\n 'repeatable read',\n 'serializable',\n 'snapshot',\n];\nexport function validateTransactionSettings(settings) {\n if (settings.accessMode &&\n !TRANSACTION_ACCESS_MODES.includes(settings.accessMode)) {\n throw new Error(`invalid transaction access mode ${settings.accessMode}`);\n }\n if (settings.isolationLevel &&\n !TRANSACTION_ISOLATION_LEVELS.includes(settings.isolationLevel)) {\n throw new Error(`invalid transaction isolation level ${settings.isolationLevel}`);\n }\n}\n","/// <reference types=\"./log.d.ts\" />\nimport { freeze, isFunction } from './object-utils.js';\nexport const LOG_LEVELS = freeze(['query', 'error']);\nexport class Log {\n #levels;\n #logger;\n constructor(config) {\n if (isFunction(config)) {\n this.#logger = config;\n this.#levels = freeze({\n query: true,\n error: true,\n });\n }\n else {\n this.#logger = defaultLogger;\n this.#levels = freeze({\n query: config.includes('query'),\n error: config.includes('error'),\n });\n }\n }\n isLevelEnabled(level) {\n return this.#levels[level];\n }\n async query(getEvent) {\n if (this.#levels.query) {\n await this.#logger(getEvent());\n }\n }\n async error(getEvent) {\n if (this.#levels.error) {\n await this.#logger(getEvent());\n }\n }\n}\nfunction defaultLogger(event) {\n if (event.level === 'query') {\n const prefix = `kysely:query:${event.isStream ? 'stream:' : ''}`;\n console.log(`${prefix} ${event.query.sql}`);\n console.log(`${prefix} duration: ${event.queryDurationMillis.toFixed(1)}ms`);\n }\n else if (event.level === 'error') {\n if (event.error instanceof Error) {\n console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);\n }\n else {\n console.error(`kysely:error: ${JSON.stringify({\n error: event.error,\n query: event.query.sql,\n queryDurationMillis: event.queryDurationMillis,\n })}`);\n }\n }\n}\n","/// <reference types=\"./compilable.d.ts\" />\nimport { isFunction, isObject } from './object-utils.js';\nexport function isCompilable(value) {\n return isObject(value) && isFunction(value.compile);\n}\n","/// <reference types=\"./kysely.d.ts\" />\nimport { SchemaModule } from './schema/schema.js';\nimport { DynamicModule } from './dynamic/dynamic.js';\nimport { DefaultConnectionProvider } from './driver/default-connection-provider.js';\nimport { QueryCreator } from './query-creator.js';\nimport { DefaultQueryExecutor } from './query-executor/default-query-executor.js';\nimport { freeze, isObject, isUndefined } from './util/object-utils.js';\nimport { RuntimeDriver } from './driver/runtime-driver.js';\nimport { SingleConnectionProvider } from './driver/single-connection-provider.js';\nimport { validateTransactionSettings, } from './driver/driver.js';\nimport { createFunctionModule, } from './query-builder/function-module.js';\nimport { Log } from './util/log.js';\nimport { createQueryId } from './util/query-id.js';\nimport { isCompilable } from './util/compilable.js';\nimport { CaseBuilder } from './query-builder/case-builder.js';\nimport { CaseNode } from './operation-node/case-node.js';\nimport { parseExpression } from './parser/expression-parser.js';\nimport { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';\nimport { provideControlledConnection, } from './util/provide-controlled-connection.js';\nimport { logOnce } from './util/log-once.js';\n// @ts-ignore\nSymbol.asyncDispose ??= Symbol('Symbol.asyncDispose');\n/**\n * The main Kysely class.\n *\n * You should create one instance of `Kysely` per database using the {@link Kysely}\n * constructor. Each `Kysely` instance maintains its own connection pool.\n *\n * ### Examples\n *\n * This example assumes your database has a \"person\" table:\n *\n * ```ts\n * import * as Sqlite from 'better-sqlite3'\n * import { type Generated, Kysely, SqliteDialect } from 'kysely'\n *\n * interface Database {\n * person: {\n * id: Generated<number>\n * first_name: string\n * last_name: string | null\n * }\n * }\n *\n * const db = new Kysely<Database>({\n * dialect: new SqliteDialect({\n * database: new Sqlite(':memory:'),\n * })\n * })\n * ```\n *\n * @typeParam DB - The database interface type. Keys of this type must be table names\n * in the database and values must be interfaces that describe the rows in those\n * tables. See the examples above.\n */\nexport class Kysely extends QueryCreator {\n #props;\n constructor(args) {\n let superProps;\n let props;\n if (isKyselyProps(args)) {\n superProps = { executor: args.executor };\n props = { ...args };\n }\n else {\n const dialect = args.dialect;\n const driver = dialect.createDriver();\n const compiler = dialect.createQueryCompiler();\n const adapter = dialect.createAdapter();\n const log = new Log(args.log ?? []);\n const runtimeDriver = new RuntimeDriver(driver, log);\n const connectionProvider = new DefaultConnectionProvider(runtimeDriver);\n const executor = new DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);\n superProps = { executor };\n props = {\n config: args,\n executor,\n dialect,\n driver: runtimeDriver,\n };\n }\n super(superProps);\n this.#props = freeze(props);\n }\n /**\n * Returns the {@link SchemaModule} module for building database schema.\n */\n get schema() {\n return new SchemaModule(this.#props.executor);\n }\n /**\n * Returns a the {@link DynamicModule} module.\n *\n * The {@link DynamicModule} module can be used to bypass strict typing and\n * passing in dynamic values for the queries.\n */\n get dynamic() {\n return new DynamicModule();\n }\n /**\n * Returns a {@link DatabaseIntrospector | database introspector}.\n */\n get introspection() {\n return this.#props.dialect.createIntrospector(this.withoutPlugins());\n }\n case(value) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(value) ? undefined : parseExpression(value)),\n });\n }\n /**\n * Returns a {@link FunctionModule} that can be used to write somewhat type-safe function\n * calls.\n *\n * ```ts\n * const { count } = db.fn\n *\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select([\n * 'id',\n * count('pet.id').as('person_count'),\n * ])\n * .groupBy('person.id')\n * .having(count('pet.id'), '>', 10)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"person\".\"id\", count(\"pet\".\"id\") as \"person_count\"\n * from \"person\"\n * inner join \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\"\n * group by \"person\".\"id\"\n * having count(\"pet\".\"id\") > $1\n * ```\n *\n * Why \"somewhat\" type-safe? Because the function calls are not bound to the\n * current query context. They allow you to reference columns and tables that\n * are not in the current query. E.g. remove the `innerJoin` from the previous\n * query and TypeScript won't even complain.\n *\n * If you want to make the function calls fully type-safe, you can use the\n * {@link ExpressionBuilder.fn} getter for a query context-aware, stricter {@link FunctionModule}.\n *\n * ```ts\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select((eb) => [\n * 'person.id',\n * eb.fn.count('pet.id').as('pet_count')\n * ])\n * .groupBy('person.id')\n * .having((eb) => eb.fn.count('pet.id'), '>', 10)\n * .execute()\n * ```\n */\n get fn() {\n return createFunctionModule();\n }\n /**\n * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.\n *\n * The returned {@link TransactionBuilder} can be used to configure the transaction. The\n * {@link TransactionBuilder.execute} method can then be called to run the transaction.\n * {@link TransactionBuilder.execute} takes a function that is run inside the\n * transaction. If the function throws an exception,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * The callback function passed to the {@link TransactionBuilder.execute | execute}\n * method gets the transaction object as its only argument. The transaction is\n * of type {@link Transaction} which inherits {@link Kysely}. Any query\n * started through the transaction object is executed inside the transaction.\n *\n * To run a controlled transaction, allowing you to commit and rollback manually,\n * use {@link startTransaction} instead.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Simple transaction\", 10) -->\n *\n * This example inserts two rows in a transaction. If an exception is thrown inside\n * the callback passed to the `execute` method,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * ```ts\n * const catto = await db.transaction().execute(async (trx) => {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * return await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirst()\n * })\n * ```\n *\n * Setting the isolation level:\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n *\n * await db\n * .transaction()\n * .setIsolationLevel('serializable')\n * .execute(async (trx) => {\n * await doStuff(trx)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n transaction() {\n return new TransactionBuilder({ ...this.#props });\n }\n /**\n * Creates a {@link ControlledTransactionBuilder} that can be used to run queries inside a controlled transaction.\n *\n * The returned {@link ControlledTransactionBuilder} can be used to configure the transaction.\n * The {@link ControlledTransactionBuilder.execute} method can then be called\n * to start the transaction and return a {@link ControlledTransaction}.\n *\n * A {@link ControlledTransaction} allows you to commit and rollback manually,\n * execute savepoint commands. It extends {@link Transaction} which extends {@link Kysely},\n * so you can run queries inside the transaction. Once the transaction is committed,\n * or rolled back, it can't be used anymore - all queries will throw an error.\n * This is to prevent accidentally running queries outside the transaction - where\n * atomicity is not guaranteed anymore.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction\", 11) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, use it to insert two rows and then commit\n * the transaction. If an error is thrown, we catch it and rollback the transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const catto = await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * await trx.commit().execute()\n *\n * // ...\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction /w savepoints\", 12) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, insert a person, create a savepoint,\n * try inserting a toy and a pet, and if an error is thrown, we rollback to the\n * savepoint. Eventually we release the savepoint, insert an audit record and\n * commit the transaction. If an error is thrown, we catch it and rollback the\n * transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * const catto = await trxAfterJennifer\n * .insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * await trxAfterJennifer\n * .insertInto('toy')\n * .values({ name: 'Bone', price: 1.99, pet_id: catto.id })\n * .execute()\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await trx.insertInto('audit').values({ action: 'added Jennifer' }).execute()\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n */\n startTransaction() {\n return new ControlledTransactionBuilder({ ...this.#props });\n }\n /**\n * Provides a kysely instance bound to a single database connection.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .connection()\n * .execute(async (db) => {\n * // `db` is an instance of `Kysely` that's bound to a single\n * // database connection. All queries executed through `db` use\n * // the same connection.\n * await doStuff(db)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n connection() {\n return new ConnectionBuilder({ ...this.#props });\n }\n /**\n * Returns a copy of this Kysely instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n /**\n * Returns a copy of this Kysely instance without any plugins.\n */\n withoutPlugins() {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n /**\n * @override\n */\n withSchema(schema) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n /**\n * Returns a copy of this Kysely instance with tables added to its\n * database type.\n *\n * This method only modifies the types and doesn't affect any of the\n * executed queries in any way.\n *\n * ### Examples\n *\n * The following example adds and uses a temporary table:\n *\n * ```ts\n * await db.schema\n * .createTable('temp_table')\n * .temporary()\n * .addColumn('some_column', 'integer')\n * .execute()\n *\n * const tempDb = db.withTables<{\n * temp_table: {\n * some_column: number\n * }\n * }>()\n *\n * await tempDb\n * .insertInto('temp_table')\n * .values({ some_column: 100 })\n * .execute()\n * ```\n */\n withTables() {\n return new Kysely({ ...this.#props });\n }\n /**\n * Releases all resources and disconnects from the database.\n *\n * You need to call this when you are done using the `Kysely` instance.\n */\n async destroy() {\n await this.#props.driver.destroy();\n }\n /**\n * Returns true if this `Kysely` instance is a transaction.\n *\n * You can also use `db instanceof Transaction`.\n */\n get isTransaction() {\n return false;\n }\n /**\n * @internal\n * @private\n */\n getExecutor() {\n return this.#props.executor;\n }\n /**\n * Executes a given compiled query or query builder.\n *\n * See {@link https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0004-splitting-query-building-and-execution.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.\n */\n executeQuery(query, \n // TODO: remove this in the future. deprecated in 0.28.x\n queryId) {\n if (queryId !== undefined) {\n logOnce('Passing `queryId` in `db.executeQuery` is deprecated and will result in a compile-time error in the future.');\n }\n const compiledQuery = isCompilable(query) ? query.compile() : query;\n return this.getExecutor().executeQuery(compiledQuery);\n }\n async [Symbol.asyncDispose]() {\n await this.destroy();\n }\n}\nexport class Transaction extends Kysely {\n #props;\n constructor(props) {\n super(props);\n this.#props = props;\n }\n // The return type is `true` instead of `boolean` to make Kysely<DB>\n // unassignable to Transaction<DB> while allowing assignment the\n // other way around.\n get isTransaction() {\n return true;\n }\n transaction() {\n throw new Error('calling the transaction method for a Transaction is not supported');\n }\n connection() {\n throw new Error('calling the connection method for a Transaction is not supported');\n }\n async destroy() {\n throw new Error('calling the destroy method for a Transaction is not supported');\n }\n withPlugin(plugin) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n withoutPlugins() {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n withSchema(schema) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n withTables() {\n return new Transaction({ ...this.#props });\n }\n}\nexport function isKyselyProps(obj) {\n return (isObject(obj) &&\n isObject(obj.config) &&\n isObject(obj.driver) &&\n isObject(obj.executor) &&\n isObject(obj.dialect));\n}\nexport class ConnectionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n async execute(callback) {\n return this.#props.executor.provideConnection(async (connection) => {\n const executor = this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection));\n const db = new Kysely({\n ...this.#props,\n executor,\n });\n return await callback(db);\n });\n }\n}\nexport class TransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new TransactionBuilder({\n ...this.#props,\n accessMode,\n });\n }\n setIsolationLevel(isolationLevel) {\n return new TransactionBuilder({\n ...this.#props,\n isolationLevel,\n });\n }\n async execute(callback) {\n const { isolationLevel, accessMode, ...kyselyProps } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n return this.#props.executor.provideConnection(async (connection) => {\n const executor = this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection));\n const transaction = new Transaction({\n ...kyselyProps,\n executor,\n });\n try {\n await this.#props.driver.beginTransaction(connection, settings);\n const result = await callback(transaction);\n await this.#props.driver.commitTransaction(connection);\n return result;\n }\n catch (error) {\n await this.#props.driver.rollbackTransaction(connection);\n throw error;\n }\n });\n }\n}\nexport class ControlledTransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n accessMode,\n });\n }\n setIsolationLevel(isolationLevel) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n isolationLevel,\n });\n }\n async execute() {\n const { isolationLevel, accessMode, ...props } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n const connection = await provideControlledConnection(this.#props.executor);\n await this.#props.driver.beginTransaction(connection.connection, settings);\n return new ControlledTransaction({\n ...props,\n connection,\n executor: this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection.connection)),\n });\n }\n}\nexport class ControlledTransaction extends Transaction {\n #props;\n #compileQuery;\n #state;\n constructor(props) {\n const state = { isCommitted: false, isRolledBack: false };\n props = {\n ...props,\n executor: new NotCommittedOrRolledBackAssertingExecutor(props.executor, state),\n };\n const { connection, ...transactionProps } = props;\n super(transactionProps);\n this.#props = freeze(props);\n this.#state = state;\n const queryId = createQueryId();\n this.#compileQuery = (node) => props.executor.compileQuery(node, queryId);\n }\n get isCommitted() {\n return this.#state.isCommitted;\n }\n get isRolledBack() {\n return this.#state.isRolledBack;\n }\n /**\n * Commits the transaction.\n *\n * See {@link rollback}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n commit() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.commitTransaction(this.#props.connection.connection);\n this.#state.isCommitted = true;\n this.#props.connection.release();\n });\n }\n /**\n * Rolls back the transaction.\n *\n * See {@link commit} and {@link rollbackToSavepoint}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollback() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackTransaction(this.#props.connection.connection);\n this.#state.isRolledBack = true;\n this.#props.connection.release();\n });\n }\n /**\n * Creates a savepoint with a given name.\n *\n * See {@link rollbackToSavepoint} and {@link releaseSavepoint}.\n *\n * For a type-safe experience, you should use the returned instance from now on.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n savepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.savepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Rolls back to a savepoint with a given name.\n *\n * See {@link savepoint} and {@link releaseSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollbackToSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackToSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Releases a savepoint with a given name.\n *\n * See {@link savepoint} and {@link rollbackToSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await doSomethingElse(trx)\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * async function doSomethingElse(kysely: Kysely<Database>) {}\n * ```\n */\n releaseSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.releaseSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n withPlugin(plugin) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n withoutPlugins() {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n withSchema(schema) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n withTables() {\n return new ControlledTransaction({ ...this.#props });\n }\n}\nexport class Command {\n #cb;\n constructor(cb) {\n this.#cb = cb;\n }\n /**\n * Executes the command.\n */\n async execute() {\n return await this.#cb();\n }\n}\nfunction assertNotCommittedOrRolledBack(state) {\n if (state.isCommitted) {\n throw new Error('Transaction is already committed');\n }\n if (state.isRolledBack) {\n throw new Error('Transaction is already rolled back');\n }\n}\n/**\n * An executor wrapper that asserts that the transaction state is not committed\n * or rolled back when a query is executed.\n *\n * @internal\n */\nclass NotCommittedOrRolledBackAssertingExecutor {\n #executor;\n #state;\n constructor(executor, state) {\n if (executor instanceof NotCommittedOrRolledBackAssertingExecutor) {\n this.#executor = executor.#executor;\n }\n else {\n this.#executor = executor;\n }\n this.#state = state;\n }\n get adapter() {\n return this.#executor.adapter;\n }\n get plugins() {\n return this.#executor.plugins;\n }\n transformQuery(node, queryId) {\n return this.#executor.transformQuery(node, queryId);\n }\n compileQuery(node, queryId) {\n return this.#executor.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#executor.provideConnection(consumer);\n }\n executeQuery(compiledQuery) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.executeQuery(compiledQuery);\n }\n stream(compiledQuery, chunkSize) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.stream(compiledQuery, chunkSize);\n }\n withConnectionProvider(connectionProvider) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withConnectionProvider(connectionProvider), this.#state);\n }\n withPlugin(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugin(plugin), this.#state);\n }\n withPlugins(plugins) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugins(plugins), this.#state);\n }\n withPluginAtFront(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPluginAtFront(plugin), this.#state);\n }\n withoutPlugins() {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withoutPlugins(), this.#state);\n }\n}\n","/// <reference types=\"./raw-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nclass RawBuilderImpl {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n get expressionType() {\n return undefined;\n }\n get isRawBuilder() {\n return true;\n }\n as(alias) {\n return new AliasedRawBuilderImpl(this, alias);\n }\n $castTo() {\n return new RawBuilderImpl({ ...this.#props });\n }\n $notNull() {\n return new RawBuilderImpl(this.#props);\n }\n withPlugin(plugin) {\n return new RawBuilderImpl({\n ...this.#props,\n plugins: this.#props.plugins !== undefined\n ? freeze([...this.#props.plugins, plugin])\n : freeze([plugin]),\n });\n }\n toOperationNode() {\n return this.#toOperationNode(this.#getExecutor());\n }\n compile(executorProvider) {\n return this.#compile(this.#getExecutor(executorProvider));\n }\n async execute(executorProvider) {\n const executor = this.#getExecutor(executorProvider);\n return executor.executeQuery(this.#compile(executor));\n }\n #getExecutor(executorProvider) {\n const executor = executorProvider !== undefined\n ? executorProvider.getExecutor()\n : NOOP_QUERY_EXECUTOR;\n return this.#props.plugins !== undefined\n ? executor.withPlugins(this.#props.plugins)\n : executor;\n }\n #toOperationNode(executor) {\n return executor.transformQuery(this.#props.rawNode, this.#props.queryId);\n }\n #compile(executor) {\n return executor.compileQuery(this.#toOperationNode(executor), this.#props.queryId);\n }\n}\nexport function createRawBuilder(props) {\n return new RawBuilderImpl(props);\n}\nclass AliasedRawBuilderImpl {\n #rawBuilder;\n #alias;\n constructor(rawBuilder, alias) {\n this.#rawBuilder = rawBuilder;\n this.#alias = alias;\n }\n get expression() {\n return this.#rawBuilder;\n }\n get alias() {\n return this.#alias;\n }\n get rawBuilder() {\n return this.#rawBuilder;\n }\n toOperationNode() {\n return AliasNode.create(this.#rawBuilder.toOperationNode(), isOperationNodeSource(this.#alias)\n ? this.#alias.toOperationNode()\n : IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./sql.d.ts\" />\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nimport { parseStringReference } from '../parser/reference-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseValueExpression } from '../parser/value-parser.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { createRawBuilder } from './raw-builder.js';\nexport const sql = Object.assign((sqlFragments, ...parameters) => {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.create(sqlFragments, parameters?.map(parseParameter) ?? []),\n });\n}, {\n ref(columnReference) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseStringReference(columnReference)),\n });\n },\n val(value) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseValueExpression(value)),\n });\n },\n value(value) {\n return this.val(value);\n },\n table(tableReference) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseTable(tableReference)),\n });\n },\n id(...ids) {\n const fragments = new Array(ids.length + 1).fill('.');\n fragments[0] = '';\n fragments[fragments.length - 1] = '';\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.create(fragments, ids.map(IdentifierNode.create)),\n });\n },\n lit(value) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(ValueNode.createImmediate(value)),\n });\n },\n literal(value) {\n return this.lit(value);\n },\n raw(sql) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithSql(sql),\n });\n },\n join(array, separator = sql `, `) {\n const nodes = new Array(Math.max(2 * array.length - 1, 0));\n const sep = separator.toOperationNode();\n for (let i = 0; i < array.length; ++i) {\n nodes[2 * i] = parseParameter(array[i]);\n if (i !== array.length - 1) {\n nodes[2 * i + 1] = sep;\n }\n }\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChildren(nodes),\n });\n },\n});\nfunction parseParameter(param) {\n if (isOperationNodeSource(param)) {\n return param.toOperationNode();\n }\n return parseValueExpression(param);\n}\n","/// <reference types=\"./operation-node-visitor.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport class OperationNodeVisitor {\n nodeStack = [];\n get parentNode() {\n return this.nodeStack[this.nodeStack.length - 2];\n }\n #visitors = freeze({\n AliasNode: this.visitAlias.bind(this),\n ColumnNode: this.visitColumn.bind(this),\n IdentifierNode: this.visitIdentifier.bind(this),\n SchemableIdentifierNode: this.visitSchemableIdentifier.bind(this),\n RawNode: this.visitRaw.bind(this),\n ReferenceNode: this.visitReference.bind(this),\n SelectQueryNode: this.visitSelectQuery.bind(this),\n SelectionNode: this.visitSelection.bind(this),\n TableNode: this.visitTable.bind(this),\n FromNode: this.visitFrom.bind(this),\n SelectAllNode: this.visitSelectAll.bind(this),\n AndNode: this.visitAnd.bind(this),\n OrNode: this.visitOr.bind(this),\n ValueNode: this.visitValue.bind(this),\n ValueListNode: this.visitValueList.bind(this),\n PrimitiveValueListNode: this.visitPrimitiveValueList.bind(this),\n ParensNode: this.visitParens.bind(this),\n JoinNode: this.visitJoin.bind(this),\n OperatorNode: this.visitOperator.bind(this),\n WhereNode: this.visitWhere.bind(this),\n InsertQueryNode: this.visitInsertQuery.bind(this),\n DeleteQueryNode: this.visitDeleteQuery.bind(this),\n ReturningNode: this.visitReturning.bind(this),\n CreateTableNode: this.visitCreateTable.bind(this),\n AddColumnNode: this.visitAddColumn.bind(this),\n ColumnDefinitionNode: this.visitColumnDefinition.bind(this),\n DropTableNode: this.visitDropTable.bind(this),\n DataTypeNode: this.visitDataType.bind(this),\n OrderByNode: this.visitOrderBy.bind(this),\n OrderByItemNode: this.visitOrderByItem.bind(this),\n GroupByNode: this.visitGroupBy.bind(this),\n GroupByItemNode: this.visitGroupByItem.bind(this),\n UpdateQueryNode: this.visitUpdateQuery.bind(this),\n ColumnUpdateNode: this.visitColumnUpdate.bind(this),\n LimitNode: this.visitLimit.bind(this),\n OffsetNode: this.visitOffset.bind(this),\n OnConflictNode: this.visitOnConflict.bind(this),\n OnDuplicateKeyNode: this.visitOnDuplicateKey.bind(this),\n CreateIndexNode: this.visitCreateIndex.bind(this),\n DropIndexNode: this.visitDropIndex.bind(this),\n ListNode: this.visitList.bind(this),\n PrimaryKeyConstraintNode: this.visitPrimaryKeyConstraint.bind(this),\n UniqueConstraintNode: this.visitUniqueConstraint.bind(this),\n ReferencesNode: this.visitReferences.bind(this),\n CheckConstraintNode: this.visitCheckConstraint.bind(this),\n WithNode: this.visitWith.bind(this),\n CommonTableExpressionNode: this.visitCommonTableExpression.bind(this),\n CommonTableExpressionNameNode: this.visitCommonTableExpressionName.bind(this),\n HavingNode: this.visitHaving.bind(this),\n CreateSchemaNode: this.visitCreateSchema.bind(this),\n DropSchemaNode: this.visitDropSchema.bind(this),\n AlterTableNode: this.visitAlterTable.bind(this),\n DropColumnNode: this.visitDropColumn.bind(this),\n RenameColumnNode: this.visitRenameColumn.bind(this),\n AlterColumnNode: this.visitAlterColumn.bind(this),\n ModifyColumnNode: this.visitModifyColumn.bind(this),\n AddConstraintNode: this.visitAddConstraint.bind(this),\n DropConstraintNode: this.visitDropConstraint.bind(this),\n RenameConstraintNode: this.visitRenameConstraint.bind(this),\n ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),\n CreateViewNode: this.visitCreateView.bind(this),\n RefreshMaterializedViewNode: this.visitRefreshMaterializedView.bind(this),\n DropViewNode: this.visitDropView.bind(this),\n GeneratedNode: this.visitGenerated.bind(this),\n DefaultValueNode: this.visitDefaultValue.bind(this),\n OnNode: this.visitOn.bind(this),\n ValuesNode: this.visitValues.bind(this),\n SelectModifierNode: this.visitSelectModifier.bind(this),\n CreateTypeNode: this.visitCreateType.bind(this),\n DropTypeNode: this.visitDropType.bind(this),\n ExplainNode: this.visitExplain.bind(this),\n DefaultInsertValueNode: this.visitDefaultInsertValue.bind(this),\n AggregateFunctionNode: this.visitAggregateFunction.bind(this),\n OverNode: this.visitOver.bind(this),\n PartitionByNode: this.visitPartitionBy.bind(this),\n PartitionByItemNode: this.visitPartitionByItem.bind(this),\n SetOperationNode: this.visitSetOperation.bind(this),\n BinaryOperationNode: this.visitBinaryOperation.bind(this),\n UnaryOperationNode: this.visitUnaryOperation.bind(this),\n UsingNode: this.visitUsing.bind(this),\n FunctionNode: this.visitFunction.bind(this),\n CaseNode: this.visitCase.bind(this),\n WhenNode: this.visitWhen.bind(this),\n JSONReferenceNode: this.visitJSONReference.bind(this),\n JSONPathNode: this.visitJSONPath.bind(this),\n JSONPathLegNode: this.visitJSONPathLeg.bind(this),\n JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),\n TupleNode: this.visitTuple.bind(this),\n MergeQueryNode: this.visitMergeQuery.bind(this),\n MatchedNode: this.visitMatched.bind(this),\n AddIndexNode: this.visitAddIndex.bind(this),\n CastNode: this.visitCast.bind(this),\n FetchNode: this.visitFetch.bind(this),\n TopNode: this.visitTop.bind(this),\n OutputNode: this.visitOutput.bind(this),\n OrActionNode: this.visitOrAction.bind(this),\n CollateNode: this.visitCollate.bind(this),\n });\n visitNode = (node) => {\n this.nodeStack.push(node);\n this.#visitors[node.kind](node);\n this.nodeStack.pop();\n };\n}\n","/// <reference types=\"./default-query-compiler.d.ts\" />\nimport { CreateTableNode } from '../operation-node/create-table-node.js';\nimport { InsertQueryNode } from '../operation-node/insert-query-node.js';\nimport { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';\nimport { OperatorNode } from '../operation-node/operator-node.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { SetOperationNode } from '../operation-node/set-operation-node.js';\nimport { MergeQueryNode } from '../operation-node/merge-query-node.js';\nimport { logOnce } from '../util/log-once.js';\nconst LIT_WRAP_REGEX = /'/g;\nexport class DefaultQueryCompiler extends OperationNodeVisitor {\n #sql = '';\n #parameters = [];\n get numParameters() {\n return this.#parameters.length;\n }\n compileQuery(node, queryId) {\n this.#sql = '';\n this.#parameters = [];\n this.nodeStack.splice(0, this.nodeStack.length);\n this.visitNode(node);\n return freeze({\n query: node,\n queryId,\n sql: this.getSql(),\n parameters: [...this.#parameters],\n });\n }\n getSql() {\n return this.#sql;\n }\n visitSelectQuery(node) {\n const wrapInParens = this.parentNode !== undefined &&\n !ParensNode.is(this.parentNode) &&\n !InsertQueryNode.is(this.parentNode) &&\n !CreateTableNode.is(this.parentNode) &&\n !CreateViewNode.is(this.parentNode) &&\n !SetOperationNode.is(this.parentNode);\n if (this.parentNode === undefined && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (wrapInParens) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('select');\n if (node.distinctOn) {\n this.append(' ');\n this.compileDistinctOn(node.distinctOn);\n }\n if (node.frontModifiers?.length) {\n this.append(' ');\n this.compileList(node.frontModifiers, ' ');\n }\n if (node.top) {\n this.append(' ');\n this.visitNode(node.top);\n }\n if (node.selections) {\n this.append(' ');\n this.compileList(node.selections);\n }\n if (node.from) {\n this.append(' ');\n this.visitNode(node.from);\n }\n if (node.joins) {\n this.append(' ');\n this.compileList(node.joins, ' ');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n if (node.groupBy) {\n this.append(' ');\n this.visitNode(node.groupBy);\n }\n if (node.having) {\n this.append(' ');\n this.visitNode(node.having);\n }\n if (node.setOperations) {\n this.append(' ');\n this.compileList(node.setOperations, ' ');\n }\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(' ');\n this.visitNode(node.limit);\n }\n if (node.offset) {\n this.append(' ');\n this.visitNode(node.offset);\n }\n if (node.fetch) {\n this.append(' ');\n this.visitNode(node.fetch);\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(this.sortSelectModifiers([...node.endModifiers]), ' ');\n }\n if (wrapInParens) {\n this.append(')');\n }\n }\n visitFrom(node) {\n this.append('from ');\n this.compileList(node.froms);\n }\n visitSelection(node) {\n this.visitNode(node.selection);\n }\n visitColumn(node) {\n this.visitNode(node.column);\n }\n compileDistinctOn(expressions) {\n this.append('distinct on (');\n this.compileList(expressions);\n this.append(')');\n }\n compileList(nodes, separator = ', ') {\n const lastIndex = nodes.length - 1;\n for (let i = 0; i <= lastIndex; i++) {\n this.visitNode(nodes[i]);\n if (i < lastIndex) {\n this.append(separator);\n }\n }\n }\n visitWhere(node) {\n this.append('where ');\n this.visitNode(node.where);\n }\n visitHaving(node) {\n this.append('having ');\n this.visitNode(node.having);\n }\n visitInsertQuery(node) {\n const rootQueryNode = this.nodeStack.find(QueryNode.is);\n const isSubQuery = rootQueryNode !== node;\n if (!isSubQuery && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (isSubQuery && !MergeQueryNode.is(rootQueryNode)) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append(node.replace ? 'replace' : 'insert');\n // TODO: remove in 0.29.\n if (node.ignore) {\n logOnce('`InsertQueryNode.ignore` is deprecated. Use `InsertQueryNode.orAction` instead.');\n this.append(' ignore');\n }\n if (node.orAction) {\n this.append(' ');\n this.visitNode(node.orAction);\n }\n if (node.top) {\n this.append(' ');\n this.visitNode(node.top);\n }\n if (node.into) {\n this.append(' into ');\n this.visitNode(node.into);\n }\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.values) {\n this.append(' ');\n this.visitNode(node.values);\n }\n if (node.defaultValues) {\n this.append(' ');\n this.append('default values');\n }\n if (node.onConflict) {\n this.append(' ');\n this.visitNode(node.onConflict);\n }\n if (node.onDuplicateKey) {\n this.append(' ');\n this.visitNode(node.onDuplicateKey);\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (isSubQuery && !MergeQueryNode.is(rootQueryNode)) {\n this.append(')');\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitValues(node) {\n this.append('values ');\n this.compileList(node.values);\n }\n visitDeleteQuery(node) {\n const isSubQuery = this.nodeStack.find(QueryNode.is) !== node;\n if (!isSubQuery && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (isSubQuery) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('delete ');\n if (node.top) {\n this.visitNode(node.top);\n this.append(' ');\n }\n this.visitNode(node.from);\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.using) {\n this.append(' ');\n this.visitNode(node.using);\n }\n if (node.joins) {\n this.append(' ');\n this.compileList(node.joins, ' ');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(' ');\n this.visitNode(node.limit);\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (isSubQuery) {\n this.append(')');\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitReturning(node) {\n this.append('returning ');\n this.compileList(node.selections);\n }\n visitAlias(node) {\n this.visitNode(node.node);\n this.append(' as ');\n this.visitNode(node.alias);\n }\n visitReference(node) {\n if (node.table) {\n this.visitNode(node.table);\n this.append('.');\n }\n this.visitNode(node.column);\n }\n visitSelectAll(_) {\n this.append('*');\n }\n visitIdentifier(node) {\n this.append(this.getLeftIdentifierWrapper());\n this.compileUnwrappedIdentifier(node);\n this.append(this.getRightIdentifierWrapper());\n }\n compileUnwrappedIdentifier(node) {\n if (!isString(node.name)) {\n throw new Error('a non-string identifier was passed to compileUnwrappedIdentifier.');\n }\n this.append(this.sanitizeIdentifier(node.name));\n }\n visitAnd(node) {\n this.visitNode(node.left);\n this.append(' and ');\n this.visitNode(node.right);\n }\n visitOr(node) {\n this.visitNode(node.left);\n this.append(' or ');\n this.visitNode(node.right);\n }\n visitValue(node) {\n if (node.immediate) {\n this.appendImmediateValue(node.value);\n }\n else {\n this.appendValue(node.value);\n }\n }\n visitValueList(node) {\n this.append('(');\n this.compileList(node.values);\n this.append(')');\n }\n visitTuple(node) {\n this.append('(');\n this.compileList(node.values);\n this.append(')');\n }\n visitPrimitiveValueList(node) {\n this.append('(');\n const { values } = node;\n for (let i = 0; i < values.length; ++i) {\n this.appendValue(values[i]);\n if (i !== values.length - 1) {\n this.append(', ');\n }\n }\n this.append(')');\n }\n visitParens(node) {\n this.append('(');\n this.visitNode(node.node);\n this.append(')');\n }\n visitJoin(node) {\n this.append(JOIN_TYPE_SQL[node.joinType]);\n this.append(' ');\n this.visitNode(node.table);\n if (node.on) {\n this.append(' ');\n this.visitNode(node.on);\n }\n }\n visitOn(node) {\n this.append('on ');\n this.visitNode(node.on);\n }\n visitRaw(node) {\n const { sqlFragments, parameters: params } = node;\n for (let i = 0; i < sqlFragments.length; ++i) {\n this.append(sqlFragments[i]);\n if (params.length > i) {\n this.visitNode(params[i]);\n }\n }\n }\n visitOperator(node) {\n this.append(node.operator);\n }\n visitTable(node) {\n this.visitNode(node.table);\n }\n visitSchemableIdentifier(node) {\n if (node.schema) {\n this.visitNode(node.schema);\n this.append('.');\n }\n this.visitNode(node.identifier);\n }\n visitCreateTable(node) {\n this.append('create ');\n if (node.frontModifiers && node.frontModifiers.length > 0) {\n this.compileList(node.frontModifiers, ' ');\n this.append(' ');\n }\n if (node.temporary) {\n this.append('temporary ');\n }\n this.append('table ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.table);\n if (node.selectQuery) {\n this.append(' as ');\n this.visitNode(node.selectQuery);\n }\n else {\n this.append(' (');\n this.compileList([...node.columns, ...(node.constraints ?? [])]);\n this.append(')');\n if (node.onCommit) {\n this.append(' on commit ');\n this.append(node.onCommit);\n }\n if (node.endModifiers && node.endModifiers.length > 0) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n }\n visitColumnDefinition(node) {\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.column);\n this.append(' ');\n this.visitNode(node.dataType);\n if (node.unsigned) {\n this.append(' unsigned');\n }\n if (node.frontModifiers && node.frontModifiers.length > 0) {\n this.append(' ');\n this.compileList(node.frontModifiers, ' ');\n }\n if (node.generated) {\n this.append(' ');\n this.visitNode(node.generated);\n }\n if (node.identity) {\n this.append(' identity');\n }\n if (node.defaultTo) {\n this.append(' ');\n this.visitNode(node.defaultTo);\n }\n if (node.notNull) {\n this.append(' not null');\n }\n if (node.unique) {\n this.append(' unique');\n }\n if (node.nullsNotDistinct) {\n this.append(' nulls not distinct');\n }\n if (node.primaryKey) {\n this.append(' primary key');\n }\n if (node.autoIncrement) {\n this.append(' ');\n this.append(this.getAutoIncrement());\n }\n if (node.references) {\n this.append(' ');\n this.visitNode(node.references);\n }\n if (node.check) {\n this.append(' ');\n this.visitNode(node.check);\n }\n if (node.endModifiers && node.endModifiers.length > 0) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n getAutoIncrement() {\n return 'auto_increment';\n }\n visitReferences(node) {\n this.append('references ');\n this.visitNode(node.table);\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n if (node.onDelete) {\n this.append(' on delete ');\n this.append(node.onDelete);\n }\n if (node.onUpdate) {\n this.append(' on update ');\n this.append(node.onUpdate);\n }\n }\n visitDropTable(node) {\n this.append('drop table ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.table);\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitDataType(node) {\n this.append(node.dataType);\n }\n visitOrderBy(node) {\n this.append('order by ');\n this.compileList(node.items);\n }\n visitOrderByItem(node) {\n this.visitNode(node.orderBy);\n if (node.collation) {\n this.append(' ');\n this.visitNode(node.collation);\n }\n if (node.direction) {\n this.append(' ');\n this.visitNode(node.direction);\n }\n if (node.nulls) {\n this.append(' nulls ');\n this.append(node.nulls);\n }\n }\n visitGroupBy(node) {\n this.append('group by ');\n this.compileList(node.items);\n }\n visitGroupByItem(node) {\n this.visitNode(node.groupBy);\n }\n visitUpdateQuery(node) {\n const rootQueryNode = this.nodeStack.find(QueryNode.is);\n const isSubQuery = rootQueryNode !== node;\n if (!isSubQuery && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (isSubQuery && !MergeQueryNode.is(rootQueryNode)) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('update ');\n if (node.top) {\n this.visitNode(node.top);\n this.append(' ');\n }\n if (node.table) {\n this.visitNode(node.table);\n this.append(' ');\n }\n this.append('set ');\n if (node.updates) {\n this.compileList(node.updates);\n }\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.from) {\n this.append(' ');\n this.visitNode(node.from);\n }\n if (node.joins) {\n if (!node.from) {\n throw new Error(\"Joins in an update query are only supported as a part of a PostgreSQL 'update set from join' query. If you want to create a MySQL 'update join set' query, see https://kysely.dev/docs/examples/update/my-sql-joins\");\n }\n this.append(' ');\n this.compileList(node.joins, ' ');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(' ');\n this.visitNode(node.limit);\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (isSubQuery && !MergeQueryNode.is(rootQueryNode)) {\n this.append(')');\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitColumnUpdate(node) {\n this.visitNode(node.column);\n this.append(' = ');\n this.visitNode(node.value);\n }\n visitLimit(node) {\n this.append('limit ');\n this.visitNode(node.limit);\n }\n visitOffset(node) {\n this.append('offset ');\n this.visitNode(node.offset);\n }\n visitOnConflict(node) {\n this.append('on conflict');\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n else if (node.constraint) {\n this.append(' on constraint ');\n this.visitNode(node.constraint);\n }\n else if (node.indexExpression) {\n this.append(' (');\n this.visitNode(node.indexExpression);\n this.append(')');\n }\n if (node.indexWhere) {\n this.append(' ');\n this.visitNode(node.indexWhere);\n }\n if (node.doNothing === true) {\n this.append(' do nothing');\n }\n else if (node.updates) {\n this.append(' do update set ');\n this.compileList(node.updates);\n if (node.updateWhere) {\n this.append(' ');\n this.visitNode(node.updateWhere);\n }\n }\n }\n visitOnDuplicateKey(node) {\n this.append('on duplicate key update ');\n this.compileList(node.updates);\n }\n visitCreateIndex(node) {\n this.append('create ');\n if (node.unique) {\n this.append('unique ');\n }\n this.append('index ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.name);\n if (node.table) {\n this.append(' on ');\n this.visitNode(node.table);\n }\n if (node.using) {\n this.append(' using ');\n this.visitNode(node.using);\n }\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.nullsNotDistinct) {\n this.append(' nulls not distinct');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n }\n visitDropIndex(node) {\n this.append('drop index ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.name);\n if (node.table) {\n this.append(' on ');\n this.visitNode(node.table);\n }\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitCreateSchema(node) {\n this.append('create schema ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.schema);\n }\n visitDropSchema(node) {\n this.append('drop schema ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.schema);\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitPrimaryKeyConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('primary key (');\n this.compileList(node.columns);\n this.append(')');\n this.buildDeferrable(node);\n }\n buildDeferrable(node) {\n if (node.deferrable !== undefined) {\n if (node.deferrable) {\n this.append(' deferrable');\n }\n else {\n this.append(' not deferrable');\n }\n }\n if (node.initiallyDeferred !== undefined) {\n if (node.initiallyDeferred) {\n this.append(' initially deferred');\n }\n else {\n this.append(' initially immediate');\n }\n }\n }\n visitUniqueConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('unique');\n if (node.nullsNotDistinct) {\n this.append(' nulls not distinct');\n }\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n this.buildDeferrable(node);\n }\n visitCheckConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('check (');\n this.visitNode(node.expression);\n this.append(')');\n }\n visitForeignKeyConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('foreign key (');\n this.compileList(node.columns);\n this.append(') ');\n this.visitNode(node.references);\n if (node.onDelete) {\n this.append(' on delete ');\n this.append(node.onDelete);\n }\n if (node.onUpdate) {\n this.append(' on update ');\n this.append(node.onUpdate);\n }\n this.buildDeferrable(node);\n }\n visitList(node) {\n this.compileList(node.items);\n }\n visitWith(node) {\n this.append('with ');\n if (node.recursive) {\n this.append('recursive ');\n }\n this.compileList(node.expressions);\n }\n visitCommonTableExpression(node) {\n this.visitNode(node.name);\n this.append(' as ');\n if (isBoolean(node.materialized)) {\n if (!node.materialized) {\n this.append('not ');\n }\n this.append('materialized ');\n }\n this.visitNode(node.expression);\n }\n visitCommonTableExpressionName(node) {\n this.visitNode(node.table);\n if (node.columns) {\n this.append('(');\n this.compileList(node.columns);\n this.append(')');\n }\n }\n visitAlterTable(node) {\n this.append('alter table ');\n this.visitNode(node.table);\n this.append(' ');\n if (node.renameTo) {\n this.append('rename to ');\n this.visitNode(node.renameTo);\n }\n if (node.setSchema) {\n this.append('set schema ');\n this.visitNode(node.setSchema);\n }\n if (node.addConstraint) {\n this.visitNode(node.addConstraint);\n }\n if (node.dropConstraint) {\n this.visitNode(node.dropConstraint);\n }\n if (node.renameConstraint) {\n this.visitNode(node.renameConstraint);\n }\n if (node.columnAlterations) {\n this.compileColumnAlterations(node.columnAlterations);\n }\n if (node.addIndex) {\n this.visitNode(node.addIndex);\n }\n if (node.dropIndex) {\n this.visitNode(node.dropIndex);\n }\n }\n visitAddColumn(node) {\n this.append('add column ');\n this.visitNode(node.column);\n }\n visitRenameColumn(node) {\n this.append('rename column ');\n this.visitNode(node.column);\n this.append(' to ');\n this.visitNode(node.renameTo);\n }\n visitDropColumn(node) {\n this.append('drop column ');\n this.visitNode(node.column);\n }\n visitAlterColumn(node) {\n this.append('alter column ');\n this.visitNode(node.column);\n this.append(' ');\n if (node.dataType) {\n if (this.announcesNewColumnDataType()) {\n this.append('type ');\n }\n this.visitNode(node.dataType);\n if (node.dataTypeExpression) {\n this.append('using ');\n this.visitNode(node.dataTypeExpression);\n }\n }\n if (node.setDefault) {\n this.append('set default ');\n this.visitNode(node.setDefault);\n }\n if (node.dropDefault) {\n this.append('drop default');\n }\n if (node.setNotNull) {\n this.append('set not null');\n }\n if (node.dropNotNull) {\n this.append('drop not null');\n }\n }\n visitModifyColumn(node) {\n this.append('modify column ');\n this.visitNode(node.column);\n }\n visitAddConstraint(node) {\n this.append('add ');\n this.visitNode(node.constraint);\n }\n visitDropConstraint(node) {\n this.append('drop constraint ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.constraintName);\n if (node.modifier === 'cascade') {\n this.append(' cascade');\n }\n else if (node.modifier === 'restrict') {\n this.append(' restrict');\n }\n }\n visitRenameConstraint(node) {\n this.append('rename constraint ');\n this.visitNode(node.oldName);\n this.append(' to ');\n this.visitNode(node.newName);\n }\n visitSetOperation(node) {\n this.append(node.operator);\n this.append(' ');\n if (node.all) {\n this.append('all ');\n }\n this.visitNode(node.expression);\n }\n visitCreateView(node) {\n this.append('create ');\n if (node.orReplace) {\n this.append('or replace ');\n }\n if (node.materialized) {\n this.append('materialized ');\n }\n if (node.temporary) {\n this.append('temporary ');\n }\n this.append('view ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.name);\n this.append(' ');\n if (node.columns) {\n this.append('(');\n this.compileList(node.columns);\n this.append(') ');\n }\n if (node.as) {\n this.append('as ');\n this.visitNode(node.as);\n }\n }\n visitRefreshMaterializedView(node) {\n this.append('refresh materialized view ');\n if (node.concurrently) {\n this.append('concurrently ');\n }\n this.visitNode(node.name);\n if (node.withNoData) {\n this.append(' with no data');\n }\n else {\n this.append(' with data');\n }\n }\n visitDropView(node) {\n this.append('drop ');\n if (node.materialized) {\n this.append('materialized ');\n }\n this.append('view ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.name);\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitGenerated(node) {\n this.append('generated ');\n if (node.always) {\n this.append('always ');\n }\n if (node.byDefault) {\n this.append('by default ');\n }\n this.append('as ');\n if (node.identity) {\n this.append('identity');\n }\n if (node.expression) {\n this.append('(');\n this.visitNode(node.expression);\n this.append(')');\n }\n if (node.stored) {\n this.append(' stored');\n }\n }\n visitDefaultValue(node) {\n this.append('default ');\n this.visitNode(node.defaultValue);\n }\n visitSelectModifier(node) {\n if (node.rawModifier) {\n this.visitNode(node.rawModifier);\n }\n else {\n this.append(SELECT_MODIFIER_SQL[node.modifier]);\n }\n if (node.of) {\n this.append(' of ');\n this.compileList(node.of, ', ');\n }\n }\n visitCreateType(node) {\n this.append('create type ');\n this.visitNode(node.name);\n if (node.enum) {\n this.append(' as enum ');\n this.visitNode(node.enum);\n }\n }\n visitDropType(node) {\n this.append('drop type ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.name);\n }\n visitExplain(node) {\n this.append('explain');\n if (node.options || node.format) {\n this.append(' ');\n this.append(this.getLeftExplainOptionsWrapper());\n if (node.options) {\n this.visitNode(node.options);\n if (node.format) {\n this.append(this.getExplainOptionsDelimiter());\n }\n }\n if (node.format) {\n this.append('format');\n this.append(this.getExplainOptionAssignment());\n this.append(node.format);\n }\n this.append(this.getRightExplainOptionsWrapper());\n }\n }\n visitDefaultInsertValue(_) {\n this.append('default');\n }\n visitAggregateFunction(node) {\n this.append(node.func);\n this.append('(');\n if (node.distinct) {\n this.append('distinct ');\n }\n this.compileList(node.aggregated);\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n this.append(')');\n if (node.withinGroup) {\n this.append(' within group (');\n this.visitNode(node.withinGroup);\n this.append(')');\n }\n if (node.filter) {\n this.append(' filter(');\n this.visitNode(node.filter);\n this.append(')');\n }\n if (node.over) {\n this.append(' ');\n this.visitNode(node.over);\n }\n }\n visitOver(node) {\n this.append('over(');\n if (node.partitionBy) {\n this.visitNode(node.partitionBy);\n if (node.orderBy) {\n this.append(' ');\n }\n }\n if (node.orderBy) {\n this.visitNode(node.orderBy);\n }\n this.append(')');\n }\n visitPartitionBy(node) {\n this.append('partition by ');\n this.compileList(node.items);\n }\n visitPartitionByItem(node) {\n this.visitNode(node.partitionBy);\n }\n visitBinaryOperation(node) {\n this.visitNode(node.leftOperand);\n this.append(' ');\n this.visitNode(node.operator);\n this.append(' ');\n this.visitNode(node.rightOperand);\n }\n visitUnaryOperation(node) {\n this.visitNode(node.operator);\n if (!this.isMinusOperator(node.operator)) {\n this.append(' ');\n }\n this.visitNode(node.operand);\n }\n isMinusOperator(node) {\n return OperatorNode.is(node) && node.operator === '-';\n }\n visitUsing(node) {\n this.append('using ');\n this.compileList(node.tables);\n }\n visitFunction(node) {\n this.append(node.func);\n this.append('(');\n this.compileList(node.arguments);\n this.append(')');\n }\n visitCase(node) {\n this.append('case');\n if (node.value) {\n this.append(' ');\n this.visitNode(node.value);\n }\n if (node.when) {\n this.append(' ');\n this.compileList(node.when, ' ');\n }\n if (node.else) {\n this.append(' else ');\n this.visitNode(node.else);\n }\n this.append(' end');\n if (node.isStatement) {\n this.append(' case');\n }\n }\n visitWhen(node) {\n this.append('when ');\n this.visitNode(node.condition);\n if (node.result) {\n this.append(' then ');\n this.visitNode(node.result);\n }\n }\n visitJSONReference(node) {\n this.visitNode(node.reference);\n this.visitNode(node.traversal);\n }\n visitJSONPath(node) {\n if (node.inOperator) {\n this.visitNode(node.inOperator);\n }\n this.append(\"'$\");\n for (const pathLeg of node.pathLegs) {\n this.visitNode(pathLeg);\n }\n this.append(\"'\");\n }\n visitJSONPathLeg(node) {\n const isArrayLocation = node.type === 'ArrayLocation';\n this.append(isArrayLocation ? '[' : '.');\n this.append(String(node.value));\n if (isArrayLocation) {\n this.append(']');\n }\n }\n visitJSONOperatorChain(node) {\n for (let i = 0, len = node.values.length; i < len; i++) {\n if (i === len - 1) {\n this.visitNode(node.operator);\n }\n else {\n this.append('->');\n }\n this.visitNode(node.values[i]);\n }\n }\n visitMergeQuery(node) {\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('merge ');\n if (node.top) {\n this.visitNode(node.top);\n this.append(' ');\n }\n this.append('into ');\n this.visitNode(node.into);\n if (node.using) {\n this.append(' ');\n this.visitNode(node.using);\n }\n if (node.whens) {\n this.append(' ');\n this.compileList(node.whens, ' ');\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitMatched(node) {\n if (node.not) {\n this.append('not ');\n }\n this.append('matched');\n if (node.bySource) {\n this.append(' by source');\n }\n }\n visitAddIndex(node) {\n this.append('add ');\n if (node.unique) {\n this.append('unique ');\n }\n this.append('index ');\n this.visitNode(node.name);\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.using) {\n this.append(' using ');\n this.visitNode(node.using);\n }\n }\n visitCast(node) {\n this.append('cast(');\n this.visitNode(node.expression);\n this.append(' as ');\n this.visitNode(node.dataType);\n this.append(')');\n }\n visitFetch(node) {\n this.append('fetch next ');\n this.visitNode(node.rowCount);\n this.append(` rows ${node.modifier}`);\n }\n visitOutput(node) {\n this.append('output ');\n this.compileList(node.selections);\n }\n visitTop(node) {\n this.append(`top(${node.expression})`);\n if (node.modifiers) {\n this.append(` ${node.modifiers}`);\n }\n }\n visitOrAction(node) {\n this.append(node.action);\n }\n visitCollate(node) {\n this.append('collate ');\n this.visitNode(node.collation);\n }\n append(str) {\n this.#sql += str;\n }\n appendValue(parameter) {\n this.addParameter(parameter);\n this.append(this.getCurrentParameterPlaceholder());\n }\n getLeftIdentifierWrapper() {\n return '\"';\n }\n getRightIdentifierWrapper() {\n return '\"';\n }\n getCurrentParameterPlaceholder() {\n return '$' + this.numParameters;\n }\n getLeftExplainOptionsWrapper() {\n return '(';\n }\n getExplainOptionAssignment() {\n return ' ';\n }\n getExplainOptionsDelimiter() {\n return ', ';\n }\n getRightExplainOptionsWrapper() {\n return ')';\n }\n sanitizeIdentifier(identifier) {\n const leftWrap = this.getLeftIdentifierWrapper();\n const rightWrap = this.getRightIdentifierWrapper();\n let sanitized = '';\n for (const c of identifier) {\n sanitized += c;\n if (c === leftWrap) {\n sanitized += leftWrap;\n }\n else if (c === rightWrap) {\n sanitized += rightWrap;\n }\n }\n return sanitized;\n }\n sanitizeStringLiteral(value) {\n return value.replace(LIT_WRAP_REGEX, \"''\");\n }\n addParameter(parameter) {\n this.#parameters.push(parameter);\n }\n appendImmediateValue(value) {\n if (isString(value)) {\n this.appendStringLiteral(value);\n }\n else if (isNumber(value) || isBoolean(value) || isBigInt(value)) {\n this.append(value.toString());\n }\n else if (isNull(value)) {\n this.append('null');\n }\n else if (isDate(value)) {\n this.appendImmediateValue(value.toISOString());\n }\n else {\n throw new Error(`invalid immediate value ${value}`);\n }\n }\n appendStringLiteral(value) {\n this.append(\"'\");\n this.append(this.sanitizeStringLiteral(value));\n this.append(\"'\");\n }\n sortSelectModifiers(arr) {\n arr.sort((left, right) => left.modifier && right.modifier\n ? SELECT_MODIFIER_PRIORITY[left.modifier] -\n SELECT_MODIFIER_PRIORITY[right.modifier]\n : 1);\n return freeze(arr);\n }\n compileColumnAlterations(columnAlterations) {\n this.compileList(columnAlterations);\n }\n /**\n * controls whether the dialect adds a \"type\" keyword before a column's new data\n * type in an ALTER TABLE statement.\n */\n announcesNewColumnDataType() {\n return true;\n }\n}\nconst SELECT_MODIFIER_SQL = freeze({\n ForKeyShare: 'for key share',\n ForNoKeyUpdate: 'for no key update',\n ForUpdate: 'for update',\n ForShare: 'for share',\n NoWait: 'nowait',\n SkipLocked: 'skip locked',\n Distinct: 'distinct',\n});\nconst SELECT_MODIFIER_PRIORITY = freeze({\n ForKeyShare: 1,\n ForNoKeyUpdate: 1,\n ForUpdate: 1,\n ForShare: 1,\n NoWait: 2,\n SkipLocked: 2,\n Distinct: 0,\n});\nconst JOIN_TYPE_SQL = freeze({\n InnerJoin: 'inner join',\n LeftJoin: 'left join',\n RightJoin: 'right join',\n FullJoin: 'full join',\n CrossJoin: 'cross join',\n LateralInnerJoin: 'inner join lateral',\n LateralLeftJoin: 'left join lateral',\n LateralCrossJoin: 'cross join lateral',\n OuterApply: 'outer apply',\n CrossApply: 'cross apply',\n Using: 'using',\n});\n","/// <reference types=\"./compiled-query.d.ts\" />\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { createQueryId } from '../util/query-id.js';\nexport const CompiledQuery = freeze({\n raw(sql, parameters = []) {\n return freeze({\n sql,\n query: RawNode.createWithSql(sql),\n parameters: freeze(parameters),\n queryId: createQueryId(),\n });\n },\n});\n","/// <reference types=\"./dialect-adapter-base.d.ts\" />\n/**\n * A basic implementation of `DialectAdapter` with sensible default values.\n * Third-party dialects can extend this instead of implementing the `DialectAdapter`\n * interface from scratch. That way all new settings will get default values when\n * they are added and there will be less breaking changes.\n */\nexport class DialectAdapterBase {\n get supportsCreateIfNotExists() {\n return true;\n }\n get supportsTransactionalDdl() {\n return false;\n }\n get supportsReturning() {\n return false;\n }\n get supportsOutput() {\n return false;\n }\n}\n","/// <reference types=\"./savepoint-parser.d.ts\" />\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nexport function parseSavepointCommand(command, savepointName) {\n return RawNode.createWithChildren([\n RawNode.createWithSql(`${command} `),\n IdentifierNode.create(savepointName), // ensures savepointName gets sanitized\n ]);\n}\n","/// <reference types=\"./migrator.d.ts\" />\nimport { NoopPlugin } from '../plugin/noop-plugin.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { freeze, getLast, isObject } from '../util/object-utils.js';\nexport const DEFAULT_MIGRATION_TABLE = 'kysely_migration';\nexport const DEFAULT_MIGRATION_LOCK_TABLE = 'kysely_migration_lock';\nexport const DEFAULT_ALLOW_UNORDERED_MIGRATIONS = false;\nexport const MIGRATION_LOCK_ID = 'migration_lock';\nexport const NO_MIGRATIONS = freeze({ __noMigrations__: true });\n/**\n * A class for running migrations.\n *\n * ### Example\n *\n * This example uses the {@link FileMigrationProvider} that reads migrations\n * files from a single folder. You can easily implement your own\n * {@link MigrationProvider} if you want to provide migrations some\n * other way.\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import * as Sqlite from 'better-sqlite3'\n * import {\n * FileMigrationProvider,\n * Kysely,\n * Migrator,\n * SqliteDialect\n * } from 'kysely'\n *\n * const db = new Kysely<any>({\n * dialect: new SqliteDialect({\n * database: Sqlite(':memory:')\n * })\n * })\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n * ```\n */\nexport class Migrator {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Returns a {@link MigrationInfo} object for each migration.\n *\n * The returned array is sorted by migration name.\n */\n async getMigrations() {\n const executedMigrations = (await this.#doesTableExists(this.#migrationTable))\n ? await this.#props.db\n .withPlugin(this.#schemaPlugin)\n .selectFrom(this.#migrationTable)\n .select(['name', 'timestamp'])\n .$narrowType()\n .execute()\n : [];\n const migrations = await this.#resolveMigrations();\n return migrations.map(({ name, ...migration }) => {\n const executed = executedMigrations.find((it) => it.name === name);\n return {\n name,\n migration,\n executedAt: executed ? new Date(executed.timestamp) : undefined,\n };\n });\n }\n /**\n * Runs all migrations that have not yet been run.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed. See the examples below.\n *\n * This method goes through all possible migrations provided by the provider and runs the\n * ones whose names come alphabetically after the last migration that has been run. If the\n * list of executed migrations doesn't match the beginning of the list of possible migrations\n * an error is returned.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import * as Sqlite from 'better-sqlite3'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * const { error, results } = await migrator.migrateToLatest()\n *\n * results?.forEach((it) => {\n * if (it.status === 'Success') {\n * console.log(`migration \"${it.migrationName}\" was executed successfully`)\n * } else if (it.status === 'Error') {\n * console.error(`failed to execute migration \"${it.migrationName}\"`)\n * }\n * })\n *\n * if (error) {\n * console.error('failed to run `migrateToLatest`')\n * console.error(error)\n * }\n * ```\n */\n async migrateToLatest() {\n return this.#migrate(() => ({ direction: 'Up', step: Infinity }));\n }\n /**\n * Migrate up/down to a specific migration.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateTo('some_migration')\n * ```\n *\n * If you specify the name of the first migration, this method migrates\n * down to the first migration, but doesn't run the `down` method of\n * the first migration. In case you want to migrate all the way down,\n * you can use a special constant `NO_MIGRATIONS`:\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator, NO_MIGRATIONS } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateTo(NO_MIGRATIONS)\n * ```\n */\n async migrateTo(targetMigrationName) {\n return this.#migrate(({ migrations, executedMigrations, pendingMigrations, }) => {\n if (isObject(targetMigrationName) &&\n targetMigrationName.__noMigrations__ === true) {\n return { direction: 'Down', step: Infinity };\n }\n if (!migrations.find((m) => m.name === targetMigrationName)) {\n throw new Error(`migration \"${targetMigrationName}\" doesn't exist`);\n }\n const executedIndex = executedMigrations.indexOf(targetMigrationName);\n const pendingIndex = pendingMigrations.findIndex((m) => m.name === targetMigrationName);\n if (executedIndex !== -1) {\n return {\n direction: 'Down',\n step: executedMigrations.length - executedIndex - 1,\n };\n }\n else if (pendingIndex !== -1) {\n return { direction: 'Up', step: pendingIndex + 1 };\n }\n else {\n throw new Error(`migration \"${targetMigrationName}\" isn't executed or pending`);\n }\n });\n }\n /**\n * Migrate one step up.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateUp()\n * ```\n */\n async migrateUp() {\n return this.#migrate(() => ({ direction: 'Up', step: 1 }));\n }\n /**\n * Migrate one step down.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateDown()\n * ```\n */\n async migrateDown() {\n return this.#migrate(() => ({ direction: 'Down', step: 1 }));\n }\n async #migrate(getMigrationDirectionAndStep) {\n try {\n await this.#ensureMigrationTablesExists();\n return await this.#runMigrations(getMigrationDirectionAndStep);\n }\n catch (error) {\n if (error instanceof MigrationResultSetError) {\n return error.resultSet;\n }\n return { error };\n }\n }\n get #migrationTableSchema() {\n return this.#props.migrationTableSchema;\n }\n get #migrationTable() {\n return this.#props.migrationTableName ?? DEFAULT_MIGRATION_TABLE;\n }\n get #migrationLockTable() {\n return this.#props.migrationLockTableName ?? DEFAULT_MIGRATION_LOCK_TABLE;\n }\n get #allowUnorderedMigrations() {\n return (this.#props.allowUnorderedMigrations ?? DEFAULT_ALLOW_UNORDERED_MIGRATIONS);\n }\n get #schemaPlugin() {\n if (this.#migrationTableSchema) {\n return new WithSchemaPlugin(this.#migrationTableSchema);\n }\n return new NoopPlugin();\n }\n async #ensureMigrationTablesExists() {\n await this.#ensureMigrationTableSchemaExists();\n await this.#ensureMigrationTableExists();\n await this.#ensureMigrationLockTableExists();\n await this.#ensureLockRowExists();\n }\n async #ensureMigrationTableSchemaExists() {\n if (!this.#migrationTableSchema) {\n // Use default schema. Nothing to do.\n return;\n }\n if (!(await this.#doesSchemaExists())) {\n try {\n await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));\n }\n catch (error) {\n // At least on PostgreSQL, `if not exists` doesn't guarantee the `create schema`\n // query doesn't throw if the schema already exits. That's why we check if\n // the schema exist here and ignore the error if it does.\n if (!(await this.#doesSchemaExists())) {\n throw error;\n }\n }\n }\n }\n async #ensureMigrationTableExists() {\n if (!(await this.#doesTableExists(this.#migrationTable))) {\n try {\n if (this.#migrationTableSchema) {\n await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));\n }\n await this.#createIfNotExists(this.#props.db.schema\n .withPlugin(this.#schemaPlugin)\n .createTable(this.#migrationTable)\n .addColumn('name', 'varchar(255)', (col) => col.notNull().primaryKey())\n // The migration run time as ISO string. This is not a real date type as we\n // can't know which data type is supported by all future dialects.\n .addColumn('timestamp', 'varchar(255)', (col) => col.notNull()));\n }\n catch (error) {\n // At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`\n // query doesn't throw if the table already exits. That's why we check if\n // the table exist here and ignore the error if it does.\n if (!(await this.#doesTableExists(this.#migrationTable))) {\n throw error;\n }\n }\n }\n }\n async #ensureMigrationLockTableExists() {\n if (!(await this.#doesTableExists(this.#migrationLockTable))) {\n try {\n await this.#createIfNotExists(this.#props.db.schema\n .withPlugin(this.#schemaPlugin)\n .createTable(this.#migrationLockTable)\n .addColumn('id', 'varchar(255)', (col) => col.notNull().primaryKey())\n .addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0)));\n }\n catch (error) {\n // At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`\n // query doesn't throw if the table already exits. That's why we check if\n // the table exist here and ignore the error if it does.\n if (!(await this.#doesTableExists(this.#migrationLockTable))) {\n throw error;\n }\n }\n }\n }\n async #ensureLockRowExists() {\n if (!(await this.#doesLockRowExists())) {\n try {\n await this.#props.db\n .withPlugin(this.#schemaPlugin)\n .insertInto(this.#migrationLockTable)\n .values({ id: MIGRATION_LOCK_ID, is_locked: 0 })\n .execute();\n }\n catch (error) {\n if (!(await this.#doesLockRowExists())) {\n throw error;\n }\n }\n }\n }\n async #doesSchemaExists() {\n const schemas = await this.#props.db.introspection.getSchemas();\n return schemas.some((it) => it.name === this.#migrationTableSchema);\n }\n async #doesTableExists(tableName) {\n const schema = this.#migrationTableSchema;\n const tables = await this.#props.db.introspection.getTables({\n withInternalKyselyTables: true,\n });\n return tables.some((it) => it.name === tableName && (!schema || it.schema === schema));\n }\n async #doesLockRowExists() {\n const lockRow = await this.#props.db\n .withPlugin(this.#schemaPlugin)\n .selectFrom(this.#migrationLockTable)\n .where('id', '=', MIGRATION_LOCK_ID)\n .select('id')\n .executeTakeFirst();\n return !!lockRow;\n }\n async #runMigrations(getMigrationDirectionAndStep) {\n const adapter = this.#props.db.getExecutor().adapter;\n const lockOptions = freeze({\n lockTable: this.#props.migrationLockTableName ?? DEFAULT_MIGRATION_LOCK_TABLE,\n lockRowId: MIGRATION_LOCK_ID,\n lockTableSchema: this.#props.migrationTableSchema,\n });\n const run = async (db) => {\n try {\n await adapter.acquireMigrationLock(db, lockOptions);\n const state = await this.#getState(db);\n if (state.migrations.length === 0) {\n return { results: [] };\n }\n const { direction, step } = getMigrationDirectionAndStep(state);\n if (step <= 0) {\n return { results: [] };\n }\n if (direction === 'Down') {\n return await this.#migrateDown(db, state, step);\n }\n else if (direction === 'Up') {\n return await this.#migrateUp(db, state, step);\n }\n return { results: [] };\n }\n finally {\n await adapter.releaseMigrationLock(db, lockOptions);\n }\n };\n if (adapter.supportsTransactionalDdl && !this.#props.disableTransactions) {\n return this.#props.db.transaction().execute(run);\n }\n else {\n return this.#props.db.connection().execute(run);\n }\n }\n async #getState(db) {\n const migrations = await this.#resolveMigrations();\n const executedMigrations = await this.#getExecutedMigrations(db);\n this.#ensureNoMissingMigrations(migrations, executedMigrations);\n if (!this.#allowUnorderedMigrations) {\n this.#ensureMigrationsInOrder(migrations, executedMigrations);\n }\n const pendingMigrations = this.#getPendingMigrations(migrations, executedMigrations);\n return freeze({\n migrations,\n executedMigrations,\n lastMigration: getLast(executedMigrations),\n pendingMigrations,\n });\n }\n #getPendingMigrations(migrations, executedMigrations) {\n return migrations.filter((migration) => {\n return !executedMigrations.includes(migration.name);\n });\n }\n async #resolveMigrations() {\n const allMigrations = await this.#props.provider.getMigrations();\n return Object.keys(allMigrations)\n .sort()\n .map((name) => ({\n ...allMigrations[name],\n name,\n }));\n }\n async #getExecutedMigrations(db) {\n const executedMigrations = await db\n .withPlugin(this.#schemaPlugin)\n .selectFrom(this.#migrationTable)\n .select(['name', 'timestamp'])\n .$narrowType()\n .execute();\n const nameComparator = this.#props.nameComparator || ((a, b) => a.localeCompare(b));\n return (executedMigrations\n // https://github.com/kysely-org/kysely/issues/843\n .sort((a, b) => {\n if (a.timestamp === b.timestamp) {\n return nameComparator(a.name, b.name);\n }\n return (new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());\n })\n .map((it) => it.name));\n }\n #ensureNoMissingMigrations(migrations, executedMigrations) {\n // Ensure all executed migrations exist in the `migrations` list.\n for (const executed of executedMigrations) {\n if (!migrations.some((it) => it.name === executed)) {\n throw new Error(`corrupted migrations: previously executed migration ${executed} is missing`);\n }\n }\n }\n #ensureMigrationsInOrder(migrations, executedMigrations) {\n // Ensure the executed migrations are the first ones in the migration list.\n for (let i = 0; i < executedMigrations.length; ++i) {\n if (migrations[i].name !== executedMigrations[i]) {\n throw new Error(`corrupted migrations: expected previously executed migration ${executedMigrations[i]} to be at index ${i} but ${migrations[i].name} was found in its place. New migrations must always have a name that comes alphabetically after the last executed migration.`);\n }\n }\n }\n async #migrateDown(db, state, step) {\n const migrationsToRollback = state.executedMigrations\n .slice()\n .reverse()\n .slice(0, step)\n .map((name) => {\n return state.migrations.find((it) => it.name === name);\n });\n const results = migrationsToRollback.map((migration) => {\n return {\n migrationName: migration.name,\n direction: 'Down',\n status: 'NotExecuted',\n };\n });\n for (let i = 0; i < results.length; ++i) {\n const migration = migrationsToRollback[i];\n try {\n if (migration.down) {\n await migration.down(db);\n await db\n .withPlugin(this.#schemaPlugin)\n .deleteFrom(this.#migrationTable)\n .where('name', '=', migration.name)\n .execute();\n results[i] = {\n migrationName: migration.name,\n direction: 'Down',\n status: 'Success',\n };\n }\n }\n catch (error) {\n results[i] = {\n migrationName: migration.name,\n direction: 'Down',\n status: 'Error',\n };\n throw new MigrationResultSetError({\n error,\n results,\n });\n }\n }\n return { results };\n }\n async #migrateUp(db, state, step) {\n const migrationsToRun = state.pendingMigrations.slice(0, step);\n const results = migrationsToRun.map((migration) => {\n return {\n migrationName: migration.name,\n direction: 'Up',\n status: 'NotExecuted',\n };\n });\n for (let i = 0; i < results.length; i++) {\n const migration = state.pendingMigrations[i];\n try {\n await migration.up(db);\n await db\n .withPlugin(this.#schemaPlugin)\n .insertInto(this.#migrationTable)\n .values({\n name: migration.name,\n timestamp: new Date().toISOString(),\n })\n .execute();\n results[i] = {\n migrationName: migration.name,\n direction: 'Up',\n status: 'Success',\n };\n }\n catch (error) {\n results[i] = {\n migrationName: migration.name,\n direction: 'Up',\n status: 'Error',\n };\n throw new MigrationResultSetError({\n error,\n results,\n });\n }\n }\n return { results };\n }\n async #createIfNotExists(qb) {\n if (this.#props.db.getExecutor().adapter.supportsCreateIfNotExists) {\n qb = qb.ifNotExists();\n }\n await qb.execute();\n }\n}\nclass MigrationResultSetError extends Error {\n #resultSet;\n constructor(result) {\n super();\n this.#resultSet = result;\n }\n get resultSet() {\n return this.#resultSet;\n }\n}\n","/// <reference types=\"./postgres-query-compiler.d.ts\" />\nimport { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';\nconst ID_WRAP_REGEX = /\"/g;\nexport class PostgresQueryCompiler extends DefaultQueryCompiler {\n sanitizeIdentifier(identifier) {\n return identifier.replace(ID_WRAP_REGEX, '\"\"');\n }\n}\n","/// <reference types=\"./postgres-introspector.d.ts\" />\nimport { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, } from '../../migration/migrator.js';\nimport { freeze } from '../../util/object-utils.js';\nimport { sql } from '../../raw-builder/sql.js';\nexport class PostgresIntrospector {\n #db;\n constructor(db) {\n this.#db = db;\n }\n async getSchemas() {\n let rawSchemas = await this.#db\n .selectFrom('pg_catalog.pg_namespace')\n .select('nspname')\n .$castTo()\n .execute();\n return rawSchemas.map((it) => ({ name: it.nspname }));\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n let query = this.#db\n // column\n .selectFrom('pg_catalog.pg_attribute as a')\n // table\n .innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')\n // table schema\n .innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')\n // column data type\n .innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')\n // column data type schema\n .innerJoin('pg_catalog.pg_namespace as dtns', 'typ.typnamespace', 'dtns.oid')\n .select([\n 'a.attname as column',\n 'a.attnotnull as not_null',\n 'a.atthasdef as has_default',\n 'c.relname as table',\n 'c.relkind as table_type',\n 'ns.nspname as schema',\n 'typ.typname as type',\n 'dtns.nspname as type_schema',\n sql `col_description(a.attrelid, a.attnum)`.as('column_description'),\n sql `pg_get_serial_sequence(quote_ident(ns.nspname) || '.' || quote_ident(c.relname), a.attname)`.as('auto_incrementing'),\n ])\n .where('c.relkind', 'in', [\n 'r' /*regular table*/,\n 'v' /*view*/,\n 'p' /*partitioned table*/,\n ])\n .where('ns.nspname', '!~', '^pg_')\n .where('ns.nspname', '!=', 'information_schema')\n // Filter out internal cockroachdb schema\n .where('ns.nspname', '!=', 'crdb_internal')\n // No system columns\n .where('a.attnum', '>=', 0)\n .where('a.attisdropped', '!=', true)\n .orderBy('ns.nspname')\n .orderBy('c.relname')\n .orderBy('a.attnum')\n .$castTo();\n if (!options.withInternalKyselyTables) {\n query = query\n .where('c.relname', '!=', DEFAULT_MIGRATION_TABLE)\n .where('c.relname', '!=', DEFAULT_MIGRATION_LOCK_TABLE);\n }\n const rawColumns = await query.execute();\n return this.#parseTableMetadata(rawColumns);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options),\n };\n }\n #parseTableMetadata(columns) {\n return columns.reduce((tables, it) => {\n let table = tables.find((tbl) => tbl.name === it.table && tbl.schema === it.schema);\n if (!table) {\n table = freeze({\n name: it.table,\n isView: it.table_type === 'v',\n schema: it.schema,\n columns: [],\n });\n tables.push(table);\n }\n table.columns.push(freeze({\n name: it.column,\n dataType: it.type,\n dataTypeSchema: it.type_schema,\n isNullable: !it.not_null,\n isAutoIncrementing: it.auto_incrementing !== null,\n hasDefaultValue: it.has_default,\n comment: it.column_description ?? undefined,\n }));\n return tables;\n }, []);\n }\n}\n","/// <reference types=\"./postgres-adapter.d.ts\" />\nimport { sql } from '../../raw-builder/sql.js';\nimport { DialectAdapterBase } from '../dialect-adapter-base.js';\n// Random id for our transaction lock.\nconst LOCK_ID = BigInt('3853314791062309107');\nexport class PostgresAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return true;\n }\n get supportsReturning() {\n return true;\n }\n async acquireMigrationLock(db, _opt) {\n // Acquire a transaction level advisory lock.\n await sql `select pg_advisory_xact_lock(${sql.lit(LOCK_ID)})`.execute(db);\n }\n async releaseMigrationLock(_db, _opt) {\n // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the\n // end of the transaction and since `supportsTransactionalDdl` true, we know\n // the `db` instance passed to acquireMigrationLock is actually a transaction.\n }\n}\n","/// <reference types=\"./stack-trace-utils.d.ts\" />\nimport { isObject, isString } from './object-utils.js';\nexport function extendStackTrace(err, stackError) {\n if (isStackHolder(err) && stackError.stack) {\n // Remove the first line that just says `Error`.\n const stackExtension = stackError.stack.split('\\n').slice(1).join('\\n');\n err.stack += `\\n${stackExtension}`;\n return err;\n }\n return err;\n}\nfunction isStackHolder(obj) {\n return isObject(obj) && isString(obj.stack);\n}\n","/// <reference types=\"./postgres-driver.d.ts\" />\nimport { parseSavepointCommand } from '../../parser/savepoint-parser.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { isFunction, freeze } from '../../util/object-utils.js';\nimport { createQueryId } from '../../util/query-id.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nconst PRIVATE_RELEASE_METHOD = Symbol();\nexport class PostgresDriver {\n #config;\n #connections = new WeakMap();\n #pool;\n constructor(config) {\n this.#config = freeze({ ...config });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool)\n ? await this.#config.pool()\n : this.#config.pool;\n }\n async acquireConnection() {\n const client = await this.#pool.connect();\n let connection = this.#connections.get(client);\n if (!connection) {\n connection = new PostgresConnection(client, {\n cursor: this.#config.cursor ?? null,\n });\n this.#connections.set(client, connection);\n // The driver must take care of calling `onCreateConnection` when a new\n // connection is created. The `pg` module doesn't provide an async hook\n // for the connection creation. We need to call the method explicitly.\n if (this.#config.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n let sql = 'start transaction';\n if (settings.isolationLevel) {\n sql += ` isolation level ${settings.isolationLevel}`;\n }\n if (settings.accessMode) {\n sql += ` ${settings.accessMode}`;\n }\n await connection.executeQuery(CompiledQuery.raw(sql));\n }\n else {\n await connection.executeQuery(CompiledQuery.raw('begin'));\n }\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('commit'));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('rollback'));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('release', savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD]();\n }\n async destroy() {\n if (this.#pool) {\n const pool = this.#pool;\n this.#pool = undefined;\n await pool.end();\n }\n }\n}\nclass PostgresConnection {\n #client;\n #options;\n constructor(client, options) {\n this.#client = client;\n this.#options = options;\n }\n async executeQuery(compiledQuery) {\n try {\n const { command, rowCount, rows } = await this.#client.query(compiledQuery.sql, [...compiledQuery.parameters]);\n return {\n numAffectedRows: command === 'INSERT' ||\n command === 'UPDATE' ||\n command === 'DELETE' ||\n command === 'MERGE'\n ? BigInt(rowCount)\n : undefined,\n rows: rows ?? [],\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!this.#options.cursor) {\n throw new Error(\"'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.\");\n }\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error('chunkSize must be a positive integer');\n }\n const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters.slice()));\n try {\n while (true) {\n const rows = await cursor.read(chunkSize);\n if (rows.length === 0) {\n break;\n }\n yield {\n rows,\n };\n }\n }\n finally {\n await cursor.close();\n }\n }\n [PRIVATE_RELEASE_METHOD]() {\n this.#client.release();\n }\n}\n","/// <reference types=\"./postgres-dialect.d.ts\" />\nimport { PostgresDriver } from './postgres-driver.js';\nimport { PostgresIntrospector } from './postgres-introspector.js';\nimport { PostgresQueryCompiler } from './postgres-query-compiler.js';\nimport { PostgresAdapter } from './postgres-adapter.js';\n/**\n * PostgreSQL dialect that uses the [pg](https://node-postgres.com/) library.\n *\n * The constructor takes an instance of {@link PostgresDialectConfig}.\n *\n * ```ts\n * import { Pool } from 'pg'\n *\n * new PostgresDialect({\n * pool: new Pool({\n * database: 'some_db',\n * host: 'localhost',\n * })\n * })\n * ```\n *\n * If you want the pool to only be created once it's first used, `pool`\n * can be a function:\n *\n * ```ts\n * import { Pool } from 'pg'\n *\n * new PostgresDialect({\n * pool: async () => new Pool({\n * database: 'some_db',\n * host: 'localhost',\n * })\n * })\n * ```\n */\nexport class PostgresDialect {\n #config;\n constructor(config) {\n this.#config = config;\n }\n createDriver() {\n return new PostgresDriver(this.#config);\n }\n createQueryCompiler() {\n return new PostgresQueryCompiler();\n }\n createAdapter() {\n return new PostgresAdapter();\n }\n createIntrospector(db) {\n return new PostgresIntrospector(db);\n }\n}\n","/// <reference types=\"./postgres.d.ts\" />\nimport { sql } from '../raw-builder/sql.js';\n/**\n * A postgres helper for aggregating a subquery (or other expression) into a JSONB array.\n *\n * ### Examples\n *\n * <!-- siteExample(\"select\", \"Nested array\", 110) -->\n *\n * While kysely is not an ORM and it doesn't have the concept of relations, we do provide\n * helpers for fetching nested objects and arrays in a single query. In this example we\n * use the `jsonArrayFrom` helper to fetch person's pets along with the person's id.\n *\n * Please keep in mind that the helpers under the `kysely/helpers` folder, including\n * `jsonArrayFrom`, are not guaranteed to work with third party dialects. In order for\n * them to work, the dialect must automatically parse the `json` data type into\n * JavaScript JSON values like objects and arrays. Some dialects might simply return\n * the data as a JSON string. In these cases you can use the built in `ParseJSONResultsPlugin`\n * to parse the results.\n *\n * ```ts\n * import { jsonArrayFrom } from 'kysely/helpers/postgres'\n *\n * const result = await db\n * .selectFrom('person')\n * .select((eb) => [\n * 'id',\n * jsonArrayFrom(\n * eb.selectFrom('pet')\n * .select(['pet.id as pet_id', 'pet.name'])\n * .whereRef('pet.owner_id', '=', 'person.id')\n * .orderBy('pet.name')\n * ).as('pets')\n * ])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"id\", (\n * select coalesce(json_agg(agg), '[]') from (\n * select \"pet\".\"id\" as \"pet_id\", \"pet\".\"name\"\n * from \"pet\"\n * where \"pet\".\"owner_id\" = \"person\".\"id\"\n * order by \"pet\".\"name\"\n * ) as agg\n * ) as \"pets\"\n * from \"person\"\n * ```\n */\nexport function jsonArrayFrom(expr) {\n return sql `(select coalesce(json_agg(agg), '[]') from ${expr} as agg)`;\n}\n/**\n * A postgres helper for turning a subquery (or other expression) into a JSON object.\n *\n * The subquery must only return one row.\n *\n * ### Examples\n *\n * <!-- siteExample(\"select\", \"Nested object\", 120) -->\n *\n * While kysely is not an ORM and it doesn't have the concept of relations, we do provide\n * helpers for fetching nested objects and arrays in a single query. In this example we\n * use the `jsonObjectFrom` helper to fetch person's favorite pet along with the person's id.\n *\n * Please keep in mind that the helpers under the `kysely/helpers` folder, including\n * `jsonObjectFrom`, are not guaranteed to work with third-party dialects. In order for\n * them to work, the dialect must automatically parse the `json` data type into\n * JavaScript JSON values like objects and arrays. Some dialects might simply return\n * the data as a JSON string. In these cases you can use the built in `ParseJSONResultsPlugin`\n * to parse the results.\n *\n * ```ts\n * import { jsonObjectFrom } from 'kysely/helpers/postgres'\n *\n * const result = await db\n * .selectFrom('person')\n * .select((eb) => [\n * 'id',\n * jsonObjectFrom(\n * eb.selectFrom('pet')\n * .select(['pet.id as pet_id', 'pet.name'])\n * .whereRef('pet.owner_id', '=', 'person.id')\n * .where('pet.is_favorite', '=', true)\n * ).as('favorite_pet')\n * ])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"id\", (\n * select to_json(obj) from (\n * select \"pet\".\"id\" as \"pet_id\", \"pet\".\"name\"\n * from \"pet\"\n * where \"pet\".\"owner_id\" = \"person\".\"id\"\n * and \"pet\".\"is_favorite\" = $1\n * ) as obj\n * ) as \"favorite_pet\"\n * from \"person\"\n * ```\n */\nexport function jsonObjectFrom(expr) {\n return sql `(select to_json(obj) from ${expr} as obj)`;\n}\n/**\n * The PostgreSQL `json_build_object` function.\n *\n * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.\n * While the produced SQL is compatible with all PostgreSQL databases, some third-party dialects\n * may not parse the nested JSON into objects. In these cases you can use the built in\n * `ParseJSONResultsPlugin` to parse the results.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n * import { jsonBuildObject } from 'kysely/helpers/postgres'\n *\n * const result = await db\n * .selectFrom('person')\n * .select((eb) => [\n * 'id',\n * jsonBuildObject({\n * first: eb.ref('first_name'),\n * last: eb.ref('last_name'),\n * full: sql<string>`first_name || ' ' || last_name`\n * }).as('name')\n * ])\n * .execute()\n *\n * result[0]?.id\n * result[0]?.name.first\n * result[0]?.name.last\n * result[0]?.name.full\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"id\", json_build_object(\n * 'first', first_name,\n * 'last', last_name,\n * 'full', first_name || ' ' || last_name\n * ) as \"name\"\n * from \"person\"\n * ```\n */\nexport function jsonBuildObject(obj) {\n return sql `json_build_object(${sql.join(Object.keys(obj).flatMap((k) => [sql.lit(k), obj[k]]))})`;\n}\n/**\n * The PostgreSQL `merge_action` function.\n *\n * This function can be used in a `returning` clause to get the action that was\n * performed in a `mergeInto` query. The function returns one of the following\n * strings: `'INSERT'`, `'UPDATE'`, or `'DELETE'`.\n *\n * ### Examples\n *\n * ```ts\n * import { mergeAction } from 'kysely/helpers/postgres'\n *\n * const result = await db\n * .mergeInto('person as p')\n * .using('person_backup as pb', 'p.id', 'pb.id')\n * .whenMatched()\n * .thenUpdateSet(({ ref }) => ({\n * first_name: ref('pb.first_name'),\n * updated_at: ref('pb.updated_at').$castTo<string | null>(),\n * }))\n * .whenNotMatched()\n * .thenInsertValues(({ ref}) => ({\n * id: ref('pb.id'),\n * first_name: ref('pb.first_name'),\n * created_at: ref('pb.updated_at'),\n * updated_at: ref('pb.updated_at').$castTo<string | null>(),\n * }))\n * .returning([mergeAction().as('action'), 'p.id', 'p.updated_at'])\n * .execute()\n *\n * result[0].action\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" as \"p\"\n * using \"person_backup\" as \"pb\" on \"p\".\"id\" = \"pb\".\"id\"\n * when matched then update set\n * \"first_name\" = \"pb\".\"first_name\",\n * \"updated_at\" = \"pb\".\"updated_at\"::text\n * when not matched then insert values (\"id\", \"first_name\", \"created_at\", \"updated_at\")\n * values (\"pb\".\"id\", \"pb\".\"first_name\", \"pb\".\"updated_at\", \"pb\".\"updated_at\")\n * returning merge_action() as \"action\", \"p\".\"id\", \"p\".\"updated_at\"\n * ```\n */\nexport function mergeAction() {\n return sql `merge_action()`;\n}\n","var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { Kysely, PostgresDialect, sql } from 'kysely';\nimport { jsonObjectFrom } from 'kysely/helpers/postgres';\nimport { randomBytes } from 'node:crypto';\nimport { readFileSync, writeFileSync } from 'node:fs';\nimport pg from 'pg';\nimport config from './config.js';\nimport * as io from './io.js';\nimport { plugins } from './plugins.js';\nconst sym = Symbol.for('Axium:database');\nexport let database;\nexport function connect() {\n if (database)\n return database;\n if (globalThis[sym])\n return (database = globalThis[sym]);\n database = new Kysely({\n dialect: new PostgresDialect({ pool: new pg.Pool(config.db) }),\n });\n globalThis[sym] = database;\n io.debug('Connected to database!');\n return database;\n}\n// Helpers\nexport async function count(...tables) {\n return await database\n .selectNoFrom(eb => tables.map(t => eb\n .selectFrom(t)\n .select(database.fn.countAll())\n .as(t)))\n .$castTo()\n .executeTakeFirstOrThrow();\n}\n/**\n * Select the user with the id from the userId column of a table, placing it in the `user` property.\n */\nexport function userFromId(builder) {\n const eb = builder;\n return jsonObjectFrom(eb.selectFrom('users').selectAll().whereRef('id', '=', 'userId'))\n .$notNull()\n .$castTo()\n .as('user');\n}\nexport async function statText() {\n try {\n const stats = await count('users', 'passkeys', 'sessions');\n return `${stats.users} users, ${stats.passkeys} passkeys, ${stats.sessions} sessions`;\n }\n catch (error) {\n throw typeof error == 'object' && 'message' in error ? error.message : error;\n }\n}\nexport function shouldRecreate(opt) {\n if (opt.skip) {\n io.warn('already exists. (skipped)');\n return true;\n }\n if (opt.force) {\n io.warn('already exists. (re-creating)');\n return false;\n }\n io.warn('already exists. Use --skip to skip or --force to re-create.');\n throw 2;\n}\nexport async function getHBA(opt) {\n const hbaShowResult = await io.run('Finding pg_hba.conf', `sudo -u postgres psql -c \"SHOW hba_file\"`);\n io.start('Resolving pg_hba.conf path');\n const hbaPath = hbaShowResult.match(/^\\s*(.+\\.conf)\\s*$/m)?.[1]?.trim();\n if (!hbaPath) {\n throw 'failed. You will need to add password-based auth for the axium user manually.';\n }\n io.done();\n io.debug(`Found pg_hba.conf at ${hbaPath}`);\n io.start('Reading HBA configuration');\n const content = readFileSync(hbaPath, 'utf-8');\n io.done();\n const writeBack = (newContent) => {\n io.start('Writing HBA configuration');\n writeFileSync(hbaPath, newContent);\n io.done();\n };\n return [content, writeBack];\n}\nconst pgHba = `\nlocal axium axium md5\nhost axium axium 127.0.0.1/32 md5\nhost axium axium ::1/128 md5\n`;\nconst _sql = (command, message) => io.run(message, `sudo -u postgres psql -c \"${command}\"`);\n/** Shortcut to output a warning if an error is thrown because relation already exists */\nexport const warnExists = io.someWarnings([/\\w+ \"[\\w.]+\" already exists/, 'already exists.']);\nconst throwUnlessRows = (text) => {\n if (text.includes('(0 rows)'))\n throw 'missing.';\n return text;\n};\nexport async function createIndex(table, column, mod) {\n io.start(`Creating index for ${table}.${column}`);\n let query = database.schema.createIndex(`${table}_${column}_index`).on(table).column(column);\n if (mod)\n query = mod(query);\n await query.execute().then(io.done).catch(warnExists);\n}\nexport async function init(opt) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n if (!config.db.password) {\n config.save({ db: { password: randomBytes(32).toString('base64') } }, true);\n io.debug('Generated password and wrote to global config');\n }\n await io.run('Checking for sudo', 'which sudo');\n await io.run('Checking for psql', 'which psql');\n await _sql('CREATE DATABASE axium', 'Creating database').catch(async (error) => {\n if (error != 'database \"axium\" already exists')\n throw error;\n if (shouldRecreate(opt))\n return;\n await _sql('DROP DATABASE axium', 'Dropping database');\n await _sql('CREATE DATABASE axium', 'Re-creating database');\n });\n const createQuery = `CREATE USER axium WITH ENCRYPTED PASSWORD '${config.db.password}' LOGIN`;\n await _sql(createQuery, 'Creating user').catch(async (error) => {\n if (error != 'role \"axium\" already exists')\n throw error;\n if (shouldRecreate(opt))\n return;\n await _sql('REVOKE ALL PRIVILEGES ON SCHEMA public FROM axium', 'Revoking schema privileges');\n await _sql('DROP USER axium', 'Dropping user');\n await _sql(createQuery, 'Re-creating user');\n });\n await _sql('GRANT ALL PRIVILEGES ON DATABASE axium TO axium', 'Granting database privileges');\n await _sql('GRANT ALL PRIVILEGES ON SCHEMA public TO axium', 'Granting schema privileges');\n await _sql('ALTER DATABASE axium OWNER TO axium', 'Setting database owner');\n await getHBA(opt)\n .then(([content, writeBack]) => {\n io.start('Checking for Axium HBA configuration');\n if (content.includes(pgHba))\n throw 'already exists.';\n io.done();\n io.start('Adding Axium HBA configuration');\n const newContent = content.replace(/^local\\s+all\\s+all.*$/m, `$&\\n${pgHba}`);\n io.done();\n writeBack(newContent);\n })\n .catch(io.warn);\n await _sql('SELECT pg_reload_conf()', 'Reloading configuration');\n io.start('Connecting to database');\n const _ = __addDisposableResource(env_1, connect(), true);\n io.done();\n function maybeCheck(table) {\n return (e) => {\n warnExists(e);\n if (opt.check)\n return checkTableTypes(table, expectedTypes[table], opt);\n };\n }\n io.start('Creating table users');\n await database.schema\n .createTable('users')\n .addColumn('id', 'uuid', col => col.primaryKey().defaultTo(sql `gen_random_uuid()`))\n .addColumn('name', 'text')\n .addColumn('email', 'text', col => col.unique().notNull())\n .addColumn('emailVerified', 'timestamptz')\n .addColumn('image', 'text')\n .addColumn('isAdmin', 'boolean', col => col.notNull().defaultTo(false))\n .addColumn('roles', sql `text[]`, col => col.notNull().defaultTo(sql `'{}'::text[]`))\n .addColumn('tags', sql `text[]`, col => col.notNull().defaultTo(sql `'{}'::text[]`))\n .addColumn('preferences', 'jsonb', col => col.notNull().defaultTo('{}'))\n .addColumn('registeredAt', 'timestamptz', col => col.notNull().defaultTo(sql `now()`))\n .addColumn('isSuspended', 'boolean', col => col.notNull().defaultTo(false))\n .execute()\n .then(io.done)\n .catch(maybeCheck('users'));\n io.start('Creating table sessions');\n await database.schema\n .createTable('sessions')\n .addColumn('id', 'uuid', col => col.primaryKey().defaultTo(sql `gen_random_uuid()`))\n .addColumn('userId', 'uuid', col => col.references('users.id').onDelete('cascade').notNull())\n .addColumn('token', 'text', col => col.notNull().unique())\n .addColumn('created', 'timestamptz', col => col.notNull().defaultTo(sql `now()`))\n .addColumn('expires', 'timestamptz', col => col.notNull())\n .addColumn('elevated', 'boolean', col => col.notNull())\n .execute()\n .then(io.done)\n .catch(maybeCheck('sessions'));\n await createIndex('sessions', 'id');\n io.start('Creating table verifications');\n await database.schema\n .createTable('verifications')\n .addColumn('userId', 'uuid', col => col.references('users.id').onDelete('cascade').notNull())\n .addColumn('token', 'text', col => col.notNull().unique())\n .addColumn('expires', 'timestamptz', col => col.notNull())\n .addColumn('role', 'text', col => col.notNull())\n .execute()\n .then(io.done)\n .catch(maybeCheck('verifications'));\n io.start('Creating table passkeys');\n await database.schema\n .createTable('passkeys')\n .addColumn('id', 'text', col => col.primaryKey().notNull())\n .addColumn('name', 'text')\n .addColumn('createdAt', 'timestamptz', col => col.notNull().defaultTo(sql `now()`))\n .addColumn('userId', 'uuid', col => col.notNull().references('users.id').onDelete('cascade').notNull())\n .addColumn('publicKey', 'bytea', col => col.notNull())\n .addColumn('counter', 'integer', col => col.notNull())\n .addColumn('deviceType', 'text', col => col.notNull())\n .addColumn('backedUp', 'boolean', col => col.notNull())\n .addColumn('transports', sql `text[]`)\n .execute()\n .then(io.done)\n .catch(maybeCheck('passkeys'));\n await createIndex('passkeys', 'userId');\n io.start('Creating table audit_log');\n await database.schema\n .createTable('audit_log')\n .addColumn('id', 'uuid', col => col.primaryKey().defaultTo(sql `gen_random_uuid()`))\n .addColumn('timestamp', 'timestamptz', col => col.notNull().defaultTo(sql `now()`))\n .addColumn('userId', 'uuid')\n .addColumn('severity', 'integer', col => col.notNull())\n .addColumn('name', 'text', col => col.notNull())\n .addColumn('source', 'text', col => col.notNull())\n .addColumn('tags', sql `text[]`, col => col.notNull().defaultTo(sql `'{}'::text[]`))\n .addColumn('extra', 'jsonb', col => col.notNull().defaultTo('{}'))\n .execute()\n .then(io.done)\n .catch(maybeCheck('audit_log'));\n io.start('Creating schema acl');\n await database.schema.createSchema('acl').execute().then(io.done).catch(warnExists);\n for (const plugin of plugins) {\n if (!plugin.hooks.db_init)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.db_init(opt);\n }\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nexport const expectedTypes = {\n users: {\n email: { type: 'text', required: true },\n emailVerified: { type: 'timestamptz' },\n id: { type: 'uuid', required: true, hasDefault: true },\n image: { type: 'text' },\n isAdmin: { type: 'bool', required: true, hasDefault: true },\n name: { type: 'text' },\n preferences: { type: 'jsonb', required: true, hasDefault: true },\n registeredAt: { type: 'timestamptz', required: true, hasDefault: true },\n roles: { type: '_text', required: true, hasDefault: true },\n tags: { type: '_text', required: true, hasDefault: true },\n isSuspended: { type: 'bool', required: true, hasDefault: true },\n },\n verifications: {\n userId: { type: 'uuid', required: true },\n token: { type: 'text', required: true },\n expires: { type: 'timestamptz', required: true },\n role: { type: 'text', required: true },\n },\n passkeys: {\n id: { type: 'text', required: true },\n name: { type: 'text' },\n createdAt: { type: 'timestamptz', required: true, hasDefault: true },\n userId: { type: 'uuid', required: true },\n publicKey: { type: 'bytea', required: true },\n counter: { type: 'int4', required: true },\n deviceType: { type: 'text', required: true },\n backedUp: { type: 'bool', required: true },\n transports: { type: '_text' },\n },\n sessions: {\n id: { type: 'uuid', required: true, hasDefault: true },\n userId: { type: 'uuid', required: true },\n created: { type: 'timestamptz', required: true, hasDefault: true },\n token: { type: 'text', required: true },\n expires: { type: 'timestamptz', required: true },\n elevated: { type: 'bool', required: true },\n },\n audit_log: {\n userId: { type: 'uuid' },\n timestamp: { type: 'timestamptz', required: true, hasDefault: true },\n id: { type: 'uuid', required: true, hasDefault: true },\n severity: { type: 'int4', required: true },\n name: { type: 'text', required: true },\n source: { type: 'text', required: true },\n tags: { type: '_text', required: true, hasDefault: true },\n extra: { type: 'jsonb', required: true, hasDefault: true },\n },\n};\n/**\n * Checks that a table has the expected column types, nullability, and default values.\n */\nexport async function checkTableTypes(tableName, types, opt) {\n io.start(`Checking for table ${tableName}`);\n const dbTables = opt._metadata || (await database.introspection.getTables());\n const table = dbTables.find(t => (t.schema == 'public' ? t.name : `${t.schema}.${t.name}`) === tableName);\n if (!table)\n throw 'missing.';\n io.done();\n const columns = Object.fromEntries(table.columns.map(c => [c.name, c]));\n for (const [key, { type, required = false, hasDefault = false }] of Object.entries(types)) {\n io.start(`Checking column ${tableName}.${key}`);\n const col = columns[key];\n if (!col)\n throw 'missing.';\n try {\n if (col.dataType != type)\n throw `incorrect type \"${col.dataType}\", expected ${type}`;\n if (col.isNullable != !required)\n throw required ? 'nullable' : 'not nullable';\n if (col.hasDefaultValue != hasDefault)\n throw hasDefault ? 'missing default' : 'has default';\n io.done();\n }\n catch (e) {\n if (opt.strict)\n throw e;\n io.warn(e);\n }\n delete columns[key];\n }\n if (!opt.extra)\n return;\n io.start('Checking for extra columns in ' + tableName);\n const unchecked = Object.keys(columns)\n .map(c => `${tableName}.${c}`)\n .join(', ');\n if (!unchecked.length)\n io.done();\n else if (opt.strict)\n throw unchecked;\n else\n io.warn(unchecked);\n}\nexport async function check(opt) {\n const env_2 = { stack: [], error: void 0, hasError: false };\n try {\n await io.run('Checking for sudo', 'which sudo');\n await io.run('Checking for psql', 'which psql');\n await _sql(`SELECT 1 FROM pg_database WHERE datname = 'axium'`, 'Checking for database').then(throwUnlessRows);\n await _sql(`SELECT 1 FROM pg_roles WHERE rolname = 'axium'`, 'Checking for user').then(throwUnlessRows);\n io.start('Connecting to database');\n const _ = __addDisposableResource(env_2, connect(), true);\n io.done();\n io.start('Getting table metadata');\n opt._metadata = await database.introspection.getTables();\n const tables = Object.fromEntries(opt._metadata.map(t => [t.name, t]));\n io.done();\n for (const table of Object.keys(expectedTypes)) {\n await checkTableTypes(table, expectedTypes[table], opt);\n delete tables[table];\n }\n io.start('Checking for extra tables');\n const unchecked = Object.keys(tables).join(', ');\n if (!unchecked.length)\n io.done();\n else if (opt.strict)\n throw unchecked;\n else\n io.warn(unchecked);\n }\n catch (e_2) {\n env_2.error = e_2;\n env_2.hasError = true;\n }\n finally {\n const result_2 = __disposeResources(env_2);\n if (result_2)\n await result_2;\n }\n}\nexport async function clean(opt) {\n const now = new Date();\n io.start('Removing expired sessions');\n await database.deleteFrom('sessions').where('sessions.expires', '<', now).execute().then(io.done);\n io.start('Removing expired verifications');\n await database.deleteFrom('verifications').where('verifications.expires', '<', now).execute().then(io.done);\n for (const plugin of plugins) {\n if (!plugin.hooks.clean)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.clean(opt);\n }\n}\n/**\n * Completely remove Axium from the database.\n */\nexport async function uninstall(opt) {\n for (const plugin of plugins) {\n if (!plugin.hooks.remove)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.remove(opt);\n }\n await _sql('DROP DATABASE axium', 'Dropping database');\n await _sql('REVOKE ALL PRIVILEGES ON SCHEMA public FROM axium', 'Revoking schema privileges');\n await _sql('DROP USER axium', 'Dropping user');\n await getHBA(opt)\n .then(([content, writeBack]) => {\n io.start('Checking for Axium HBA configuration');\n if (!content.includes(pgHba))\n throw 'missing.';\n io.done();\n io.start('Removing Axium HBA configuration');\n const newContent = content.replace(pgHba, '');\n io.done();\n writeBack(newContent);\n })\n .catch(io.warn);\n}\n/**\n * Removes all data from tables.\n */\nexport async function wipe(opt) {\n for (const plugin of plugins) {\n if (!plugin.hooks.db_wipe)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.db_wipe(opt);\n }\n for (const table of ['users', 'passkeys', 'sessions', 'verifications']) {\n io.start(`Wiping ${table}`);\n await database.deleteFrom(table).execute();\n io.done();\n }\n for (const table of await database.introspection.getTables()) {\n if (!table.name.startsWith('acl.'))\n continue;\n const name = table.name;\n io.debug(`Wiping ${name}`);\n await database.deleteFrom(name).execute();\n }\n}\nexport async function rotatePassword() {\n io.start('Generating new password');\n const password = randomBytes(32).toString('base64');\n io.done();\n io.start('Updating global config');\n config.save({ db: { password } }, true);\n io.done();\n await _sql(`ALTER USER axium WITH ENCRYPTED PASSWORD '${password}'`, 'Updating database user password');\n}\n","import { styleText } from 'node:util';\nimport { capitalize, omit } from 'utilium';\nimport * as z from 'zod';\nimport config from './config.js';\nimport { database } from './database.js';\nimport * as io from './io.js';\nexport var Severity;\n(function (Severity) {\n Severity[Severity[\"Emergency\"] = 0] = \"Emergency\";\n Severity[Severity[\"Alert\"] = 1] = \"Alert\";\n Severity[Severity[\"Critical\"] = 2] = \"Critical\";\n Severity[Severity[\"Error\"] = 3] = \"Error\";\n Severity[Severity[\"Warning\"] = 4] = \"Warning\";\n Severity[Severity[\"Notice\"] = 5] = \"Notice\";\n Severity[Severity[\"Info\"] = 6] = \"Info\";\n Severity[Severity[\"Debug\"] = 7] = \"Debug\";\n})(Severity || (Severity = {}));\nconst severityFormat = {\n [Severity.Emergency]: ['bgRedBright', 'white', 'underline'],\n [Severity.Alert]: ['bgRedBright', 'white'],\n [Severity.Critical]: ['bold', 'redBright'],\n [Severity.Error]: 'redBright',\n [Severity.Warning]: 'yellowBright',\n [Severity.Notice]: 'cyanBright',\n [Severity.Info]: [],\n [Severity.Debug]: ['dim'],\n};\nexport function styleSeverity(sev, align = false) {\n const text = align ? Severity[sev].padEnd(9) : Severity[sev];\n return styleText(severityFormat[sev], text.toUpperCase());\n}\nfunction output(event) {\n if (event.severity > Severity[capitalize(config.audit.min_severity)])\n return;\n console.error('[audit]', styleText('dim', io.prettyDate(event.timestamp)), styleSeverity(event.severity), event.name);\n}\nexport async function audit_raw(event) {\n if (!config.audit.allow_raw) {\n io.warn('[audit] Ignoring raw event (disabled)');\n return;\n }\n const result = await database.insertInto('audit_log').values(event).returningAll().executeTakeFirstOrThrow();\n output(result);\n}\nconst events = new Map();\nexport function addEvent(init) {\n if (events.has(init.name))\n throw io.error(`Can not register multiple events with the same name (\"${init.name}\")`);\n const config = {\n ...init,\n extra: init.extra ? z.object(init.extra) : undefined,\n };\n events.set(init.name, config);\n}\nexport async function audit(eventName, userId, extra) {\n const cfg = events.get(eventName);\n if (!cfg) {\n io.warn('Ignoring audit event with unknown event name: ' + eventName);\n return;\n }\n try {\n if (cfg.extra)\n extra = cfg.extra.parse(extra);\n }\n catch (e) {\n io.error('Audit event has invalid extra data: ' + eventName);\n return;\n }\n const event = await database\n .insertInto('audit_log')\n .values({ ...omit(cfg, 'extra'), extra, userId })\n .returningAll()\n .executeTakeFirstOrThrow();\n output(event);\n if (userId && !cfg.noAutoSuspend && event.severity < Severity[capitalize(config.audit.auto_suspend)]) {\n await database\n .updateTable('users')\n .set({ isSuspended: true })\n .where('id', '=', userId)\n .returningAll()\n .executeTakeFirstOrThrow()\n .then(user => console.error('[audit] Auto-suspended user:', user.id, `<${user.email}>`))\n .catch(() => null);\n }\n}\nexport async function getEvents(filter) {\n let query = database.selectFrom('audit_log').selectAll();\n if ('user' in filter && !filter.user)\n query = query.where('userId', 'is', null);\n else if (filter.user)\n query = query.where('userId', '=', filter.user);\n if (filter.source)\n query = query.where('source', '=', filter.source);\n if (filter.event)\n query = query.where('name', '=', filter.event);\n if (filter.tags)\n query = query.where('tags', '@>', filter.tags);\n if (filter.severity)\n query = query.where('severity', '<=', filter.severity);\n if (filter.since)\n query = query.where('timestamp', '>=', filter.since);\n if (filter.until)\n query = query.where('timestamp', '<=', filter.until);\n return await query.execute();\n}\n// Register built-ins\naddEvent({ source: '@axium/server', name: 'user_created', severity: Severity.Info, tags: ['user'] });\naddEvent({ source: '@axium/server', name: 'user_deleted', severity: Severity.Info, tags: ['user'] });\naddEvent({ source: '@axium/server', name: 'new_session', severity: Severity.Info, tags: ['user'], extra: { id: z.string() } });\naddEvent({ source: '@axium/server', name: 'logout', severity: Severity.Info, tags: ['user'], extra: { sessions: z.array(z.string()) } });\naddEvent({\n source: '@axium/server',\n name: 'admin_change',\n severity: Severity.Notice,\n tags: ['cli'],\n extra: { user: z.string() },\n});\naddEvent({\n source: '@axium/server',\n name: 'acl_id_mismatch',\n severity: Severity.Critical,\n tags: ['acl', 'auth'],\n extra: { item: z.string() },\n noAutoSuspend: true,\n});\n","import { userProtectedFields, userPublicFields } from '@axium/core/user';\nimport { serialize as serializeCookie } from 'cookie';\nimport { pick } from 'utilium';\nimport * as z from 'zod';\nimport { createSession } from './auth.js';\nimport { config } from './config.js';\nexport function isResponseError(e) {\n return e instanceof Error && e.name === 'ResponseError' && typeof e.status === 'number';\n}\nexport function error(status, message) {\n const error = Object.assign(new Error(message), { status });\n error.name = 'ResponseError';\n throw error;\n}\nexport function isRedirect(e) {\n return typeof e === 'object' && e !== null && 'location' in e && 'status' in e;\n}\n/**\n * Use `Response.redirect` if you can.\n * This should only when `return`ing a `Response` is not possible.\n */\nexport function redirect(location, status = 302) {\n throw { location, status };\n}\nexport function json(data, init) {\n const response = Response.json(data, init);\n if (!response.headers.has('content-length')) {\n response.headers.set('content-length', JSON.stringify(data).length.toString());\n }\n return response;\n}\nexport async function parseBody(event, schema) {\n const contentType = event.request.headers.get('content-type');\n if (!contentType || !contentType.includes('application/json'))\n error(415, 'Invalid content type');\n const body = await event.request.json().catch(() => error(415, 'Invalid JSON'));\n try {\n return schema.parse(body);\n }\n catch (e) {\n error(400, e instanceof z.core.$ZodError ? z.prettifyError(e) : 'invalid body');\n }\n}\nexport function getToken(event, sensitive = false) {\n const header_token = event.request.headers.get('Authorization')?.replace('Bearer ', '');\n if (header_token)\n return header_token;\n if (config.debug || !config.auth.header_only) {\n return event.cookies.get(sensitive ? 'elevated_token' : 'session_token');\n }\n}\nexport async function createSessionData(userId, elevated = false) {\n const { token, expires } = await createSession(userId, elevated);\n const response = json({ userId, token: elevated ? '[[redacted:elevated]]' : token }, { status: 201 });\n const cookies = serializeCookie(elevated ? 'elevated_token' : 'session_token', token, {\n httpOnly: true,\n path: '/',\n expires,\n secure: config.auth.secure_cookies,\n sameSite: 'lax',\n });\n response.headers.set('Set-Cookie', cookies);\n return response;\n}\nexport function stripUser(user, includeProtected = false) {\n return pick(user, ...userPublicFields, ...(includeProtected ? userProtectedFields : []));\n}\nexport function withError(text, code = 500) {\n return function (e) {\n if (e.name == 'ResponseError')\n throw e;\n error(code, text + (config.debug && e.message ? `: ${e.message}` : ''));\n };\n}\nexport async function handleAPIRequest(event, route) {\n const method = event.request.method;\n const _warnings = [];\n if (route.api && !event.request.headers.get('Accept')?.includes('application/json')) {\n _warnings.push('Only application/json is supported');\n event.request.headers.set('Accept', 'application/json');\n }\n for (const [key, type] of Object.entries(route.params || {})) {\n if (!type)\n continue;\n try {\n event.params[key] = type.parse(event.params[key]);\n }\n catch (e) {\n error(400, `Invalid parameter: ${e instanceof z.core.$ZodError ? z.prettifyError(e) : '<unknown error>'}`);\n }\n }\n if (typeof route[method] != 'function')\n error(405, `Method ${method} not allowed for ${route.path}`);\n const result = await route[method](event);\n if (result instanceof Response)\n return result;\n if (typeof result == 'object' || typeof result == 'function') {\n result._warnings ||= [];\n result._warnings.push(..._warnings);\n }\n return json(result);\n}\nexport function handleResponseError(e) {\n if (isResponseError(e))\n return json({ message: e.message }, { status: e.status });\n if (isRedirect(e))\n return Response.redirect(e.location, e.status);\n console.error(e);\n return json({ message: 'Internal Error' + (config.debug ? ': ' + e.message : '') }, { status: 500 });\n}\nexport const noCacheHeaders = {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\n Pragma: 'no-cache',\n Expires: '0',\n};\n","import { randomBytes, randomUUID } from 'node:crypto';\nimport { omit } from 'utilium';\nimport * as acl from './acl.js';\nimport { audit } from './audit.js';\nimport { database as db, userFromId } from './database.js';\nimport { error, getToken, withError } from './requests.js';\nexport async function getUser(id) {\n return await db.selectFrom('users').selectAll().where('id', '=', id).executeTakeFirstOrThrow();\n}\nexport async function updateUser({ id, ...user }) {\n const query = db.updateTable('users').set(user).where('id', '=', id);\n return await query.returningAll().executeTakeFirstOrThrow();\n}\nconst in30days = () => new Date(Date.now() + 2592000000);\nconst in10minutes = () => new Date(Date.now() + 600000);\nexport async function createSession(userId, elevated = false) {\n const session = {\n id: randomUUID(),\n userId,\n token: randomBytes(64).toString('base64'),\n expires: elevated ? in10minutes() : in30days(),\n elevated,\n created: new Date(),\n };\n await db.insertInto('sessions').values(session).execute();\n await audit('new_session', userId, { id: session.id });\n return session;\n}\nexport async function getSessionAndUser(token) {\n const result = await db\n .selectFrom('sessions')\n .selectAll()\n .select(userFromId)\n .where('sessions.token', '=', token)\n .where('sessions.expires', '>', new Date())\n .executeTakeFirstOrThrow();\n if (!result.user)\n throw new Error('Session references non-existing user');\n return result;\n}\nexport async function getSession(sessionId) {\n return await db\n .selectFrom('sessions')\n .selectAll()\n .where('id', '=', sessionId)\n .where('sessions.expires', '>', new Date())\n .executeTakeFirstOrThrow();\n}\nexport async function getSessions(userId) {\n return await db.selectFrom('sessions').selectAll().where('userId', '=', userId).where('sessions.expires', '>', new Date()).execute();\n}\n/**\n * Create a verification\n * @param expires How long the token should be valid for in seconds\n */\nexport async function createVerification(role, userId, expires) {\n const token = randomBytes(64).toString('base64url');\n const verification = { userId, token, expires: new Date(Date.now() + expires * 1000), role };\n await db.insertInto('verifications').values(verification).executeTakeFirstOrThrow();\n setTimeout(() => {\n void db.deleteFrom('verifications').where('verifications.token', '=', verification.token).execute();\n }, expires * 1000);\n return verification;\n}\nexport async function useVerification(role, userId, token) {\n const query = db\n .deleteFrom('verifications')\n .where('verifications.token', '=', token)\n .where('verifications.userId', '=', userId)\n .where('verifications.role', '=', role);\n return await query.returningAll().executeTakeFirst();\n}\nexport async function getPasskey(id) {\n return await db.selectFrom('passkeys').selectAll().where('id', '=', id).executeTakeFirstOrThrow();\n}\nexport async function createPasskey(passkey) {\n const result = await db.insertInto('passkeys').values(passkey).returningAll().executeTakeFirstOrThrow();\n return result;\n}\nexport async function getPasskeysByUserId(userId) {\n return await db.selectFrom('passkeys').selectAll().where('userId', '=', userId).execute();\n}\nexport async function updatePasskeyCounter(id, newCounter) {\n await db.updateTable('passkeys').set({ counter: newCounter }).where('id', '=', id).executeTakeFirstOrThrow();\n const passkey = await getPasskey(id);\n if (!passkey)\n throw new Error('Passkey not found');\n return passkey;\n}\nexport async function checkAuthForUser(event, userId, sensitive = false) {\n const token = getToken(event, sensitive);\n if (!token)\n throw error(401, 'Missing token');\n const session = await getSessionAndUser(token).catch(withError('Invalid or expired session', 401));\n if (session.user.isSuspended)\n error(403, 'User is suspended');\n if (session.userId !== userId) {\n if (!session.user?.isAdmin)\n error(403, 'User ID mismatch');\n // Admins are allowed to manage other users.\n const accessor = session.user;\n session.user = await getUser(userId).catch(withError('Target user not found', 404));\n return Object.assign(session, { accessor });\n }\n if (!session.elevated && sensitive)\n error(403, 'This token can not be used for sensitive actions');\n return Object.assign(session, { accessor: session.user });\n}\nexport async function checkAuthForItem(event, itemType, itemId, permission) {\n const token = getToken(event, false);\n if (!token)\n error(401, 'Missing token');\n const session = await getSessionAndUser(token).catch(() => null);\n const item = await db\n .selectFrom(itemType)\n .selectAll()\n .where('id', '=', itemId)\n .$if(!!session, eb => eb.select(acl.from(itemType, { onlyId: session.userId })))\n .$castTo()\n .executeTakeFirstOrThrow()\n .catch(withError('Item not found', 404));\n const result = {\n session: session ? omit(session, 'user') : undefined,\n item: omit(item, 'acl'),\n user: session?.user,\n fromACL: false,\n };\n if (item.publicPermission >= permission)\n return result;\n if (!session)\n error(403, 'Access denied');\n if (session.user.isSuspended)\n error(403, 'User is suspended');\n if (session.userId == item.userId)\n return result;\n result.fromACL = true;\n if (!item.acl || !item.acl.length)\n error(403, 'Access denied');\n const [control] = item.acl;\n if (control.userId !== session.userId) {\n await audit('acl_id_mismatch', session.userId, { item: itemId });\n error(500, 'Access control entry does not match session user');\n }\n if (control.permission >= permission)\n return result;\n error(403, 'Access denied');\n}\n","import { apps } from './apps.js';\nimport config from './config.js';\nimport { output } from './io.js';\nimport { _unique } from './state.js';\n/**\n * @internal\n */\nexport const routes = _unique('routes', new Map());\n/**\n * @category Plugin API\n */\nexport function addRoute(opt) {\n const route = { ...opt, server: !('page' in opt) };\n if (!route.path.startsWith('/')) {\n throw new Error(`Route path must start with a slash: ${route.path}`);\n }\n if (route.path.startsWith('/api/'))\n route.api = true;\n if (route.api && !route.server)\n throw new Error(`API routes cannot have a client page: ${route.path}`);\n routes.set(route.path, route);\n output.debug('Added route: ' + route.path);\n}\n/**\n * Resolve a request URL into a route.\n * This handles parsing of parameters in the URL.\n */\nexport function resolveRoute(event) {\n const { pathname } = event.url;\n if (routes.has(pathname) && !pathname.split('/').some(p => p.startsWith(':')))\n return routes.get(pathname);\n // Otherwise we must have a parameterized route\n _routes: for (const route of routes.values()) {\n const params = {};\n // Split the path and route into parts, zipped together\n const pathParts = pathname.split('/').filter(Boolean);\n // Skips routes in disabled apps\n if (apps.has(pathParts[0]) && config.apps.disabled.includes(pathParts[0]))\n continue;\n for (const routePart of route.path.split('/').filter(Boolean)) {\n const pathPart = pathParts.shift();\n if (!pathPart)\n continue _routes;\n if (pathPart == routePart)\n continue;\n if (!routePart.startsWith(':'))\n continue _routes;\n params[routePart.slice(1)] = pathPart;\n }\n // we didn't find a match, since an exact match would have been found already\n if (pathParts.length || !Object.keys(params).length)\n continue;\n event.params = params;\n return route;\n }\n}\n","import { requestMethods } from '@axium/core/requests';\nimport pkg from '../../package.json' with { type: 'json' };\nimport { apps } from '../apps.js';\nimport { getSessionAndUser } from '../auth.js';\nimport { config } from '../config.js';\nimport { plugins } from '../plugins.js';\nimport { error, getToken } from '../requests.js';\nimport { addRoute, routes } from '../routes.js';\naddRoute({\n path: '/api/metadata',\n async GET(event) {\n if (!config.debug) {\n const token = getToken(event);\n if (!token)\n error(401, 'Missing session token');\n const session = await getSessionAndUser(token);\n if (!session)\n error(401, 'Invalid session');\n if (!session.user.isAdmin)\n error(403, 'User is not an administrator');\n if (session.user.isSuspended)\n error(403, 'User is suspended');\n }\n return {\n version: pkg.version,\n routes: Object.fromEntries(routes\n .entries()\n .filter(([path]) => path.startsWith('/api/'))\n .map(([path, route]) => [\n path,\n {\n params: Object.fromEntries(Object.entries(route.params || {}).map(([key, type]) => [key, type ? type.def.type : null])),\n methods: requestMethods.filter(m => m in route),\n },\n ])),\n plugins: Object.fromEntries(plugins.values().map(plugin => [plugin.name, plugin.version])),\n };\n },\n});\naddRoute({\n path: '/api/apps',\n async GET(event) {\n const result = [];\n for (const app of apps.values()) {\n if (config.apps.disabled.includes(app.id))\n continue;\n result.push(app);\n }\n return result;\n },\n});\n","import { PasskeyChangeable } from '@axium/core/passkeys';\nimport { omit } from 'utilium';\nimport * as z from 'zod';\nimport { checkAuthForUser, getPasskey } from '../auth.js';\nimport { database as db } from '../database.js';\nimport { error, parseBody, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\naddRoute({\n path: '/api/passkeys/:id',\n params: {\n id: z.string(),\n },\n async GET(event) {\n const passkey = await getPasskey(event.params.id);\n await checkAuthForUser(event, passkey.userId);\n return omit(passkey, 'counter', 'publicKey');\n },\n async PATCH(event) {\n const body = await parseBody(event, PasskeyChangeable);\n const passkey = await getPasskey(event.params.id);\n await checkAuthForUser(event, passkey.userId);\n const result = await db\n .updateTable('passkeys')\n .set(body)\n .where('id', '=', passkey.id)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Could not update passkey'));\n return omit(result, 'counter', 'publicKey');\n },\n async DELETE(event) {\n const passkey = await getPasskey(event.params.id);\n await checkAuthForUser(event, passkey.userId);\n const { count } = await db\n .selectFrom('passkeys')\n .select(db.fn.countAll().as('count'))\n .where('userId', '=', passkey.userId)\n .executeTakeFirstOrThrow();\n if (Number(count) <= 1)\n error(409, 'At least one passkey is required');\n const result = await db\n .deleteFrom('passkeys')\n .where('id', '=', passkey.id)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Could not delete passkey'));\n return omit(result, 'counter', 'publicKey');\n },\n});\n","import { UserRegistration } from '@axium/core/user';\nimport { generateRegistrationOptions, verifyRegistrationResponse } from '@simplewebauthn/server';\nimport { randomUUID } from 'node:crypto';\nimport * as z from 'zod';\nimport { audit } from '../audit.js';\nimport { createPasskey, getUser } from '../auth.js';\nimport config from '../config.js';\nimport { database as db } from '../database.js';\nimport { createSessionData, error, parseBody, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\n// Map of user ID => challenge\nconst registrations = new Map();\nasync function OPTIONS(event) {\n if (!config.allow_new_users)\n error(409, 'New user registration is disabled');\n const { name, email } = await parseBody(event, z.object({ name: z.string().optional(), email: z.email().optional() }));\n const userId = randomUUID();\n const user = await getUser(userId).catch(() => null);\n if (user)\n error(409, 'Generated UUID is already in use, please retry.');\n const options = await generateRegistrationOptions({\n rpName: config.auth.rp_name,\n rpID: config.auth.rp_id,\n userName: email ?? userId,\n userDisplayName: name,\n attestationType: 'none',\n excludeCredentials: [],\n authenticatorSelection: {\n residentKey: 'preferred',\n userVerification: 'preferred',\n authenticatorAttachment: 'platform',\n },\n });\n registrations.set(userId, options.challenge);\n return { userId, options };\n}\nasync function POST(event) {\n if (!config.allow_new_users)\n error(409, 'New user registration is disabled');\n const { userId, email, name, response } = await parseBody(event, UserRegistration);\n const existing = await db.selectFrom('users').selectAll().where('email', '=', email.toLowerCase()).executeTakeFirst();\n if (existing)\n error(409, 'Email already in use');\n const expectedChallenge = registrations.get(userId);\n if (!expectedChallenge)\n error(404, 'No registration challenge found for this user');\n registrations.delete(userId);\n const { verified, registrationInfo } = await verifyRegistrationResponse({\n response,\n expectedChallenge,\n expectedOrigin: config.auth.origin,\n }).catch(() => error(400, 'Verification failed'));\n if (!verified || !registrationInfo)\n error(401, 'Verification failed');\n await db\n .insertInto('users')\n .values({ id: userId, name, email: email.toLowerCase() })\n .executeTakeFirstOrThrow()\n .catch(withError('Failed to create user'));\n await audit('user_created', userId);\n await createPasskey({\n transports: [],\n ...registrationInfo.credential,\n userId,\n deviceType: registrationInfo.credentialDeviceType,\n backedUp: registrationInfo.credentialBackedUp,\n }).catch(withError('Failed to create passkey', 500));\n return await createSessionData(userId);\n}\naddRoute({\n path: '/api/register',\n params: {},\n OPTIONS,\n POST,\n});\n","import { omit } from 'utilium';\nimport { getSessionAndUser } from '../auth.js';\nimport { database as db } from '../database.js';\nimport { error, getToken, stripUser, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\nimport { audit } from '../audit.js';\naddRoute({\n path: '/api/session',\n async GET(event) {\n const token = getToken(event);\n if (!token)\n error(401, 'Missing token');\n const result = await getSessionAndUser(token).catch(withError('Invalid session', 400));\n return {\n ...omit(result, 'token'),\n user: stripUser(result.user, true),\n };\n },\n async DELETE(event) {\n const token = getToken(event);\n if (!token)\n error(401, 'Missing token');\n const result = await db\n .deleteFrom('sessions')\n .where('sessions.token', '=', token)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch((e) => (e.message == 'no result' ? error(404, 'Session does not exist') : error(400, 'Invalid session')));\n await audit('logout', result.userId, { sessions: [result.id] });\n return omit(result, 'token');\n },\n});\n","/** Register a new passkey for a new or existing user. */\nimport { preferenceDefaults, preferenceSchemas } from '@axium/core';\nimport { PasskeyAuthenticationResponse, PasskeyRegistration } from '@axium/core/passkeys';\nimport { LogoutSessions, UserAuthOptions, UserChangeable } from '@axium/core/user';\nimport * as webauthn from '@simplewebauthn/server';\nimport { omit, pick } from 'utilium';\nimport * as z from 'zod';\nimport { audit } from '../audit.js';\nimport { checkAuthForUser, createPasskey, createVerification, getPasskey, getPasskeysByUserId, getSessions, getUser, useVerification, } from '../auth.js';\nimport { config } from '../config.js';\nimport { database as db } from '../database.js';\nimport { createSessionData, error, parseBody, stripUser, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\nconst challenges = new Map();\nconst params = { id: z.uuid() };\n/**\n * Resolve a user's UUID using their email (in the future this might also include handles)\n */\naddRoute({\n path: '/api/user_id',\n async POST(event) {\n const { value } = await parseBody(event, z.object({ using: z.literal('email'), value: z.email() }));\n const { id } = await db\n .selectFrom('users')\n .select('id')\n .where('email', '=', value)\n .executeTakeFirstOrThrow()\n .catch(withError('User not found', 404));\n return { id };\n },\n});\naddRoute({\n path: '/api/users/:id',\n params,\n async GET(event) {\n const userId = event.params.id;\n const auth = await checkAuthForUser(event, userId).catch(() => null);\n const user = auth?.user || (await getUser(userId).catch(withError('User does not exist', 404)));\n return stripUser(user, !!auth);\n },\n async PATCH(event) {\n const userId = event.params.id;\n const body = await parseBody(event, UserChangeable);\n await checkAuthForUser(event, userId);\n if ('email' in body)\n body.emailVerified = null;\n if ('preferences' in body)\n body.preferences = Object.assign(structuredClone(preferenceDefaults), await z.object(preferenceSchemas).partial().parseAsync(body.preferences).catch(withError('Invalid preferences', 400)));\n const result = await db\n .updateTable('users')\n .set(body)\n .where('id', '=', userId)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Failed to update user'));\n return stripUser(result, true);\n },\n async DELETE(event) {\n const userId = event.params.id;\n await checkAuthForUser(event, userId, true);\n const result = await db\n .deleteFrom('users')\n .where('id', '=', userId)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Failed to delete user'));\n await audit('user_deleted', userId);\n return result;\n },\n});\naddRoute({\n path: '/api/users/:id/full',\n params,\n async GET(event) {\n const userId = event.params.id;\n const { user } = await checkAuthForUser(event, userId);\n const sessions = await getSessions(userId);\n return {\n ...stripUser(user, true),\n sessions: sessions.map(s => omit(s, 'token')),\n };\n },\n});\naddRoute({\n path: '/api/users/:id/auth',\n params,\n async OPTIONS(event) {\n const userId = event.params.id;\n const { type } = await parseBody(event, UserAuthOptions);\n const user = await getUser(userId).catch(withError('User does not exist', 404));\n if (user.isSuspended)\n error(403, 'User is suspended');\n const passkeys = await getPasskeysByUserId(userId);\n if (!passkeys)\n error(409, 'No passkeys exists for this user');\n const options = await webauthn.generateAuthenticationOptions({\n rpID: config.auth.rp_id,\n allowCredentials: passkeys.map(passkey => pick(passkey, 'id', 'transports')),\n });\n challenges.set(userId, { data: options.challenge, type });\n return options;\n },\n async POST(event) {\n const userId = event.params.id;\n const response = await parseBody(event, PasskeyAuthenticationResponse);\n const auth = challenges.get(userId);\n if (!auth)\n error(404, 'No challenge');\n const { data: expectedChallenge, type } = auth;\n challenges.delete(userId);\n const passkey = await getPasskey(response.id).catch(withError('Passkey does not exist', 404));\n if (passkey.userId !== userId)\n error(403, 'Passkey does not belong to this user');\n const { verified } = await webauthn\n .verifyAuthenticationResponse({\n response,\n credential: passkey,\n expectedChallenge,\n expectedOrigin: config.auth.origin,\n expectedRPID: config.auth.rp_id,\n })\n .catch(withError('Verification failed', 400));\n if (!verified)\n error(401, 'Verification failed');\n switch (type) {\n case 'login':\n return await createSessionData(userId);\n case 'action':\n if ((Date.now() - passkey.createdAt.getTime()) / 60_000 < config.auth.passkey_probation)\n error(403, 'You can not authorize sensitive actions with a newly created passkey');\n return await createSessionData(userId, true);\n }\n },\n});\n// Map of user ID => challenge\nconst registrations = new Map();\naddRoute({\n path: '/api/users/:id/passkeys',\n params,\n /**\n * Get passkey registration options for a user.\n */\n async OPTIONS(event) {\n const userId = event.params.id;\n const existing = await getPasskeysByUserId(userId);\n const { user } = await checkAuthForUser(event, userId);\n const options = await webauthn.generateRegistrationOptions({\n rpName: config.auth.rp_name,\n rpID: config.auth.rp_id,\n userName: userId,\n userDisplayName: user.email,\n attestationType: 'none',\n excludeCredentials: existing.map(passkey => pick(passkey, 'id', 'transports')),\n authenticatorSelection: {\n residentKey: 'preferred',\n userVerification: 'preferred',\n authenticatorAttachment: 'platform',\n },\n });\n registrations.set(userId, options.challenge);\n return options;\n },\n /**\n * Get passkeys for a user.\n */\n async GET(event) {\n const userId = event.params.id;\n await checkAuthForUser(event, userId);\n const passkeys = await getPasskeysByUserId(userId);\n return passkeys.map(p => omit(p, 'publicKey', 'counter'));\n },\n /**\n * Register a new passkey for an existing user.\n */\n async PUT(event) {\n const userId = event.params.id;\n const response = await parseBody(event, PasskeyRegistration);\n await checkAuthForUser(event, userId);\n const expectedChallenge = registrations.get(userId);\n if (!expectedChallenge)\n error(404, 'No registration challenge found for this user');\n registrations.delete(userId);\n const { verified, registrationInfo } = await webauthn\n .verifyRegistrationResponse({\n response,\n expectedChallenge,\n expectedOrigin: config.auth.origin,\n })\n .catch(withError('Verification failed', 400));\n if (!verified || !registrationInfo)\n error(401, 'Verification failed');\n const passkey = await createPasskey({\n transports: [],\n ...registrationInfo.credential,\n userId,\n deviceType: registrationInfo.credentialDeviceType,\n backedUp: registrationInfo.credentialBackedUp,\n }).catch(withError('Failed to create passkey'));\n return omit(passkey, 'publicKey', 'counter');\n },\n});\naddRoute({\n path: '/api/users/:id/sessions',\n params,\n async GET(event) {\n const userId = event.params.id;\n await checkAuthForUser(event, userId);\n return (await getSessions(userId).catch(e => error(503, 'Failed to get sessions' + (config.debug ? ': ' + e : '')))).map(s => omit(s, 'token'));\n },\n async DELETE(event) {\n const userId = event.params.id;\n const body = await parseBody(event, LogoutSessions);\n await checkAuthForUser(event, userId, body.confirm_all);\n if (!body.confirm_all && !Array.isArray(body.id))\n error(400, 'Invalid request body');\n const query = body.confirm_all ? db.deleteFrom('sessions') : db.deleteFrom('sessions').where('sessions.id', 'in', body.id);\n const result = await query\n .where('sessions.userId', '=', userId)\n .returningAll()\n .execute()\n .catch(withError('Failed to delete one or more sessions'));\n await audit('logout', userId, { sessions: result.map(s => s.id) });\n return result.map(s => omit(s, 'token'));\n },\n});\naddRoute({\n path: '/api/users/:id/verify_email',\n params,\n async OPTIONS(event) {\n const userId = event.params.id;\n if (!config.auth.email_verification)\n return { enabled: false };\n await checkAuthForUser(event, userId);\n if (!config.auth.email_verification)\n return { enabled: false };\n return { enabled: true };\n },\n async GET(event) {\n const userId = event.params.id;\n const { user } = await checkAuthForUser(event, userId);\n if (user.emailVerified)\n error(409, 'Email already verified');\n const verification = await createVerification('verify_email', userId, config.auth.verification_timeout * 60);\n return omit(verification, 'token', 'role');\n },\n async POST(event) {\n const userId = event.params.id;\n const { token } = await parseBody(event, z.object({ token: z.string() }));\n const { user } = await checkAuthForUser(event, userId);\n if (user.emailVerified)\n error(409, 'Email already verified');\n await useVerification('verify_email', userId, token).catch(withError('Invalid or expired verification token', 400));\n return {};\n },\n});\n","import { readFileSync } from 'node:fs';\nimport { createServer } from 'node:http';\nimport { createServer as createSecureServer } from 'node:https';\nimport config from './config.js';\nimport '@axium/server/api/index';\nimport { loadDefaultConfigs } from '@axium/server/config';\nimport { clean, connect, database } from '@axium/server/database';\nimport { dirs, logger } from '@axium/server/io';\nimport { allLogLevels } from 'logzen';\nimport { createWriteStream } from 'node:fs';\nimport { join } from 'node:path/posix';\nexport async function serveSvelteKit(opt) {\n const { handler } = await import(opt.build || config.web.build);\n if (!opt.secure && !config.web.secure)\n return createServer(handler);\n return createSecureServer({ key: readFileSync(opt.ssl_key || config.web.ssl_key), cert: readFileSync(opt.ssl_cert || config.web.ssl_cert) }, handler);\n}\n/**\n * Perform initial setup for when the server is serving web pages.\n */\nexport async function init() {\n logger.attach(createWriteStream(join(dirs.at(-1), 'server.log')), { output: allLogLevels });\n await loadDefaultConfigs();\n connect();\n await clean({});\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on('beforeExit', () => database.destroy());\n}\n","import { readFileSync } from 'node:fs';\nimport { styleText } from 'node:util';\nimport { render } from 'svelte/server';\nimport { config } from './config.js';\nimport { error, handleAPIRequest, handleResponseError, json, noCacheHeaders } from './requests.js';\nimport { resolveRoute } from './routes.js';\nimport { appDisabledContent, apps } from './apps.js';\nlet template = null;\nfunction fillSvelteKitTemplate({ head, body }, env = {}, nonce = '') {\n template ||= readFileSync(config.web.template, 'utf-8');\n return (template\n .replaceAll('%sveltekit.head%', head)\n .replaceAll('%sveltekit.body%', body)\n .replaceAll('%sveltekit.assets%', config.web.assets)\n // Unused for now.\n .replaceAll('%sveltekit.nonce%', nonce)\n .replace(/%sveltekit\\.env\\.([^%]+)%/g, (_match, key) => env[key] ?? ''));\n}\n/**\n * @internal\n */\nexport async function handleSvelteKit({ event, resolve, }) {\n const route = resolveRoute(event);\n if (!route && event.url.pathname === '/' && config.debug)\n return new Response(null, { status: 303, headers: { Location: '/_axium/default' } });\n if (config.debug)\n console.log(styleText('blueBright', event.request.method.padEnd(7)), route ? route.path : event.url.pathname);\n if (!route) {\n // Check to see if this is for an app that is disabled.\n const maybeApp = event.url.pathname.split('/')[1];\n if (apps.has(maybeApp) && config.apps.disabled.includes(maybeApp)) {\n const body = fillSvelteKitTemplate(appDisabledContent);\n return new Response(body, { headers: noCacheHeaders, status: 503 });\n }\n return await resolve(event).catch(handleResponseError);\n }\n if (route.server == true) {\n if (route.api)\n return await handleAPIRequest(event, route).catch(handleResponseError);\n const run = route[event.request.method];\n if (typeof run !== 'function') {\n error(405, `Method ${event.request.method} not allowed for ${route.path}`);\n }\n try {\n const result = await run(event);\n if (result instanceof Response)\n return result;\n return json(result);\n }\n catch (e) {\n return handleResponseError(e);\n }\n }\n const data = await route.load?.(event);\n const body = fillSvelteKitTemplate(render(route.page, { props: { data } }));\n return new Response(body, {\n headers: config.web.disable_cache ? noCacheHeaders : {},\n status: 200,\n });\n}\n","import { init } from \"@axium/server/serve\";\nimport { handleSvelteKit } from \"@axium/server/sveltekit\";\nawait init();\nexport {\n handleSvelteKit as handle\n};\n"],"names":["schemas.$ZodTuple","schemas.$ZodArray","schemas.$ZodUnknown","sym","output","error","z.object","z.string","z.literal","z.array","z.enum","z.number","z.record","z.any","z.boolean","z.custom","z.uuid","z.email","z.date","z.url","z.looseObject","z.function","z.partialRecord","z.core.$ZodError","z.prettifyError","z\n .looseObject","z\n .looseObject","z\n .stringbool","trim","this","io.debug","io.someWarnings","io.start","io.done","plugin","io.plugin","io.prettyDate","io.error","io.warn","serializeCookie","db","registrations","email"],"mappings":"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ACzC;;AChBA;AAEA;AACA;AACA;AACO,MAAM,YAAY,GAAG,MAAM,CAAC;AACnC,IAAI,EAAE,CAAC,IAAI,EAAE;AACb,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc;AAC3C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,OAAO,MAAM,CAAC;AACtB,YAAY,IAAI,EAAE,cAAc;AAChC,YAAY,MAAM;AAClB,SAAS,CAAC;AACV,IAAI,CAAC;AACL,CAAC,CAAC;;ACfF;AAgBO,MAAM,kBAAkB,CAAC;AAChC,IAAI,MAAM;AACV,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACzB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACxE,gBAAgB,UAAU,EAAE,QAAQ,CAAC,IAAI,iBAAiB,CAAC;AAC3D,oBAAoB,cAAc,EAAE,cAAc,CAAC,MAAM,EAAE;AAC3D,iBAAiB,CAAC,CAAC,CAAC,eAAe,EAAE;AACrC,aAAa,CAAC;AACd,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACjC,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACxE,gBAAgB,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC9F,aAAa,CAAC;AACd,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,CAAC,SAAS,EAAE;AACzB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;AACrG,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC;AAC5F,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7F,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9F,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7E,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,IAAI,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE;AACzB,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAQ;AACR,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7E,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,IAAI,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE;AACzB,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAQ;AACR,QAAQ,OAAO,IAAI,kBAAkB,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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AAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;AACxG,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC7B,QAAQ,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC;AAC/D,QAAQ,OAAO,IAAI,0BAA0B,CAAC;AAC9C,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;AACzJ,gBAAgB,OAAO;AACvB,gBAAgB,MAAM;AACtB,aAAa,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC;AACV,IAAI;AACJ;;AC/mBA;AAkBO,MAAM,YAAY,CAAC;AAC1B,IAAI,MAAM;AACV,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,OAAO,wBAAwB,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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,WAAW,EAAE;AAC3B,QAAQ,OAAO,IAAI,iBAAiB,CAAC;AACrC,YAAY,OAAO,EAAE,aAAa,EAAE;AACpC,YAAY,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC1C,YAAY,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClG,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE;AACpC,QAAQ,MAAM,GAAG,GAAG,0BAA0B,CAAC,aAAa,E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AAC;AACjG,IAAI;AACJ;;ACxEA;AAEA;AACA;AACA;AACO,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,IAAI,EAAE,CAAC,IAAI,EAAE;AACb,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,iBAAiB;AAC9C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AACxB,QAAQ,OAAO,MAAM,CAAC;AACtB,YAAY,IAAI,EAAE,iBAAiB;AACnC,YAAY,IAAI;AAChB,YAAY,KAAK;AACjB,SAAS,CAAC;AACV,IAAI,CAAC;AACL,CAAC,CAAC;;AChBF;AASO,MAAM,eAAe,CAAC;AAC7B,IAAI,KAAK;AACT,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;AACzB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,KAAK,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,QAAQ,OAAO,IAAI,CAAC,yBAAyB,CAAC,QA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,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACxG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACzG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1G,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AACtF,YAAY,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;AAClF,SAAS,CAAC,CAAC;AACX,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,QAAQ,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AACtF,YAAY,K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CJ;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5E,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,OAAO,IAAI,WAAW,CAAC;AAC/B,YAAY,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1F,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,EAAE,GAAG;AACb,QAAQ,OAAO,oBAAoB,EAAE;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,kBAAkB,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACzD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,4BAA4B,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACxD,IAAI;AACJ;AACA;AACA;AACA,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,OAAO,IAAI,MAAM,CAAC;AAC1B,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AAC7D,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,MAAM,CAAC;AAC1B,YAAY,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAY,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC3D,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,OAAO,IAAI,MAAM,CAAC;AAC1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","x_google_ignoreList":[0,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222]}
|