@access-dlsu/leapify 0.260507.5 → 0.260524.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/chunk-64MMUYMK.cjs +167 -0
  3. package/dist/chunk-64MMUYMK.cjs.map +1 -0
  4. package/dist/chunk-AKCERDGP.js +161 -0
  5. package/dist/chunk-AKCERDGP.js.map +1 -0
  6. package/dist/client/index.cjs +55 -841
  7. package/dist/client/index.cjs.map +1 -1
  8. package/dist/client/index.d.ts +3 -8
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +53 -839
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/client/turnstile.d.ts +25 -0
  13. package/dist/client/turnstile.d.ts.map +1 -0
  14. package/dist/client/types.d.ts +2 -15
  15. package/dist/client/types.d.ts.map +1 -1
  16. package/dist/db/migrate.d.ts.map +1 -1
  17. package/dist/db/schema/classes.d.ts +0 -19
  18. package/dist/db/schema/classes.d.ts.map +1 -1
  19. package/dist/db/schema/site-config.d.ts +0 -83
  20. package/dist/db/schema/site-config.d.ts.map +1 -1
  21. package/dist/index.cjs +666 -38320
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.ts +3 -5
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +520 -38167
  26. package/dist/index.js.map +1 -1
  27. package/dist/lib/middleware/cors.d.ts.map +1 -1
  28. package/dist/lib/middleware/rate-limit.d.ts.map +1 -1
  29. package/dist/lib/middleware/referer-guard.d.ts.map +1 -1
  30. package/dist/lib/middleware/turnstile-challenge.cjs +29 -0
  31. package/dist/lib/middleware/turnstile-challenge.cjs.map +1 -0
  32. package/dist/lib/middleware/turnstile-challenge.d.ts +45 -0
  33. package/dist/lib/middleware/turnstile-challenge.d.ts.map +1 -0
  34. package/dist/lib/middleware/turnstile-challenge.js +4 -0
  35. package/dist/lib/middleware/turnstile-challenge.js.map +1 -0
  36. package/dist/queues/jobs.d.ts +0 -5
  37. package/dist/queues/jobs.d.ts.map +1 -1
  38. package/dist/routes/classes.d.ts.map +1 -1
  39. package/dist/routes/faqs.d.ts.map +1 -1
  40. package/dist/routes/site-config.d.ts.map +1 -1
  41. package/dist/routes/themes.d.ts.map +1 -1
  42. package/dist/routes/uploads.d.ts.map +1 -1
  43. package/dist/types.d.ts +5 -26
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/worker-handler.d.ts +1 -0
  46. package/dist/worker-handler.d.ts.map +1 -1
  47. package/dist/worker.js +684 -64365
  48. package/dist/worker.js.map +1 -1
  49. package/package.json +11 -9
  50. package/dist/bun-sqlite-dialect-na--YwnN-NIYANHVJ.cjs +0 -162
  51. package/dist/bun-sqlite-dialect-na--YwnN-NIYANHVJ.cjs.map +0 -1
  52. package/dist/bun-sqlite-dialect-na--YwnN-XVQNOKSL.js +0 -160
  53. package/dist/bun-sqlite-dialect-na--YwnN-XVQNOKSL.js.map +0 -1
  54. package/dist/chunk-4DPT2KQR.cjs +0 -467
  55. package/dist/chunk-4DPT2KQR.cjs.map +0 -1
  56. package/dist/chunk-5JKLV7IE.cjs +0 -2962
  57. package/dist/chunk-5JKLV7IE.cjs.map +0 -1
  58. package/dist/chunk-5OQD5ALM.cjs +0 -76
  59. package/dist/chunk-5OQD5ALM.cjs.map +0 -1
  60. package/dist/chunk-5YYVBPAE.js +0 -2301
  61. package/dist/chunk-5YYVBPAE.js.map +0 -1
  62. package/dist/chunk-6MMWL46O.cjs +0 -7170
  63. package/dist/chunk-6MMWL46O.cjs.map +0 -1
  64. package/dist/chunk-EGRHWZRV.js +0 -3
  65. package/dist/chunk-EGRHWZRV.js.map +0 -1
  66. package/dist/chunk-EMMSS5I5.cjs +0 -37
  67. package/dist/chunk-EMMSS5I5.cjs.map +0 -1
  68. package/dist/chunk-FUCJEA2S.js +0 -6196
  69. package/dist/chunk-FUCJEA2S.js.map +0 -1
  70. package/dist/chunk-G3PMV62Z.js +0 -33
  71. package/dist/chunk-G3PMV62Z.js.map +0 -1
  72. package/dist/chunk-GNRL67OU.js +0 -2949
  73. package/dist/chunk-GNRL67OU.js.map +0 -1
  74. package/dist/chunk-HHNEB7YR.js +0 -8
  75. package/dist/chunk-HHNEB7YR.js.map +0 -1
  76. package/dist/chunk-IQEWVHLM.js +0 -889
  77. package/dist/chunk-IQEWVHLM.js.map +0 -1
  78. package/dist/chunk-JIZPYG6H.js +0 -72
  79. package/dist/chunk-JIZPYG6H.js.map +0 -1
  80. package/dist/chunk-JPVIXCF5.cjs +0 -10
  81. package/dist/chunk-JPVIXCF5.cjs.map +0 -1
  82. package/dist/chunk-JQSZJWBN.cjs +0 -3075
  83. package/dist/chunk-JQSZJWBN.cjs.map +0 -1
  84. package/dist/chunk-LVKPYSXI.cjs +0 -2312
  85. package/dist/chunk-LVKPYSXI.cjs.map +0 -1
  86. package/dist/chunk-MNEW2V4T.js +0 -447
  87. package/dist/chunk-MNEW2V4T.js.map +0 -1
  88. package/dist/chunk-MY37YE52.js +0 -3034
  89. package/dist/chunk-MY37YE52.js.map +0 -1
  90. package/dist/chunk-NKIQRCOM.cjs +0 -4
  91. package/dist/chunk-NKIQRCOM.cjs.map +0 -1
  92. package/dist/chunk-OK6RVPEH.cjs +0 -6200
  93. package/dist/chunk-OK6RVPEH.cjs.map +0 -1
  94. package/dist/chunk-OZ6HZKR5.js +0 -228
  95. package/dist/chunk-OZ6HZKR5.js.map +0 -1
  96. package/dist/chunk-RFP2X2FA.cjs +0 -903
  97. package/dist/chunk-RFP2X2FA.cjs.map +0 -1
  98. package/dist/chunk-S5DBMZVP.cjs +0 -234
  99. package/dist/chunk-S5DBMZVP.cjs.map +0 -1
  100. package/dist/chunk-XJSWMHDL.js +0 -7142
  101. package/dist/chunk-XJSWMHDL.js.map +0 -1
  102. package/dist/client/pow.d.ts +0 -28
  103. package/dist/client/pow.d.ts.map +0 -1
  104. package/dist/cron/lifecycle-check.d.ts +0 -10
  105. package/dist/cron/lifecycle-check.d.ts.map +0 -1
  106. package/dist/d1-sqlite-dialect-C2B7YsIT-6TVV7EJ5.js +0 -122
  107. package/dist/d1-sqlite-dialect-C2B7YsIT-6TVV7EJ5.js.map +0 -1
  108. package/dist/d1-sqlite-dialect-C2B7YsIT-PE74FLHQ.cjs +0 -124
  109. package/dist/d1-sqlite-dialect-C2B7YsIT-PE74FLHQ.cjs.map +0 -1
  110. package/dist/dist-DZHA5VYX.cjs +0 -260
  111. package/dist/dist-DZHA5VYX.cjs.map +0 -1
  112. package/dist/dist-RRQUBLLO.js +0 -258
  113. package/dist/dist-RRQUBLLO.js.map +0 -1
  114. package/dist/kysely-adapter-C76KJVG7.js +0 -10
  115. package/dist/kysely-adapter-C76KJVG7.js.map +0 -1
  116. package/dist/kysely-adapter-TGY4UUP5.cjs +0 -27
  117. package/dist/kysely-adapter-TGY4UUP5.cjs.map +0 -1
  118. package/dist/lib/middleware/pow-challenge.cjs +0 -29
  119. package/dist/lib/middleware/pow-challenge.cjs.map +0 -1
  120. package/dist/lib/middleware/pow-challenge.d.ts +0 -58
  121. package/dist/lib/middleware/pow-challenge.d.ts.map +0 -1
  122. package/dist/lib/middleware/pow-challenge.js +0 -4
  123. package/dist/lib/middleware/pow-challenge.js.map +0 -1
  124. package/dist/node-sqlite-dialect-B3H37T3R.cjs +0 -162
  125. package/dist/node-sqlite-dialect-B3H37T3R.cjs.map +0 -1
  126. package/dist/node-sqlite-dialect-GDP7ZE54.js +0 -160
  127. package/dist/node-sqlite-dialect-GDP7ZE54.js.map +0 -1
  128. package/dist/routes/contentful-sync.d.ts +0 -4
  129. package/dist/routes/contentful-sync.d.ts.map +0 -1
  130. package/dist/services/contentful-management.d.ts +0 -38
  131. package/dist/services/contentful-management.d.ts.map +0 -1
  132. package/dist/services/contentful.d.ts +0 -97
  133. package/dist/services/contentful.d.ts.map +0 -1
  134. package/dist/services/snapshot.d.ts +0 -95
  135. package/dist/services/snapshot.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/kysely/dist/esm/operation-node/operation-node-source.js","../node_modules/kysely/dist/esm/operation-node/value-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/expression/expression.js","../node_modules/kysely/dist/esm/operation-node/select-modifier-node.js","../node_modules/kysely/dist/esm/operation-node/binary-operation-node.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/parser/value-parser.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/update-query-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/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/dynamic/dynamic-reference-builder.js","../node_modules/kysely/dist/esm/operation-node/order-by-item-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/parser/order-by-parser.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/dynamic/dynamic-table-builder.js","../node_modules/kysely/dist/esm/parser/table-parser.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/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/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-operator-chain-node.js","../node_modules/kysely/dist/esm/operation-node/json-path-leg-node.js","../node_modules/kysely/dist/esm/operation-node/json-path-node.js","../node_modules/kysely/dist/esm/operation-node/json-reference-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/parser/reference-parser.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/query-compiler/compiled-query.js"],"names":["_a","trim","sql"],"mappings":"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","file":"chunk-XJSWMHDL.js","sourcesContent":["/// <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=\"./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=\"./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=\"./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=\"./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=\"./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-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=\"./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=\"./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=\"./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=\"./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=\"./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=\"./collate-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CollateNode = freeze({\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=\"./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=\"./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=\"./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=\"./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\" />\nvar _a;\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n using(tables) {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n returning(selection) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll(table) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new _a({\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 _a({\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 _a({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),\n });\n }\n orderBy(...args) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new _a({\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 _a({\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 _a({\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 _a({\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 _a(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 _a(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 _a(this.#props);\n }\n /**\n * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n_a = DeleteQueryBuilder;\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\" />\nvar _a;\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n from(from) {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n orderBy(...args) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n set(...args) {\n return new _a({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdate(...args)),\n });\n }\n returning(selection) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll(table) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new _a({\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 _a({\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 _a({\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 _a({\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 _a(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 _a(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 _a(this.#props);\n }\n /**\n * Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n_a = UpdateQueryBuilder;\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=\"./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-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 { freeze } from '../util/object-utils.js';\nimport { ValueNode } from './value-node.js';\n/**\n * @internal\n */\nexport const FetchNode = freeze({\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\" />\nvar _a;\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n having(...args) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n havingRef(lhs, op, rhs) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n select(selection) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n distinctOn(selection) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, parseReferenceExpressionOrList(selection)),\n });\n }\n modifyFront(modifier) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),\n });\n }\n modifyEnd(modifier) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),\n });\n }\n distinct() {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.create('Distinct')),\n });\n }\n forUpdate(of) {\n return new _a({\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 _a({\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 _a({\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 _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('SkipLocked')),\n });\n }\n noWait() {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('NoWait')),\n });\n }\n selectAll(table) {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n orderBy(...args) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n groupBy(groupBy) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(groupBy)),\n });\n }\n limit(limit) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n offset(offset) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(parseValueExpression(offset))),\n });\n }\n fetch(rowCount, modifier = 'only') {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFetch(this.#props.queryNode, parseFetch(rowCount, modifier)),\n });\n }\n top(expression, modifiers) {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n union(expression) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('union', expression, false)),\n });\n }\n unionAll(expression) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('union', expression, true)),\n });\n }\n intersect(expression) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('intersect', expression, false)),\n });\n }\n intersectAll(expression) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('intersect', expression, true)),\n });\n }\n except(expression) {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('except', expression, false)),\n });\n }\n exceptAll(expression) {\n return new _a({\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 _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutSelections(this.#props.queryNode),\n });\n }\n clearWhere() {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n clearLimit() {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutLimit(this.#props.queryNode),\n });\n }\n clearOffset() {\n return new _a({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutOffset(this.#props.queryNode),\n });\n }\n clearOrderBy() {\n return new _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n clearGroupBy() {\n return new _a({\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 _a({\n ...this.#props,\n });\n }\n $castTo() {\n return new _a(this.#props);\n }\n $narrowType() {\n return new _a(this.#props);\n }\n $assertType() {\n return new _a(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 _a({\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 _a({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n_a = SelectQueryBuilderImpl;\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-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-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-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=\"./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-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';\nconst HASH_NEGATIVE_INDEX_REGEX = /^#-\\d+$/;\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 if ((typeof index !== 'number' && typeof index !== 'string') ||\n (typeof index === 'number' && !Number.isInteger(index)) ||\n (typeof index === 'string' &&\n index !== 'last' &&\n !HASH_NEGATIVE_INDEX_REGEX.test(index))) {\n throw new Error(`Unexpected index value in .at(...): ${index}`);\n }\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=\"./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=\"./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=\"./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"]}