{"_id":"@000alen/knex","_rev":"1-35b9700719fe108ea8c938fc18017566","name":"@000alen/knex","dist-tags":{"latest":"3.1.1"},"versions":{"3.1.0":{"name":"@000alen/knex","version":"3.1.0","keywords":["sql","query","postgresql","postgres","mysql","cockroachdb","sqlite3","oracle","mssql","builder","querybuilder","build","db","database"],"author":{"url":"https://github.com/tgriesser","name":"Tim Griesser"},"license":"MIT","_id":"@000alen/knex@3.1.0","maintainers":[{"name":"000alen","email":"lclc.alen@gmail.com"}],"contributors":[{"name":"Mikael Lepisto"},{"url":"https://www.codeflashbacks.com","name":"Igor Savin"},{"name":"Olivier Cavadenti"},{"name":"Simon Liden"},{"url":"https://lorefnon.tech","name":"Paul Gaurab"},{"url":"https://briandamaged.org","name":"Brian Lauber"}],"homepage":"https://knex.github.io/documentation/","bugs":{"url":"https://github.com/knex/knex/issues"},"bin":{"knex":"bin/cli.js"},"nyc":{"lines":84,"exclude":["lib/dialects/oracle","lib/dialects/oracledb","test/**/*.spec.js"],"branches":69,"extension":[".js"],"functions":83,"statements":82,"check-coverage":true},"tsd":{"directory":"test-tsd","compilerOptions":{"module":"commonjs","target":"ES2017","esModuleInterop":false}},"dist":{"shasum":"ec51b3557d8982b86314b36daa4bd218f8e25553","tarball":"https://registry.npmjs.org/@000alen/knex/-/knex-3.1.0.tgz","fileCount":190,"integrity":"sha512-/qSgVtxiX9WngHYZsyDu+NlCzbP0XeJkgkIYyBkjyhkeYaTCCBWTFSIo6fUpNgszEUa4iFOKIWd8Cm79++NGMw==","signatures":[{"sig":"MEUCIQCwkuWHUcD8F3N6GDn4E8gDy5fgNW9FQ+j7rCIk+MRpvQIgIQrwnGNCJOSO2GUfrHMvCUt43+6QJV1nqdPLrMwgMPU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":873677},"main":"knex","types":"types/index.d.ts","browser":{"pg":false,"mysql":false,"mysql2":false,"oracle":false,"sqlite3":false,"tedious":false,"oracledb":false,"pg-native":false,"better-sqlite3":false,"pg-query-stream":false,"./lib/bin/cli.js":"./lib/util/noop.js"},"engines":{"node":">=16"},"gitHead":"0029f18d25d3c068f4d40483c0fe09eaf40768a0","scripts":{"lint":"eslint --cache .","test":"mocha --exit -t 10000 --config test/mocha-all-config-test.js && npm run test:tape && npm run test:cli","build":"npm run build:gitignore && npm run build:ts && npm run format","clean":"node scripts/clean.js","format":"prettier --write --list-different .","db:stop":"docker-compose -f scripts/docker-compose.yml down","test:db":"mocha --exit -t 10000 --config test/mocha-integration-config-test.js","build:ts":"tsc","db:start":"docker-compose -f scripts/docker-compose.yml up --build -d mysql oracledb postgres mssql cockroachdb pgnative && docker-compose -f scripts/docker-compose.yml up waitmssql waitmysql waitpostgres waitoracledb","lint:fix":"eslint --cache --fix .","test:cli":"cross-env KNEX_PATH=../knex.js KNEX=bin/cli.js jake -f test/jake/Jakefile","coveralls":"nyc report --reporter=lcov","test:tape":"node test/tape/index.js | tap-spec","test:unit":"npm run test:unit-only && npm run test:cli","debug:tape":"node --inspect-brk test/tape/index.js","debug:test":"mocha --inspect-brk --exit -t 0 test/all-tests-suite.js","lint:types":"tsd","test:mssql":"cross-env DB=mssql npm run test:db","test:mysql":"cross-env DB=mysql npm run test:db","stress:init":"docker-compose -f scripts/stress-test/docker-compose.yml up --no-start && docker-compose -f scripts/stress-test/docker-compose.yml start","stress:test":"node scripts/stress-test/knex-stress-test.js | grep -A 5 -B 60 -- '- STATS '","test:mysql2":"cross-env DB=mysql2 npm run test:db","test:sqlite":"cross-env DB=sqlite3 npm run test:db","format:check":"prettier --list-different .","db:stop:mssql":"docker-compose -f scripts/docker-compose.yml down","db:stop:mysql":"docker-compose -f scripts/docker-compose.yml down","test:coverage":"nyc mocha --exit --check-leaks -t 10000 --config test/mocha-all-config-test.js && npm run test:tape && npm run test:cli","test:oracledb":"cross-env DB=oracledb npm run test:db","test:pgnative":"cross-env DB=pgnative npm run test:db","test:postgres":"cross-env DB=postgres npm run test:db","db:start:mssql":"docker-compose -f scripts/docker-compose.yml up --build -d mssql && docker-compose -f scripts/docker-compose.yml up waitmssql","db:start:mysql":"docker-compose -f scripts/docker-compose.yml up --build -d mysql && docker-compose -f scripts/docker-compose.yml up waitmysql","db:stop:oracle":"docker-compose -f scripts/docker-compose.yml down","stress:destroy":"docker-compose -f scripts/stress-test/docker-compose.yml stop","test:unit-only":"mocha --exit -t 10000 --config test/mocha-unit-config-test.js","build:gitignore":"node scripts/update_gitignore_for_tsc_output.js run","db:start:oracle":"docker-compose -f scripts/docker-compose.yml up --build -d oracledb && docker-compose -f scripts/docker-compose.yml up waitoracledb","lint:everything":"npm run lint && npm run lint:types","test:everything":"npm run lint:everything && npm run test:coverage","db:stop:pgnative":"docker-compose -f scripts/docker-compose.yml down","db:stop:postgres":"docker-compose -f scripts/docker-compose.yml down","test:cockroachdb":"cross-env DB=cockroachdb npm run test:db","test:db:coverage":"nyc mocha --exit --check-leaks -t 10000 --config test/mocha-integration-config-test.js && npm run test:tape","db:start:pgnative":"docker-compose -f scripts/docker-compose.yml up --build -d pgnative && docker-compose -f scripts/docker-compose.yml up waitpgnative","db:start:postgres":"docker-compose -f scripts/docker-compose.yml up --build -d postgres && docker-compose -f scripts/docker-compose.yml up waitpostgres","lint:types:legacy":"dtslint types","test:db:no-oracle":"cross-env DB=\"mssql mysql mysql2 postgres sqlite3\" mocha --exit -t 10000 --config test/mocha-integration-config-test.js && npm run test:tape","db:start:no-oracle":"docker-compose -f scripts/docker-compose.yml up --build -d mysql postgres mssql cockroachdb pgnative && docker-compose -f scripts/docker-compose.yml up waitmssql waitmysql waitpostgres","db:stop:cockroachdb":"docker-compose -f scripts/docker-compose.yml down","lint:fix:everything":"npm run lint:fix && npm run lint:types","test:better-sqlite3":"cross-env DB=better-sqlite3 npm run test:db","db:start:cockroachdb":"docker-compose -f scripts/docker-compose.yml up --build -d cockroachdb && docker-compose -f scripts/docker-compose.yml up waitcockroachdb"},"_npmUser":{"name":"000alen","email":"lclc.alen@gmail.com"},"repository":{"url":"git://github.com/knex/knex.git","type":"git"},"_npmVersion":"10.9.0","description":"A batteries-included SQL query & schema builder for PostgresSQL, MySQL, CockroachDB, MSSQL and SQLite3","directories":{},"lint-staged":{"*":"prettier --ignore-unknown --write","*.js":"eslint --cache --fix"},"_nodeVersion":"20.12.2","dependencies":{"esm":"^3.2.25","tarn":"^3.0.2","debug":"4.3.4","lodash":"^4.17.21","getopts":"2.3.0","rechoir":"^0.8.0","tildify":"2.0.0","escalade":"^3.1.1","colorette":"2.0.19","commander":"^10.0.0","interpret":"^2.2.0","resolve-from":"^5.0.0","get-package-type":"^0.1.0","pg-connection-string":"2.6.2"},"react-native":{},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.8.0","nyc":"^15.1.0","tsd":"^0.28.1","chai":"^4.3.6","jake":"^10.8.5","tape":"^5.6.0","husky":"^8.0.1","mocha":"^10.0.0","mysql":"^2.18.1","sinon":"^15.0.1","eslint":"^8.54.0","mysql2":"^3.2.0","rimraf":"^5.0.5","dtslint":"4.2.1","mock-fs":"^5.1.4","sqlite3":"^5.0.11","tedious":"^16.6.1","ts-node":"^10.9.1","oracledb":"^6.1.0","prettier":"2.8.7","tap-spec":"^5.0.0","coveralls":"^3.1.1","cross-env":"^7.0.3","JSONStream":"^1.3.5","sinon-chai":"^3.7.0","typescript":"5.0.4","@types/node":"^20.4.0","cli-testlab":"^2.2.0","lint-staged":"^13.0.0","better-sqlite3":"^9.1.1","pg-query-stream":"^4.2.4","chai-as-promised":"^7.1.1","source-map-support":"^0.5.21","chai-subset-in-order":"^3.1.0","eslint-plugin-import":"^2.29.0","@tsconfig/recommended":"^1.0.1","toxiproxy-node-client":"^2.0.6","eslint-config-prettier":"^8.6.0","eslint-plugin-prettier":"^4.2.1","eslint-plugin-mocha-no-only":"^1.1.1"},"buildDependencies":["rimraf"],"peerDependenciesMeta":{"pg":{"optional":true},"mysql":{"optional":true},"mysql2":{"optional":true},"sqlite3":{"optional":true},"tedious":{"optional":true},"pg-native":{"optional":true},"better-sqlite3":{"optional":true}},"tonicExampleFilename":"scripts/runkit-example.js","_npmOperationalInternal":{"tmp":"tmp/knex_3.1.0_1732828413657_0.3041899805240029","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"@000alen/knex","version":"3.1.1","description":"A batteries-included SQL query & schema builder for PostgresSQL, MySQL, CockroachDB, MSSQL and SQLite3","main":"knex","types":"types/index.d.ts","engines":{"node":">=16"},"scripts":{"build":"npm run build:gitignore && npm run build:ts && npm run format","clean":"node scripts/clean.js","build:ts":"tsc","build:gitignore":"node scripts/update_gitignore_for_tsc_output.js run","format":"prettier --write --list-different .","format:check":"prettier --list-different .","debug:test":"mocha --inspect-brk --exit -t 0 test/all-tests-suite.js","debug:tape":"node --inspect-brk test/tape/index.js","coveralls":"nyc report --reporter=lcov","lint":"eslint --cache .","lint:fix":"eslint --cache --fix .","lint:types":"tsd","lint:types:legacy":"dtslint types","lint:everything":"npm run lint && npm run lint:types","lint:fix:everything":"npm run lint:fix && npm run lint:types","test:unit":"npm run test:unit-only && npm run test:cli","test:unit-only":"mocha --exit -t 10000 --config test/mocha-unit-config-test.js","test:db":"mocha --exit -t 10000 --config test/mocha-integration-config-test.js","test:db:coverage":"nyc mocha --exit --check-leaks -t 10000 --config test/mocha-integration-config-test.js && npm run test:tape","test:db:no-oracle":"cross-env DB=\"mssql mysql mysql2 postgres sqlite3\" mocha --exit -t 10000 --config test/mocha-integration-config-test.js && npm run test:tape","test":"mocha --exit -t 10000 --config test/mocha-all-config-test.js && npm run test:tape && npm run test:cli","test:coverage":"nyc mocha --exit --check-leaks -t 10000 --config test/mocha-all-config-test.js && npm run test:tape && npm run test:cli","test:everything":"npm run lint:everything && npm run test:coverage","test:mssql":"cross-env DB=mssql npm run test:db","test:mysql":"cross-env DB=mysql npm run test:db","test:mysql2":"cross-env DB=mysql2 npm run test:db","test:oracledb":"cross-env DB=oracledb npm run test:db","test:sqlite":"cross-env DB=sqlite3 npm run test:db","test:better-sqlite3":"cross-env DB=better-sqlite3 npm run test:db","test:postgres":"cross-env DB=postgres npm run test:db","test:cockroachdb":"cross-env DB=cockroachdb npm run test:db","test:pgnative":"cross-env DB=pgnative npm run test:db","test:tape":"node test/tape/index.js | tap-spec","test:cli":"cross-env KNEX_PATH=../knex.js KNEX=bin/cli.js jake -f test/jake/Jakefile","db:start":"docker-compose -f scripts/docker-compose.yml up --build -d mysql oracledb postgres mssql cockroachdb pgnative && docker-compose -f scripts/docker-compose.yml up waitmssql waitmysql waitpostgres waitoracledb","db:start:no-oracle":"docker-compose -f scripts/docker-compose.yml up --build -d mysql postgres mssql cockroachdb pgnative && docker-compose -f scripts/docker-compose.yml up waitmssql waitmysql waitpostgres","db:stop":"docker-compose -f scripts/docker-compose.yml down","db:start:postgres":"docker-compose -f scripts/docker-compose.yml up --build -d postgres && docker-compose -f scripts/docker-compose.yml up waitpostgres","db:stop:postgres":"docker-compose -f scripts/docker-compose.yml down","db:start:pgnative":"docker-compose -f scripts/docker-compose.yml up --build -d pgnative && docker-compose -f scripts/docker-compose.yml up waitpgnative","db:stop:pgnative":"docker-compose -f scripts/docker-compose.yml down","db:start:mysql":"docker-compose -f scripts/docker-compose.yml up --build -d mysql && docker-compose -f scripts/docker-compose.yml up waitmysql","db:stop:mysql":"docker-compose -f scripts/docker-compose.yml down","db:start:mssql":"docker-compose -f scripts/docker-compose.yml up --build -d mssql && docker-compose -f scripts/docker-compose.yml up waitmssql","db:stop:mssql":"docker-compose -f scripts/docker-compose.yml down","db:start:cockroachdb":"docker-compose -f scripts/docker-compose.yml up --build -d cockroachdb && docker-compose -f scripts/docker-compose.yml up waitcockroachdb","db:stop:cockroachdb":"docker-compose -f scripts/docker-compose.yml down","db:start:oracle":"docker-compose -f scripts/docker-compose.yml up --build -d oracledb && docker-compose -f scripts/docker-compose.yml up waitoracledb","db:stop:oracle":"docker-compose -f scripts/docker-compose.yml down","stress:init":"docker-compose -f scripts/stress-test/docker-compose.yml up --no-start && docker-compose -f scripts/stress-test/docker-compose.yml start","stress:test":"node scripts/stress-test/knex-stress-test.js | grep -A 5 -B 60 -- '- STATS '","stress:destroy":"docker-compose -f scripts/stress-test/docker-compose.yml stop"},"dependencies":{"colorette":"2.0.19","commander":"^10.0.0","debug":"4.3.4","escalade":"^3.1.1","esm":"^3.2.25","get-package-type":"^0.1.0","getopts":"2.3.0","interpret":"^2.2.0","lodash":"^4.17.21","pg-connection-string":"2.6.2","rechoir":"^0.8.0","resolve-from":"^5.0.0","tarn":"^3.0.2","tildify":"2.0.0"},"peerDependenciesMeta":{"tedious":{"optional":true},"mysql":{"optional":true},"mysql2":{"optional":true},"pg":{"optional":true},"pg-native":{"optional":true},"sqlite3":{"optional":true},"better-sqlite3":{"optional":true}},"lint-staged":{"*":"prettier --ignore-unknown --write","*.js":"eslint --cache --fix"},"devDependencies":{"@tsconfig/recommended":"^1.0.1","@types/node":"^20.4.0","better-sqlite3":"^9.1.1","chai":"^4.3.6","chai-as-promised":"^7.1.1","chai-subset-in-order":"^3.1.0","cli-testlab":"^2.2.0","coveralls":"^3.1.1","cross-env":"^7.0.3","dtslint":"4.2.1","eslint":"^8.54.0","eslint-config-prettier":"^8.6.0","eslint-plugin-import":"^2.29.0","eslint-plugin-mocha-no-only":"^1.1.1","eslint-plugin-prettier":"^4.2.1","husky":"^8.0.1","jake":"^10.8.5","JSONStream":"^1.3.5","lint-staged":"^13.0.0","mocha":"^10.0.0","mock-fs":"^5.1.4","mysql":"^2.18.1","mysql2":"^3.2.0","nyc":"^15.1.0","oracledb":"^6.1.0","pg":"^8.8.0","pg-query-stream":"^4.2.4","prettier":"2.8.7","rimraf":"^5.0.5","sinon":"^15.0.1","sinon-chai":"^3.7.0","source-map-support":"^0.5.21","sqlite3":"^5.0.11","tap-spec":"^5.0.0","tape":"^5.6.0","tedious":"^16.6.1","toxiproxy-node-client":"^2.0.6","ts-node":"^10.9.1","tsd":"^0.28.1","typescript":"5.0.4"},"buildDependencies":["rimraf"],"bin":{"knex":"bin/cli.js"},"repository":{"type":"git","url":"git://github.com/knex/knex.git"},"homepage":"https://knex.github.io/documentation/","keywords":["sql","query","postgresql","postgres","mysql","cockroachdb","sqlite3","oracle","mssql","builder","querybuilder","build","db","database"],"author":{"name":"Tim Griesser","url":"https://github.com/tgriesser"},"contributors":[{"name":"Mikael Lepisto"},{"name":"Igor Savin","url":"https://www.codeflashbacks.com"},{"name":"Olivier Cavadenti"},{"name":"Simon Liden"},{"name":"Paul Gaurab","url":"https://lorefnon.tech"},{"name":"Brian Lauber","url":"https://briandamaged.org"}],"browser":{"./lib/bin/cli.js":"./lib/util/noop.js","tedious":false,"mysql":false,"mysql2":false,"pg":false,"pg-native":false,"pg-query-stream":false,"oracle":false,"sqlite3":false,"better-sqlite3":false,"oracledb":false},"react-native":{},"license":"MIT","tonicExampleFilename":"scripts/runkit-example.js","nyc":{"check-coverage":true,"lines":84,"statements":82,"functions":83,"branches":69,"extension":[".js"],"exclude":["lib/dialects/oracle","lib/dialects/oracledb","test/**/*.spec.js"]},"tsd":{"directory":"test-tsd","compilerOptions":{"esModuleInterop":false,"module":"commonjs","target":"ES2017"}},"_id":"@000alen/knex@3.1.1","gitHead":"0504036f770207510e1654b58d98cafc7e51e4b1","bugs":{"url":"https://github.com/knex/knex/issues"},"_nodeVersion":"20.12.2","_npmVersion":"10.9.0","dist":{"integrity":"sha512-VPltiHEjNSm7Mvy+ANACG123hWK7B0lB3QnUdwhHItnb5jwKa74+mxoiRZ/vH6HSlyCHNR2KsA1UkDoMm/txjg==","shasum":"b02d03b893683c1b260ce432c8dfbb6b46f47d52","tarball":"https://registry.npmjs.org/@000alen/knex/-/knex-3.1.1.tgz","fileCount":190,"unpackedSize":873677,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnI57bA4qz9cf4Da30LEpapKAdjgVAE4VQz9ZTn8kBqwIhALLdOqKCYZ/NZlTvKtY4YVl4p7la1MJu918HI77EUU1v"}]},"_npmUser":{"name":"000alen","email":"lclc.alen@gmail.com"},"directories":{},"maintainers":[{"name":"000alen","email":"lclc.alen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/knex_3.1.1_1732829862865_0.32976476908010866"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-28T21:13:33.587Z","modified":"2024-11-28T21:37:43.266Z","3.1.0":"2024-11-28T21:13:33.875Z","3.1.1":"2024-11-28T21:37:43.115Z"},"bugs":{"url":"https://github.com/knex/knex/issues"},"author":{"name":"Tim Griesser","url":"https://github.com/tgriesser"},"license":"MIT","homepage":"https://knex.github.io/documentation/","keywords":["sql","query","postgresql","postgres","mysql","cockroachdb","sqlite3","oracle","mssql","builder","querybuilder","build","db","database"],"repository":{"type":"git","url":"git://github.com/knex/knex.git"},"description":"A batteries-included SQL query & schema builder for PostgresSQL, MySQL, CockroachDB, MSSQL and SQLite3","contributors":[{"name":"Mikael Lepisto"},{"name":"Igor Savin","url":"https://www.codeflashbacks.com"},{"name":"Olivier Cavadenti"},{"name":"Simon Liden"},{"name":"Paul Gaurab","url":"https://lorefnon.tech"},{"name":"Brian Lauber","url":"https://briandamaged.org"}],"maintainers":[{"name":"000alen","email":"lclc.alen@gmail.com"}],"readme":"# [knex.js](https://knex.github.io/documentation/)\n\n[![npm version](http://img.shields.io/npm/v/knex.svg)](https://npmjs.org/package/knex)\n[![npm downloads](https://img.shields.io/npm/dm/knex.svg)](https://npmjs.org/package/knex)\n![](https://github.com/knex/knex/workflows/CI/badge.svg)\n[![Coverage Status](https://coveralls.io/repos/knex/knex/badge.svg?branch=master)](https://coveralls.io/r/knex/knex?branch=master)\n[![Dependencies Status](https://img.shields.io/librariesio/github/knex/knex)](https://libraries.io/npm/knex)\n[![Gitter chat](https://badges.gitter.im/tgriesser/knex.svg)](https://gitter.im/tgriesser/knex)\n\n> **A SQL query builder that is _flexible_, _portable_, and _fun_ to use!**\n\nA batteries-included, multi-dialect (PostgreSQL, MySQL, CockroachDB, MSSQL, SQLite3, Oracle (including Oracle Wallet Authentication)) query builder for\nNode.js, featuring:\n\n- [transactions](https://knex.github.io/documentation/#Transactions)\n- [connection pooling](https://knex.github.io/documentation/#Installation-pooling)\n- [streaming queries](https://knex.github.io/documentation/#Interfaces-Streams)\n- both a [promise](https://knex.github.io/documentation/#Interfaces-Promises) and [callback](https://knex.github.io/documentation/#Interfaces-Callbacks) API\n- a [thorough test suite](https://github.com/knex/knex/actions)\n\nNode.js versions 12+ are supported.\n\n- Take a look at the [full documentation](https://knex.github.io/documentation) to get started!\n- Browse the [list of plugins and tools](https://github.com/knex/knex/blob/master/ECOSYSTEM.md) built for knex\n- Check out our [recipes wiki](https://github.com/knex/knex/wiki/Recipes) to search for solutions to some specific problems\n- In case of upgrading from an older version, see [migration guide](https://github.com/knex/knex/blob/master/UPGRADING.md)\n\nYou can report bugs and discuss features on the [GitHub issues page](https://github.com/knex/knex/issues) or send tweets to [@kibertoad](http://twitter.com/kibertoad).\n\nFor support and questions, join our [Gitter channel](https://gitter.im/tgriesser/knex).\n\nFor knex-based Object Relational Mapper, see:\n\n- https://github.com/Vincit/objection.js\n- https://github.com/mikro-orm/mikro-orm\n- https://bookshelfjs.org\n\nTo see the SQL that Knex will generate for a given query, you can use [Knex Query Lab](https://michaelavila.com/knex-querylab/)\n\n## Examples\n\nWe have several examples [on the website](http://knexjs.org). Here is the first one to get you started:\n\n```js\nconst knex = require('knex')({\n  client: 'sqlite3',\n  connection: {\n    filename: './data.db',\n  },\n});\n\ntry {\n  // Create a table\n  await knex.schema\n    .createTable('users', (table) => {\n      table.increments('id');\n      table.string('user_name');\n    })\n    // ...and another\n    .createTable('accounts', (table) => {\n      table.increments('id');\n      table.string('account_name');\n      table.integer('user_id').unsigned().references('users.id');\n    });\n\n  // Then query the table...\n  const insertedRows = await knex('users').insert({ user_name: 'Tim' });\n\n  // ...and using the insert id, insert into the other table.\n  await knex('accounts').insert({\n    account_name: 'knex',\n    user_id: insertedRows[0],\n  });\n\n  // Query both of the rows.\n  const selectedRows = await knex('users')\n    .join('accounts', 'users.id', 'accounts.user_id')\n    .select('users.user_name as user', 'accounts.account_name as account');\n\n  // map over the results\n  const enrichedRows = selectedRows.map((row) => ({ ...row, active: true }));\n\n  // Finally, add a catch statement\n} catch (e) {\n  console.error(e);\n}\n```\n\n## TypeScript example\n\n```ts\nimport { Knex, knex } from 'knex';\n\ninterface User {\n  id: number;\n  age: number;\n  name: string;\n  active: boolean;\n  departmentId: number;\n}\n\nconst config: Knex.Config = {\n  client: 'sqlite3',\n  connection: {\n    filename: './data.db',\n  },\n};\n\nconst knexInstance = knex(config);\n\ntry {\n  const users = await knex<User>('users').select('id', 'age');\n} catch (err) {\n  // error handling\n}\n```\n\n## Usage as ESM module\n\nIf you are launching your Node application with `--experimental-modules`, `knex.mjs` should be picked up automatically and named ESM import should work out-of-the-box.\nOtherwise, if you want to use named imports, you'll have to import knex like this:\n\n```js\nimport { knex } from 'knex/knex.mjs';\n```\n\nYou can also just do the default import:\n\n```js\nimport knex from 'knex';\n```\n\nIf you are not using TypeScript and would like the IntelliSense of your IDE to work correctly, it is recommended to set the type explicitly:\n\n```js\n/**\n * @type {Knex}\n */\nconst database = knex({\n  client: 'mysql',\n  connection: {\n    host: '127.0.0.1',\n    user: 'your_database_user',\n    password: 'your_database_password',\n    database: 'myapp_test',\n  },\n});\ndatabase.migrate.latest();\n```\n","readmeFilename":"README.md"}