@access-dlsu/leapify 0.260506.1 → 0.260507.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 (87) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/{bun-sqlite-dialect-na--YwnN-QDBSQQTR.cjs → bun-sqlite-dialect-na--YwnN-NIYANHVJ.cjs} +10 -10
  3. package/dist/{bun-sqlite-dialect-na--YwnN-QDBSQQTR.cjs.map → bun-sqlite-dialect-na--YwnN-NIYANHVJ.cjs.map} +1 -1
  4. package/dist/{bun-sqlite-dialect-na--YwnN-CVHVB5NF.js → bun-sqlite-dialect-na--YwnN-XVQNOKSL.js} +4 -4
  5. package/dist/{bun-sqlite-dialect-na--YwnN-CVHVB5NF.js.map → bun-sqlite-dialect-na--YwnN-XVQNOKSL.js.map} +1 -1
  6. package/dist/chunk-5JKLV7IE.cjs +649 -649
  7. package/dist/chunk-5JKLV7IE.cjs.map +1 -1
  8. package/dist/{chunk-DPPGYCX3.cjs → chunk-5OQD5ALM.cjs} +8 -4
  9. package/dist/chunk-5OQD5ALM.cjs.map +1 -0
  10. package/dist/{chunk-UWXYXU7J.cjs → chunk-6MMWL46O.cjs} +379 -375
  11. package/dist/chunk-6MMWL46O.cjs.map +1 -0
  12. package/dist/{chunk-EIF2O2BG.js → chunk-FUCJEA2S.js} +18 -9
  13. package/dist/chunk-FUCJEA2S.js.map +1 -0
  14. package/dist/chunk-GNRL67OU.js +649 -649
  15. package/dist/chunk-GNRL67OU.js.map +1 -1
  16. package/dist/{chunk-ZYHBHSSO.js → chunk-JIZPYG6H.js} +7 -3
  17. package/dist/chunk-JIZPYG6H.js.map +1 -0
  18. package/dist/{chunk-XY4KBWXT.cjs → chunk-JQSZJWBN.cjs} +13 -4
  19. package/dist/chunk-JQSZJWBN.cjs.map +1 -0
  20. package/dist/{chunk-FTSMZYD7.js → chunk-MY37YE52.js} +13 -4
  21. package/dist/chunk-MY37YE52.js.map +1 -0
  22. package/dist/{chunk-57ANXUP7.cjs → chunk-OK6RVPEH.cjs} +319 -310
  23. package/dist/chunk-OK6RVPEH.cjs.map +1 -0
  24. package/dist/{chunk-SXBTHGIL.js → chunk-XJSWMHDL.js} +7 -3
  25. package/dist/chunk-XJSWMHDL.js.map +1 -0
  26. package/dist/client/index.cjs +69 -0
  27. package/dist/client/index.cjs.map +1 -1
  28. package/dist/client/index.d.ts +51 -2
  29. package/dist/client/index.d.ts.map +1 -1
  30. package/dist/client/index.js +69 -0
  31. package/dist/client/index.js.map +1 -1
  32. package/dist/client/types.d.ts +33 -15
  33. package/dist/client/types.d.ts.map +1 -1
  34. package/dist/cron/reminder-emails.d.ts.map +1 -1
  35. package/dist/{d1-sqlite-dialect-C2B7YsIT-CEUMIZZI.js → d1-sqlite-dialect-C2B7YsIT-6TVV7EJ5.js} +4 -4
  36. package/dist/{d1-sqlite-dialect-C2B7YsIT-CEUMIZZI.js.map → d1-sqlite-dialect-C2B7YsIT-6TVV7EJ5.js.map} +1 -1
  37. package/dist/{d1-sqlite-dialect-C2B7YsIT-JUX3YYMX.cjs → d1-sqlite-dialect-C2B7YsIT-PE74FLHQ.cjs} +7 -7
  38. package/dist/{d1-sqlite-dialect-C2B7YsIT-JUX3YYMX.cjs.map → d1-sqlite-dialect-C2B7YsIT-PE74FLHQ.cjs.map} +1 -1
  39. package/dist/db/migrate.d.ts.map +1 -1
  40. package/dist/db/schema/events.d.ts +65 -58
  41. package/dist/db/schema/events.d.ts.map +1 -1
  42. package/dist/db/schema/faqs.d.ts +0 -17
  43. package/dist/db/schema/faqs.d.ts.map +1 -1
  44. package/dist/db/schema/index.d.ts +1 -0
  45. package/dist/db/schema/index.d.ts.map +1 -1
  46. package/dist/db/schema/organizations.d.ts +125 -0
  47. package/dist/db/schema/organizations.d.ts.map +1 -0
  48. package/dist/db/schema/themes.d.ts +0 -19
  49. package/dist/db/schema/themes.d.ts.map +1 -1
  50. package/dist/index.cjs +1927 -1005
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.js +1915 -995
  53. package/dist/index.js.map +1 -1
  54. package/dist/kysely-adapter-C76KJVG7.js +10 -0
  55. package/dist/{kysely-adapter-6CZEASJQ.js.map → kysely-adapter-C76KJVG7.js.map} +1 -1
  56. package/dist/kysely-adapter-TGY4UUP5.cjs +27 -0
  57. package/dist/{kysely-adapter-5ZCECLNV.cjs.map → kysely-adapter-TGY4UUP5.cjs.map} +1 -1
  58. package/dist/{node-sqlite-dialect-QUBEEKKU.cjs → node-sqlite-dialect-B3H37T3R.cjs} +10 -10
  59. package/dist/{node-sqlite-dialect-QUBEEKKU.cjs.map → node-sqlite-dialect-B3H37T3R.cjs.map} +1 -1
  60. package/dist/{node-sqlite-dialect-HEMUZ4B2.js → node-sqlite-dialect-GDP7ZE54.js} +4 -4
  61. package/dist/{node-sqlite-dialect-HEMUZ4B2.js.map → node-sqlite-dialect-GDP7ZE54.js.map} +1 -1
  62. package/dist/queues/handlers.d.ts.map +1 -1
  63. package/dist/routes/events.d.ts.map +1 -1
  64. package/dist/routes/health.d.ts.map +1 -1
  65. package/dist/routes/organizations.d.ts +4 -0
  66. package/dist/routes/organizations.d.ts.map +1 -0
  67. package/dist/routes/themes.d.ts.map +1 -1
  68. package/dist/routes/users.d.ts.map +1 -1
  69. package/dist/services/contentful-management.d.ts +6 -21
  70. package/dist/services/contentful-management.d.ts.map +1 -1
  71. package/dist/services/resend.d.ts +2 -1
  72. package/dist/services/resend.d.ts.map +1 -1
  73. package/dist/services/snapshot.d.ts +14 -9
  74. package/dist/services/snapshot.d.ts.map +1 -1
  75. package/dist/worker.js +2755 -1808
  76. package/dist/worker.js.map +1 -1
  77. package/package.json +2 -1
  78. package/dist/chunk-57ANXUP7.cjs.map +0 -1
  79. package/dist/chunk-DPPGYCX3.cjs.map +0 -1
  80. package/dist/chunk-EIF2O2BG.js.map +0 -1
  81. package/dist/chunk-FTSMZYD7.js.map +0 -1
  82. package/dist/chunk-SXBTHGIL.js.map +0 -1
  83. package/dist/chunk-UWXYXU7J.cjs.map +0 -1
  84. package/dist/chunk-XY4KBWXT.cjs.map +0 -1
  85. package/dist/chunk-ZYHBHSSO.js.map +0 -1
  86. package/dist/kysely-adapter-5ZCECLNV.cjs +0 -27
  87. package/dist/kysely-adapter-6CZEASJQ.js +0 -10
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/kysely/dist/esm/operation-node/alter-table-node.js","../node_modules/kysely/dist/esm/operation-node/create-index-node.js","../node_modules/kysely/dist/esm/operation-node/create-schema-node.js","../node_modules/kysely/dist/esm/operation-node/drop-index-node.js","../node_modules/kysely/dist/esm/operation-node/drop-schema-node.js","../node_modules/kysely/dist/esm/operation-node/drop-table-node.js","../node_modules/kysely/dist/esm/operation-node/add-column-node.js","../node_modules/kysely/dist/esm/operation-node/column-definition-node.js","../node_modules/kysely/dist/esm/operation-node/drop-column-node.js","../node_modules/kysely/dist/esm/operation-node/rename-column-node.js","../node_modules/kysely/dist/esm/operation-node/check-constraint-node.js","../node_modules/kysely/dist/esm/operation-node/references-node.js","../node_modules/kysely/dist/esm/parser/default-value-parser.js","../node_modules/kysely/dist/esm/operation-node/generated-node.js","../node_modules/kysely/dist/esm/operation-node/default-value-node.js","../node_modules/kysely/dist/esm/parser/on-modify-action-parser.js","../node_modules/kysely/dist/esm/schema/column-definition-builder.js","../node_modules/kysely/dist/esm/operation-node/modify-column-node.js","../node_modules/kysely/dist/esm/operation-node/foreign-key-constraint-node.js","../node_modules/kysely/dist/esm/schema/foreign-key-constraint-builder.js","../node_modules/kysely/dist/esm/operation-node/add-constraint-node.js","../node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js","../node_modules/kysely/dist/esm/operation-node/drop-constraint-node.js","../node_modules/kysely/dist/esm/operation-node/alter-column-node.js","../node_modules/kysely/dist/esm/schema/alter-column-builder.js","../node_modules/kysely/dist/esm/schema/alter-table-executor.js","../node_modules/kysely/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js","../node_modules/kysely/dist/esm/schema/alter-table-drop-constraint-builder.js","../node_modules/kysely/dist/esm/operation-node/primary-key-constraint-node.js","../node_modules/kysely/dist/esm/operation-node/add-index-node.js","../node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.js","../node_modules/kysely/dist/esm/schema/unique-constraint-builder.js","../node_modules/kysely/dist/esm/schema/primary-key-constraint-builder.js","../node_modules/kysely/dist/esm/schema/check-constraint-builder.js","../node_modules/kysely/dist/esm/operation-node/rename-constraint-node.js","../node_modules/kysely/dist/esm/schema/alter-table-builder.js","../node_modules/kysely/dist/esm/plugin/immediate-value/immediate-value-transformer.js","../node_modules/kysely/dist/esm/schema/create-index-builder.js","../node_modules/kysely/dist/esm/schema/create-schema-builder.js","../node_modules/kysely/dist/esm/parser/on-commit-action-parse.js","../node_modules/kysely/dist/esm/schema/create-table-builder.js","../node_modules/kysely/dist/esm/schema/drop-index-builder.js","../node_modules/kysely/dist/esm/schema/drop-schema-builder.js","../node_modules/kysely/dist/esm/schema/drop-table-builder.js","../node_modules/kysely/dist/esm/plugin/immediate-value/immediate-value-plugin.js","../node_modules/kysely/dist/esm/schema/create-view-builder.js","../node_modules/kysely/dist/esm/operation-node/drop-view-node.js","../node_modules/kysely/dist/esm/schema/drop-view-builder.js","../node_modules/kysely/dist/esm/operation-node/create-type-node.js","../node_modules/kysely/dist/esm/schema/create-type-builder.js","../node_modules/kysely/dist/esm/operation-node/drop-type-node.js","../node_modules/kysely/dist/esm/schema/drop-type-builder.js","../node_modules/kysely/dist/esm/parser/identifier-parser.js","../node_modules/kysely/dist/esm/operation-node/refresh-materialized-view-node.js","../node_modules/kysely/dist/esm/schema/refresh-materialized-view-builder.js","../node_modules/kysely/dist/esm/schema/schema.js","../node_modules/kysely/dist/esm/dynamic/dynamic.js","../node_modules/kysely/dist/esm/driver/default-connection-provider.js","../node_modules/kysely/dist/esm/query-executor/default-query-executor.js","../node_modules/kysely/dist/esm/util/performance-now.js","../node_modules/kysely/dist/esm/driver/runtime-driver.js","../node_modules/kysely/dist/esm/driver/single-connection-provider.js","../node_modules/kysely/dist/esm/driver/driver.js","../node_modules/kysely/dist/esm/util/log.js","../node_modules/kysely/dist/esm/util/compilable.js","../node_modules/kysely/dist/esm/kysely.js","../node_modules/kysely/dist/esm/parser/savepoint-parser.js","../node_modules/kysely/dist/esm/dialect/sqlite/sqlite-driver.js","../node_modules/kysely/dist/esm/dialect/sqlite/sqlite-introspector.js","../node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect.js","../node_modules/kysely/dist/esm/dialect/postgres/postgres-query-compiler.js","../node_modules/kysely/dist/esm/dialect/postgres/postgres-introspector.js","../node_modules/kysely/dist/esm/dialect/postgres/postgres-adapter.js","../node_modules/kysely/dist/esm/util/stack-trace-utils.js","../node_modules/kysely/dist/esm/dialect/mysql/mysql-driver.js","../node_modules/kysely/dist/esm/dialect/mysql/mysql-query-compiler.js","../node_modules/kysely/dist/esm/dialect/mysql/mysql-introspector.js","../node_modules/kysely/dist/esm/dialect/mysql/mysql-adapter.js","../node_modules/kysely/dist/esm/dialect/mysql/mysql-dialect.js","../node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js","../node_modules/kysely/dist/esm/dialect/postgres/postgres-dialect.js","../node_modules/kysely/dist/esm/dialect/mssql/mssql-adapter.js","../node_modules/kysely/dist/esm/dialect/mssql/mssql-driver.js","../node_modules/kysely/dist/esm/dialect/mssql/mssql-introspector.js","../node_modules/kysely/dist/esm/dialect/mssql/mssql-query-compiler.js","../node_modules/kysely/dist/esm/dialect/mssql/mssql-dialect.js","../node_modules/@better-auth/kysely-adapter/dist/index.mjs"],"names":["sql","ID_WRAP_REGEX","LOCK_ID","PRIVATE_RELEASE_METHOD","db","entry","eb","join"],"mappings":"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","file":"chunk-FUCJEA2S.js","sourcesContent":["/// <reference types=\"./alter-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AlterTableNode = freeze({\n is(node) {\n return node.kind === 'AlterTableNode';\n },\n create(table) {\n return freeze({\n kind: 'AlterTableNode',\n table,\n });\n },\n cloneWithTableProps(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumnAlteration(node, columnAlteration) {\n return freeze({\n ...node,\n columnAlterations: node.columnAlterations\n ? [...node.columnAlterations, columnAlteration]\n : [columnAlteration],\n });\n },\n});\n","/// <reference types=\"./create-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CreateIndexNode = freeze({\n is(node) {\n return node.kind === 'CreateIndexNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateIndexNode',\n name: IdentifierNode.create(name),\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...(node.columns || []), ...columns],\n });\n },\n});\n","/// <reference types=\"./create-schema-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CreateSchemaNode = freeze({\n is(node) {\n return node.kind === 'CreateSchemaNode';\n },\n create(schema, params) {\n return freeze({\n kind: 'CreateSchemaNode',\n schema: IdentifierNode.create(schema),\n ...params,\n });\n },\n cloneWith(createSchema, params) {\n return freeze({\n ...createSchema,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const DropIndexNode = freeze({\n is(node) {\n return node.kind === 'DropIndexNode';\n },\n create(name, params) {\n return freeze({\n kind: 'DropIndexNode',\n name: SchemableIdentifierNode.create(name),\n ...params,\n });\n },\n cloneWith(dropIndex, props) {\n return freeze({\n ...dropIndex,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-schema-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const DropSchemaNode = freeze({\n is(node) {\n return node.kind === 'DropSchemaNode';\n },\n create(schema, params) {\n return freeze({\n kind: 'DropSchemaNode',\n schema: IdentifierNode.create(schema),\n ...params,\n });\n },\n cloneWith(dropSchema, params) {\n return freeze({\n ...dropSchema,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DropTableNode = freeze({\n is(node) {\n return node.kind === 'DropTableNode';\n },\n create(table, params) {\n return freeze({\n kind: 'DropTableNode',\n table,\n ...params,\n });\n },\n cloneWith(dropIndex, params) {\n return freeze({\n ...dropIndex,\n ...params,\n });\n },\n});\n","/// <reference types=\"./add-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AddColumnNode = freeze({\n is(node) {\n return node.kind === 'AddColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'AddColumnNode',\n column,\n });\n },\n});\n","/// <reference types=\"./column-definition-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const ColumnDefinitionNode = freeze({\n is(node) {\n return node.kind === 'ColumnDefinitionNode';\n },\n create(column, dataType) {\n return freeze({\n kind: 'ColumnDefinitionNode',\n column: ColumnNode.create(column),\n dataType,\n });\n },\n cloneWithFrontModifier(node, modifier) {\n return freeze({\n ...node,\n frontModifiers: node.frontModifiers\n ? freeze([...node.frontModifiers, modifier])\n : [modifier],\n });\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers\n ? freeze([...node.endModifiers, modifier])\n : [modifier],\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const DropColumnNode = freeze({\n is(node) {\n return node.kind === 'DropColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'DropColumnNode',\n column: ColumnNode.create(column),\n });\n },\n});\n","/// <reference types=\"./rename-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const RenameColumnNode = freeze({\n is(node) {\n return node.kind === 'RenameColumnNode';\n },\n create(column, newColumn) {\n return freeze({\n kind: 'RenameColumnNode',\n column: ColumnNode.create(column),\n renameTo: ColumnNode.create(newColumn),\n });\n },\n});\n","/// <reference types=\"./check-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CheckConstraintNode = freeze({\n is(node) {\n return node.kind === 'CheckConstraintNode';\n },\n create(expression, constraintName) {\n return freeze({\n kind: 'CheckConstraintNode',\n expression,\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n });\n },\n});\n","/// <reference types=\"./references-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport const ON_MODIFY_FOREIGN_ACTIONS = [\n 'no action',\n 'restrict',\n 'cascade',\n 'set null',\n 'set default',\n];\n/**\n * @internal\n */\nexport const ReferencesNode = freeze({\n is(node) {\n return node.kind === 'ReferencesNode';\n },\n create(table, columns) {\n return freeze({\n kind: 'ReferencesNode',\n table,\n columns: freeze([...columns]),\n });\n },\n cloneWithOnDelete(references, onDelete) {\n return freeze({\n ...references,\n onDelete,\n });\n },\n cloneWithOnUpdate(references, onUpdate) {\n return freeze({\n ...references,\n onUpdate,\n });\n },\n});\n","/// <reference types=\"./default-value-parser.d.ts\" />\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nexport function parseDefaultValueExpression(value) {\n return isOperationNodeSource(value)\n ? value.toOperationNode()\n : ValueNode.createImmediate(value);\n}\n","/// <reference types=\"./generated-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GeneratedNode = freeze({\n is(node) {\n return node.kind === 'GeneratedNode';\n },\n create(params) {\n return freeze({\n kind: 'GeneratedNode',\n ...params,\n });\n },\n createWithExpression(expression) {\n return freeze({\n kind: 'GeneratedNode',\n always: true,\n expression,\n });\n },\n cloneWith(node, params) {\n return freeze({\n ...node,\n ...params,\n });\n },\n});\n","/// <reference types=\"./default-value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DefaultValueNode = freeze({\n is(node) {\n return node.kind === 'DefaultValueNode';\n },\n create(defaultValue) {\n return freeze({\n kind: 'DefaultValueNode',\n defaultValue,\n });\n },\n});\n","/// <reference types=\"./on-modify-action-parser.d.ts\" />\nimport { ON_MODIFY_FOREIGN_ACTIONS, } from '../operation-node/references-node.js';\nexport function parseOnModifyForeignAction(action) {\n if (ON_MODIFY_FOREIGN_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnModifyForeignAction ${action}`);\n}\n","/// <reference types=\"./column-definition-builder.d.ts\" />\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { ReferencesNode, } from '../operation-node/references-node.js';\nimport { SelectAllNode } from '../operation-node/select-all-node.js';\nimport { parseStringReference } from '../parser/reference-parser.js';\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { parseDefaultValueExpression, } from '../parser/default-value-parser.js';\nimport { GeneratedNode } from '../operation-node/generated-node.js';\nimport { DefaultValueNode } from '../operation-node/default-value-node.js';\nimport { parseOnModifyForeignAction } from '../parser/on-modify-action-parser.js';\nexport class ColumnDefinitionBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `auto_increment` or `autoincrement` to the column definition\n * depending on the dialect.\n *\n * Some dialects like PostgreSQL don't support this. On PostgreSQL\n * you can use the `serial` or `bigserial` data type instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.autoIncrement().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key auto_increment\n * )\n * ```\n */\n autoIncrement() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));\n }\n /**\n * Makes the column an identity column.\n *\n * This only works on some dialects like MS SQL Server (MSSQL).\n *\n * For PostgreSQL's `generated always as identity` use {@link generatedAlwaysAsIdentity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.identity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MSSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer identity primary key\n * )\n * ```\n */\n identity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { identity: true }));\n }\n /**\n * Makes the column the primary key.\n *\n * If you want to specify a composite primary key use the\n * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key\n * )\n */\n primaryKey() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));\n }\n /**\n * Adds a foreign key constraint for the column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer', (col) => col.references('person.id'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\")\n * )\n * ```\n */\n references(ref) {\n const references = parseStringReference(ref);\n if (!references.table || SelectAllNode.is(references.column)) {\n throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.create(references.table, [\n references.column,\n ]),\n }));\n }\n /**\n * Adds an `on delete` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on delete cascade\n * )\n * ```\n */\n onDelete(onDelete) {\n if (!this.#node.references) {\n throw new Error('on delete constraint can only be added for foreign keys');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnDelete(this.#node.references, parseOnModifyForeignAction(onDelete)),\n }));\n }\n /**\n * Adds an `on update` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onUpdate('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on update cascade\n * )\n * ```\n */\n onUpdate(onUpdate) {\n if (!this.#node.references) {\n throw new Error('on update constraint can only be added for foreign keys');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnUpdate(this.#node.references, parseOnModifyForeignAction(onUpdate)),\n }));\n }\n /**\n * Adds a unique constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `email` varchar(255) unique\n * )\n * ```\n */\n unique() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));\n }\n /**\n * Adds a `not null` constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(255)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `first_name` varchar(255) not null\n * )\n * ```\n */\n notNull() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));\n }\n /**\n * Adds a `unsigned` modifier for the column.\n *\n * This only works on some dialects like MySQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('age', 'integer', col => col.unsigned())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `age` integer unsigned\n * )\n * ```\n */\n unsigned() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));\n }\n /**\n * Adds a default value constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer default 4\n * )\n * ```\n *\n * Values passed to `defaultTo` are interpreted as value literals by default. You can define\n * an arbitrary SQL expression using the {@link sql} template tag:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'created_at',\n * 'timestamp',\n * (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `created_at` timestamp default CURRENT_TIMESTAMP\n * )\n * ```\n */\n defaultTo(value) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),\n }));\n }\n /**\n * Adds a check constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) =>\n * col.check(sql`number_of_legs < 5`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer check (number_of_legs < 5)\n * )\n * ```\n */\n check(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n check: CheckConstraintNode.create(expression.toOperationNode()),\n }));\n }\n /**\n * Makes the column a generated column using a `generated always as` statement.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)',\n * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name))\n * )\n * ```\n */\n generatedAlwaysAs(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.createWithExpression(expression.toOperationNode()),\n }));\n }\n /**\n * Adds the `generated always as identity` specifier.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedAlwaysAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated always as identity primary key\n * )\n * ```\n */\n generatedAlwaysAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, always: true }),\n }));\n }\n /**\n * Adds the `generated by default as identity` specifier on supported dialects.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedByDefaultAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated by default as identity primary key\n * )\n * ```\n */\n generatedByDefaultAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, byDefault: true }),\n }));\n }\n /**\n * Makes a generated column stored instead of virtual. This method can only\n * be used with {@link generatedAlwaysAs}\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)', (col) => col\n * .generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * .stored()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name)) stored\n * )\n * ```\n */\n stored() {\n if (!this.#node.generated) {\n throw new Error('stored() can only be called after generatedAlwaysAs');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.cloneWith(this.#node.generated, {\n stored: true,\n }),\n }));\n }\n /**\n * This can be used to add any additional SQL right after the column's data type.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'first_name',\n * 'varchar(36)',\n * (col) => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(36) collate utf8mb4_general_ci not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Adds `nulls not distinct` specifier.\n * Should be used with `unique` constraint.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(30) unique nulls not distinct\n * )\n * ```\n */\n nullsNotDistinct() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n /**\n * Adds `if not exists` specifier. This only works for PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique().ifNotExists())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * alter table \"person\" add column if not exists \"email\" varchar(255) unique\n * ```\n */\n ifNotExists() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { ifNotExists: true }));\n }\n /**\n * This can be used to add any additional SQL to the end of the column definition.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'age',\n * 'integer',\n * col => col.unsigned()\n * .notNull()\n * .modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'\n * )\n * ```\n */\n modifyEnd(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./modify-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ModifyColumnNode = freeze({\n is(node) {\n return node.kind === 'ModifyColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'ModifyColumnNode',\n column,\n });\n },\n});\n","/// <reference types=\"./foreign-key-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\nimport { ReferencesNode, } from './references-node.js';\n/**\n * @internal\n */\nexport const ForeignKeyConstraintNode = freeze({\n is(node) {\n return node.kind === 'ForeignKeyConstraintNode';\n },\n create(sourceColumns, targetTable, targetColumns, constraintName) {\n return freeze({\n kind: 'ForeignKeyConstraintNode',\n columns: sourceColumns,\n references: ReferencesNode.create(targetTable, targetColumns),\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./foreign-key-constraint-builder.d.ts\" />\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { parseOnModifyForeignAction } from '../parser/on-modify-action-parser.js';\nexport class ForeignKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n onDelete(onDelete) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onDelete: parseOnModifyForeignAction(onDelete),\n }));\n }\n onUpdate(onUpdate) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onUpdate: parseOnModifyForeignAction(onUpdate),\n }));\n }\n deferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./add-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AddConstraintNode = freeze({\n is(node) {\n return node.kind === 'AddConstraintNode';\n },\n create(constraint) {\n return freeze({\n kind: 'AddConstraintNode',\n constraint,\n });\n },\n});\n","/// <reference types=\"./unique-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const UniqueConstraintNode = freeze({\n is(node) {\n return node.kind === 'UniqueConstraintNode';\n },\n create(columns, constraintName, nullsNotDistinct) {\n return freeze({\n kind: 'UniqueConstraintNode',\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n nullsNotDistinct,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const DropConstraintNode = freeze({\n is(node) {\n return node.kind === 'DropConstraintNode';\n },\n create(constraintName) {\n return freeze({\n kind: 'DropConstraintNode',\n constraintName: IdentifierNode.create(constraintName),\n });\n },\n cloneWith(dropConstraint, props) {\n return freeze({\n ...dropConstraint,\n ...props,\n });\n },\n});\n","/// <reference types=\"./alter-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const AlterColumnNode = freeze({\n is(node) {\n return node.kind === 'AlterColumnNode';\n },\n create(column, prop, value) {\n return freeze({\n kind: 'AlterColumnNode',\n column: ColumnNode.create(column),\n [prop]: value,\n });\n },\n});\n","/// <reference types=\"./alter-column-builder.d.ts\" />\nimport { AlterColumnNode } from '../operation-node/alter-column-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { parseDefaultValueExpression, } from '../parser/default-value-parser.js';\nexport class AlterColumnBuilder {\n #column;\n constructor(column) {\n this.#column = column;\n }\n setDataType(dataType) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dataType', parseDataTypeExpression(dataType)));\n }\n setDefault(value) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setDefault', parseDefaultValueExpression(value)));\n }\n dropDefault() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropDefault', true));\n }\n setNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setNotNull', true));\n }\n dropNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropNotNull', true));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\n/**\n * Allows us to force consumers to do exactly one alteration to a column.\n *\n * One cannot do no alterations:\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.\n * ```\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.\n * // .execute()\n * ```\n *\n * One cannot do multiple alterations:\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.\n * // .execute()\n * ```\n *\n * Which would now throw a compilation error, instead of a runtime error.\n */\nexport class AlteredColumnBuilder {\n #alterColumnNode;\n constructor(alterColumnNode) {\n this.#alterColumnNode = alterColumnNode;\n }\n toOperationNode() {\n return this.#alterColumnNode;\n }\n}\n","/// <reference types=\"./alter-table-executor.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableExecutor {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./alter-table-add-foreign-key-constraint-builder.d.ts\" />\nimport { AddConstraintNode } from '../operation-node/add-constraint-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableAddForeignKeyConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n onDelete(onDelete) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete),\n });\n }\n onUpdate(onUpdate) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),\n });\n }\n deferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.deferrable(),\n });\n }\n notDeferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.notDeferrable(),\n });\n }\n initiallyDeferred() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyDeferred(),\n });\n }\n initiallyImmediate() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyImmediate(),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),\n }), this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./alter-table-drop-constraint-builder.d.ts\" />\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { DropConstraintNode } from '../operation-node/drop-constraint-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableDropConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n ifExists: true,\n }),\n }),\n });\n }\n cascade() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: 'cascade',\n }),\n }),\n });\n }\n restrict() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: 'restrict',\n }),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./primary-key-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const PrimaryKeyConstraintNode = freeze({\n is(node) {\n return node.kind === 'PrimaryKeyConstraintNode';\n },\n create(columns, constraintName) {\n return freeze({\n kind: 'PrimaryKeyConstraintNode',\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n });\n },\n cloneWith(node, props) {\n return freeze({ ...node, ...props });\n },\n});\n/**\n * Backwards compatibility for a typo in the codebase.\n *\n * @deprecated Use {@link PrimaryKeyConstraintNode} instead.\n */\nexport const PrimaryConstraintNode = PrimaryKeyConstraintNode;\n","/// <reference types=\"./add-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const AddIndexNode = freeze({\n is(node) {\n return node.kind === 'AddIndexNode';\n },\n create(name) {\n return freeze({\n kind: 'AddIndexNode',\n name: IdentifierNode.create(name),\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...(node.columns || []), ...columns],\n });\n },\n});\n","/// <reference types=\"./alter-table-add-index-builder.d.ts\" />\nimport { AddIndexNode } from '../operation-node/add-index-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseOrderedColumnName, } from '../parser/reference-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableAddIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the index unique.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .unique()\n * .column('email')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_first_name_index` (`email`)\n * ```\n */\n unique() {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n unique: true,\n }),\n }),\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n column(column) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n parseOrderedColumnName(column),\n ]),\n }),\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n columns(columns) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(parseOrderedColumnName)),\n }),\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .expression(sql<boolean>`(first_name < 'Sami')`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))\n * ```\n */\n expression(expression) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n expression.toOperationNode(),\n ]),\n }),\n });\n }\n using(indexType) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n using: RawNode.createWithSql(indexType),\n }),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./unique-constraint-builder.d.ts\" />\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nexport class UniqueConstraintNodeBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `nulls not distinct` to the unique constraint definition\n *\n * Supported by PostgreSQL dialect only\n */\n nullsNotDistinct() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n deferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./primary-key-constraint-builder.d.ts\" />\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nexport class PrimaryKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n deferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./check-constraint-builder.d.ts\" />\nexport class CheckConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./rename-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const RenameConstraintNode = freeze({\n is(node) {\n return node.kind === 'RenameConstraintNode';\n },\n create(oldName, newName) {\n return freeze({\n kind: 'RenameConstraintNode',\n oldName: IdentifierNode.create(oldName),\n newName: IdentifierNode.create(newName),\n });\n },\n});\n","/// <reference types=\"./alter-table-builder.d.ts\" />\nimport { AddColumnNode } from '../operation-node/add-column-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { DropColumnNode } from '../operation-node/drop-column-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { RenameColumnNode } from '../operation-node/rename-column-node.js';\nimport { freeze, noop } from '../util/object-utils.js';\nimport { ColumnDefinitionBuilder, } from './column-definition-builder.js';\nimport { ModifyColumnNode } from '../operation-node/modify-column-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';\nimport { AddConstraintNode } from '../operation-node/add-constraint-node.js';\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { DropConstraintNode } from '../operation-node/drop-constraint-node.js';\nimport { AlterColumnBuilder, } from './alter-column-builder.js';\nimport { AlterTableExecutor } from './alter-table-executor.js';\nimport { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';\nimport { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { AddIndexNode } from '../operation-node/add-index-node.js';\nimport { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';\nimport { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';\nimport { PrimaryKeyConstraintBuilder, } from './primary-key-constraint-builder.js';\nimport { CheckConstraintBuilder, } from './check-constraint-builder.js';\nimport { RenameConstraintNode } from '../operation-node/rename-constraint-node.js';\n/**\n * This builder can be used to create a `alter table` query.\n */\nexport class AlterTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n renameTo(newTableName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameTo: parseTable(newTableName),\n }),\n });\n }\n setSchema(newSchema) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n setSchema: IdentifierNode.create(newSchema),\n }),\n });\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column)),\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn)),\n });\n }\n addColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode())),\n });\n }\n modifyColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode())),\n });\n }\n /**\n * See {@link CreateTableBuilder.addUniqueConstraint}\n */\n addUniqueConstraint(constraintName, columns, build = noop) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),\n }),\n });\n }\n /**\n * See {@link CreateTableBuilder.addCheckConstraint}\n */\n addCheckConstraint(constraintName, checkExpression, build = noop) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode()),\n }),\n });\n }\n /**\n * See {@link CreateTableBuilder.addForeignKeyConstraint}\n *\n * Unlike {@link CreateTableBuilder.addForeignKeyConstraint} this method returns\n * the constraint builder and doesn't take a callback as the last argument. This\n * is because you can only add one column per `ALTER TABLE` query.\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {\n const constraintBuilder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder,\n });\n }\n /**\n * See {@link CreateTableBuilder.addPrimaryKeyConstraint}\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode()),\n }),\n });\n }\n dropConstraint(constraintName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.create(constraintName),\n }),\n });\n }\n renameConstraint(oldName, newName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameConstraint: RenameConstraintNode.create(oldName, newName),\n }),\n });\n }\n /**\n * This can be used to add index to table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .addIndex('person_email_index')\n * .column('email')\n * .unique()\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_email_index` (`email`)\n * ```\n */\n addIndex(indexName) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.create(indexName),\n }),\n });\n }\n /**\n * This can be used to drop index from table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .dropIndex('person_email_index')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` drop index `test_first_name_index`\n * ```\n */\n dropIndex(indexName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropIndex: DropIndexNode.create(indexName),\n }),\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * See {@link CreateTableBuilder.$call}\n */\n $call(func) {\n return func(this);\n }\n}\nexport class AlterTableColumnAlteringBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column)),\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn)),\n });\n }\n addColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode())),\n });\n }\n modifyColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode())),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./immediate-value-transformer.d.ts\" />\nimport { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';\nimport { ValueListNode } from '../../operation-node/value-list-node.js';\nimport { ValueNode } from '../../operation-node/value-node.js';\n/**\n * Transforms all ValueNodes to immediate.\n *\n * WARNING! This should never be part of the public API. Users should never use this.\n * This is an internal helper.\n *\n * @internal\n */\nexport class ImmediateValueTransformer extends OperationNodeTransformer {\n transformPrimitiveValueList(node) {\n return ValueListNode.create(node.values.map(ValueNode.createImmediate));\n }\n transformValue(node) {\n return ValueNode.createImmediate(node.value);\n }\n}\n","/// <reference types=\"./create-index-builder.d.ts\" />\nimport { CreateIndexNode, } from '../operation-node/create-index-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseOrderedColumnName, } from '../parser/reference-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { ImmediateValueTransformer } from '../plugin/immediate-value/immediate-value-transformer.js';\nexport class CreateIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the index already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n /**\n * Makes the index unique.\n */\n unique() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n unique: true,\n }),\n });\n }\n /**\n * Adds `nulls not distinct` specifier to index.\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createIndex('person_first_name_index')\n * .on('person')\n * .column('first_name')\n * .nullsNotDistinct()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\"\n * on \"test\" (\"first_name\")\n * nulls not distinct;\n * ```\n */\n nullsNotDistinct() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n nullsNotDistinct: true,\n }),\n });\n }\n /**\n * Specifies the table for the index.\n */\n on(table) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table),\n }),\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n column(column) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n parseOrderedColumnName(column),\n ]),\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n columns(columns) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, columns.map(parseOrderedColumnName)),\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createIndex('person_first_name_index')\n * .on('person')\n * .expression(sql`first_name COLLATE \"fi_FI\"`)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\" on \"person\" (first_name COLLATE \"fi_FI\")\n * ```\n */\n expression(expression) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n expression.toOperationNode(),\n ]),\n });\n }\n using(indexType) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n using: RawNode.createWithSql(indexType),\n }),\n });\n }\n where(...args) {\n const transformer = new ImmediateValueTransformer();\n return new CreateIndexBuilder({\n ...this.#props,\n node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseValueBinaryOperationOrExpression(args), this.#props.queryId)),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-schema-builder.d.ts\" />\nimport { CreateSchemaNode } from '../operation-node/create-schema-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class CreateSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifNotExists() {\n return new CreateSchemaBuilder({\n ...this.#props,\n node: CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./on-commit-action-parse.d.ts\" />\nimport { ON_COMMIT_ACTIONS, } from '../operation-node/create-table-node.js';\nexport function parseOnCommitAction(action) {\n if (ON_COMMIT_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnCommitAction ${action}`);\n}\n","/// <reference types=\"./create-table-builder.d.ts\" />\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { CreateTableNode, } from '../operation-node/create-table-node.js';\nimport { ColumnDefinitionBuilder } from './column-definition-builder.js';\nimport { freeze, noop } from '../util/object-utils.js';\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseOnCommitAction } from '../parser/on-commit-action-parse.js';\nimport { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';\nimport { parseExpression } from '../parser/expression-parser.js';\nimport { PrimaryKeyConstraintBuilder, } from './primary-key-constraint-builder.js';\nimport { CheckConstraintBuilder, } from './check-constraint-builder.js';\n/**\n * This builder can be used to create a `create table` query.\n */\nexport class CreateTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary table.\n */\n temporary() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n temporary: true,\n }),\n });\n }\n /**\n * Adds an \"on commit\" statement.\n *\n * This can be used in conjunction with temporary tables on supported databases\n * like PostgreSQL.\n */\n onCommit(onCommit) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n onCommit: parseOnCommitAction(onCommit),\n }),\n });\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the table already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n /**\n * Adds a column to the table.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())\n * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())\n * .addColumn('last_name', 'varchar(255)')\n * .addColumn('bank_balance', 'numeric(8, 2)')\n * // You can specify any data type using the `sql` tag if the types\n * // don't include it.\n * .addColumn('data', sql`any_type_here`)\n * .addColumn('parent_id', 'integer', (col) =>\n * col.references('person.id').onDelete('cascade')\n * )\n * ```\n *\n * With this method, it's once again good to remember that Kysely just builds the\n * query and doesn't provide the same API for all databases. For example, some\n * databases like older MySQL don't support the `references` statement in the\n * column definition. Instead foreign key constraints need to be defined in the\n * `create table` query. See the next example:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.primaryKey())\n * .addColumn('parent_id', 'integer')\n * .addForeignKeyConstraint(\n * 'person_parent_id_fk',\n * ['parent_id'],\n * 'person',\n * ['id'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * Another good example is that PostgreSQL doesn't support the `auto_increment`\n * keyword and you need to define an autoincrementing column for example using\n * `serial`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'serial', (col) => col.primaryKey())\n * .execute()\n * ```\n */\n addColumn(columnName, dataType, build = noop) {\n const columnBuilder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithColumn(this.#props.node, columnBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a primary key constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])\n * .execute()\n * ```\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a unique constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name']\n * )\n * .execute()\n * ```\n *\n * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name'],\n * (cb) => cb.nullsNotDistinct()\n * )\n * .execute()\n * ```\n */\n addUniqueConstraint(constraintName, columns, build = noop) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a check constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('animal')\n * .addColumn('number_of_legs', 'integer')\n * .addCheckConstraint('check_legs', sql`number_of_legs < 5`)\n * .execute()\n * ```\n */\n addCheckConstraint(constraintName, checkExpression, build = noop) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a foreign key constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id'],\n * 'person',\n * ['id'],\n * )\n * .execute()\n * ```\n *\n * Add constraint for multiple columns:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id1', 'integer')\n * .addColumn('owner_id2', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id1', 'owner_id2'],\n * 'person',\n * ['id1', 'id2'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {\n const builder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, builder.toOperationNode()),\n });\n }\n /**\n * This can be used to add any additional SQL to the front of the query __after__ the `create` keyword.\n *\n * Also see {@link temporary}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .modifyFront(sql`global temporary`)\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (Postgres):\n *\n * ```sql\n * create global temporary table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(64) not null,\n * \"last_name\" varchar(64) not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithFrontModifier(this.#props.node, modifier.toOperationNode()),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * Also see {@link onCommit}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .modifyEnd(sql`collate utf8_unicode_ci`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(64) not null,\n * `last_name` varchar(64) not null\n * ) collate utf8_unicode_ci\n * ```\n */\n modifyEnd(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode()),\n });\n }\n /**\n * Allows to create table from `select` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('copy')\n * .temporary()\n * .as(db.selectFrom('person').select(['first_name', 'last_name']))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create temporary table \"copy\" as\n * select \"first_name\", \"last_name\" from \"person\"\n * ```\n */\n as(expression) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n selectQuery: parseExpression(expression),\n }),\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('test')\n * .$call((builder) => builder.addColumn('id', 'integer'))\n * .execute()\n * ```\n *\n * This is useful for creating reusable functions that can be called with a builder.\n *\n * ```ts\n * import { type CreateTableBuilder, sql } from 'kysely'\n *\n * const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {\n * return ctb\n * .addColumn('id', 'integer', (col) => col.notNull())\n * .addColumn('created_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * .addColumn('updated_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * }\n *\n * await db.schema\n * .createTable('test')\n * .$call(addDefaultColumns)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-index-builder.d.ts\" />\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specifies the table the index was created for. This is not needed\n * in all dialects.\n */\n on(table) {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table),\n }),\n });\n }\n ifExists() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-schema-builder.d.ts\" />\nimport { DropSchemaNode } from '../operation-node/drop-schema-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-table-builder.d.ts\" />\nimport { DropTableNode } from '../operation-node/drop-table-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./immediate-value-plugin.d.ts\" />\nimport { ImmediateValueTransformer } from './immediate-value-transformer.js';\n/**\n * Transforms all ValueNodes to immediate.\n *\n * WARNING! This should never be part of the public API. Users should never use this.\n * This is an internal helper.\n *\n * @internal\n */\nexport class ImmediateValuePlugin {\n #transformer = new ImmediateValueTransformer();\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n transformResult(args) {\n return Promise.resolve(args.result);\n }\n}\n","/// <reference types=\"./create-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { parseColumnName } from '../parser/reference-parser.js';\nimport { ImmediateValuePlugin } from '../plugin/immediate-value/immediate-value-plugin.js';\nexport class CreateViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary view.\n */\n temporary() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n temporary: true,\n }),\n });\n }\n materialized() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n /**\n * Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.\n */\n ifNotExists() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n orReplace() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n orReplace: true,\n }),\n });\n }\n columns(columns) {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n columns: columns.map(parseColumnName),\n }),\n });\n }\n /**\n * Sets the select query or a `values` statement that creates the view.\n *\n * WARNING!\n * Some dialects don't support parameterized queries in DDL statements and therefore\n * the query or raw {@link sql } expression passed here is interpolated into a single\n * string opening an SQL injection vulnerability. DO NOT pass unchecked user input\n * into the query or raw expression passed to this method!\n */\n as(query) {\n const queryNode = query\n .withPlugin(new ImmediateValuePlugin())\n .toOperationNode();\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n as: queryNode,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const DropViewNode = freeze({\n is(node) {\n return node.kind === 'DropViewNode';\n },\n create(name) {\n return freeze({\n kind: 'DropViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(dropView, params) {\n return freeze({\n ...dropView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { DropViewNode } from '../operation-node/drop-view-node.js';\nexport class DropViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n materialized() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n ifExists() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ValueListNode } from './value-list-node.js';\nimport { ValueNode } from './value-node.js';\n/**\n * @internal\n */\nexport const CreateTypeNode = freeze({\n is(node) {\n return node.kind === 'CreateTypeNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateTypeNode',\n name,\n });\n },\n cloneWithEnum(createType, values) {\n return freeze({\n ...createType,\n enum: ValueListNode.create(values.map(ValueNode.createImmediate)),\n });\n },\n});\n","/// <reference types=\"./create-type-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { CreateTypeNode } from '../operation-node/create-type-node.js';\nexport class CreateTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n /**\n * Creates an anum type.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createType('species').asEnum(['cat', 'dog', 'frog'])\n * ```\n */\n asEnum(values) {\n return new CreateTypeBuilder({\n ...this.#props,\n node: CreateTypeNode.cloneWithEnum(this.#props.node, values),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DropTypeNode = freeze({\n is(node) {\n return node.kind === 'DropTypeNode';\n },\n create(name) {\n return freeze({\n kind: 'DropTypeNode',\n name,\n });\n },\n cloneWith(dropType, params) {\n return freeze({\n ...dropType,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-type-builder.d.ts\" />\nimport { DropTypeNode } from '../operation-node/drop-type-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTypeBuilder({\n ...this.#props,\n node: DropTypeNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./identifier-parser.d.ts\" />\nimport { SchemableIdentifierNode } from '../operation-node/schemable-identifier-node.js';\nexport function parseSchemableIdentifier(id) {\n const SCHEMA_SEPARATOR = '.';\n if (id.includes(SCHEMA_SEPARATOR)) {\n const parts = id.split(SCHEMA_SEPARATOR).map(trim);\n if (parts.length === 2) {\n return SchemableIdentifierNode.createWithSchema(parts[0], parts[1]);\n }\n else {\n throw new Error(`invalid schemable identifier ${id}`);\n }\n }\n else {\n return SchemableIdentifierNode.create(id);\n }\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./refresh-materialized-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const RefreshMaterializedViewNode = freeze({\n is(node) {\n return node.kind === 'RefreshMaterializedViewNode';\n },\n create(name) {\n return freeze({\n kind: 'RefreshMaterializedViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(createView, params) {\n return freeze({\n ...createView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./refresh-materialized-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';\nexport class RefreshMaterializedViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"concurrently\" modifier.\n *\n * Use this to refresh the view without locking out concurrent selects on the materialized view.\n *\n * WARNING!\n * This cannot be used with the \"with no data\" modifier.\n */\n concurrently() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n concurrently: true,\n withNoData: false,\n }),\n });\n }\n /**\n * Adds the \"with data\" modifier.\n *\n * If specified (or defaults) the backing query is executed to provide the new data, and the materialized view is left in a scannable state\n */\n withData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: false,\n }),\n });\n }\n /**\n * Adds the \"with no data\" modifier.\n *\n * If specified, no new data is generated and the materialized view is left in an unscannable state.\n *\n * WARNING!\n * This cannot be used with the \"concurrently\" modifier.\n */\n withNoData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: true,\n concurrently: false,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./schema.d.ts\" />\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { CreateIndexNode } from '../operation-node/create-index-node.js';\nimport { CreateSchemaNode } from '../operation-node/create-schema-node.js';\nimport { CreateTableNode } from '../operation-node/create-table-node.js';\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { DropSchemaNode } from '../operation-node/drop-schema-node.js';\nimport { DropTableNode } from '../operation-node/drop-table-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { AlterTableBuilder } from './alter-table-builder.js';\nimport { CreateIndexBuilder } from './create-index-builder.js';\nimport { CreateSchemaBuilder } from './create-schema-builder.js';\nimport { CreateTableBuilder } from './create-table-builder.js';\nimport { DropIndexBuilder } from './drop-index-builder.js';\nimport { DropSchemaBuilder } from './drop-schema-builder.js';\nimport { DropTableBuilder } from './drop-table-builder.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { CreateViewBuilder } from './create-view-builder.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { DropViewBuilder } from './drop-view-builder.js';\nimport { DropViewNode } from '../operation-node/drop-view-node.js';\nimport { CreateTypeBuilder } from './create-type-builder.js';\nimport { DropTypeBuilder } from './drop-type-builder.js';\nimport { CreateTypeNode } from '../operation-node/create-type-node.js';\nimport { DropTypeNode } from '../operation-node/drop-type-node.js';\nimport { parseSchemableIdentifier } from '../parser/identifier-parser.js';\nimport { RefreshMaterializedViewBuilder } from './refresh-materialized-view-builder.js';\nimport { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';\n/**\n * Provides methods for building database schema.\n */\nexport class SchemaModule {\n #executor;\n constructor(executor) {\n this.#executor = executor;\n }\n /**\n * Create a new table.\n *\n * ### Examples\n *\n * This example creates a new table with columns `id`, `first_name`,\n * `last_name` and `gender`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('first_name', 'varchar', col => col.notNull())\n * .addColumn('last_name', 'varchar', col => col.notNull())\n * .addColumn('gender', 'varchar')\n * .execute()\n * ```\n *\n * This example creates a table with a foreign key. Not all database\n * engines support column-level foreign key constraint definitions.\n * For example if you are using MySQL 5.X see the next example after\n * this one.\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer', col => col\n * .references('person.id')\n * .onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * This example adds a foreign key constraint for a columns just\n * like the previous example, but using a table-level statement.\n * On MySQL 5.X you need to define foreign key constraints like\n * this:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],\n * (constraint) => constraint.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n createTable(table) {\n return new CreateTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTableNode.create(parseTable(table)),\n });\n }\n /**\n * Drop a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropTable('person')\n * .execute()\n * ```\n */\n dropTable(table) {\n return new DropTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTableNode.create(parseTable(table)),\n });\n }\n /**\n * Create a new index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_full_name_unique_index')\n * .on('person')\n * .columns(['first_name', 'last_name'])\n * .execute()\n * ```\n */\n createIndex(indexName) {\n return new CreateIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateIndexNode.create(indexName),\n });\n }\n /**\n * Drop an index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropIndex('person_full_name_unique_index')\n * .execute()\n * ```\n */\n dropIndex(indexName) {\n return new DropIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropIndexNode.create(indexName),\n });\n }\n /**\n * Create a new schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createSchema('some_schema')\n * .execute()\n * ```\n */\n createSchema(schema) {\n return new CreateSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateSchemaNode.create(schema),\n });\n }\n /**\n * Drop a schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropSchema('some_schema')\n * .execute()\n * ```\n */\n dropSchema(schema) {\n return new DropSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropSchemaNode.create(schema),\n });\n }\n /**\n * Alter a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .alterColumn('first_name', (ac) => ac.setDataType('text'))\n * .execute()\n * ```\n */\n alterTable(table) {\n return new AlterTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: AlterTableNode.create(parseTable(table)),\n });\n }\n /**\n * Create a new view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createView('dogs')\n * .orReplace()\n * .as(db.selectFrom('pet').selectAll().where('species', '=', 'dog'))\n * .execute()\n * ```\n */\n createView(viewName) {\n return new CreateViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateViewNode.create(viewName),\n });\n }\n /**\n * Refresh a materialized view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .refreshMaterializedView('my_view')\n * .concurrently()\n * .execute()\n * ```\n */\n refreshMaterializedView(viewName) {\n return new RefreshMaterializedViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: RefreshMaterializedViewNode.create(viewName),\n });\n }\n /**\n * Drop a view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropView('dogs')\n * .ifExists()\n * .execute()\n * ```\n */\n dropView(viewName) {\n return new DropViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropViewNode.create(viewName),\n });\n }\n /**\n * Create a new type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createType('species')\n * .asEnum(['dog', 'cat', 'frog'])\n * .execute()\n * ```\n */\n createType(typeName) {\n return new CreateTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTypeNode.create(parseSchemableIdentifier(typeName)),\n });\n }\n /**\n * Drop a type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropType('species')\n * .ifExists()\n * .execute()\n * ```\n */\n dropType(typeName) {\n return new DropTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTypeNode.create(parseSchemableIdentifier(typeName)),\n });\n }\n /**\n * Returns a copy of this schema module with the given plugin installed.\n */\n withPlugin(plugin) {\n return new SchemaModule(this.#executor.withPlugin(plugin));\n }\n /**\n * Returns a copy of this schema module without any plugins.\n */\n withoutPlugins() {\n return new SchemaModule(this.#executor.withoutPlugins());\n }\n /**\n * See {@link QueryCreator.withSchema}\n */\n withSchema(schema) {\n return new SchemaModule(this.#executor.withPluginAtFront(new WithSchemaPlugin(schema)));\n }\n}\n","/// <reference types=\"./dynamic.d.ts\" />\nimport { DynamicReferenceBuilder } from './dynamic-reference-builder.js';\nimport { DynamicTableBuilder } from './dynamic-table-builder.js';\nexport class DynamicModule {\n /**\n * Creates a dynamic reference to a column that is not know at compile time.\n *\n * Kysely is built in a way that by default you can't refer to tables or columns\n * that are not actually visible in the current query and context. This is all\n * done by TypeScript at compile time, which means that you need to know the\n * columns and tables at compile time. This is not always the case of course.\n *\n * This method is meant to be used in those cases where the column names\n * come from the user input or are not otherwise known at compile time.\n *\n * WARNING! Unlike values, column names are not escaped by the database engine\n * or Kysely and if you pass in unchecked column names using this method, you\n * create an SQL injection vulnerability. Always __always__ validate the user\n * input before passing it to this method.\n *\n * There are couple of examples below for some use cases, but you can pass\n * `ref` to other methods as well. If the types allow you to pass a `ref`\n * value to some place, it should work.\n *\n * ### Examples\n *\n * Filter by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(filterColumn: string, filterValue: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .selectAll()\n * .where(ref(filterColumn), '=', filterValue)\n * .execute()\n * }\n *\n * someQuery('first_name', 'Arnold')\n * someQuery('person.last_name', 'Aniston')\n * ```\n *\n * Order by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(orderBy: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .select('person.first_name as fn')\n * .orderBy(ref(orderBy))\n * .execute()\n * }\n *\n * someQuery('fn')\n * ```\n *\n * In this example we add selections dynamically:\n *\n * ```ts\n * const { ref } = db.dynamic\n *\n * // Some column name provided by the user. Value not known at compile time.\n * const columnFromUserInput: PossibleColumns = 'birthdate';\n *\n * // A type that lists all possible values `columnFromUserInput` can have.\n * // You can use `keyof Person` if any column of an interface is allowed.\n * type PossibleColumns = 'last_name' | 'first_name' | 'birthdate'\n *\n * const [person] = await db.selectFrom('person')\n * .select([\n * ref<PossibleColumns>(columnFromUserInput),\n * 'id'\n * ])\n * .execute()\n *\n * // The resulting type contains all `PossibleColumns` as optional fields\n * // because we cannot know which field was actually selected before\n * // running the code.\n * const lastName: string | null | undefined = person?.last_name\n * const firstName: string | undefined = person?.first_name\n * const birthDate: Date | null | undefined = person?.birthdate\n *\n * // The result type also contains the compile time selection `id`.\n * person?.id\n * ```\n */\n ref(reference) {\n return new DynamicReferenceBuilder(reference);\n }\n /**\n * Creates a table reference to a table that's not fully known at compile time.\n *\n * The type `T` is allowed to be a union of multiple tables.\n *\n * <!-- siteExample(\"select\", \"Generic find query\", 130) -->\n *\n * A generic type-safe helper function for finding a row by a column value:\n *\n * ```ts\n * import { SelectType } from 'kysely'\n * import { Database } from 'type-editor'\n *\n * async function getRowByColumn<\n * T extends keyof Database,\n * C extends keyof Database[T] & string,\n * V extends SelectType<Database[T][C]>,\n * >(t: T, c: C, v: V) {\n * // We need to use the dynamic module since the table name\n * // is not known at compile time.\n * const { table, ref } = db.dynamic\n *\n * return await db\n * .selectFrom(table(t).as('t'))\n * .selectAll()\n * .where(ref(c), '=', v)\n * .orderBy('t.id')\n * .executeTakeFirstOrThrow()\n * }\n *\n * const person = await getRowByColumn('person', 'first_name', 'Arnold')\n * ```\n */\n table(table) {\n return new DynamicTableBuilder(table);\n }\n}\n","/// <reference types=\"./default-connection-provider.d.ts\" />\nexport class DefaultConnectionProvider {\n #driver;\n constructor(driver) {\n this.#driver = driver;\n }\n async provideConnection(consumer) {\n const connection = await this.#driver.acquireConnection();\n try {\n return await consumer(connection);\n }\n finally {\n await this.#driver.releaseConnection(connection);\n }\n }\n}\n","/// <reference types=\"./default-query-executor.d.ts\" />\nimport { QueryExecutorBase } from './query-executor-base.js';\nexport class DefaultQueryExecutor extends QueryExecutorBase {\n #compiler;\n #adapter;\n #connectionProvider;\n constructor(compiler, adapter, connectionProvider, plugins = []) {\n super(plugins);\n this.#compiler = compiler;\n this.#adapter = adapter;\n this.#connectionProvider = connectionProvider;\n }\n get adapter() {\n return this.#adapter;\n }\n compileQuery(node, queryId) {\n return this.#compiler.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#connectionProvider.provideConnection(consumer);\n }\n withPlugins(plugins) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, ...plugins]);\n }\n withPlugin(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, plugin]);\n }\n withPluginAtFront(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [plugin, ...this.plugins]);\n }\n withConnectionProvider(connectionProvider) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, connectionProvider, [...this.plugins]);\n }\n withoutPlugins() {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, []);\n }\n}\n","/// <reference types=\"./performance-now.d.ts\" />\nimport { isFunction } from './object-utils.js';\nexport function performanceNow() {\n if (typeof performance !== 'undefined' && isFunction(performance.now)) {\n return performance.now();\n }\n else {\n return Date.now();\n }\n}\n","/// <reference types=\"./runtime-driver.d.ts\" />\nimport { performanceNow } from '../util/performance-now.js';\n/**\n * A small wrapper around {@link Driver} that makes sure the driver is\n * initialized before it is used, only initialized and destroyed\n * once etc.\n */\nexport class RuntimeDriver {\n #driver;\n #log;\n #initPromise;\n #initDone;\n #destroyPromise;\n #connections = new WeakSet();\n constructor(driver, log) {\n this.#initDone = false;\n this.#driver = driver;\n this.#log = log;\n }\n async init() {\n if (this.#destroyPromise) {\n throw new Error('driver has already been destroyed');\n }\n if (!this.#initPromise) {\n this.#initPromise = this.#driver\n .init()\n .then(() => {\n this.#initDone = true;\n })\n .catch((err) => {\n this.#initPromise = undefined;\n return Promise.reject(err);\n });\n }\n await this.#initPromise;\n }\n async acquireConnection() {\n if (this.#destroyPromise) {\n throw new Error('driver has already been destroyed');\n }\n if (!this.#initDone) {\n await this.init();\n }\n const connection = await this.#driver.acquireConnection();\n if (!this.#connections.has(connection)) {\n if (this.#needsLogging()) {\n this.#addLogging(connection);\n }\n this.#connections.add(connection);\n }\n return connection;\n }\n async releaseConnection(connection) {\n await this.#driver.releaseConnection(connection);\n }\n beginTransaction(connection, settings) {\n return this.#driver.beginTransaction(connection, settings);\n }\n commitTransaction(connection) {\n return this.#driver.commitTransaction(connection);\n }\n rollbackTransaction(connection) {\n return this.#driver.rollbackTransaction(connection);\n }\n savepoint(connection, savepointName, compileQuery) {\n if (this.#driver.savepoint) {\n return this.#driver.savepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `savepoint` method is not supported by this driver');\n }\n rollbackToSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.rollbackToSavepoint) {\n return this.#driver.rollbackToSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `rollbackToSavepoint` method is not supported by this driver');\n }\n releaseSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.releaseSavepoint) {\n return this.#driver.releaseSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `releaseSavepoint` method is not supported by this driver');\n }\n async destroy() {\n if (!this.#initPromise) {\n return;\n }\n await this.#initPromise;\n if (!this.#destroyPromise) {\n this.#destroyPromise = this.#driver.destroy().catch((err) => {\n this.#destroyPromise = undefined;\n return Promise.reject(err);\n });\n }\n await this.#destroyPromise;\n }\n #needsLogging() {\n return (this.#log.isLevelEnabled('query') || this.#log.isLevelEnabled('error'));\n }\n // This method monkey patches the database connection's executeQuery method\n // by adding logging code around it. Monkey patching is not pretty, but it's\n // the best option in this case.\n #addLogging(connection) {\n const executeQuery = connection.executeQuery;\n const streamQuery = connection.streamQuery;\n const dis = this;\n connection.executeQuery = async (compiledQuery) => {\n let caughtError;\n const startTime = performanceNow();\n try {\n return await executeQuery.call(connection, compiledQuery);\n }\n catch (error) {\n caughtError = error;\n await dis.#logError(error, compiledQuery, startTime);\n throw error;\n }\n finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime);\n }\n }\n };\n connection.streamQuery = async function* (compiledQuery, chunkSize) {\n let caughtError;\n const startTime = performanceNow();\n try {\n for await (const result of streamQuery.call(connection, compiledQuery, chunkSize)) {\n yield result;\n }\n }\n catch (error) {\n caughtError = error;\n await dis.#logError(error, compiledQuery, startTime);\n throw error;\n }\n finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime, true);\n }\n }\n };\n }\n async #logError(error, compiledQuery, startTime) {\n await this.#log.error(() => ({\n level: 'error',\n error,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime),\n }));\n }\n async #logQuery(compiledQuery, startTime, isStream = false) {\n await this.#log.query(() => ({\n level: 'query',\n isStream,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime),\n }));\n }\n #calculateDurationMillis(startTime) {\n return performanceNow() - startTime;\n }\n}\n","/// <reference types=\"./single-connection-provider.d.ts\" />\nconst ignoreError = () => { };\nexport class SingleConnectionProvider {\n #connection;\n #runningPromise;\n constructor(connection) {\n this.#connection = connection;\n }\n async provideConnection(consumer) {\n while (this.#runningPromise) {\n await this.#runningPromise.catch(ignoreError);\n }\n // `#runningPromise` must be set to undefined before it's\n // resolved or rejected. Otherwise the while loop above\n // will misbehave.\n this.#runningPromise = this.#run(consumer).finally(() => {\n this.#runningPromise = undefined;\n });\n return this.#runningPromise;\n }\n // Run the runner in an async function to make sure it doesn't\n // throw synchronous errors.\n async #run(runner) {\n return await runner(this.#connection);\n }\n}\n","/// <reference types=\"./driver.d.ts\" />\nexport const TRANSACTION_ACCESS_MODES = ['read only', 'read write'];\nexport const TRANSACTION_ISOLATION_LEVELS = [\n 'read uncommitted',\n 'read committed',\n 'repeatable read',\n 'serializable',\n 'snapshot',\n];\nexport function validateTransactionSettings(settings) {\n if (settings.accessMode &&\n !TRANSACTION_ACCESS_MODES.includes(settings.accessMode)) {\n throw new Error(`invalid transaction access mode ${settings.accessMode}`);\n }\n if (settings.isolationLevel &&\n !TRANSACTION_ISOLATION_LEVELS.includes(settings.isolationLevel)) {\n throw new Error(`invalid transaction isolation level ${settings.isolationLevel}`);\n }\n}\n","/// <reference types=\"./log.d.ts\" />\nimport { freeze, isFunction } from './object-utils.js';\nconst logLevels = ['query', 'error'];\nexport const LOG_LEVELS = freeze(logLevels);\nexport class Log {\n #levels;\n #logger;\n constructor(config) {\n if (isFunction(config)) {\n this.#logger = config;\n this.#levels = freeze({\n query: true,\n error: true,\n });\n }\n else {\n this.#logger = defaultLogger;\n this.#levels = freeze({\n query: config.includes('query'),\n error: config.includes('error'),\n });\n }\n }\n isLevelEnabled(level) {\n return this.#levels[level];\n }\n async query(getEvent) {\n if (this.#levels.query) {\n await this.#logger(getEvent());\n }\n }\n async error(getEvent) {\n if (this.#levels.error) {\n await this.#logger(getEvent());\n }\n }\n}\nfunction defaultLogger(event) {\n if (event.level === 'query') {\n const prefix = `kysely:query:${event.isStream ? 'stream:' : ''}`;\n console.log(`${prefix} ${event.query.sql}`);\n console.log(`${prefix} duration: ${event.queryDurationMillis.toFixed(1)}ms`);\n }\n else if (event.level === 'error') {\n if (event.error instanceof Error) {\n console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);\n }\n else {\n console.error(`kysely:error: ${JSON.stringify({\n error: event.error,\n query: event.query.sql,\n queryDurationMillis: event.queryDurationMillis,\n })}`);\n }\n }\n}\n","/// <reference types=\"./compilable.d.ts\" />\nimport { isFunction, isObject } from './object-utils.js';\nexport function isCompilable(value) {\n return isObject(value) && isFunction(value.compile);\n}\n","/// <reference types=\"./kysely.d.ts\" />\nimport { SchemaModule } from './schema/schema.js';\nimport { DynamicModule } from './dynamic/dynamic.js';\nimport { DefaultConnectionProvider } from './driver/default-connection-provider.js';\nimport { QueryCreator } from './query-creator.js';\nimport { DefaultQueryExecutor } from './query-executor/default-query-executor.js';\nimport { freeze, isObject, isUndefined } from './util/object-utils.js';\nimport { RuntimeDriver } from './driver/runtime-driver.js';\nimport { SingleConnectionProvider } from './driver/single-connection-provider.js';\nimport { validateTransactionSettings, } from './driver/driver.js';\nimport { createFunctionModule, } from './query-builder/function-module.js';\nimport { Log } from './util/log.js';\nimport { createQueryId } from './util/query-id.js';\nimport { isCompilable } from './util/compilable.js';\nimport { CaseBuilder } from './query-builder/case-builder.js';\nimport { CaseNode } from './operation-node/case-node.js';\nimport { parseExpression } from './parser/expression-parser.js';\nimport { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';\nimport { provideControlledConnection, } from './util/provide-controlled-connection.js';\nimport { logOnce } from './util/log-once.js';\n// @ts-ignore\nSymbol.asyncDispose ??= Symbol('Symbol.asyncDispose');\n/**\n * The main Kysely class.\n *\n * You should create one instance of `Kysely` per database using the {@link Kysely}\n * constructor. Each `Kysely` instance maintains its own connection pool.\n *\n * ### Examples\n *\n * This example assumes your database has a \"person\" table:\n *\n * ```ts\n * import * as Sqlite from 'better-sqlite3'\n * import { type Generated, Kysely, SqliteDialect } from 'kysely'\n *\n * interface Database {\n * person: {\n * id: Generated<number>\n * first_name: string\n * last_name: string | null\n * }\n * }\n *\n * const db = new Kysely<Database>({\n * dialect: new SqliteDialect({\n * database: new Sqlite(':memory:'),\n * })\n * })\n * ```\n *\n * @typeParam DB - The database interface type. Keys of this type must be table names\n * in the database and values must be interfaces that describe the rows in those\n * tables. See the examples above.\n */\nexport class Kysely extends QueryCreator {\n #props;\n constructor(args) {\n let superProps;\n let props;\n if (isKyselyProps(args)) {\n superProps = { executor: args.executor };\n props = { ...args };\n }\n else {\n const dialect = args.dialect;\n const driver = dialect.createDriver();\n const compiler = dialect.createQueryCompiler();\n const adapter = dialect.createAdapter();\n const log = new Log(args.log ?? []);\n const runtimeDriver = new RuntimeDriver(driver, log);\n const connectionProvider = new DefaultConnectionProvider(runtimeDriver);\n const executor = new DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);\n superProps = { executor };\n props = {\n config: args,\n executor,\n dialect,\n driver: runtimeDriver,\n };\n }\n super(superProps);\n this.#props = freeze(props);\n }\n /**\n * Returns the {@link SchemaModule} module for building database schema.\n */\n get schema() {\n return new SchemaModule(this.#props.executor);\n }\n /**\n * Returns a the {@link DynamicModule} module.\n *\n * The {@link DynamicModule} module can be used to bypass strict typing and\n * passing in dynamic values for the queries.\n */\n get dynamic() {\n return new DynamicModule();\n }\n /**\n * Returns a {@link DatabaseIntrospector | database introspector}.\n */\n get introspection() {\n return this.#props.dialect.createIntrospector(this.withoutPlugins());\n }\n case(value) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(value) ? undefined : parseExpression(value)),\n });\n }\n /**\n * Returns a {@link FunctionModule} that can be used to write somewhat type-safe function\n * calls.\n *\n * ```ts\n * const { count } = db.fn\n *\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select([\n * 'id',\n * count('pet.id').as('person_count'),\n * ])\n * .groupBy('person.id')\n * .having(count('pet.id'), '>', 10)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"person\".\"id\", count(\"pet\".\"id\") as \"person_count\"\n * from \"person\"\n * inner join \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\"\n * group by \"person\".\"id\"\n * having count(\"pet\".\"id\") > $1\n * ```\n *\n * Why \"somewhat\" type-safe? Because the function calls are not bound to the\n * current query context. They allow you to reference columns and tables that\n * are not in the current query. E.g. remove the `innerJoin` from the previous\n * query and TypeScript won't even complain.\n *\n * If you want to make the function calls fully type-safe, you can use the\n * {@link ExpressionBuilder.fn} getter for a query context-aware, stricter {@link FunctionModule}.\n *\n * ```ts\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select((eb) => [\n * 'person.id',\n * eb.fn.count('pet.id').as('pet_count')\n * ])\n * .groupBy('person.id')\n * .having((eb) => eb.fn.count('pet.id'), '>', 10)\n * .execute()\n * ```\n */\n get fn() {\n return createFunctionModule();\n }\n /**\n * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.\n *\n * The returned {@link TransactionBuilder} can be used to configure the transaction. The\n * {@link TransactionBuilder.execute} method can then be called to run the transaction.\n * {@link TransactionBuilder.execute} takes a function that is run inside the\n * transaction. If the function throws an exception,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * The callback function passed to the {@link TransactionBuilder.execute | execute}\n * method gets the transaction object as its only argument. The transaction is\n * of type {@link Transaction} which inherits {@link Kysely}. Any query\n * started through the transaction object is executed inside the transaction.\n *\n * To run a controlled transaction, allowing you to commit and rollback manually,\n * use {@link startTransaction} instead.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Simple transaction\", 10) -->\n *\n * This example inserts two rows in a transaction. If an exception is thrown inside\n * the callback passed to the `execute` method,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * ```ts\n * const catto = await db.transaction().execute(async (trx) => {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * return await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirst()\n * })\n * ```\n *\n * Setting the isolation level:\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n *\n * await db\n * .transaction()\n * .setIsolationLevel('serializable')\n * .execute(async (trx) => {\n * await doStuff(trx)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n transaction() {\n return new TransactionBuilder({ ...this.#props });\n }\n /**\n * Creates a {@link ControlledTransactionBuilder} that can be used to run queries inside a controlled transaction.\n *\n * The returned {@link ControlledTransactionBuilder} can be used to configure the transaction.\n * The {@link ControlledTransactionBuilder.execute} method can then be called\n * to start the transaction and return a {@link ControlledTransaction}.\n *\n * A {@link ControlledTransaction} allows you to commit and rollback manually,\n * execute savepoint commands. It extends {@link Transaction} which extends {@link Kysely},\n * so you can run queries inside the transaction. Once the transaction is committed,\n * or rolled back, it can't be used anymore - all queries will throw an error.\n * This is to prevent accidentally running queries outside the transaction - where\n * atomicity is not guaranteed anymore.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction\", 11) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, use it to insert two rows and then commit\n * the transaction. If an error is thrown, we catch it and rollback the transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const catto = await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * await trx.commit().execute()\n *\n * // ...\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction /w savepoints\", 12) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, insert a person, create a savepoint,\n * try inserting a toy and a pet, and if an error is thrown, we rollback to the\n * savepoint. Eventually we release the savepoint, insert an audit record and\n * commit the transaction. If an error is thrown, we catch it and rollback the\n * transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * const catto = await trxAfterJennifer\n * .insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * await trxAfterJennifer\n * .insertInto('toy')\n * .values({ name: 'Bone', price: 1.99, pet_id: catto.id })\n * .execute()\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await trx.insertInto('audit').values({ action: 'added Jennifer' }).execute()\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n */\n startTransaction() {\n return new ControlledTransactionBuilder({ ...this.#props });\n }\n /**\n * Provides a kysely instance bound to a single database connection.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .connection()\n * .execute(async (db) => {\n * // `db` is an instance of `Kysely` that's bound to a single\n * // database connection. All queries executed through `db` use\n * // the same connection.\n * await doStuff(db)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n connection() {\n return new ConnectionBuilder({ ...this.#props });\n }\n /**\n * Returns a copy of this Kysely instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n /**\n * Returns a copy of this Kysely instance without any plugins.\n */\n withoutPlugins() {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n /**\n * @override\n */\n withSchema(schema) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n /**\n * Returns a copy of this Kysely instance with tables added to its\n * database type.\n *\n * This method only modifies the types and doesn't affect any of the\n * executed queries in any way.\n *\n * ### Examples\n *\n * The following example adds and uses a temporary table:\n *\n * ```ts\n * await db.schema\n * .createTable('temp_table')\n * .temporary()\n * .addColumn('some_column', 'integer')\n * .execute()\n *\n * const tempDb = db.withTables<{\n * temp_table: {\n * some_column: number\n * }\n * }>()\n *\n * await tempDb\n * .insertInto('temp_table')\n * .values({ some_column: 100 })\n * .execute()\n * ```\n */\n withTables() {\n return new Kysely({ ...this.#props });\n }\n /**\n * Releases all resources and disconnects from the database.\n *\n * You need to call this when you are done using the `Kysely` instance.\n */\n async destroy() {\n await this.#props.driver.destroy();\n }\n /**\n * Returns true if this `Kysely` instance is a transaction.\n *\n * You can also use `db instanceof Transaction`.\n */\n get isTransaction() {\n return false;\n }\n /**\n * @internal\n * @private\n */\n getExecutor() {\n return this.#props.executor;\n }\n /**\n * Executes a given compiled query or query builder.\n *\n * See {@link https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0004-splitting-query-building-and-execution.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.\n */\n executeQuery(query, \n // TODO: remove this in the future. deprecated in 0.28.x\n queryId) {\n if (queryId !== undefined) {\n logOnce('Passing `queryId` in `db.executeQuery` is deprecated and will result in a compile-time error in the future.');\n }\n const compiledQuery = isCompilable(query) ? query.compile() : query;\n return this.getExecutor().executeQuery(compiledQuery);\n }\n async [Symbol.asyncDispose]() {\n await this.destroy();\n }\n}\nexport class Transaction extends Kysely {\n #props;\n constructor(props) {\n super(props);\n this.#props = props;\n }\n // The return type is `true` instead of `boolean` to make Kysely<DB>\n // unassignable to Transaction<DB> while allowing assignment the\n // other way around.\n get isTransaction() {\n return true;\n }\n transaction() {\n throw new Error('calling the transaction method for a Transaction is not supported');\n }\n connection() {\n throw new Error('calling the connection method for a Transaction is not supported');\n }\n async destroy() {\n throw new Error('calling the destroy method for a Transaction is not supported');\n }\n withPlugin(plugin) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n withoutPlugins() {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n withSchema(schema) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n withTables() {\n return new Transaction({ ...this.#props });\n }\n}\nexport function isKyselyProps(obj) {\n return (isObject(obj) &&\n isObject(obj.config) &&\n isObject(obj.driver) &&\n isObject(obj.executor) &&\n isObject(obj.dialect));\n}\nexport class ConnectionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n async execute(callback) {\n return this.#props.executor.provideConnection(async (connection) => {\n const executor = this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection));\n const db = new Kysely({\n ...this.#props,\n executor,\n });\n return await callback(db);\n });\n }\n}\nexport class TransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new TransactionBuilder({\n ...this.#props,\n accessMode,\n });\n }\n setIsolationLevel(isolationLevel) {\n return new TransactionBuilder({\n ...this.#props,\n isolationLevel,\n });\n }\n async execute(callback) {\n const { isolationLevel, accessMode, ...kyselyProps } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n return this.#props.executor.provideConnection(async (connection) => {\n const state = { isCommitted: false, isRolledBack: false };\n const executor = new NotCommittedOrRolledBackAssertingExecutor(this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection)), state);\n const transaction = new Transaction({\n ...kyselyProps,\n executor,\n });\n let transactionBegun = false;\n try {\n await this.#props.driver.beginTransaction(connection, settings);\n transactionBegun = true;\n const result = await callback(transaction);\n await this.#props.driver.commitTransaction(connection);\n state.isCommitted = true;\n return result;\n }\n catch (error) {\n if (transactionBegun) {\n await this.#props.driver.rollbackTransaction(connection);\n state.isRolledBack = true;\n }\n throw error;\n }\n });\n }\n}\nexport class ControlledTransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n accessMode,\n });\n }\n setIsolationLevel(isolationLevel) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n isolationLevel,\n });\n }\n async execute() {\n const { isolationLevel, accessMode, ...props } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n const connection = await provideControlledConnection(this.#props.executor);\n await this.#props.driver.beginTransaction(connection.connection, settings);\n return new ControlledTransaction({\n ...props,\n connection,\n executor: this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection.connection)),\n });\n }\n}\nexport class ControlledTransaction extends Transaction {\n #props;\n #compileQuery;\n #state;\n constructor(props) {\n const state = { isCommitted: false, isRolledBack: false };\n props = {\n ...props,\n executor: new NotCommittedOrRolledBackAssertingExecutor(props.executor, state),\n };\n const { connection, ...transactionProps } = props;\n super(transactionProps);\n this.#props = freeze(props);\n this.#state = state;\n const queryId = createQueryId();\n this.#compileQuery = (node) => props.executor.compileQuery(node, queryId);\n }\n get isCommitted() {\n return this.#state.isCommitted;\n }\n get isRolledBack() {\n return this.#state.isRolledBack;\n }\n /**\n * Commits the transaction.\n *\n * See {@link rollback}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n commit() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.commitTransaction(this.#props.connection.connection);\n this.#state.isCommitted = true;\n this.#props.connection.release();\n });\n }\n /**\n * Rolls back the transaction.\n *\n * See {@link commit} and {@link rollbackToSavepoint}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollback() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackTransaction(this.#props.connection.connection);\n this.#state.isRolledBack = true;\n this.#props.connection.release();\n });\n }\n /**\n * Creates a savepoint with a given name.\n *\n * See {@link rollbackToSavepoint} and {@link releaseSavepoint}.\n *\n * For a type-safe experience, you should use the returned instance from now on.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n savepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.savepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Rolls back to a savepoint with a given name.\n *\n * See {@link savepoint} and {@link releaseSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollbackToSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackToSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Releases a savepoint with a given name.\n *\n * See {@link savepoint} and {@link rollbackToSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await doSomethingElse(trx)\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * async function doSomethingElse(kysely: Kysely<Database>) {}\n * ```\n */\n releaseSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.releaseSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n withPlugin(plugin) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n withoutPlugins() {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n withSchema(schema) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n withTables() {\n return new ControlledTransaction({ ...this.#props });\n }\n}\nexport class Command {\n #cb;\n constructor(cb) {\n this.#cb = cb;\n }\n /**\n * Executes the command.\n */\n async execute() {\n return await this.#cb();\n }\n}\nfunction assertNotCommittedOrRolledBack(state) {\n if (state.isCommitted) {\n throw new Error('Transaction is already committed');\n }\n if (state.isRolledBack) {\n throw new Error('Transaction is already rolled back');\n }\n}\n/**\n * An executor wrapper that asserts that the transaction state is not committed\n * or rolled back when a query is executed.\n *\n * @internal\n */\nclass NotCommittedOrRolledBackAssertingExecutor {\n #executor;\n #state;\n constructor(executor, state) {\n if (executor instanceof NotCommittedOrRolledBackAssertingExecutor) {\n this.#executor = executor.#executor;\n }\n else {\n this.#executor = executor;\n }\n this.#state = state;\n }\n get adapter() {\n return this.#executor.adapter;\n }\n get plugins() {\n return this.#executor.plugins;\n }\n transformQuery(node, queryId) {\n return this.#executor.transformQuery(node, queryId);\n }\n compileQuery(node, queryId) {\n return this.#executor.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#executor.provideConnection(consumer);\n }\n executeQuery(compiledQuery) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.executeQuery(compiledQuery);\n }\n stream(compiledQuery, chunkSize) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.stream(compiledQuery, chunkSize);\n }\n withConnectionProvider(connectionProvider) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withConnectionProvider(connectionProvider), this.#state);\n }\n withPlugin(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugin(plugin), this.#state);\n }\n withPlugins(plugins) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugins(plugins), this.#state);\n }\n withPluginAtFront(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPluginAtFront(plugin), this.#state);\n }\n withoutPlugins() {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withoutPlugins(), this.#state);\n }\n}\n","/// <reference types=\"./savepoint-parser.d.ts\" />\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nexport function parseSavepointCommand(command, savepointName) {\n return RawNode.createWithChildren([\n RawNode.createWithSql(`${command} `),\n IdentifierNode.create(savepointName), // ensures savepointName gets sanitized\n ]);\n}\n","/// <reference types=\"./sqlite-driver.d.ts\" />\nimport { SelectQueryNode } from '../../operation-node/select-query-node.js';\nimport { parseSavepointCommand } from '../../parser/savepoint-parser.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { freeze, isFunction } from '../../util/object-utils.js';\nimport { createQueryId } from '../../util/query-id.js';\nexport class SqliteDriver {\n #config;\n #connectionMutex = new ConnectionMutex();\n #db;\n #connection;\n constructor(config) {\n this.#config = freeze({ ...config });\n }\n async init() {\n this.#db = isFunction(this.#config.database)\n ? await this.#config.database()\n : this.#config.database;\n this.#connection = new SqliteConnection(this.#db);\n if (this.#config.onCreateConnection) {\n await this.#config.onCreateConnection(this.#connection);\n }\n }\n async acquireConnection() {\n // SQLite only has one single connection. We use a mutex here to wait\n // until the single connection has been released.\n await this.#connectionMutex.lock();\n return this.#connection;\n }\n async beginTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('begin'));\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('commit'));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('rollback'));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('release', savepointName), createQueryId()));\n }\n async releaseConnection() {\n this.#connectionMutex.unlock();\n }\n async destroy() {\n this.#db?.close();\n }\n}\nclass SqliteConnection {\n #db;\n constructor(db) {\n this.#db = db;\n }\n executeQuery(compiledQuery) {\n const { sql, parameters } = compiledQuery;\n const stmt = this.#db.prepare(sql);\n if (stmt.reader) {\n return Promise.resolve({\n rows: stmt.all(parameters),\n });\n }\n const { changes, lastInsertRowid } = stmt.run(parameters);\n return Promise.resolve({\n numAffectedRows: changes !== undefined && changes !== null ? BigInt(changes) : undefined,\n insertId: lastInsertRowid !== undefined && lastInsertRowid !== null\n ? BigInt(lastInsertRowid)\n : undefined,\n rows: [],\n });\n }\n async *streamQuery(compiledQuery, _chunkSize) {\n const { sql, parameters, query } = compiledQuery;\n const stmt = this.#db.prepare(sql);\n if (SelectQueryNode.is(query)) {\n const iter = stmt.iterate(parameters);\n for (const row of iter) {\n yield {\n rows: [row],\n };\n }\n }\n else {\n throw new Error('Sqlite driver only supports streaming of select queries');\n }\n }\n}\nclass ConnectionMutex {\n #promise;\n #resolve;\n async lock() {\n while (this.#promise) {\n await this.#promise;\n }\n this.#promise = new Promise((resolve) => {\n this.#resolve = resolve;\n });\n }\n unlock() {\n const resolve = this.#resolve;\n this.#promise = undefined;\n this.#resolve = undefined;\n resolve?.();\n }\n}\n","/// <reference types=\"./sqlite-introspector.d.ts\" />\nimport { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, } from '../../migration/migrator.js';\nimport { sql } from '../../raw-builder/sql.js';\nexport class SqliteIntrospector {\n #db;\n constructor(db) {\n this.#db = db;\n }\n async getSchemas() {\n // Sqlite doesn't support schemas.\n return [];\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n return await this.#getTableMetadata(options);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options),\n };\n }\n #tablesQuery(qb, options) {\n let tablesQuery = qb\n .selectFrom('sqlite_master')\n .where('type', 'in', ['table', 'view'])\n .where('name', 'not like', 'sqlite_%')\n .select(['name', 'sql', 'type'])\n .orderBy('name');\n if (!options.withInternalKyselyTables) {\n tablesQuery = tablesQuery\n .where('name', '!=', DEFAULT_MIGRATION_TABLE)\n .where('name', '!=', DEFAULT_MIGRATION_LOCK_TABLE);\n }\n return tablesQuery;\n }\n async #getTableMetadata(options) {\n const tablesResult = await this.#tablesQuery(this.#db, options).execute();\n const tableMetadata = await this.#db\n .with('table_list', (qb) => this.#tablesQuery(qb, options))\n .selectFrom([\n 'table_list as tl',\n sql `pragma_table_info(tl.name)`.as('p'),\n ])\n .select([\n 'tl.name as table',\n 'p.cid',\n 'p.name',\n 'p.type',\n 'p.notnull',\n 'p.dflt_value',\n 'p.pk',\n ])\n .orderBy('tl.name')\n .orderBy('p.cid')\n .execute();\n const columnsByTable = {};\n for (const row of tableMetadata) {\n columnsByTable[row.table] ??= [];\n columnsByTable[row.table].push(row);\n }\n return tablesResult.map(({ name, sql, type }) => {\n // // Try to find the name of the column that has `autoincrement` 🤦\n let autoIncrementCol = sql\n ?.split(/[\\(\\),]/)\n ?.find((it) => it.toLowerCase().includes('autoincrement'))\n ?.trimStart()\n ?.split(/\\s+/)?.[0]\n ?.replace(/[\"`]/g, '');\n const columns = columnsByTable[name] ?? [];\n // Otherwise, check for an INTEGER PRIMARY KEY\n // https://www.sqlite.org/autoinc.html\n if (!autoIncrementCol) {\n const pkCols = columns.filter((r) => r.pk > 0);\n if (pkCols.length === 1 && pkCols[0].type.toLowerCase() === 'integer') {\n autoIncrementCol = pkCols[0].name;\n }\n }\n return {\n name: name,\n isView: type === 'view',\n columns: columns.map((col) => ({\n name: col.name,\n dataType: col.type,\n isNullable: !col.notnull,\n isAutoIncrementing: col.name === autoIncrementCol,\n hasDefaultValue: col.dflt_value != null,\n comment: undefined,\n })),\n };\n });\n }\n}\n","/// <reference types=\"./sqlite-dialect.d.ts\" />\nimport { SqliteDriver } from './sqlite-driver.js';\nimport { SqliteQueryCompiler } from './sqlite-query-compiler.js';\nimport { SqliteIntrospector } from './sqlite-introspector.js';\nimport { SqliteAdapter } from './sqlite-adapter.js';\nimport { freeze } from '../../util/object-utils.js';\n/**\n * SQLite dialect that uses the [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) library.\n *\n * The constructor takes an instance of {@link SqliteDialectConfig}.\n *\n * ```ts\n * import Database from 'better-sqlite3'\n *\n * new SqliteDialect({\n * database: new Database('db.sqlite')\n * })\n * ```\n *\n * If you want the pool to only be created once it's first used, `database`\n * can be a function:\n *\n * ```ts\n * import Database from 'better-sqlite3'\n *\n * new SqliteDialect({\n * database: async () => new Database('db.sqlite')\n * })\n * ```\n */\nexport class SqliteDialect {\n #config;\n constructor(config) {\n this.#config = freeze({ ...config });\n }\n createDriver() {\n return new SqliteDriver(this.#config);\n }\n createQueryCompiler() {\n return new SqliteQueryCompiler();\n }\n createAdapter() {\n return new SqliteAdapter();\n }\n createIntrospector(db) {\n return new SqliteIntrospector(db);\n }\n}\n","/// <reference types=\"./postgres-query-compiler.d.ts\" />\nimport { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';\nconst ID_WRAP_REGEX = /\"/g;\nexport class PostgresQueryCompiler extends DefaultQueryCompiler {\n sanitizeIdentifier(identifier) {\n return identifier.replace(ID_WRAP_REGEX, '\"\"');\n }\n}\n","/// <reference types=\"./postgres-introspector.d.ts\" />\nimport { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, } from '../../migration/migrator.js';\nimport { freeze } from '../../util/object-utils.js';\nimport { sql } from '../../raw-builder/sql.js';\nexport class PostgresIntrospector {\n #db;\n constructor(db) {\n this.#db = db;\n }\n async getSchemas() {\n let rawSchemas = await this.#db\n .selectFrom('pg_catalog.pg_namespace')\n .select('nspname')\n .$castTo()\n .execute();\n return rawSchemas.map((it) => ({ name: it.nspname }));\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n let query = this.#db\n // column\n .selectFrom('pg_catalog.pg_attribute as a')\n // table\n .innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')\n // table schema\n .innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')\n // column data type\n .innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')\n // column data type schema\n .innerJoin('pg_catalog.pg_namespace as dtns', 'typ.typnamespace', 'dtns.oid')\n .select([\n 'a.attname as column',\n 'a.attnotnull as not_null',\n 'a.atthasdef as has_default',\n 'c.relname as table',\n 'c.relkind as table_type',\n 'ns.nspname as schema',\n 'typ.typname as type',\n 'dtns.nspname as type_schema',\n sql `col_description(a.attrelid, a.attnum)`.as('column_description'),\n sql `pg_get_serial_sequence(quote_ident(ns.nspname) || '.' || quote_ident(c.relname), a.attname)`.as('auto_incrementing'),\n ])\n .where('c.relkind', 'in', [\n 'r' /*regular table*/,\n 'v' /*view*/,\n 'p' /*partitioned table*/,\n ])\n .where('ns.nspname', '!~', '^pg_')\n .where('ns.nspname', '!=', 'information_schema')\n // Filter out internal cockroachdb schema\n .where('ns.nspname', '!=', 'crdb_internal')\n // Only schemas where we are allowed access\n .where(sql `has_schema_privilege(ns.nspname, 'USAGE')`)\n // No system columns\n .where('a.attnum', '>=', 0)\n .where('a.attisdropped', '!=', true)\n .orderBy('ns.nspname')\n .orderBy('c.relname')\n .orderBy('a.attnum')\n .$castTo();\n if (!options.withInternalKyselyTables) {\n query = query\n .where('c.relname', '!=', DEFAULT_MIGRATION_TABLE)\n .where('c.relname', '!=', DEFAULT_MIGRATION_LOCK_TABLE);\n }\n const rawColumns = await query.execute();\n return this.#parseTableMetadata(rawColumns);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options),\n };\n }\n #parseTableMetadata(columns) {\n const tableDictionary = new Map();\n for (let i = 0, len = columns.length; i < len; i++) {\n const column = columns[i];\n const { schema, table } = column;\n const tableKey = `schema:${schema};table:${table}`;\n if (!tableDictionary.has(tableKey)) {\n tableDictionary.set(tableKey, freeze({\n columns: [],\n isView: column.table_type === 'v',\n name: table,\n schema,\n }));\n }\n tableDictionary.get(tableKey).columns.push(freeze({\n comment: column.column_description ?? undefined,\n dataType: column.type,\n dataTypeSchema: column.type_schema,\n hasDefaultValue: column.has_default,\n isAutoIncrementing: column.auto_incrementing !== null,\n isNullable: !column.not_null,\n name: column.column,\n }));\n }\n return Array.from(tableDictionary.values());\n }\n}\n","/// <reference types=\"./postgres-adapter.d.ts\" />\nimport { sql } from '../../raw-builder/sql.js';\nimport { DialectAdapterBase } from '../dialect-adapter-base.js';\n// Random id for our transaction lock.\nconst LOCK_ID = BigInt('3853314791062309107');\nexport class PostgresAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return true;\n }\n get supportsReturning() {\n return true;\n }\n async acquireMigrationLock(db, _opt) {\n // Acquire a transaction level advisory lock.\n await sql `select pg_advisory_xact_lock(${sql.lit(LOCK_ID)})`.execute(db);\n }\n async releaseMigrationLock(_db, _opt) {\n // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the\n // end of the transaction and since `supportsTransactionalDdl` true, we know\n // the `db` instance passed to acquireMigrationLock is actually a transaction.\n }\n}\n","/// <reference types=\"./stack-trace-utils.d.ts\" />\nimport { isObject, isString } from './object-utils.js';\nexport function extendStackTrace(err, stackError) {\n if (isStackHolder(err) && stackError.stack) {\n // Remove the first line that just says `Error`.\n const stackExtension = stackError.stack.split('\\n').slice(1).join('\\n');\n err.stack += `\\n${stackExtension}`;\n return err;\n }\n return err;\n}\nfunction isStackHolder(obj) {\n return isObject(obj) && isString(obj.stack);\n}\n","/// <reference types=\"./mysql-driver.d.ts\" />\nimport { parseSavepointCommand } from '../../parser/savepoint-parser.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { isFunction, isObject, freeze } from '../../util/object-utils.js';\nimport { createQueryId } from '../../util/query-id.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nconst PRIVATE_RELEASE_METHOD = Symbol();\nexport class MysqlDriver {\n #config;\n #connections = new WeakMap();\n #pool;\n constructor(configOrPool) {\n this.#config = freeze({ ...configOrPool });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool)\n ? await this.#config.pool()\n : this.#config.pool;\n }\n async acquireConnection() {\n const rawConnection = await this.#acquireConnection();\n let connection = this.#connections.get(rawConnection);\n if (!connection) {\n connection = new MysqlConnection(rawConnection);\n this.#connections.set(rawConnection, connection);\n // The driver must take care of calling `onCreateConnection` when a new\n // connection is created. The `mysql2` module doesn't provide an async hook\n // for the connection creation. We need to call the method explicitly.\n if (this.#config?.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config?.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async #acquireConnection() {\n return new Promise((resolve, reject) => {\n this.#pool.getConnection(async (err, rawConnection) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(rawConnection);\n }\n });\n });\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n const parts = [];\n if (settings.isolationLevel) {\n parts.push(`isolation level ${settings.isolationLevel}`);\n }\n if (settings.accessMode) {\n parts.push(settings.accessMode);\n }\n const sql = `set transaction ${parts.join(', ')}`;\n // On MySQL this sets the isolation level of the next transaction.\n await connection.executeQuery(CompiledQuery.raw(sql));\n }\n await connection.executeQuery(CompiledQuery.raw('begin'));\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('commit'));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('rollback'));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('release savepoint', savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD]();\n }\n async destroy() {\n return new Promise((resolve, reject) => {\n this.#pool.end((err) => {\n if (err) {\n reject(err);\n }\n else {\n resolve();\n }\n });\n });\n }\n}\nfunction isOkPacket(obj) {\n return isObject(obj) && 'insertId' in obj && 'affectedRows' in obj;\n}\nclass MysqlConnection {\n #rawConnection;\n constructor(rawConnection) {\n this.#rawConnection = rawConnection;\n }\n async executeQuery(compiledQuery) {\n try {\n const result = await this.#executeQuery(compiledQuery);\n if (isOkPacket(result)) {\n const { insertId, affectedRows, changedRows } = result;\n return {\n insertId: insertId !== undefined &&\n insertId !== null &&\n insertId.toString() !== '0'\n ? BigInt(insertId)\n : undefined,\n numAffectedRows: affectedRows !== undefined && affectedRows !== null\n ? BigInt(affectedRows)\n : undefined,\n numChangedRows: changedRows !== undefined && changedRows !== null\n ? BigInt(changedRows)\n : undefined,\n rows: [],\n };\n }\n else if (Array.isArray(result)) {\n return {\n rows: result,\n };\n }\n return {\n rows: [],\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n #executeQuery(compiledQuery) {\n return new Promise((resolve, reject) => {\n this.#rawConnection.query(compiledQuery.sql, compiledQuery.parameters, (err, result) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(result);\n }\n });\n });\n }\n async *streamQuery(compiledQuery, _chunkSize) {\n const stream = this.#rawConnection\n .query(compiledQuery.sql, compiledQuery.parameters)\n .stream({\n objectMode: true,\n });\n try {\n for await (const row of stream) {\n yield {\n rows: [row],\n };\n }\n }\n catch (ex) {\n if (ex &&\n typeof ex === 'object' &&\n 'code' in ex &&\n // @ts-ignore\n ex.code === 'ERR_STREAM_PREMATURE_CLOSE') {\n // Most likely because of https://github.com/mysqljs/mysql/blob/master/lib/protocol/sequences/Query.js#L220\n return;\n }\n throw ex;\n }\n }\n [PRIVATE_RELEASE_METHOD]() {\n this.#rawConnection.release();\n }\n}\n","/// <reference types=\"./mysql-query-compiler.d.ts\" />\nimport { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';\nconst LITERAL_ESCAPE_REGEX = /[\\\\']/g;\nconst ID_WRAP_REGEX = /`/g;\nconst JSON_PATH_MEMBER_ESCAPE_REGEX = /[\\\\'\"]/g;\nexport class MysqlQueryCompiler extends DefaultQueryCompiler {\n getCurrentParameterPlaceholder() {\n return '?';\n }\n getLeftExplainOptionsWrapper() {\n return '';\n }\n getExplainOptionAssignment() {\n return '=';\n }\n getExplainOptionsDelimiter() {\n return ' ';\n }\n getRightExplainOptionsWrapper() {\n return '';\n }\n getLeftIdentifierWrapper() {\n return ID_WRAP_REGEX.source;\n }\n getRightIdentifierWrapper() {\n return ID_WRAP_REGEX.source;\n }\n sanitizeIdentifier(identifier) {\n return identifier.replace(ID_WRAP_REGEX, '``');\n }\n /**\n * MySQL requires escaping backslashes in string literals when using the\n * default NO_BACKSLASH_ESCAPES=OFF mode. Without this, a backslash\n * followed by a quote (\\') can break out of the string literal.\n *\n * @see https://dev.mysql.com/doc/refman/9.6/en/string-literals.html\n */\n sanitizeStringLiteral(value) {\n return value.replace(LITERAL_ESCAPE_REGEX, (char) => char === '\\\\' ? '\\\\\\\\' : \"''\");\n }\n /**\n * Member values appear inside `\"...\"` in the JSON path, which itself sits\n * inside a SQL string literal. They must therefore be escaped twice — once\n * for the JSON path grammar, then again for MySQL's string literal parser.\n */\n sanitizeJSONPathMemberValue(value) {\n return value.replace(JSON_PATH_MEMBER_ESCAPE_REGEX, (char) => char === '\\\\' ? '\\\\\\\\\\\\\\\\' : char === \"'\" ? \"''\" : '\\\\\\\\\"');\n }\n visitCreateIndex(node) {\n this.append('create ');\n if (node.unique) {\n this.append('unique ');\n }\n this.append('index ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.name);\n if (node.using) {\n this.append(' using ');\n this.visitNode(node.using);\n }\n if (node.table) {\n this.append(' on ');\n this.visitNode(node.table);\n }\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n }\n}\n","/// <reference types=\"./mysql-introspector.d.ts\" />\nimport { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, } from '../../migration/migrator.js';\nimport { freeze } from '../../util/object-utils.js';\nimport { sql } from '../../raw-builder/sql.js';\nexport class MysqlIntrospector {\n #db;\n constructor(db) {\n this.#db = db;\n }\n async getSchemas() {\n let rawSchemas = await this.#db\n .selectFrom('information_schema.schemata')\n .select('schema_name')\n .$castTo()\n .execute();\n return rawSchemas.map((it) => ({ name: it.SCHEMA_NAME }));\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n let query = this.#db\n .selectFrom('information_schema.columns as columns')\n .innerJoin('information_schema.tables as tables', (b) => b\n .onRef('columns.TABLE_CATALOG', '=', 'tables.TABLE_CATALOG')\n .onRef('columns.TABLE_SCHEMA', '=', 'tables.TABLE_SCHEMA')\n .onRef('columns.TABLE_NAME', '=', 'tables.TABLE_NAME'))\n .select([\n 'columns.COLUMN_NAME',\n 'columns.COLUMN_DEFAULT',\n 'columns.TABLE_NAME',\n 'columns.TABLE_SCHEMA',\n 'tables.TABLE_TYPE',\n 'columns.IS_NULLABLE',\n 'columns.DATA_TYPE',\n 'columns.EXTRA',\n 'columns.COLUMN_COMMENT',\n ])\n .where('columns.TABLE_SCHEMA', '=', sql `database()`)\n .orderBy('columns.TABLE_NAME')\n .orderBy('columns.ORDINAL_POSITION')\n .$castTo();\n if (!options.withInternalKyselyTables) {\n query = query\n .where('columns.TABLE_NAME', '!=', DEFAULT_MIGRATION_TABLE)\n .where('columns.TABLE_NAME', '!=', DEFAULT_MIGRATION_LOCK_TABLE);\n }\n const rawColumns = await query.execute();\n return this.#parseTableMetadata(rawColumns);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options),\n };\n }\n #parseTableMetadata(columns) {\n return columns.reduce((tables, it) => {\n let table = tables.find((tbl) => tbl.name === it.TABLE_NAME);\n if (!table) {\n table = freeze({\n name: it.TABLE_NAME,\n isView: it.TABLE_TYPE === 'VIEW',\n schema: it.TABLE_SCHEMA,\n columns: [],\n });\n tables.push(table);\n }\n table.columns.push(freeze({\n name: it.COLUMN_NAME,\n dataType: it.DATA_TYPE,\n isNullable: it.IS_NULLABLE === 'YES',\n isAutoIncrementing: it.EXTRA.toLowerCase().includes('auto_increment'),\n hasDefaultValue: it.COLUMN_DEFAULT !== null,\n comment: it.COLUMN_COMMENT === '' ? undefined : it.COLUMN_COMMENT,\n }));\n return tables;\n }, []);\n }\n}\n","/// <reference types=\"./mysql-adapter.d.ts\" />\nimport { sql } from '../../raw-builder/sql.js';\nimport { DialectAdapterBase } from '../dialect-adapter-base.js';\nconst LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';\nconst LOCK_TIMEOUT_SECONDS = 60 * 60;\nexport class MysqlAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return false;\n }\n get supportsReturning() {\n return false;\n }\n async acquireMigrationLock(db, _opt) {\n // Kysely uses a single connection to run the migrations. Because of that, we\n // can take a lock using `get_lock`. Locks acquired using `get_lock` get\n // released when the connection is destroyed (session ends) or when the lock\n // is released using `release_lock`. This way we know that the lock is either\n // released by us after successfull or failed migrations OR it's released by\n // MySQL if the process gets killed for some reason.\n await sql `select get_lock(${sql.lit(LOCK_ID)}, ${sql.lit(LOCK_TIMEOUT_SECONDS)})`.execute(db);\n }\n async releaseMigrationLock(db, _opt) {\n await sql `select release_lock(${sql.lit(LOCK_ID)})`.execute(db);\n }\n}\n","/// <reference types=\"./mysql-dialect.d.ts\" />\nimport { MysqlDriver } from './mysql-driver.js';\nimport { MysqlQueryCompiler } from './mysql-query-compiler.js';\nimport { MysqlIntrospector } from './mysql-introspector.js';\nimport { MysqlAdapter } from './mysql-adapter.js';\n/**\n * MySQL dialect that uses the [mysql2](https://github.com/sidorares/node-mysql2#readme) library.\n *\n * The constructor takes an instance of {@link MysqlDialectConfig}.\n *\n * ```ts\n * import { createPool } from 'mysql2'\n *\n * new MysqlDialect({\n * pool: createPool({\n * database: 'some_db',\n * host: 'localhost',\n * })\n * })\n * ```\n *\n * If you want the pool to only be created once it's first used, `pool`\n * can be a function:\n *\n * ```ts\n * import { createPool } from 'mysql2'\n *\n * new MysqlDialect({\n * pool: async () => createPool({\n * database: 'some_db',\n * host: 'localhost',\n * })\n * })\n * ```\n */\nexport class MysqlDialect {\n #config;\n constructor(config) {\n this.#config = config;\n }\n createDriver() {\n return new MysqlDriver(this.#config);\n }\n createQueryCompiler() {\n return new MysqlQueryCompiler();\n }\n createAdapter() {\n return new MysqlAdapter();\n }\n createIntrospector(db) {\n return new MysqlIntrospector(db);\n }\n}\n","/// <reference types=\"./postgres-driver.d.ts\" />\nimport { parseSavepointCommand } from '../../parser/savepoint-parser.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { isFunction, freeze } from '../../util/object-utils.js';\nimport { createQueryId } from '../../util/query-id.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nconst PRIVATE_RELEASE_METHOD = Symbol();\nexport class PostgresDriver {\n #config;\n #connections = new WeakMap();\n #pool;\n constructor(config) {\n this.#config = freeze({ ...config });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool)\n ? await this.#config.pool()\n : this.#config.pool;\n }\n async acquireConnection() {\n const client = await this.#pool.connect();\n let connection = this.#connections.get(client);\n if (!connection) {\n connection = new PostgresConnection(client, {\n cursor: this.#config.cursor ?? null,\n });\n this.#connections.set(client, connection);\n // The driver must take care of calling `onCreateConnection` when a new\n // connection is created. The `pg` module doesn't provide an async hook\n // for the connection creation. We need to call the method explicitly.\n if (this.#config.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n let sql = 'start transaction';\n if (settings.isolationLevel) {\n sql += ` isolation level ${settings.isolationLevel}`;\n }\n if (settings.accessMode) {\n sql += ` ${settings.accessMode}`;\n }\n await connection.executeQuery(CompiledQuery.raw(sql));\n }\n else {\n await connection.executeQuery(CompiledQuery.raw('begin'));\n }\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('commit'));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('rollback'));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('release', savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD]();\n }\n async destroy() {\n if (this.#pool) {\n const pool = this.#pool;\n this.#pool = undefined;\n await pool.end();\n }\n }\n}\nclass PostgresConnection {\n #client;\n #options;\n constructor(client, options) {\n this.#client = client;\n this.#options = options;\n }\n async executeQuery(compiledQuery) {\n try {\n const { command, rowCount, rows } = await this.#client.query(compiledQuery.sql, [...compiledQuery.parameters]);\n return {\n numAffectedRows: command === 'INSERT' ||\n command === 'UPDATE' ||\n command === 'DELETE' ||\n command === 'MERGE'\n ? BigInt(rowCount)\n : undefined,\n rows: rows ?? [],\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!this.#options.cursor) {\n throw new Error(\"'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.\");\n }\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error('chunkSize must be a positive integer');\n }\n const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters.slice()));\n try {\n while (true) {\n const rows = await cursor.read(chunkSize);\n if (rows.length === 0) {\n break;\n }\n yield {\n rows,\n };\n }\n }\n finally {\n await cursor.close();\n }\n }\n [PRIVATE_RELEASE_METHOD]() {\n this.#client.release();\n }\n}\n","/// <reference types=\"./postgres-dialect.d.ts\" />\nimport { PostgresDriver } from './postgres-driver.js';\nimport { PostgresIntrospector } from './postgres-introspector.js';\nimport { PostgresQueryCompiler } from './postgres-query-compiler.js';\nimport { PostgresAdapter } from './postgres-adapter.js';\n/**\n * PostgreSQL dialect that uses the [pg](https://node-postgres.com/) library.\n *\n * The constructor takes an instance of {@link PostgresDialectConfig}.\n *\n * ```ts\n * import { Pool } from 'pg'\n *\n * new PostgresDialect({\n * pool: new Pool({\n * database: 'some_db',\n * host: 'localhost',\n * })\n * })\n * ```\n *\n * If you want the pool to only be created once it's first used, `pool`\n * can be a function:\n *\n * ```ts\n * import { Pool } from 'pg'\n *\n * new PostgresDialect({\n * pool: async () => new Pool({\n * database: 'some_db',\n * host: 'localhost',\n * })\n * })\n * ```\n */\nexport class PostgresDialect {\n #config;\n constructor(config) {\n this.#config = config;\n }\n createDriver() {\n return new PostgresDriver(this.#config);\n }\n createQueryCompiler() {\n return new PostgresQueryCompiler();\n }\n createAdapter() {\n return new PostgresAdapter();\n }\n createIntrospector(db) {\n return new PostgresIntrospector(db);\n }\n}\n","/// <reference types=\"./mssql-adapter.d.ts\" />\nimport { DEFAULT_MIGRATION_TABLE } from '../../migration/migrator.js';\nimport { sql } from '../../raw-builder/sql.js';\nimport { DialectAdapterBase } from '../dialect-adapter-base.js';\nexport class MssqlAdapter extends DialectAdapterBase {\n get supportsCreateIfNotExists() {\n return false;\n }\n get supportsTransactionalDdl() {\n return true;\n }\n get supportsOutput() {\n return true;\n }\n async acquireMigrationLock(db) {\n // Acquire a transaction-level exclusive lock on the migrations table.\n // https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-getapplock-transact-sql?view=sql-server-ver16\n await sql `exec sp_getapplock @DbPrincipal = ${sql.lit('dbo')}, @Resource = ${sql.lit(DEFAULT_MIGRATION_TABLE)}, @LockMode = ${sql.lit('Exclusive')}`.execute(db);\n }\n async releaseMigrationLock() {\n // Nothing to do here. `sp_getapplock` is automatically released at the\n // end of the transaction and since `supportsTransactionalDdl` true, we know\n // the `db` instance passed to acquireMigrationLock is actually a transaction.\n }\n}\n","/// <reference types=\"./mssql-driver.d.ts\" />\nimport { freeze, isBigInt, isBoolean, isBuffer, isDate, isNull, isNumber, isString, isUndefined, } from '../../util/object-utils.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nimport { randomString } from '../../util/random-string.js';\nimport { Deferred } from '../../util/deferred.js';\nconst PRIVATE_RESET_METHOD = Symbol();\nconst PRIVATE_DESTROY_METHOD = Symbol();\nconst PRIVATE_VALIDATE_METHOD = Symbol();\nexport class MssqlDriver {\n #config;\n #pool;\n constructor(config) {\n this.#config = freeze({ ...config });\n const { tarn, tedious, validateConnections } = this.#config;\n const { validateConnections: deprecatedValidateConnections, ...poolOptions } = tarn.options;\n this.#pool = new tarn.Pool({\n ...poolOptions,\n create: async () => {\n const connection = await tedious.connectionFactory();\n return await new MssqlConnection(connection, tedious).connect();\n },\n destroy: async (connection) => {\n await connection[PRIVATE_DESTROY_METHOD]();\n },\n // @ts-ignore `tarn` accepts a function that returns a promise here, but\n // the types are not aligned and it type errors.\n validate: validateConnections === false ||\n deprecatedValidateConnections === false\n ? undefined\n : (connection) => connection[PRIVATE_VALIDATE_METHOD](),\n });\n }\n async init() {\n // noop\n }\n async acquireConnection() {\n return await this.#pool.acquire().promise;\n }\n async beginTransaction(connection, settings) {\n await connection.beginTransaction(settings);\n }\n async commitTransaction(connection) {\n await connection.commitTransaction();\n }\n async rollbackTransaction(connection) {\n await connection.rollbackTransaction();\n }\n async savepoint(connection, savepointName) {\n await connection.savepoint(savepointName);\n }\n async rollbackToSavepoint(connection, savepointName) {\n await connection.rollbackTransaction(savepointName);\n }\n async releaseConnection(connection) {\n if (this.#config.resetConnectionsOnRelease ||\n this.#config.tedious.resetConnectionOnRelease) {\n await connection[PRIVATE_RESET_METHOD]();\n }\n this.#pool.release(connection);\n }\n async destroy() {\n await this.#pool.destroy();\n }\n}\nclass MssqlConnection {\n #connection;\n #hasSocketError;\n #tedious;\n constructor(connection, tedious) {\n this.#connection = connection;\n this.#hasSocketError = false;\n this.#tedious = tedious;\n }\n async beginTransaction(settings) {\n const { isolationLevel } = settings;\n await new Promise((resolve, reject) => this.#connection.beginTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }, isolationLevel ? randomString(8) : undefined, isolationLevel\n ? this.#getTediousIsolationLevel(isolationLevel)\n : undefined));\n }\n async commitTransaction() {\n await new Promise((resolve, reject) => this.#connection.commitTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }));\n }\n async connect() {\n const { promise: waitForConnected, reject, resolve } = new Deferred();\n this.#connection.connect((error) => {\n if (error) {\n return reject(error);\n }\n resolve();\n });\n this.#connection.on('error', (error) => {\n if (error instanceof Error &&\n 'code' in error &&\n error.code === 'ESOCKET') {\n this.#hasSocketError = true;\n }\n console.error(error);\n reject(error);\n });\n function endListener() {\n reject(new Error('The connection ended without ever completing the connection'));\n }\n this.#connection.once('end', endListener);\n await waitForConnected;\n this.#connection.off('end', endListener);\n return this;\n }\n async executeQuery(compiledQuery) {\n try {\n const deferred = new Deferred();\n const request = new MssqlRequest({\n compiledQuery,\n tedious: this.#tedious,\n onDone: deferred,\n });\n this.#connection.execSql(request.request);\n const { rowCount, rows } = await deferred.promise;\n return {\n numAffectedRows: rowCount !== undefined ? BigInt(rowCount) : undefined,\n rows,\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async rollbackTransaction(savepointName) {\n await new Promise((resolve, reject) => this.#connection.rollbackTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }, savepointName));\n }\n async savepoint(savepointName) {\n await new Promise((resolve, reject) => this.#connection.saveTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }, savepointName));\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error('chunkSize must be a positive integer');\n }\n const request = new MssqlRequest({\n compiledQuery,\n streamChunkSize: chunkSize,\n tedious: this.#tedious,\n });\n this.#connection.execSql(request.request);\n try {\n while (true) {\n const rows = await request.readChunk();\n if (rows.length === 0) {\n break;\n }\n yield { rows };\n if (rows.length < chunkSize) {\n break;\n }\n }\n }\n finally {\n await this.#cancelRequest(request);\n }\n }\n #getTediousIsolationLevel(isolationLevel) {\n const { ISOLATION_LEVEL } = this.#tedious;\n const mapper = {\n 'read committed': ISOLATION_LEVEL.READ_COMMITTED,\n 'read uncommitted': ISOLATION_LEVEL.READ_UNCOMMITTED,\n 'repeatable read': ISOLATION_LEVEL.REPEATABLE_READ,\n serializable: ISOLATION_LEVEL.SERIALIZABLE,\n snapshot: ISOLATION_LEVEL.SNAPSHOT,\n };\n const tediousIsolationLevel = mapper[isolationLevel];\n if (tediousIsolationLevel === undefined) {\n throw new Error(`Unknown isolation level: ${isolationLevel}`);\n }\n return tediousIsolationLevel;\n }\n #cancelRequest(request) {\n return new Promise((resolve) => {\n request.request.once('requestCompleted', resolve);\n const wasCanceled = this.#connection.cancel();\n if (!wasCanceled) {\n request.request.off('requestCompleted', resolve);\n resolve();\n }\n });\n }\n [PRIVATE_DESTROY_METHOD]() {\n if ('closed' in this.#connection && this.#connection.closed) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n this.#connection.once('end', resolve);\n this.#connection.close();\n });\n }\n async [PRIVATE_RESET_METHOD]() {\n await new Promise((resolve, reject) => {\n this.#connection.reset((error) => {\n if (error) {\n return reject(error);\n }\n resolve();\n });\n });\n }\n async [PRIVATE_VALIDATE_METHOD]() {\n if (this.#hasSocketError || this.#isConnectionClosed()) {\n return false;\n }\n try {\n const deferred = new Deferred();\n const request = new MssqlRequest({\n compiledQuery: CompiledQuery.raw('select 1'),\n onDone: deferred,\n tedious: this.#tedious,\n });\n this.#connection.execSql(request.request);\n await deferred.promise;\n return true;\n }\n catch {\n return false;\n }\n }\n #isConnectionClosed() {\n return 'closed' in this.#connection && Boolean(this.#connection.closed);\n }\n}\nclass MssqlRequest {\n #request;\n #rows;\n #streamChunkSize;\n #subscribers;\n #tedious;\n #rowCount;\n constructor(props) {\n const { compiledQuery, onDone, streamChunkSize, tedious } = props;\n this.#rows = [];\n this.#streamChunkSize = streamChunkSize;\n this.#subscribers = {};\n this.#tedious = tedious;\n if (onDone) {\n const subscriptionKey = 'onDone';\n this.#subscribers[subscriptionKey] = (event, error) => {\n if (event === 'chunkReady') {\n return;\n }\n delete this.#subscribers[subscriptionKey];\n if (event === 'error') {\n return onDone.reject(error);\n }\n onDone.resolve({\n rowCount: this.#rowCount,\n rows: this.#rows,\n });\n };\n }\n this.#request = new this.#tedious.Request(compiledQuery.sql, (err, rowCount) => {\n if (err) {\n return Object.values(this.#subscribers).forEach((subscriber) => subscriber('error', err instanceof AggregateError ? err.errors : err));\n }\n this.#rowCount = rowCount;\n });\n this.#addParametersToRequest(compiledQuery.parameters);\n this.#attachListeners();\n }\n get request() {\n return this.#request;\n }\n readChunk() {\n const subscriptionKey = this.readChunk.name;\n return new Promise((resolve, reject) => {\n this.#subscribers[subscriptionKey] = (event, error) => {\n delete this.#subscribers[subscriptionKey];\n if (event === 'error') {\n return reject(error);\n }\n resolve(this.#rows.splice(0, this.#streamChunkSize));\n };\n this.#request.resume();\n });\n }\n #addParametersToRequest(parameters) {\n for (let i = 0; i < parameters.length; i++) {\n const parameter = parameters[i];\n this.#request.addParameter(String(i + 1), this.#getTediousDataType(parameter), parameter);\n }\n }\n #attachListeners() {\n const pauseAndEmitChunkReady = this.#streamChunkSize\n ? () => {\n if (this.#streamChunkSize <= this.#rows.length) {\n this.#request.pause();\n Object.values(this.#subscribers).forEach((subscriber) => subscriber('chunkReady'));\n }\n }\n : () => { };\n const rowListener = (columns) => {\n const row = {};\n for (const column of columns) {\n row[column.metadata.colName] = column.value;\n }\n this.#rows.push(row);\n pauseAndEmitChunkReady();\n };\n this.#request.on('row', rowListener);\n this.#request.once('requestCompleted', () => {\n Object.values(this.#subscribers).forEach((subscriber) => subscriber('completed'));\n this.#request.off('row', rowListener);\n });\n }\n #getTediousDataType(value) {\n if (isNull(value) || isUndefined(value) || isString(value)) {\n return this.#tedious.TYPES.NVarChar;\n }\n if (isBigInt(value) || (isNumber(value) && value % 1 === 0)) {\n if (value < -2147483648 || value > 2147483647) {\n return this.#tedious.TYPES.BigInt;\n }\n else {\n return this.#tedious.TYPES.Int;\n }\n }\n if (isNumber(value)) {\n return this.#tedious.TYPES.Float;\n }\n if (isBoolean(value)) {\n return this.#tedious.TYPES.Bit;\n }\n if (isDate(value)) {\n return this.#tedious.TYPES.DateTime;\n }\n if (isBuffer(value)) {\n return this.#tedious.TYPES.VarBinary;\n }\n return this.#tedious.TYPES.NVarChar;\n }\n}\n","/// <reference types=\"./mssql-introspector.d.ts\" />\nimport { DEFAULT_MIGRATION_LOCK_TABLE, DEFAULT_MIGRATION_TABLE, } from '../../migration/migrator.js';\nimport { freeze } from '../../util/object-utils.js';\nexport class MssqlIntrospector {\n #db;\n constructor(db) {\n this.#db = db;\n }\n async getSchemas() {\n return await this.#db.selectFrom('sys.schemas').select('name').execute();\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n const rawColumns = await this.#db\n .selectFrom('sys.tables as tables')\n .leftJoin('sys.schemas as table_schemas', 'table_schemas.schema_id', 'tables.schema_id')\n .innerJoin('sys.columns as columns', 'columns.object_id', 'tables.object_id')\n .innerJoin('sys.types as types', 'types.user_type_id', 'columns.user_type_id')\n .leftJoin('sys.schemas as type_schemas', 'type_schemas.schema_id', 'types.schema_id')\n .leftJoin('sys.extended_properties as comments', (join) => join\n .onRef('comments.major_id', '=', 'tables.object_id')\n .onRef('comments.minor_id', '=', 'columns.column_id')\n .on('comments.name', '=', 'MS_Description'))\n .$if(!options.withInternalKyselyTables, (qb) => qb\n .where('tables.name', '!=', DEFAULT_MIGRATION_TABLE)\n .where('tables.name', '!=', DEFAULT_MIGRATION_LOCK_TABLE))\n .select([\n 'tables.name as table_name',\n (eb) => eb\n .ref('tables.type')\n .$castTo()\n .as('table_type'),\n 'table_schemas.name as table_schema_name',\n 'columns.default_object_id as column_default_object_id',\n 'columns.generated_always_type_desc as column_generated_always_type',\n 'columns.is_computed as column_is_computed',\n 'columns.is_identity as column_is_identity',\n 'columns.is_nullable as column_is_nullable',\n 'columns.is_rowguidcol as column_is_rowguidcol',\n 'columns.name as column_name',\n 'types.is_nullable as type_is_nullable',\n 'types.name as type_name',\n 'type_schemas.name as type_schema_name',\n 'comments.value as column_comment',\n ])\n .unionAll(this.#db\n .selectFrom('sys.views as views')\n .leftJoin('sys.schemas as view_schemas', 'view_schemas.schema_id', 'views.schema_id')\n .innerJoin('sys.columns as columns', 'columns.object_id', 'views.object_id')\n .innerJoin('sys.types as types', 'types.user_type_id', 'columns.user_type_id')\n .leftJoin('sys.schemas as type_schemas', 'type_schemas.schema_id', 'types.schema_id')\n .leftJoin('sys.extended_properties as comments', (join) => join\n .onRef('comments.major_id', '=', 'views.object_id')\n .onRef('comments.minor_id', '=', 'columns.column_id')\n .on('comments.name', '=', 'MS_Description'))\n .select([\n 'views.name as table_name',\n 'views.type as table_type',\n 'view_schemas.name as table_schema_name',\n 'columns.default_object_id as column_default_object_id',\n 'columns.generated_always_type_desc as column_generated_always_type',\n 'columns.is_computed as column_is_computed',\n 'columns.is_identity as column_is_identity',\n 'columns.is_nullable as column_is_nullable',\n 'columns.is_rowguidcol as column_is_rowguidcol',\n 'columns.name as column_name',\n 'types.is_nullable as type_is_nullable',\n 'types.name as type_name',\n 'type_schemas.name as type_schema_name',\n 'comments.value as column_comment',\n ]))\n .orderBy('table_schema_name')\n .orderBy('table_name')\n .orderBy('column_name')\n .execute();\n const tableDictionary = {};\n for (const rawColumn of rawColumns) {\n const key = `${rawColumn.table_schema_name}.${rawColumn.table_name}`;\n const table = (tableDictionary[key] =\n tableDictionary[key] ||\n freeze({\n columns: [],\n isView: rawColumn.table_type === 'V ',\n name: rawColumn.table_name,\n schema: rawColumn.table_schema_name ?? undefined,\n }));\n table.columns.push(freeze({\n dataType: rawColumn.type_name,\n dataTypeSchema: rawColumn.type_schema_name ?? undefined,\n hasDefaultValue: rawColumn.column_default_object_id > 0 ||\n rawColumn.column_generated_always_type !== 'NOT_APPLICABLE' ||\n rawColumn.column_is_identity ||\n rawColumn.column_is_computed ||\n rawColumn.column_is_rowguidcol,\n isAutoIncrementing: rawColumn.column_is_identity,\n isNullable: rawColumn.column_is_nullable && rawColumn.type_is_nullable,\n name: rawColumn.column_name,\n comment: rawColumn.column_comment ?? undefined,\n }));\n }\n return Object.values(tableDictionary);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options),\n };\n }\n}\n","/// <reference types=\"./mssql-query-compiler.d.ts\" />\nimport { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';\nconst COLLATION_CHAR_REGEX = /^[a-z0-9_]$/i;\nexport class MssqlQueryCompiler extends DefaultQueryCompiler {\n getCurrentParameterPlaceholder() {\n return `@${this.numParameters}`;\n }\n visitOffset(node) {\n super.visitOffset(node);\n this.append(' rows');\n }\n // mssql allows multi-column alterations in a single statement,\n // but you can only use the command keyword/s once.\n // it also doesn't support multiple kinds of commands in the same\n // alter table statement, but we compile that anyway for the sake\n // of WYSIWYG.\n compileColumnAlterations(columnAlterations) {\n const nodesByKind = {};\n for (const columnAlteration of columnAlterations) {\n if (!nodesByKind[columnAlteration.kind]) {\n nodesByKind[columnAlteration.kind] = [];\n }\n nodesByKind[columnAlteration.kind].push(columnAlteration);\n }\n let first = true;\n if (nodesByKind.AddColumnNode) {\n this.append('add ');\n this.compileList(nodesByKind.AddColumnNode);\n first = false;\n }\n // multiple of these are not really supported by mssql,\n // but for the sake of WYSIWYG.\n if (nodesByKind.AlterColumnNode) {\n if (!first)\n this.append(', ');\n this.compileList(nodesByKind.AlterColumnNode);\n }\n if (nodesByKind.DropColumnNode) {\n if (!first)\n this.append(', ');\n this.append('drop column ');\n this.compileList(nodesByKind.DropColumnNode);\n }\n // not really supported by mssql, but for the sake of WYSIWYG.\n if (nodesByKind.ModifyColumnNode) {\n if (!first)\n this.append(', ');\n this.compileList(nodesByKind.ModifyColumnNode);\n }\n // not really supported by mssql, but for the sake of WYSIWYG.\n if (nodesByKind.RenameColumnNode) {\n if (!first)\n this.append(', ');\n this.compileList(nodesByKind.RenameColumnNode);\n }\n }\n visitAddColumn(node) {\n this.visitNode(node.column);\n }\n visitDropColumn(node) {\n this.visitNode(node.column);\n }\n visitMergeQuery(node) {\n super.visitMergeQuery(node);\n this.append(';');\n }\n visitCollate(node) {\n this.append('collate ');\n const { name } = node.collation;\n for (const char of name) {\n if (!COLLATION_CHAR_REGEX.test(char)) {\n throw new Error(`Invalid collation: ${name}`);\n }\n }\n this.append(name);\n }\n announcesNewColumnDataType() {\n return false;\n }\n}\n","/// <reference types=\"./mssql-dialect.d.ts\" />\nimport { MssqlAdapter } from './mssql-adapter.js';\nimport { MssqlDriver } from './mssql-driver.js';\nimport { MssqlIntrospector } from './mssql-introspector.js';\nimport { MssqlQueryCompiler } from './mssql-query-compiler.js';\n/**\n * MS SQL Server dialect that uses the [tedious](https://tediousjs.github.io/tedious)\n * library.\n *\n * The constructor takes an instance of {@link MssqlDialectConfig}.\n *\n * ```ts\n * import * as Tedious from 'tedious'\n * import * as Tarn from 'tarn'\n *\n * const dialect = new MssqlDialect({\n * tarn: {\n * ...Tarn,\n * options: {\n * min: 0,\n * max: 10,\n * },\n * },\n * tedious: {\n * ...Tedious,\n * connectionFactory: () => new Tedious.Connection({\n * authentication: {\n * options: {\n * password: 'password',\n * userName: 'username',\n * },\n * type: 'default',\n * },\n * options: {\n * database: 'some_db',\n * port: 1433,\n * trustServerCertificate: true,\n * },\n * server: 'localhost',\n * }),\n * },\n * })\n * ```\n */\nexport class MssqlDialect {\n #config;\n constructor(config) {\n this.#config = config;\n }\n createDriver() {\n return new MssqlDriver(this.#config);\n }\n createQueryCompiler() {\n return new MssqlQueryCompiler();\n }\n createAdapter() {\n return new MssqlAdapter();\n }\n createIntrospector(db) {\n return new MssqlIntrospector(db);\n }\n}\n","import { Kysely, MssqlDialect, MysqlDialect, PostgresDialect, SqliteDialect, sql } from \"kysely\";\nimport { createAdapterFactory } from \"@better-auth/core/db/adapter\";\nimport { capitalizeFirstLetter } from \"@better-auth/core/utils/string\";\n//#region src/dialect.ts\nfunction getKyselyDatabaseType(db) {\n\tif (!db) return null;\n\tif (\"dialect\" in db) return getKyselyDatabaseType(db.dialect);\n\tif (\"createDriver\" in db) {\n\t\tif (db instanceof SqliteDialect) return \"sqlite\";\n\t\tif (db instanceof MysqlDialect) return \"mysql\";\n\t\tif (db instanceof PostgresDialect) return \"postgres\";\n\t\tif (db instanceof MssqlDialect) return \"mssql\";\n\t}\n\tif (\"aggregate\" in db) return \"sqlite\";\n\tif (\"getConnection\" in db) return \"mysql\";\n\tif (\"connect\" in db) return \"postgres\";\n\tif (\"fileControl\" in db) return \"sqlite\";\n\tif (\"open\" in db && \"close\" in db && \"prepare\" in db) return \"sqlite\";\n\tif (\"batch\" in db && \"exec\" in db && \"prepare\" in db) return \"sqlite\";\n\treturn null;\n}\nconst createKyselyAdapter = async (config) => {\n\tconst db = config.database;\n\tif (!db) return {\n\t\tkysely: null,\n\t\tdatabaseType: null,\n\t\ttransaction: void 0\n\t};\n\tif (\"db\" in db) return {\n\t\tkysely: db.db,\n\t\tdatabaseType: db.type,\n\t\ttransaction: db.transaction\n\t};\n\tif (\"dialect\" in db) return {\n\t\tkysely: new Kysely({ dialect: db.dialect }),\n\t\tdatabaseType: db.type,\n\t\ttransaction: db.transaction\n\t};\n\tlet dialect = void 0;\n\tconst databaseType = getKyselyDatabaseType(db);\n\tif (\"createDriver\" in db) dialect = db;\n\tif (\"aggregate\" in db && !(\"createSession\" in db)) dialect = new SqliteDialect({ database: db });\n\tif (\"getConnection\" in db) dialect = new MysqlDialect(db);\n\tif (\"connect\" in db) dialect = new PostgresDialect({ pool: db });\n\tif (\"fileControl\" in db) {\n\t\tconst { BunSqliteDialect } = await import(\"./bun-sqlite-dialect-na--YwnN.mjs\");\n\t\tdialect = new BunSqliteDialect({ database: db });\n\t}\n\tif (\"createSession\" in db) {\n\t\tlet DatabaseSync = void 0;\n\t\ttry {\n\t\t\tconst nodeSqlite = \"node:sqlite\";\n\t\t\t({DatabaseSync} = await import(\n\t\t\t\t/* @vite-ignore */\n\t\t\t\t/* webpackIgnore: true */\n\t\t\t\tnodeSqlite\n));\n\t\t} catch (error) {\n\t\t\tif (error !== null && typeof error === \"object\" && \"code\" in error && error.code !== \"ERR_UNKNOWN_BUILTIN_MODULE\") throw error;\n\t\t}\n\t\tif (DatabaseSync && db instanceof DatabaseSync) {\n\t\t\tconst { NodeSqliteDialect } = await import(\"./node-sqlite-dialect.mjs\");\n\t\t\tdialect = new NodeSqliteDialect({ database: db });\n\t\t}\n\t}\n\tif (\"batch\" in db && \"exec\" in db && \"prepare\" in db) {\n\t\tconst { D1SqliteDialect } = await import(\"./d1-sqlite-dialect-C2B7YsIT.mjs\");\n\t\tdialect = new D1SqliteDialect({ database: db });\n\t}\n\treturn {\n\t\tkysely: dialect ? new Kysely({ dialect }) : null,\n\t\tdatabaseType,\n\t\ttransaction: void 0\n\t};\n};\n//#endregion\n//#region src/query-builders.ts\n/**\n* Case-insensitive ILIKE/LIKE for pattern matching.\n* Uses ILIKE on PostgreSQL, LOWER()+LIKE on MySQL/SQLite/MSSQL.\n*/\nfunction insensitiveIlike(columnRef, pattern, dbType) {\n\treturn dbType === \"postgres\" ? sql`${sql.ref(columnRef)} ILIKE ${pattern}` : sql`LOWER(${sql.ref(columnRef)}) LIKE LOWER(${pattern})`;\n}\n/**\n* Case-insensitive IN for string arrays.\n* Returns { lhs, values } for use with eb(lhs, \"in\", values).\n*/\nfunction insensitiveIn(columnRef, values) {\n\treturn {\n\t\tlhs: sql`LOWER(${sql.ref(columnRef)})`,\n\t\tvalues: values.map((v) => v.toLowerCase())\n\t};\n}\n/**\n* Case-insensitive NOT IN for string arrays.\n*/\nfunction insensitiveNotIn(columnRef, values) {\n\treturn {\n\t\tlhs: sql`LOWER(${sql.ref(columnRef)})`,\n\t\tvalues: values.map((v) => v.toLowerCase())\n\t};\n}\n/**\n* Case-insensitive equality for strings.\n* Returns { lhs, value } for use with eb(lhs, \"=\", value).\n*/\nfunction insensitiveEq(columnRef, value) {\n\treturn {\n\t\tlhs: sql`LOWER(${sql.ref(columnRef)})`,\n\t\tvalue: value.toLowerCase()\n\t};\n}\n/**\n* Case-insensitive inequality for strings.\n*/\nfunction insensitiveNe(columnRef, value) {\n\treturn {\n\t\tlhs: sql`LOWER(${sql.ref(columnRef)})`,\n\t\tvalue: value.toLowerCase()\n\t};\n}\n//#endregion\n//#region src/kysely-adapter.ts\nconst kyselyAdapter = (db, config) => {\n\tlet lazyOptions = null;\n\tconst createCustomAdapter = (db) => {\n\t\treturn ({ getFieldName, schema, getDefaultFieldName, getDefaultModelName, getFieldAttributes, getModelName }) => {\n\t\t\tconst selectAllJoins = (join) => {\n\t\t\t\tconst allSelects = [];\n\t\t\t\tconst allSelectsStr = [];\n\t\t\t\tif (join) for (const [joinModel, _] of Object.entries(join)) {\n\t\t\t\t\tconst fields = schema[getDefaultModelName(joinModel)]?.fields;\n\t\t\t\t\tconst [_joinModelSchema, joinModelName] = joinModel.includes(\".\") ? joinModel.split(\".\") : [void 0, joinModel];\n\t\t\t\t\tif (!fields) continue;\n\t\t\t\t\tfields.id = { type: \"string\" };\n\t\t\t\t\tfor (const [field, fieldAttr] of Object.entries(fields)) {\n\t\t\t\t\t\tallSelects.push(sql`${sql.ref(`join_${joinModelName}`)}.${sql.ref(fieldAttr.fieldName || field)} as ${sql.ref(`_joined_${joinModelName}_${fieldAttr.fieldName || field}`)}`);\n\t\t\t\t\t\tallSelectsStr.push({\n\t\t\t\t\t\t\tjoinModel,\n\t\t\t\t\t\t\tjoinModelRef: joinModelName,\n\t\t\t\t\t\t\tfieldName: fieldAttr.fieldName || field\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tallSelectsStr,\n\t\t\t\t\tallSelects\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst withReturning = async (values, builder, model, where) => {\n\t\t\t\tlet res;\n\t\t\t\tif (config?.type === \"mysql\") {\n\t\t\t\t\tawait builder.execute();\n\t\t\t\t\tconst field = values.id ? \"id\" : where.length > 0 && where[0]?.field ? where[0].field : \"id\";\n\t\t\t\t\tif (!values.id && where.length === 0) {\n\t\t\t\t\t\tres = await db.selectFrom(model).selectAll().orderBy(getFieldName({\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tfield\n\t\t\t\t\t\t}), \"desc\").limit(1).executeTakeFirst();\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t}\n\t\t\t\t\tconst value = values[field] !== void 0 ? values[field] : where[0]?.value;\n\t\t\t\t\tres = await db.selectFrom(model).selectAll().orderBy(getFieldName({\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tfield\n\t\t\t\t\t}), \"desc\").where(getFieldName({\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tfield\n\t\t\t\t\t}), value === null ? \"is\" : \"=\", value).limit(1).executeTakeFirst();\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tif (config?.type === \"mssql\") {\n\t\t\t\t\tres = await builder.outputAll(\"inserted\").executeTakeFirst();\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tres = await builder.returningAll().executeTakeFirst();\n\t\t\t\treturn res;\n\t\t\t};\n\t\t\tfunction convertWhereClause(model, w) {\n\t\t\t\tif (!w) return {\n\t\t\t\t\tand: null,\n\t\t\t\t\tor: null\n\t\t\t\t};\n\t\t\t\tconst conditions = {\n\t\t\t\t\tand: [],\n\t\t\t\t\tor: []\n\t\t\t\t};\n\t\t\t\tw.forEach((condition) => {\n\t\t\t\t\tconst { field: _field, value: _value, operator = \"eq\", connector = \"AND\", mode = \"sensitive\" } = condition;\n\t\t\t\t\tconst value = _value;\n\t\t\t\t\tconst field = getFieldName({\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tfield: _field\n\t\t\t\t\t});\n\t\t\t\t\tconst isInsensitive = mode === \"insensitive\" && (typeof value === \"string\" || Array.isArray(value) && value.every((v) => typeof v === \"string\"));\n\t\t\t\t\tconst expr = (eb) => {\n\t\t\t\t\t\tconst f = `${model}.${field}`;\n\t\t\t\t\t\tif (operator.toLowerCase() === \"in\") {\n\t\t\t\t\t\t\tif (isInsensitive) {\n\t\t\t\t\t\t\t\tconst { lhs, values } = insensitiveIn(f, Array.isArray(value) ? value : [value]);\n\t\t\t\t\t\t\t\treturn eb(lhs, \"in\", values);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn eb(f, \"in\", Array.isArray(value) ? value : [value]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator.toLowerCase() === \"not_in\") {\n\t\t\t\t\t\t\tif (isInsensitive) {\n\t\t\t\t\t\t\t\tconst { lhs, values } = insensitiveNotIn(f, Array.isArray(value) ? value : [value]);\n\t\t\t\t\t\t\t\treturn eb(lhs, \"not in\", values);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn eb(f, \"not in\", Array.isArray(value) ? value : [value]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator === \"contains\") {\n\t\t\t\t\t\t\tif (isInsensitive && typeof value === \"string\") return insensitiveIlike(f, `%${value}%`, config?.type);\n\t\t\t\t\t\t\treturn eb(f, \"like\", `%${value}%`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator === \"starts_with\") {\n\t\t\t\t\t\t\tif (isInsensitive && typeof value === \"string\") return insensitiveIlike(f, `${value}%`, config?.type);\n\t\t\t\t\t\t\treturn eb(f, \"like\", `${value}%`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator === \"ends_with\") {\n\t\t\t\t\t\t\tif (isInsensitive && typeof value === \"string\") return insensitiveIlike(f, `%${value}`, config?.type);\n\t\t\t\t\t\t\treturn eb(f, \"like\", `%${value}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator === \"eq\") {\n\t\t\t\t\t\t\tif (value === null) return eb(f, \"is\", null);\n\t\t\t\t\t\t\tif (isInsensitive && typeof value === \"string\") {\n\t\t\t\t\t\t\t\tconst { lhs, value: v } = insensitiveEq(f, value);\n\t\t\t\t\t\t\t\treturn eb(lhs, \"=\", v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn eb(f, \"=\", value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator === \"ne\") {\n\t\t\t\t\t\t\tif (value === null) return eb(f, \"is not\", null);\n\t\t\t\t\t\t\tif (isInsensitive && typeof value === \"string\") {\n\t\t\t\t\t\t\t\tconst { lhs, value: v } = insensitiveNe(f, value);\n\t\t\t\t\t\t\t\treturn eb(lhs, \"<>\", v);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn eb(f, \"<>\", value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (operator === \"gt\") return eb(f, \">\", value);\n\t\t\t\t\t\tif (operator === \"gte\") return eb(f, \">=\", value);\n\t\t\t\t\t\tif (operator === \"lt\") return eb(f, \"<\", value);\n\t\t\t\t\t\tif (operator === \"lte\") return eb(f, \"<=\", value);\n\t\t\t\t\t\treturn eb(f, operator, value);\n\t\t\t\t\t};\n\t\t\t\t\tif (connector === \"OR\") conditions.or.push(expr);\n\t\t\t\t\telse conditions.and.push(expr);\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tand: conditions.and.length ? conditions.and : null,\n\t\t\t\t\tor: conditions.or.length ? conditions.or : null\n\t\t\t\t};\n\t\t\t}\n\t\t\tfunction processJoinedResults(rows, joinConfig, allSelectsStr) {\n\t\t\t\tif (!joinConfig || !rows.length) return rows;\n\t\t\t\tconst groupedByMainId = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const currentRow of rows) {\n\t\t\t\t\tconst mainModelFields = {};\n\t\t\t\t\tconst joinedModelFields = {};\n\t\t\t\t\tfor (const [joinModel] of Object.entries(joinConfig)) joinedModelFields[getModelName(joinModel)] = {};\n\t\t\t\t\tfor (const [key, value] of Object.entries(currentRow)) {\n\t\t\t\t\t\tconst keyStr = String(key);\n\t\t\t\t\t\tlet assigned = false;\n\t\t\t\t\t\tfor (const { joinModel, fieldName, joinModelRef } of allSelectsStr) if (keyStr === `_joined_${joinModelRef}_${fieldName}` || keyStr === `_Joined${capitalizeFirstLetter(joinModelRef)}${capitalizeFirstLetter(fieldName)}`) {\n\t\t\t\t\t\t\tjoinedModelFields[getModelName(joinModel)][getFieldName({\n\t\t\t\t\t\t\t\tmodel: joinModel,\n\t\t\t\t\t\t\t\tfield: fieldName\n\t\t\t\t\t\t\t})] = value;\n\t\t\t\t\t\t\tassigned = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!assigned) mainModelFields[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\tconst mainId = mainModelFields.id;\n\t\t\t\t\tif (!mainId) continue;\n\t\t\t\t\tif (!groupedByMainId.has(mainId)) {\n\t\t\t\t\t\tconst entry = { ...mainModelFields };\n\t\t\t\t\t\tfor (const [joinModel, joinAttr] of Object.entries(joinConfig)) entry[getModelName(joinModel)] = joinAttr.relation === \"one-to-one\" ? null : [];\n\t\t\t\t\t\tgroupedByMainId.set(mainId, entry);\n\t\t\t\t\t}\n\t\t\t\t\tconst entry = groupedByMainId.get(mainId);\n\t\t\t\t\tfor (const [joinModel, joinAttr] of Object.entries(joinConfig)) {\n\t\t\t\t\t\tconst isUnique = joinAttr.relation === \"one-to-one\";\n\t\t\t\t\t\tconst limit = joinAttr.limit ?? 100;\n\t\t\t\t\t\tconst joinedObj = joinedModelFields[getModelName(joinModel)];\n\t\t\t\t\t\tconst hasData = joinedObj && Object.keys(joinedObj).length > 0 && Object.values(joinedObj).some((value) => value !== null && value !== void 0);\n\t\t\t\t\t\tif (isUnique) entry[getModelName(joinModel)] = hasData ? joinedObj : null;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst joinModelName = getModelName(joinModel);\n\t\t\t\t\t\t\tif (Array.isArray(entry[joinModelName]) && hasData) {\n\t\t\t\t\t\t\t\tif (entry[joinModelName].length >= limit) continue;\n\t\t\t\t\t\t\t\tconst idFieldName = getFieldName({\n\t\t\t\t\t\t\t\t\tmodel: joinModel,\n\t\t\t\t\t\t\t\t\tfield: \"id\"\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst joinedId = joinedObj[idFieldName];\n\t\t\t\t\t\t\t\tif (joinedId) {\n\t\t\t\t\t\t\t\t\tif (!entry[joinModelName].some((item) => item[idFieldName] === joinedId) && entry[joinModelName].length < limit) entry[joinModelName].push(joinedObj);\n\t\t\t\t\t\t\t\t} else if (entry[joinModelName].length < limit) entry[joinModelName].push(joinedObj);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst result = Array.from(groupedByMainId.values());\n\t\t\t\tfor (const entry of result) for (const [joinModel, joinAttr] of Object.entries(joinConfig)) if (joinAttr.relation !== \"one-to-one\") {\n\t\t\t\t\tconst joinModelName = getModelName(joinModel);\n\t\t\t\t\tif (Array.isArray(entry[joinModelName])) {\n\t\t\t\t\t\tconst limit = joinAttr.limit ?? 100;\n\t\t\t\t\t\tif (entry[joinModelName].length > limit) entry[joinModelName] = entry[joinModelName].slice(0, limit);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tasync create({ data, model }) {\n\t\t\t\t\treturn await withReturning(data, db.insertInto(model).values(data), model, []);\n\t\t\t\t},\n\t\t\t\tasync findOne({ model, where, select, join }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.selectFrom((eb) => {\n\t\t\t\t\t\tlet b = eb.selectFrom(model);\n\t\t\t\t\t\tif (and) b = b.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\t\tif (or) b = b.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\t\tif (select?.length && select.length > 0) b = b.select(select.map((field) => getFieldName({\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tfield\n\t\t\t\t\t\t})));\n\t\t\t\t\t\telse b = b.selectAll();\n\t\t\t\t\t\treturn b.as(\"primary\");\n\t\t\t\t\t}).selectAll(\"primary\");\n\t\t\t\t\tif (join) for (const [joinModel, joinAttr] of Object.entries(join)) {\n\t\t\t\t\t\tconst [_joinModelSchema, joinModelName] = joinModel.includes(\".\") ? joinModel.split(\".\") : [void 0, joinModel];\n\t\t\t\t\t\tquery = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join) => join.onRef(`join_${joinModelName}.${joinAttr.on.to}`, \"=\", `primary.${joinAttr.on.from}`));\n\t\t\t\t\t}\n\t\t\t\t\tconst { allSelectsStr, allSelects } = selectAllJoins(join);\n\t\t\t\t\tquery = query.select(allSelects);\n\t\t\t\t\tconst res = await query.execute();\n\t\t\t\t\tif (!res || !Array.isArray(res) || res.length === 0) return null;\n\t\t\t\t\tconst row = res[0];\n\t\t\t\t\tif (join) return processJoinedResults(res, join, allSelectsStr)[0];\n\t\t\t\t\treturn row;\n\t\t\t\t},\n\t\t\t\tasync findMany({ model, where, limit, select, offset, sortBy, join }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.selectFrom((eb) => {\n\t\t\t\t\t\tlet b = eb.selectFrom(model);\n\t\t\t\t\t\tif (config?.type === \"mssql\") {\n\t\t\t\t\t\t\tif (offset !== void 0) {\n\t\t\t\t\t\t\t\tif (!sortBy) b = b.orderBy(getFieldName({\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\tfield: \"id\"\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tb = b.offset(offset).fetch(limit || 100);\n\t\t\t\t\t\t\t} else if (limit !== void 0) b = b.top(limit);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (limit !== void 0) b = b.limit(limit);\n\t\t\t\t\t\t\tif (offset !== void 0) b = b.offset(offset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sortBy?.field) b = b.orderBy(`${getFieldName({\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tfield: sortBy.field\n\t\t\t\t\t\t})}`, sortBy.direction);\n\t\t\t\t\t\tif (and) b = b.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\t\tif (or) b = b.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\t\tif (select?.length && select.length > 0) b = b.select(select.map((field) => getFieldName({\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tfield\n\t\t\t\t\t\t})));\n\t\t\t\t\t\telse b = b.selectAll();\n\t\t\t\t\t\treturn b.as(\"primary\");\n\t\t\t\t\t}).selectAll(\"primary\");\n\t\t\t\t\tif (join) for (const [joinModel, joinAttr] of Object.entries(join)) {\n\t\t\t\t\t\tconst [_joinModelSchema, joinModelName] = joinModel.includes(\".\") ? joinModel.split(\".\") : [void 0, joinModel];\n\t\t\t\t\t\tquery = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join) => join.onRef(`join_${joinModelName}.${joinAttr.on.to}`, \"=\", `primary.${joinAttr.on.from}`));\n\t\t\t\t\t}\n\t\t\t\t\tconst { allSelectsStr, allSelects } = selectAllJoins(join);\n\t\t\t\t\tquery = query.select(allSelects);\n\t\t\t\t\tif (sortBy?.field) query = query.orderBy(`${getFieldName({\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tfield: sortBy.field\n\t\t\t\t\t})}`, sortBy.direction);\n\t\t\t\t\tconst res = await query.execute();\n\t\t\t\t\tif (!res) return [];\n\t\t\t\t\tif (join) return processJoinedResults(res, join, allSelectsStr);\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\t\t\t\tasync update({ model, where, update: values }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.updateTable(model).set(values);\n\t\t\t\t\tif (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\tif (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\treturn await withReturning(values, query, model, where);\n\t\t\t\t},\n\t\t\t\tasync updateMany({ model, where, update: values }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.updateTable(model).set(values);\n\t\t\t\t\tif (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\tif (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\tconst res = (await query.executeTakeFirst()).numUpdatedRows;\n\t\t\t\t\treturn res > Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : Number(res);\n\t\t\t\t},\n\t\t\t\tasync count({ model, where }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.selectFrom(model).select(db.fn.count(\"id\").as(\"count\"));\n\t\t\t\t\tif (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\tif (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\tconst res = await query.execute();\n\t\t\t\t\tif (typeof res[0].count === \"number\") return res[0].count;\n\t\t\t\t\tif (typeof res[0].count === \"bigint\") return Number(res[0].count);\n\t\t\t\t\treturn parseInt(res[0].count);\n\t\t\t\t},\n\t\t\t\tasync delete({ model, where }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.deleteFrom(model);\n\t\t\t\t\tif (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\tif (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\tawait query.execute();\n\t\t\t\t},\n\t\t\t\tasync deleteMany({ model, where }) {\n\t\t\t\t\tconst { and, or } = convertWhereClause(model, where);\n\t\t\t\t\tlet query = db.deleteFrom(model);\n\t\t\t\t\tif (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n\t\t\t\t\tif (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n\t\t\t\t\tconst res = (await query.executeTakeFirst()).numDeletedRows;\n\t\t\t\t\treturn res > Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : Number(res);\n\t\t\t\t},\n\t\t\t\toptions: config\n\t\t\t};\n\t\t};\n\t};\n\tlet adapterOptions = null;\n\tadapterOptions = {\n\t\tconfig: {\n\t\t\tadapterId: \"kysely\",\n\t\t\tadapterName: \"Kysely Adapter\",\n\t\t\tusePlural: config?.usePlural,\n\t\t\tdebugLogs: config?.debugLogs,\n\t\t\tsupportsBooleans: config?.type === \"sqlite\" || config?.type === \"mssql\" || config?.type === \"mysql\" || !config?.type ? false : true,\n\t\t\tsupportsDates: config?.type === \"sqlite\" || config?.type === \"mssql\" || !config?.type ? false : true,\n\t\t\tsupportsJSON: config?.type === \"postgres\" ? true : false,\n\t\t\tsupportsArrays: false,\n\t\t\tsupportsUUIDs: config?.type === \"postgres\" ? true : false,\n\t\t\ttransaction: config?.transaction ? (cb) => db.transaction().execute((trx) => {\n\t\t\t\treturn cb(createAdapterFactory({\n\t\t\t\t\tconfig: adapterOptions.config,\n\t\t\t\t\tadapter: createCustomAdapter(trx)\n\t\t\t\t})(lazyOptions));\n\t\t\t}) : false\n\t\t},\n\t\tadapter: createCustomAdapter(db)\n\t};\n\tconst adapter = createAdapterFactory(adapterOptions);\n\treturn (options) => {\n\t\tlazyOptions = options;\n\t\treturn adapter(options);\n\t};\n};\n//#endregion\nexport { createKyselyAdapter, getKyselyDatabaseType, kyselyAdapter };\n"]}