drizzle-orm 1.0.0-beta.22-eaa25cd → 1.0.0-beta.22-46020ee
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/aws-data-api/common/index.d.cts +1 -1
- package/aws-data-api/common/index.d.ts +1 -1
- package/aws-data-api/pg/codecs.cjs +162 -0
- package/aws-data-api/pg/codecs.cjs.map +1 -0
- package/aws-data-api/pg/codecs.d.cts +9 -0
- package/aws-data-api/pg/codecs.d.ts +9 -0
- package/aws-data-api/pg/codecs.js +160 -0
- package/aws-data-api/pg/codecs.js.map +1 -0
- package/aws-data-api/pg/driver.cjs +4 -157
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +1 -5
- package/aws-data-api/pg/driver.d.ts +1 -5
- package/aws-data-api/pg/driver.js +4 -156
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/index.cjs +2 -1
- package/aws-data-api/pg/index.d.cts +2 -1
- package/aws-data-api/pg/index.d.ts +2 -1
- package/aws-data-api/pg/index.js +2 -1
- package/better-sqlite3/driver.cjs +2 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.js +2 -1
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/session.cjs +8 -8
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +3 -3
- package/better-sqlite3/session.d.ts +3 -3
- package/better-sqlite3/session.js +8 -8
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/mysql/driver.cjs +2 -1
- package/bun-sql/mysql/driver.cjs.map +1 -1
- package/bun-sql/mysql/driver.js +2 -1
- package/bun-sql/mysql/driver.js.map +1 -1
- package/bun-sql/mysql/session.cjs +8 -8
- package/bun-sql/mysql/session.cjs.map +1 -1
- package/bun-sql/mysql/session.d.cts +3 -3
- package/bun-sql/mysql/session.d.ts +3 -3
- package/bun-sql/mysql/session.js +8 -8
- package/bun-sql/mysql/session.js.map +1 -1
- package/bun-sql/postgres/codecs.cjs +176 -0
- package/bun-sql/postgres/codecs.cjs.map +1 -0
- package/bun-sql/postgres/codecs.d.cts +9 -0
- package/bun-sql/postgres/codecs.d.ts +9 -0
- package/bun-sql/postgres/codecs.js +174 -0
- package/bun-sql/postgres/codecs.js.map +1 -0
- package/bun-sql/postgres/driver.cjs +4 -171
- package/bun-sql/postgres/driver.cjs.map +1 -1
- package/bun-sql/postgres/driver.d.cts +1 -5
- package/bun-sql/postgres/driver.d.ts +1 -5
- package/bun-sql/postgres/driver.js +4 -170
- package/bun-sql/postgres/driver.js.map +1 -1
- package/bun-sql/postgres/index.cjs +2 -1
- package/bun-sql/postgres/index.d.cts +2 -1
- package/bun-sql/postgres/index.d.ts +2 -1
- package/bun-sql/postgres/index.js +2 -1
- package/bun-sql/sqlite/driver.cjs +2 -1
- package/bun-sql/sqlite/driver.cjs.map +1 -1
- package/bun-sql/sqlite/driver.js +2 -1
- package/bun-sql/sqlite/driver.js.map +1 -1
- package/bun-sql/sqlite/session.cjs +8 -8
- package/bun-sql/sqlite/session.cjs.map +1 -1
- package/bun-sql/sqlite/session.d.cts +3 -3
- package/bun-sql/sqlite/session.d.ts +3 -3
- package/bun-sql/sqlite/session.js +8 -8
- package/bun-sql/sqlite/session.js.map +1 -1
- package/bun-sqlite/driver.cjs +2 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.js +2 -1
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/session.cjs +8 -8
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.d.cts +3 -3
- package/bun-sqlite/session.d.ts +3 -3
- package/bun-sqlite/session.js +8 -8
- package/bun-sqlite/session.js.map +1 -1
- package/cockroach/driver.cjs +3 -2
- package/cockroach/driver.cjs.map +1 -1
- package/cockroach/driver.d.cts +1 -1
- package/cockroach/driver.d.ts +1 -1
- package/cockroach/driver.js +3 -2
- package/cockroach/driver.js.map +1 -1
- package/cockroach/session.cjs +4 -4
- package/cockroach/session.cjs.map +1 -1
- package/cockroach/session.d.cts +3 -3
- package/cockroach/session.d.ts +3 -3
- package/cockroach/session.js +4 -4
- package/cockroach/session.js.map +1 -1
- package/durable-sqlite/driver.cjs +2 -1
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.js +2 -1
- package/durable-sqlite/driver.js.map +1 -1
- package/durable-sqlite/session.cjs +8 -8
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.d.cts +3 -3
- package/durable-sqlite/session.d.ts +3 -3
- package/durable-sqlite/session.js +8 -8
- package/durable-sqlite/session.js.map +1 -1
- package/effect-postgres/codecs.cjs +175 -0
- package/effect-postgres/codecs.cjs.map +1 -0
- package/effect-postgres/codecs.d.cts +9 -0
- package/effect-postgres/codecs.d.ts +9 -0
- package/effect-postgres/codecs.js +173 -0
- package/effect-postgres/codecs.js.map +1 -0
- package/effect-postgres/driver.cjs +5 -171
- package/effect-postgres/driver.cjs.map +1 -1
- package/effect-postgres/driver.d.cts +3 -7
- package/effect-postgres/driver.d.ts +3 -7
- package/effect-postgres/driver.js +5 -170
- package/effect-postgres/driver.js.map +1 -1
- package/effect-postgres/index.cjs +2 -1
- package/effect-postgres/index.d.cts +2 -1
- package/effect-postgres/index.d.ts +2 -1
- package/effect-postgres/index.js +2 -1
- package/effect-postgres/migrator.d.cts +1 -1
- package/effect-postgres/migrator.d.ts +1 -1
- package/effect-postgres/session.cjs.map +1 -1
- package/effect-postgres/session.d.cts +1 -1
- package/effect-postgres/session.d.ts +1 -1
- package/effect-postgres/session.js.map +1 -1
- package/expo-sqlite/driver.cjs +2 -1
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.js +2 -1
- package/expo-sqlite/driver.js.map +1 -1
- package/expo-sqlite/session.cjs +8 -8
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.d.cts +3 -3
- package/expo-sqlite/session.d.ts +3 -3
- package/expo-sqlite/session.js +8 -8
- package/expo-sqlite/session.js.map +1 -1
- package/index.cjs +1 -0
- package/index.js +2 -2
- package/libsql/driver-core.cjs +2 -1
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +2 -1
- package/libsql/driver-core.js.map +1 -1
- package/libsql/session.cjs +8 -8
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +3 -3
- package/libsql/session.d.ts +3 -3
- package/libsql/session.js +8 -8
- package/libsql/session.js.map +1 -1
- package/mysql-proxy/driver.cjs +2 -1
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.js +2 -1
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql-proxy/session.cjs +6 -6
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +3 -3
- package/mysql-proxy/session.d.ts +3 -3
- package/mysql-proxy/session.js +6 -6
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +2 -1
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +1 -1
- package/mysql2/driver.d.ts +1 -1
- package/mysql2/driver.js +2 -1
- package/mysql2/driver.js.map +1 -1
- package/mysql2/session.cjs +7 -7
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +3 -3
- package/mysql2/session.d.ts +3 -3
- package/mysql2/session.js +7 -7
- package/mysql2/session.js.map +1 -1
- package/neon-http/codecs.cjs +66 -0
- package/neon-http/codecs.cjs.map +1 -0
- package/neon-http/codecs.d.cts +9 -0
- package/neon-http/codecs.d.ts +9 -0
- package/neon-http/codecs.js +64 -0
- package/neon-http/codecs.js.map +1 -0
- package/neon-http/driver.cjs +4 -61
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +1 -5
- package/neon-http/driver.d.ts +1 -5
- package/neon-http/driver.js +4 -60
- package/neon-http/driver.js.map +1 -1
- package/neon-http/index.cjs +2 -1
- package/neon-http/index.d.cts +2 -1
- package/neon-http/index.d.ts +2 -1
- package/neon-http/index.js +2 -1
- package/neon-serverless/codecs.cjs +65 -0
- package/neon-serverless/codecs.cjs.map +1 -0
- package/neon-serverless/codecs.d.cts +9 -0
- package/neon-serverless/codecs.d.ts +9 -0
- package/neon-serverless/codecs.js +63 -0
- package/neon-serverless/codecs.js.map +1 -0
- package/neon-serverless/driver.cjs +4 -60
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +2 -6
- package/neon-serverless/driver.d.ts +2 -6
- package/neon-serverless/driver.js +4 -59
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/index.cjs +2 -1
- package/neon-serverless/index.d.cts +2 -1
- package/neon-serverless/index.d.ts +2 -1
- package/neon-serverless/index.js +2 -1
- package/netlify-db/codecs.cjs +122 -0
- package/netlify-db/codecs.cjs.map +1 -0
- package/netlify-db/codecs.d.cts +10 -0
- package/netlify-db/codecs.d.ts +10 -0
- package/netlify-db/codecs.js +119 -0
- package/netlify-db/codecs.js.map +1 -0
- package/netlify-db/driver.cjs +4 -118
- package/netlify-db/driver.cjs.map +1 -1
- package/netlify-db/driver.d.cts +1 -6
- package/netlify-db/driver.d.ts +1 -6
- package/netlify-db/driver.js +4 -116
- package/netlify-db/driver.js.map +1 -1
- package/netlify-db/index.cjs +3 -2
- package/netlify-db/index.d.cts +2 -1
- package/netlify-db/index.d.ts +2 -1
- package/netlify-db/index.js +2 -1
- package/netlify-db/session.d.ts +1 -1
- package/node-mssql/driver.cjs +3 -2
- package/node-mssql/driver.cjs.map +1 -1
- package/node-mssql/driver.d.cts +1 -1
- package/node-mssql/driver.d.ts +1 -1
- package/node-mssql/driver.js +3 -2
- package/node-mssql/driver.js.map +1 -1
- package/node-mssql/session.cjs +5 -5
- package/node-mssql/session.cjs.map +1 -1
- package/node-mssql/session.d.cts +3 -3
- package/node-mssql/session.d.ts +3 -3
- package/node-mssql/session.js +5 -5
- package/node-mssql/session.js.map +1 -1
- package/node-postgres/codecs.cjs +65 -0
- package/node-postgres/codecs.cjs.map +1 -0
- package/node-postgres/codecs.d.cts +9 -0
- package/node-postgres/codecs.d.ts +9 -0
- package/node-postgres/codecs.js +63 -0
- package/node-postgres/codecs.js.map +1 -0
- package/node-postgres/driver.cjs +4 -60
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +1 -5
- package/node-postgres/driver.d.ts +1 -5
- package/node-postgres/driver.js +4 -59
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/index.cjs +2 -1
- package/node-postgres/index.d.cts +2 -1
- package/node-postgres/index.d.ts +2 -1
- package/node-postgres/index.js +2 -1
- package/node-sqlite/driver.cjs +5 -1
- package/node-sqlite/driver.cjs.map +1 -1
- package/node-sqlite/driver.js +5 -1
- package/node-sqlite/driver.js.map +1 -1
- package/node-sqlite/session.cjs +14 -8
- package/node-sqlite/session.cjs.map +1 -1
- package/node-sqlite/session.d.cts +8 -3
- package/node-sqlite/session.d.ts +8 -3
- package/node-sqlite/session.js +15 -9
- package/node-sqlite/session.js.map +1 -1
- package/op-sqlite/driver.cjs +2 -1
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.js +2 -1
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/session.cjs +8 -8
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +3 -3
- package/op-sqlite/session.d.ts +3 -3
- package/op-sqlite/session.js +8 -8
- package/op-sqlite/session.js.map +1 -1
- package/package.json +133 -1
- package/pg-core/effect/session.d.cts +1 -1
- package/pg-core/effect/session.d.ts +1 -1
- package/pg-proxy/driver.cjs +4 -4
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.d.ts +1 -1
- package/pg-proxy/driver.js +4 -4
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +0 -1
- package/pg-proxy/session.d.ts +0 -1
- package/pg-proxy/session.js.map +1 -1
- package/pglite/codecs.cjs +92 -0
- package/pglite/codecs.cjs.map +1 -0
- package/pglite/codecs.d.cts +9 -0
- package/pglite/codecs.d.ts +9 -0
- package/pglite/codecs.js +90 -0
- package/pglite/codecs.js.map +1 -0
- package/pglite/driver.cjs +3 -86
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +1 -5
- package/pglite/driver.d.ts +1 -5
- package/pglite/driver.js +4 -86
- package/pglite/driver.js.map +1 -1
- package/pglite/index.cjs +2 -1
- package/pglite/index.d.cts +2 -1
- package/pglite/index.d.ts +2 -1
- package/pglite/index.js +2 -1
- package/planetscale-serverless/driver.cjs +2 -1
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +1 -1
- package/planetscale-serverless/driver.d.ts +1 -1
- package/planetscale-serverless/driver.js +2 -1
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/session.cjs +6 -6
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +3 -3
- package/planetscale-serverless/session.d.ts +3 -3
- package/planetscale-serverless/session.js +6 -6
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/codecs.cjs +147 -0
- package/postgres-js/codecs.cjs.map +1 -0
- package/postgres-js/codecs.d.cts +9 -0
- package/postgres-js/codecs.d.ts +9 -0
- package/postgres-js/codecs.js +145 -0
- package/postgres-js/codecs.js.map +1 -0
- package/postgres-js/driver.cjs +4 -142
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +1 -5
- package/postgres-js/driver.d.ts +1 -5
- package/postgres-js/driver.js +4 -141
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/index.cjs +2 -1
- package/postgres-js/index.d.cts +2 -1
- package/postgres-js/index.d.ts +2 -1
- package/postgres-js/index.js +2 -1
- package/singlestore/driver.cjs +3 -2
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +1 -1
- package/singlestore/driver.d.ts +1 -1
- package/singlestore/driver.js +3 -2
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs +7 -7
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +3 -3
- package/singlestore/session.d.ts +3 -3
- package/singlestore/session.js +7 -7
- package/singlestore/session.js.map +1 -1
- package/singlestore-proxy/driver.cjs +2 -1
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.js +2 -1
- package/singlestore-proxy/driver.js.map +1 -1
- package/singlestore-proxy/session.cjs +6 -6
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.d.cts +3 -3
- package/singlestore-proxy/session.d.ts +3 -3
- package/singlestore-proxy/session.js +6 -6
- package/singlestore-proxy/session.js.map +1 -1
- package/sql-js/driver.cjs +2 -1
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.js +2 -1
- package/sql-js/driver.js.map +1 -1
- package/sql-js/session.cjs +8 -8
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.d.cts +3 -3
- package/sql-js/session.d.ts +3 -3
- package/sql-js/session.js +8 -8
- package/sql-js/session.js.map +1 -1
- package/sqlite-cloud/driver.cjs +2 -1
- package/sqlite-cloud/driver.cjs.map +1 -1
- package/sqlite-cloud/driver.js +2 -1
- package/sqlite-cloud/driver.js.map +1 -1
- package/sqlite-cloud/session.cjs +8 -8
- package/sqlite-cloud/session.cjs.map +1 -1
- package/sqlite-cloud/session.d.cts +3 -3
- package/sqlite-cloud/session.d.ts +3 -3
- package/sqlite-cloud/session.js +8 -8
- package/sqlite-cloud/session.js.map +1 -1
- package/sqlite-proxy/driver.cjs +2 -1
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.js +2 -1
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/session.cjs +8 -8
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +3 -3
- package/sqlite-proxy/session.d.ts +3 -3
- package/sqlite-proxy/session.js +8 -8
- package/sqlite-proxy/session.js.map +1 -1
- package/tidb-serverless/driver.cjs +2 -1
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +1 -1
- package/tidb-serverless/driver.d.ts +1 -1
- package/tidb-serverless/driver.js +2 -1
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/session.cjs +6 -6
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +3 -3
- package/tidb-serverless/session.d.ts +3 -3
- package/tidb-serverless/session.js +6 -6
- package/tidb-serverless/session.js.map +1 -1
- package/tursodatabase/driver-core.cjs +2 -1
- package/tursodatabase/driver-core.cjs.map +1 -1
- package/tursodatabase/driver-core.js +2 -1
- package/tursodatabase/driver-core.js.map +1 -1
- package/tursodatabase/session.cjs +8 -8
- package/tursodatabase/session.cjs.map +1 -1
- package/tursodatabase/session.d.cts +3 -3
- package/tursodatabase/session.d.ts +3 -3
- package/tursodatabase/session.js +8 -8
- package/tursodatabase/session.js.map +1 -1
- package/utils.cjs +17 -0
- package/utils.cjs.map +1 -1
- package/utils.js +17 -1
- package/utils.js.map +1 -1
- package/vercel-postgres/codecs.cjs +65 -0
- package/vercel-postgres/codecs.cjs.map +1 -0
- package/vercel-postgres/codecs.d.cts +9 -0
- package/vercel-postgres/codecs.d.ts +9 -0
- package/vercel-postgres/codecs.js +63 -0
- package/vercel-postgres/codecs.js.map +1 -0
- package/vercel-postgres/driver.cjs +3 -60
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +1 -5
- package/vercel-postgres/driver.d.ts +1 -5
- package/vercel-postgres/driver.js +4 -60
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/index.cjs +2 -1
- package/vercel-postgres/index.d.cts +2 -1
- package/vercel-postgres/index.d.ts +2 -1
- package/vercel-postgres/index.js +2 -1
- package/version.cjs +1 -1
- package/version.cjs.map +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/xata-http/codecs.cjs +168 -0
- package/xata-http/codecs.cjs.map +1 -0
- package/xata-http/codecs.d.cts +9 -0
- package/xata-http/codecs.d.ts +9 -0
- package/xata-http/codecs.js +166 -0
- package/xata-http/codecs.js.map +1 -0
- package/xata-http/driver.cjs +4 -163
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +1 -5
- package/xata-http/driver.d.ts +1 -5
- package/xata-http/driver.js +4 -162
- package/xata-http/driver.js.map +1 -1
- package/xata-http/index.cjs +2 -1
- package/xata-http/index.d.cts +2 -1
- package/xata-http/index.d.ts +2 -1
- package/xata-http/index.js +2 -1
package/expo-sqlite/session.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { SelectedFieldsOrdered } from "../sqlite-core/query-builders/select.type
|
|
|
13
13
|
//#region src/expo-sqlite/session.d.ts
|
|
14
14
|
interface ExpoSQLiteSessionOptions {
|
|
15
15
|
logger?: Logger;
|
|
16
|
-
|
|
16
|
+
useJitMappers?: boolean;
|
|
17
17
|
}
|
|
18
18
|
type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
|
|
19
19
|
declare class ExpoSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'sync', SQLiteRunResult, TFullSchema, TRelations, TSchema> {
|
|
@@ -43,13 +43,13 @@ declare class ExpoSQLitePreparedQuery<T extends PreparedQueryConfig$1 = Prepared
|
|
|
43
43
|
private stmt;
|
|
44
44
|
private logger;
|
|
45
45
|
private fields;
|
|
46
|
-
private
|
|
46
|
+
private useJitMappers;
|
|
47
47
|
private customResultMapper?;
|
|
48
48
|
private isRqbV2Query?;
|
|
49
49
|
private rqbConfig?;
|
|
50
50
|
static readonly [entityKind]: string;
|
|
51
51
|
private jitMapper?;
|
|
52
|
-
constructor(stmt: SQLiteStatement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod,
|
|
52
|
+
constructor(stmt: SQLiteStatement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
|
|
53
53
|
run(placeholderValues?: Record<string, unknown>): SQLiteRunResult;
|
|
54
54
|
all(placeholderValues?: Record<string, unknown>): T['all'];
|
|
55
55
|
private allRqbV2;
|
package/expo-sqlite/session.js
CHANGED
|
@@ -19,10 +19,10 @@ var ExpoSQLiteSession = class extends SQLiteSession {
|
|
|
19
19
|
this.logger = options.logger ?? new NoopLogger();
|
|
20
20
|
}
|
|
21
21
|
prepareQuery(query, fields, executeMethod, customResultMapper) {
|
|
22
|
-
return new ExpoSQLitePreparedQuery(this.client.prepareSync(query.sql), query, this.logger, fields, executeMethod, this.options.
|
|
22
|
+
return new ExpoSQLitePreparedQuery(this.client.prepareSync(query.sql), query, this.logger, fields, executeMethod, this.options.useJitMappers, customResultMapper);
|
|
23
23
|
}
|
|
24
24
|
prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
|
|
25
|
-
return new ExpoSQLitePreparedQuery(this.client.prepareSync(query.sql), query, this.logger, fields, executeMethod, this.options.
|
|
25
|
+
return new ExpoSQLitePreparedQuery(this.client.prepareSync(query.sql), query, this.logger, fields, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
|
|
26
26
|
}
|
|
27
27
|
transaction(transaction, config = {}) {
|
|
28
28
|
const tx = new ExpoSQLiteTransaction("sync", this.dialect, this, this.relations, this.schema);
|
|
@@ -56,12 +56,12 @@ var ExpoSQLiteTransaction = class ExpoSQLiteTransaction extends SQLiteTransactio
|
|
|
56
56
|
var ExpoSQLitePreparedQuery = class extends SQLitePreparedQuery {
|
|
57
57
|
static [entityKind] = "ExpoSQLitePreparedQuery";
|
|
58
58
|
jitMapper;
|
|
59
|
-
constructor(stmt, query, logger, fields, executeMethod,
|
|
59
|
+
constructor(stmt, query, logger, fields, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
|
|
60
60
|
super("sync", executeMethod, query);
|
|
61
61
|
this.stmt = stmt;
|
|
62
62
|
this.logger = logger;
|
|
63
63
|
this.fields = fields;
|
|
64
|
-
this.
|
|
64
|
+
this.useJitMappers = useJitMappers;
|
|
65
65
|
this.customResultMapper = customResultMapper;
|
|
66
66
|
this.isRqbV2Query = isRqbV2Query;
|
|
67
67
|
this.rqbConfig = rqbConfig;
|
|
@@ -85,14 +85,14 @@ var ExpoSQLitePreparedQuery = class extends SQLitePreparedQuery {
|
|
|
85
85
|
}
|
|
86
86
|
const rows = this.values(placeholderValues);
|
|
87
87
|
if (customResultMapper) return customResultMapper(rows);
|
|
88
|
-
return this.
|
|
88
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
|
89
89
|
}
|
|
90
90
|
allRqbV2(placeholderValues) {
|
|
91
91
|
const { query, logger, stmt, customResultMapper } = this;
|
|
92
92
|
const params = fillPlaceholders(query.params, placeholderValues ?? {});
|
|
93
93
|
logger.logQuery(query.sql, params);
|
|
94
94
|
const rows = stmt.executeSync(params).getAllSync();
|
|
95
|
-
return this.
|
|
95
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper(rows);
|
|
96
96
|
}
|
|
97
97
|
get(placeholderValues) {
|
|
98
98
|
if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
|
|
@@ -104,7 +104,7 @@ var ExpoSQLitePreparedQuery = class extends SQLitePreparedQuery {
|
|
|
104
104
|
const row = rows[0];
|
|
105
105
|
if (!row) return;
|
|
106
106
|
if (customResultMapper) return customResultMapper(rows);
|
|
107
|
-
return this.
|
|
107
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))([row])[0] : mapResultRow(this.fields, row, this.joinsNotNullableMap);
|
|
108
108
|
}
|
|
109
109
|
getRqbV2(placeholderValues) {
|
|
110
110
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
@@ -112,7 +112,7 @@ var ExpoSQLitePreparedQuery = class extends SQLitePreparedQuery {
|
|
|
112
112
|
const { stmt, customResultMapper } = this;
|
|
113
113
|
const row = stmt.executeSync(params).getFirstSync();
|
|
114
114
|
if (!row) return;
|
|
115
|
-
return this.
|
|
115
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))([row]) : customResultMapper([row]);
|
|
116
116
|
}
|
|
117
117
|
values(placeholderValues) {
|
|
118
118
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","names":[],"sources":["../../src/expo-sqlite/session.ts"],"sourcesContent":["import type { SQLiteDatabase, SQLiteRunResult, SQLiteStatement } from 'expo-sqlite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface ExpoSQLiteSessionOptions {\n\tlogger?: Logger;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class ExpoSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', SQLiteRunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'ExpoSQLiteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: SQLiteDatabase,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: ExpoSQLiteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): ExpoSQLitePreparedQuery<T> {\n\t\tconst stmt = this.client.prepareSync(query.sql);\n\t\treturn new ExpoSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): ExpoSQLitePreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepareSync(query.sql);\n\t\treturn new ExpoSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: ExpoSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new ExpoSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class ExpoSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', SQLiteRunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'ExpoSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: ExpoSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new ExpoSQLiteTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class ExpoSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{ type: 'sync'; run: SQLiteRunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'ExpoSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate stmt: SQLiteStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): SQLiteRunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst { changes, lastInsertRowId } = this.stmt.executeSync(params as any[]);\n\t\treturn {\n\t\t\tchanges,\n\t\t\tlastInsertRowId,\n\t\t};\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.executeSync(params as any[]).getAllSync();\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst rows = stmt.executeSync(params as any[]).getAllSync() as Record<string, unknown>[];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['all'];\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.executeSync(params as any[]).getFirstSync();\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(this.fields!, row, this.joinsNotNullableMap);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\t\tconst row = stmt.executeSync(params as any[]).getFirstSync() as Record<string, unknown> | undefined;\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)([row]) as T['get'];\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.executeForRawResultSync(params as any[]).getAllSync();\n\t}\n}\n"],"mappings":";;;;;;;;;AA+BA,IAAa,oBAAb,cAIU,cAAyE;CAClF,QAA0B,cAAsB;CAEhD,AAAQ;CAER,YACC,AAAQ,QACR,SACA,AAAQ,WACR,AAAQ,QACR,AAAQ,UAAoC,EAAE,EAC7C;AACD,QAAM,QAAQ;EANN;EAEA;EACA;EACA;AAGR,OAAK,SAAS,QAAQ,UAAU,IAAI,YAAY;;CAGjD,aACC,OACA,QACA,eACA,oBAC6B;AAE7B,SAAO,IAAI,wBADE,KAAK,OAAO,YAAY,MAAM,IAAI,EAG9C,OACA,KAAK,QACL,QACA,eACA,KAAK,QAAQ,cACb,mBACA;;CAGF,uBACC,OACA,QACA,eACA,oBACA,QACmC;AAEnC,SAAO,IAAI,wBADE,KAAK,OAAO,YAAY,MAAM,IAAI,EAG9C,OACA,KAAK,QACL,QACA,eACA,KAAK,QAAQ,cACb,oBACA,MACA,OACA;;CAGF,AAAS,YACR,aACA,SAAkC,EAAE,EAChC;EACJ,MAAM,KAAK,IAAI,sBAAsB,QAAQ,KAAK,SAAS,MAAM,KAAK,WAAW,KAAK,OAAO;AAC7F,OAAK,IAAI,IAAI,IAAI,QAAQ,QAAQ,WAAW,MAAM,OAAO,WAAW,KAAK,CAAC;AAC1E,MAAI;GACH,MAAM,SAAS,YAAY,GAAG;AAC9B,QAAK,IAAI,GAAG,SAAS;AACrB,UAAO;WACC,KAAK;AACb,QAAK,IAAI,GAAG,WAAW;AACvB,SAAM;;;;AAKT,IAAa,wBAAb,MAAa,8BAIH,kBAA6E;CACtF,QAA0B,cAAsB;CAEhD,AAAS,YACR,aAII;EACJ,MAAM,gBAAgB,KAAK,KAAK;EAChC,MAAM,KAAK,IAAI,sBACd,QACA,KAAK,SACL,KAAK,SACL,KAAK,WACL,KAAK,QACL,KAAK,cAAc,EACnB;AACD,OAAK,QAAQ,IAAI,IAAI,IAAI,aAAa,gBAAgB,CAAC;AACvD,MAAI;GACH,MAAM,SAAS,YAAY,GAAG;AAC9B,QAAK,QAAQ,IAAI,IAAI,IAAI,qBAAqB,gBAAgB,CAAC;AAC/D,UAAO;WACC,KAAK;AACb,QAAK,QAAQ,IAAI,IAAI,IAAI,yBAAyB,gBAAgB,CAAC;AACnE,SAAM;;;;AAKT,IAAa,0BAAb,cAGU,oBAER;CACD,QAA0B,cAAsB;CAChD,AAAQ;CAER,YACC,AAAQ,MACR,OACA,AAAQ,QACR,AAAQ,QACR,eACA,AAAQ,cACR,AAAQ,oBAGR,AAAQ,cACR,AAAQ,WACP;AACD,QAAM,QAAQ,eAAe,MAAM;EAZ3B;EAEA;EACA;EAEA;EACA;EAGA;EACA;;CAKT,IAAI,mBAA8D;EACjE,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,EAAE,CAAC;AAC3E,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;EAC5C,MAAM,EAAE,SAAS,oBAAoB,KAAK,KAAK,YAAY,OAAgB;AAC3E,SAAO;GACN;GACA;GACA;;CAGF,IAAI,mBAAuD;AAC1D,MAAI,KAAK,aAAc,QAAO,KAAK,SAAS,kBAAkB;EAE9D,MAAM,EAAE,QAAQ,qBAAqB,OAAO,QAAQ,MAAM,uBAAuB;AACjF,MAAI,CAAC,UAAU,CAAC,oBAAoB;GACnC,MAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,EAAE,CAAC;AACtE,UAAO,SAAS,MAAM,KAAK,OAAO;AAClC,UAAO,KAAK,YAAY,OAAgB,CAAC,YAAY;;EAGtD,MAAM,OAAO,KAAK,OAAO,kBAAkB;AAC3C,MAAI,mBACH,QAAQ,mBAAsD,KAAK;AAGpE,SAAO,KAAK,gBACR,KAAK,YAAY,KAAK,aACrB,mBAA6B,QAAS,oBAAoB,EAAE,KAAK,GACnE,KAAK,KAAK,QAAQ,aAAa,QAAS,KAAK,oBAAoB,CAAC;;CAGtE,AAAQ,SAAS,mBAAuD;EACvE,MAAM,EAAE,OAAO,QAAQ,MAAM,uBAAuB;EACpD,MAAM,SAAS,iBAAiB,MAAM,QAAQ,qBAAqB,EAAE,CAAC;AACtE,SAAO,SAAS,MAAM,KAAK,OAAO;EAClC,MAAM,OAAO,KAAK,YAAY,OAAgB,CAAC,YAAY;AAE3D,SAAO,KAAK,gBACR,KAAK,YAAY,KAAK,aACrB,iBAA2B,KAAK,UAAW,EAAE,KAAK,GACnD,mBAAoE,KAAK;;CAG9E,IAAI,mBAAuD;AAC1D,MAAI,KAAK,aAAc,QAAO,KAAK,SAAS,kBAAkB;EAE9D,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,EAAE,CAAC;AAC3E,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;EAE5C,MAAM,EAAE,QAAQ,MAAM,qBAAqB,uBAAuB;AAClE,MAAI,CAAC,UAAU,CAAC,mBACf,QAAO,KAAK,YAAY,OAAgB,CAAC,cAAc;EAGxD,MAAM,OAAO,KAAK,OAAO,kBAAkB;EAC3C,MAAM,MAAM,KAAK;AAEjB,MAAI,CAAC,IACJ;AAGD,MAAI,mBACH,QAAQ,mBAAsD,KAAK;AAGpE,SAAO,KAAK,gBACR,KAAK,YAAY,KAAK,aACrB,mBAA+B,QAAS,oBAAoB,EAC9D,CAAC,IAAI,CACL,CAAC,KACD,aAAa,KAAK,QAAS,KAAK,KAAK,oBAAoB;;CAG7D,AAAQ,SAAS,mBAAuD;EACvE,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,EAAE,CAAC;AAC3E,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;EAE5C,MAAM,EAAE,MAAM,uBAAuB;EACrC,MAAM,MAAM,KAAK,YAAY,OAAgB,CAAC,cAAc;AAE5D,MAAI,CAAC,IACJ;AAGD,SAAO,KAAK,gBACR,KAAK,YAAY,KAAK,aACrB,iBAA6B,KAAK,UAAW,EAAE,CAAC,IAAI,CAAC,GACtD,mBAAoE,CAAC,IAAI,CAAC;;CAG/E,OAAO,mBAA0D;EAChE,MAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,qBAAqB,EAAE,CAAC;AAC3E,OAAK,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO;AAC5C,SAAO,KAAK,KAAK,wBAAwB,OAAgB,CAAC,YAAY"}
|
|
1
|
+
{"version":3,"file":"session.js","names":[],"sources":["../../src/expo-sqlite/session.ts"],"sourcesContent":["import type { SQLiteDatabase, SQLiteRunResult, SQLiteStatement } from 'expo-sqlite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface ExpoSQLiteSessionOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class ExpoSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', SQLiteRunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'ExpoSQLiteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: SQLiteDatabase,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: ExpoSQLiteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): ExpoSQLitePreparedQuery<T> {\n\t\tconst stmt = this.client.prepareSync(query.sql);\n\t\treturn new ExpoSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): ExpoSQLitePreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepareSync(query.sql);\n\t\treturn new ExpoSQLitePreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: ExpoSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new ExpoSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class ExpoSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', SQLiteRunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'ExpoSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: ExpoSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new ExpoSQLiteTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class ExpoSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{ type: 'sync'; run: SQLiteRunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'ExpoSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate stmt: SQLiteStatement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMappers: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): SQLiteRunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst { changes, lastInsertRowId } = this.stmt.executeSync(params as any[]);\n\t\treturn {\n\t\t\tchanges,\n\t\t\tlastInsertRowId,\n\t\t};\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.executeSync(params as any[]).getAllSync();\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst rows = stmt.executeSync(params as any[]).getAllSync() as Record<string, unknown>[];\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows) as T['all'];\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.executeSync(params as any[]).getFirstSync();\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(this.fields!, row, this.joinsNotNullableMap);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\t\tconst row = stmt.executeSync(params as any[]).getFirstSync() as Record<string, unknown> | undefined;\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)([row]) as T['get'];\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.executeForRawResultSync(params as any[]).getAllSync();\n\t}\n}\n"],"mappings":"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"}
|
package/index.cjs
CHANGED
|
@@ -128,6 +128,7 @@ exports.isTable = require_table.isTable;
|
|
|
128
128
|
exports.isView = require_sql_sql.isView;
|
|
129
129
|
exports.isWithEnum = require_utils.isWithEnum;
|
|
130
130
|
exports.jaccardDistance = require_sql_functions_vector.jaccardDistance;
|
|
131
|
+
exports.jitCompatCheck = require_utils.jitCompatCheck;
|
|
131
132
|
exports.l1Distance = require_sql_functions_vector.l1Distance;
|
|
132
133
|
exports.l2Distance = require_sql_functions_vector.l2Distance;
|
|
133
134
|
exports.like = require_sql_expressions_conditions.like;
|
package/index.js
CHANGED
|
@@ -11,9 +11,9 @@ import { ColumnBuilder, extractExtendedColumnType } from "./column-builder.js";
|
|
|
11
11
|
import { DrizzleError, DrizzleQueryError, TransactionRollbackError } from "./errors.js";
|
|
12
12
|
import { and, arrayContained, arrayContains, arrayOverlaps, between, bindIfParam, eq, exists, gt, gte, ilike, inArray, isNotNull, isNull, like, lt, lte, ne, not, notBetween, notExists, notIlike, notInArray, notLike, or } from "./sql/expressions/conditions.js";
|
|
13
13
|
import { asc, desc } from "./sql/expressions/select.js";
|
|
14
|
-
import { CONSTANTS, FnConstructor, applyMixins, assertUnreachable, base64ToUint8Array, getColumnNameAndConfig, getColumns, getTableColumns, getTableLikeName, getViewSelectedFields, haveSameKeys, isConfig, isWithEnum, makeDefaultQueryMapper, makeJitQueryMapper, mapResultRow, mapUpdateSet, orderSelectedFields, textDecoder } from "./utils.js";
|
|
14
|
+
import { CONSTANTS, FnConstructor, applyMixins, assertUnreachable, base64ToUint8Array, getColumnNameAndConfig, getColumns, getTableColumns, getTableLikeName, getViewSelectedFields, haveSameKeys, isConfig, isWithEnum, jitCompatCheck, makeDefaultQueryMapper, makeJitQueryMapper, mapResultRow, mapUpdateSet, orderSelectedFields, textDecoder } from "./utils.js";
|
|
15
15
|
import { AggregatedField, Count, Many, One, Relation, RelationsBuilderColumn, RelationsBuilderJunctionColumn, RelationsBuilderTable, RelationsHelperStatic, buildRelations, buildRelationsParts, createRelationsHelper, defineRelations, defineRelationsPart, extractTablesFromSchema, fieldSelectionToSQL, getOrderByOperators, getTableAsAliasSQL, makeDefaultRqbMapper, makeJitRqbMapper, mapRelationalRow, mapRelationalRowFromArrays, operators, orderByOperators, processRelations, relationExtrasToSQL, relationToSQL, relationsFilterToSQL, relationsOrderToSQL } from "./relations.js";
|
|
16
16
|
import { avg, avgDistinct, count, countDistinct, max, min, sum, sumDistinct } from "./sql/functions/aggregate.js";
|
|
17
17
|
import { cosineDistance, hammingDistance, innerProduct, jaccardDistance, l1Distance, l2Distance } from "./sql/functions/vector.js";
|
|
18
18
|
|
|
19
|
-
export { AggregatedField, BaseName, CONSTANTS, Column, ColumnAliasProxyHandler, ColumnBuilder, ColumnTableAliasProxyHandler, ConsoleLogWriter, Count, DefaultLogger, DrizzleError, DrizzleQueryError, ExtraConfigBuilder, ExtraConfigColumns, FakePrimitiveParam, FnConstructor, IsAlias, Many, Name, NoopLogger, One, OriginalName, Param, Placeholder, QueryPromise, Relation, RelationTableAliasProxyHandler, RelationsBuilderColumn, RelationsBuilderJunctionColumn, RelationsBuilderTable, RelationsHelperStatic, SQL, StringChunk, Subquery, Table, TableAliasProxyHandler, TableColumns, TableSchema, TransactionRollbackError, View, ViewBaseConfig, ViewSelectionAliasProxyHandler, WithSubquery, aliasedColumn, aliasedRelation, aliasedTable, aliasedTableColumn, and, applyMixins, arrayContained, arrayContains, arrayOverlaps, asc, assertUnreachable, avg, avgDistinct, base64ToUint8Array, between, bindIfParam, buildRelations, buildRelationsParts, cosineDistance, count, countDistinct, createRelationsHelper, defineRelations, defineRelationsPart, desc, entityKind, eq, exists, extractExtendedColumnType, extractTablesFromSchema, fieldSelectionToSQL, fillPlaceholders, getColumnNameAndConfig, getColumnTable, getColumns, getOrderByOperators, getOriginalColumnFromAlias, getTableAsAliasSQL, getTableColumns, getTableLikeName, getTableName, getTableUniqueName, getViewName, getViewSelectedFields, gt, gte, hammingDistance, hasOwnEntityKind, haveSameKeys, ilike, inArray, innerProduct, is, isConfig, isDriverValueEncoder, isNoop, isNotNull, isNull, isSQLWrapper, isTable, isView, isWithEnum, jaccardDistance, l1Distance, l2Distance, like, lt, lte, makeDefaultQueryMapper, makeDefaultRqbMapper, makeJitQueryMapper, makeJitRqbMapper, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias, mapRelationalRow, mapRelationalRowFromArrays, mapResultRow, mapUpdateSet, max, min, name, ne, noopDecoder, noopEncoder, noopMapper, not, notBetween, notExists, notIlike, notInArray, notLike, operators, or, orderByOperators, orderSelectedFields, param, placeholder, processRelations, relationExtrasToSQL, relationToSQL, relationsFilterToSQL, relationsOrderToSQL, sql, sqlCommenter, sum, sumDistinct, textDecoder };
|
|
19
|
+
export { AggregatedField, BaseName, CONSTANTS, Column, ColumnAliasProxyHandler, ColumnBuilder, ColumnTableAliasProxyHandler, ConsoleLogWriter, Count, DefaultLogger, DrizzleError, DrizzleQueryError, ExtraConfigBuilder, ExtraConfigColumns, FakePrimitiveParam, FnConstructor, IsAlias, Many, Name, NoopLogger, One, OriginalName, Param, Placeholder, QueryPromise, Relation, RelationTableAliasProxyHandler, RelationsBuilderColumn, RelationsBuilderJunctionColumn, RelationsBuilderTable, RelationsHelperStatic, SQL, StringChunk, Subquery, Table, TableAliasProxyHandler, TableColumns, TableSchema, TransactionRollbackError, View, ViewBaseConfig, ViewSelectionAliasProxyHandler, WithSubquery, aliasedColumn, aliasedRelation, aliasedTable, aliasedTableColumn, and, applyMixins, arrayContained, arrayContains, arrayOverlaps, asc, assertUnreachable, avg, avgDistinct, base64ToUint8Array, between, bindIfParam, buildRelations, buildRelationsParts, cosineDistance, count, countDistinct, createRelationsHelper, defineRelations, defineRelationsPart, desc, entityKind, eq, exists, extractExtendedColumnType, extractTablesFromSchema, fieldSelectionToSQL, fillPlaceholders, getColumnNameAndConfig, getColumnTable, getColumns, getOrderByOperators, getOriginalColumnFromAlias, getTableAsAliasSQL, getTableColumns, getTableLikeName, getTableName, getTableUniqueName, getViewName, getViewSelectedFields, gt, gte, hammingDistance, hasOwnEntityKind, haveSameKeys, ilike, inArray, innerProduct, is, isConfig, isDriverValueEncoder, isNoop, isNotNull, isNull, isSQLWrapper, isTable, isView, isWithEnum, jaccardDistance, jitCompatCheck, l1Distance, l2Distance, like, lt, lte, makeDefaultQueryMapper, makeDefaultRqbMapper, makeJitQueryMapper, makeJitRqbMapper, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias, mapRelationalRow, mapRelationalRowFromArrays, mapResultRow, mapUpdateSet, max, min, name, ne, noopDecoder, noopEncoder, noopMapper, not, notBetween, notExists, notIlike, notInArray, notLike, operators, or, orderByOperators, orderSelectedFields, param, placeholder, processRelations, relationExtrasToSQL, relationToSQL, relationsFilterToSQL, relationsOrderToSQL, sql, sqlCommenter, sum, sumDistinct, textDecoder };
|
package/libsql/driver-core.cjs
CHANGED
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
3
|
const require_libsql_session = require('./session.cjs');
|
|
4
4
|
let __entity_ts = require("../entity.cjs");
|
|
5
|
+
let __utils_ts = require("../utils.cjs");
|
|
5
6
|
let __logger_ts = require("../logger.cjs");
|
|
6
7
|
let ___relations_ts = require("../_relations.cjs");
|
|
7
8
|
___relations_ts = require_runtime.__toESM(___relations_ts);
|
|
@@ -34,7 +35,7 @@ function construct(client, config = {}) {
|
|
|
34
35
|
const db = new LibSQLDatabase("async", dialect, new require_libsql_session.LibSQLSession(client, dialect, relations, schema, {
|
|
35
36
|
logger,
|
|
36
37
|
cache: config.cache,
|
|
37
|
-
|
|
38
|
+
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.useJitMappers)
|
|
38
39
|
}, void 0), relations, schema);
|
|
39
40
|
db.$client = client;
|
|
40
41
|
db.$cache = config.cache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver-core.cjs","names":["BaseSQLiteDatabase","entityKind","SQLiteAsyncDialect","DefaultLogger","V1","LibSQLSession"],"sources":["../../src/libsql/driver-core.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport * as V1 from '~/_relations.ts';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type
|
|
1
|
+
{"version":3,"file":"driver-core.cjs","names":["BaseSQLiteDatabase","entityKind","SQLiteAsyncDialect","DefaultLogger","V1","LibSQLSession"],"sources":["../../src/libsql/driver-core.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport * as V1 from '~/_relations.ts';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\n/** @internal */\nexport function construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Client,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): LibSQLDatabase<TSchema, TRelations> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new LibSQLSession(client, dialect, relations, schema, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMappers: jitCompatCheck(config.useJitMappers),\n\t}, undefined);\n\tconst db = new LibSQLDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession as LibSQLSession<\n\t\t\tTSchema,\n\t\t\tTRelations,\n\t\t\tV1.ExtractTablesWithRelations<TSchema>\n\t\t>,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as LibSQLDatabase<TSchema, TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,iBAAb,cAGUA,uCAA4D;CACrE,QAA0BC,0BAAsB;CAShD,MAAM,MACL,OAC4B;AAC5B,SAAO,KAAK,QAAQ,MAAM,MAAM;;;;AAKlC,SAAgB,UAIf,QACA,SAA6C,EAAE,EAG9C;CACD,MAAM,UAAU,IAAIC,6CAAoB;CACxC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAeC,gBAAG,8BACvB,OAAO,QACPA,gBAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAGF,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,eACd,SACA,SAPe,IAAIC,qCAAc,QAAQ,SAAS,WAAW,QAAQ;EACrE;EACA,OAAO,OAAO;EACd,8CAA8B,OAAO,cAAc;EACnD,EAAE,OAAU,EASZ,WACA,OACA;AACD,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAEjD,QAAO"}
|
package/libsql/driver-core.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LibSQLSession } from "./session.js";
|
|
2
2
|
import { entityKind } from "../entity.js";
|
|
3
|
+
import { jitCompatCheck } from "../utils.js";
|
|
3
4
|
import { DefaultLogger } from "../logger.js";
|
|
4
5
|
import * as V1 from "../_relations.js";
|
|
5
6
|
import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
|
|
@@ -31,7 +32,7 @@ function construct(client, config = {}) {
|
|
|
31
32
|
const db = new LibSQLDatabase("async", dialect, new LibSQLSession(client, dialect, relations, schema, {
|
|
32
33
|
logger,
|
|
33
34
|
cache: config.cache,
|
|
34
|
-
|
|
35
|
+
useJitMappers: jitCompatCheck(config.useJitMappers)
|
|
35
36
|
}, void 0), relations, schema);
|
|
36
37
|
db.$client = client;
|
|
37
38
|
db.$cache = config.cache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver-core.js","names":[],"sources":["../../src/libsql/driver-core.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport * as V1 from '~/_relations.ts';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type
|
|
1
|
+
{"version":3,"file":"driver-core.js","names":[],"sources":["../../src/libsql/driver-core.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport * as V1 from '~/_relations.ts';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\n/** @internal */\nexport function construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Client,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): LibSQLDatabase<TSchema, TRelations> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new LibSQLSession(client, dialect, relations, schema, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMappers: jitCompatCheck(config.useJitMappers),\n\t}, undefined);\n\tconst db = new LibSQLDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession as LibSQLSession<\n\t\t\tTSchema,\n\t\t\tTRelations,\n\t\t\tV1.ExtractTablesWithRelations<TSchema>\n\t\t>,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as LibSQLDatabase<TSchema, TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;AAWA,IAAa,iBAAb,cAGU,mBAA4D;CACrE,QAA0B,cAAsB;CAShD,MAAM,MACL,OAC4B;AAC5B,SAAO,KAAK,QAAQ,MAAM,MAAM;;;;AAKlC,SAAgB,UAIf,QACA,SAA6C,EAAE,EAG9C;CACD,MAAM,UAAU,IAAI,oBAAoB;CACxC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAI,eAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAe,GAAG,8BACvB,OAAO,QACP,GAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAGF,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,eACd,SACA,SAPe,IAAI,cAAc,QAAQ,SAAS,WAAW,QAAQ;EACrE;EACA,OAAO,OAAO;EACd,eAAe,eAAe,OAAO,cAAc;EACnD,EAAE,OAAU,EASZ,WACA,OACA;AACD,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS,OAAO;AAC3B,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO,OAAO;AAEjD,QAAO"}
|
package/libsql/session.cjs
CHANGED
|
@@ -25,10 +25,10 @@ var LibSQLSession = class LibSQLSession extends __sqlite_core_session_ts.SQLiteS
|
|
|
25
25
|
this.cache = options.cache ?? new __cache_core_index_ts.NoopCache();
|
|
26
26
|
}
|
|
27
27
|
prepareQuery(query, fields, executeMethod, customResultMapper, queryMetadata, cacheConfig) {
|
|
28
|
-
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, this.tx, executeMethod, this.options.
|
|
28
|
+
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, this.tx, executeMethod, this.options.useJitMappers, customResultMapper);
|
|
29
29
|
}
|
|
30
30
|
prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
|
|
31
|
-
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, this.tx, executeMethod, this.options.
|
|
31
|
+
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, this.tx, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
|
|
32
32
|
}
|
|
33
33
|
async batch(queries) {
|
|
34
34
|
const preparedQueries = [];
|
|
@@ -100,13 +100,13 @@ var LibSQLTransaction = class LibSQLTransaction extends __sqlite_core_index_ts.S
|
|
|
100
100
|
var LibSQLPreparedQuery = class extends __sqlite_core_session_ts.SQLitePreparedQuery {
|
|
101
101
|
static [__entity_ts.entityKind] = "LibSQLPreparedQuery";
|
|
102
102
|
jitMapper;
|
|
103
|
-
constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, tx, executeMethod,
|
|
103
|
+
constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, tx, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
|
|
104
104
|
super("async", executeMethod, query, cache, queryMetadata, cacheConfig);
|
|
105
105
|
this.client = client;
|
|
106
106
|
this.logger = logger;
|
|
107
107
|
this.fields = fields;
|
|
108
108
|
this.tx = tx;
|
|
109
|
-
this.
|
|
109
|
+
this.useJitMappers = useJitMappers;
|
|
110
110
|
this.customResultMapper = customResultMapper;
|
|
111
111
|
this.isRqbV2Query = isRqbV2Query;
|
|
112
112
|
this.rqbConfig = rqbConfig;
|
|
@@ -152,9 +152,9 @@ var LibSQLPreparedQuery = class extends __sqlite_core_session_ts.SQLitePreparedQ
|
|
|
152
152
|
mapAllResult(rows, isFromBatch) {
|
|
153
153
|
if (isFromBatch) rows = rows.rows;
|
|
154
154
|
if (!this.fields && !this.customResultMapper) return rows.map((row) => normalizeRow(row));
|
|
155
|
-
if (this.isRqbV2Query) return this.
|
|
155
|
+
if (this.isRqbV2Query) return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __relations_ts.makeJitRqbMapper)(this.rqbConfig, normalizeFieldValue))(rows) : this.customResultMapper(rows, normalizeFieldValue);
|
|
156
156
|
if (this.customResultMapper) return this.customResultMapper(rows, normalizeFieldValue);
|
|
157
|
-
return this.
|
|
157
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __utils_ts.makeJitQueryMapper)(this.fields, this.joinsNotNullableMap))(rows.map((row) => Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v)))) : rows.map((row) => (0, __utils_ts.mapResultRow)(this.fields, row, this.joinsNotNullableMap));
|
|
158
158
|
}
|
|
159
159
|
async get(placeholderValues) {
|
|
160
160
|
if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
|
|
@@ -190,9 +190,9 @@ var LibSQLPreparedQuery = class extends __sqlite_core_session_ts.SQLitePreparedQ
|
|
|
190
190
|
const row = rows[0];
|
|
191
191
|
if (!this.fields && !this.customResultMapper) return normalizeRow(row);
|
|
192
192
|
if (!row) return;
|
|
193
|
-
if (this.isRqbV2Query) return this.
|
|
193
|
+
if (this.isRqbV2Query) return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __relations_ts.makeJitRqbMapper)(this.rqbConfig, normalizeFieldValue))([row]) : this.customResultMapper([row], normalizeFieldValue);
|
|
194
194
|
if (this.customResultMapper) return this.customResultMapper(rows, normalizeFieldValue);
|
|
195
|
-
return this.
|
|
195
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? (0, __utils_ts.makeJitQueryMapper)(this.fields, this.joinsNotNullableMap))([Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v))])[0] : (0, __utils_ts.mapResultRow)(this.fields, Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v)), this.joinsNotNullableMap);
|
|
196
196
|
}
|
|
197
197
|
async values(placeholderValues) {
|
|
198
198
|
const params = (0, __sql_sql_ts.fillPlaceholders)(this.query.params, placeholderValues ?? {});
|
package/libsql/session.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.cjs","names":["SQLiteSession","entityKind","NoopLogger","NoopCache","SQLiteTransaction","sql","SQLitePreparedQuery"],"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem } from '~/batch.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): LibSQLPreparedQuery<T, true> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.migrate(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TRelations, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: LibSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('async', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync run(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst rows = await (tx ?? client).execute(stmt).then(({ rows }) => rows.map((row) => normalizeRow(row)));\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue) as T['all'];\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.isRqbV2Query) {\n\t\t\treturn this.useJitMapper\n\t\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!, normalizeFieldValue))(rows as Record<string, unknown>[])\n\t\t\t\t: (this.customResultMapper as (\n\t\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue);\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(this.fields!, this.joinsNotNullableMap))(\n\t\t\t\t\t(rows as unknown[][]).map((row) => Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v))),\n\t\t\t\t)\n\t\t\t: (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>) {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst { rows } = await (tx ?? client).execute(stmt);\n\t\tif (rows[0] === undefined) return;\n\n\t\tconst row = normalizeRow((rows as unknown[])[0]);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row] as Record<string, unknown>[], normalizeFieldValue) as T['get'];\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.isRqbV2Query) {\n\t\t\treturn this.useJitMapper\n\t\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!, normalizeFieldValue))([row as Record<string, unknown>])\n\t\t\t\t: (this.customResultMapper as (\n\t\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t\t) => unknown)([row as Record<string, unknown>], normalizeFieldValue);\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(this.fields!, this.joinsNotNullableMap))(\n\t\t\t\t\t[Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v))],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t}\n\n\tasync values(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\t\tT['values']\n\t\t\t>;\n\t\t});\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.cjs","names":["SQLiteSession","entityKind","NoopLogger","NoopCache","SQLiteTransaction","sql","SQLitePreparedQuery"],"sources":["../../src/libsql/session.ts"],"sourcesContent":["import type { Client, InArgs, InStatement, ResultSet, Transaction } from '@libsql/client';\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem } from '~/batch.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface LibSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMappers?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class LibSQLSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: LibSQLSessionOptions,\n\t\tprivate tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): LibSQLPreparedQuery<T> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): LibSQLPreparedQuery<T, true> {\n\t\treturn new LibSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\tthis.tx,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.batch(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(queries: T) {\n\t\tconst preparedQueries: PreparedQuery[] = [];\n\t\tconst builtQueries: InStatement[] = [];\n\n\t\tfor (const query of queries) {\n\t\t\tconst preparedQuery = query._prepare();\n\t\t\tconst builtQuery = preparedQuery.getQuery();\n\t\t\tpreparedQueries.push(preparedQuery);\n\t\t\tbuiltQueries.push({ sql: builtQuery.sql, args: builtQuery.params as InArgs });\n\t\t}\n\n\t\tconst batchResults = await this.client.migrate(builtQueries);\n\t\treturn batchResults.map((result, i) => preparedQueries[i]!.mapResult(result, true));\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: LibSQLTransaction<TFullSchema, TRelations, TSchema>) => T | Promise<T>,\n\t\t_config?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\t// TODO: support transaction behavior\n\t\tconst libsqlTx = await this.client.transaction();\n\t\tconst session = new LibSQLSession<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\tlibsqlTx,\n\t\t);\n\t\tconst tx = new LibSQLTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait libsqlTx.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait libsqlTx.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as ResultSet).rows;\n\t}\n}\n\nexport class LibSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', ResultSet, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: LibSQLTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new LibSQLTransaction(\n\t\t\t'async',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class LibSQLPreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends SQLitePreparedQuery<\n\t\t{ type: 'async'; run: ResultSet; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'LibSQLPreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate client: Client,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\tprivate tx: Transaction | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMappers: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('async', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\tasync run(placeholderValues?: Record<string, unknown>): Promise<ResultSet> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn this.tx ? this.tx.execute(stmt) : this.client.execute(stmt);\n\t\t});\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapAllResult(rows));\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapAllResult(rows);\n\t}\n\n\tprivate async allRqbV2(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst rows = await (tx ?? client).execute(stmt).then(({ rows }) => rows.map((row) => normalizeRow(row)));\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue) as T['all'];\n\t}\n\n\toverride mapAllResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (rows as unknown[]).map((row) => normalizeRow(row));\n\t\t}\n\n\t\tif (this.isRqbV2Query) {\n\t\t\treturn this.useJitMappers\n\t\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!, normalizeFieldValue))(rows as Record<string, unknown>[])\n\t\t\t\t: (this.customResultMapper as (\n\t\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t\t) => unknown)(rows as Record<string, unknown>[], normalizeFieldValue);\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows as unknown[][], normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(this.fields!, this.joinsNotNullableMap))(\n\t\t\t\t\t(rows as unknown[][]).map((row) => Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v))),\n\t\t\t\t)\n\t\t\t: (rows as unknown[][]).map((row) => mapResultRow(this.fields!, row, this.joinsNotNullableMap));\n\t}\n\n\tasync get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { fields, logger, query, tx, client, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\t\t\t\treturn (tx ? tx.execute(stmt) : client.execute(stmt)).then(({ rows }) => this.mapGetResult(rows));\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\treturn this.mapGetResult(rows);\n\t}\n\n\tprivate async getRqbV2(placeholderValues?: Record<string, unknown>) {\n\t\tconst { logger, query, tx, client, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst stmt: InStatement = { sql: query.sql, args: params as InArgs };\n\n\t\tconst { rows } = await (tx ?? client).execute(stmt);\n\t\tif (rows[0] === undefined) return;\n\n\t\tconst row = normalizeRow((rows as unknown[])[0]);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row] as Record<string, unknown>[], normalizeFieldValue) as T['get'];\n\t}\n\n\toverride mapGetResult(rows: unknown, isFromBatch?: boolean): unknown {\n\t\tif (isFromBatch) {\n\t\t\trows = (rows as ResultSet).rows;\n\t\t}\n\n\t\tconst row = (rows as unknown[])[0];\n\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn normalizeRow(row);\n\t\t}\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.isRqbV2Query) {\n\t\t\treturn this.useJitMappers\n\t\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t\t?? makeJitRqbMapper<T['get'][]>(this.rqbConfig!, normalizeFieldValue))([row as Record<string, unknown>])\n\t\t\t\t: (this.customResultMapper as (\n\t\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t\t) => unknown)([row as Record<string, unknown>], normalizeFieldValue);\n\t\t}\n\n\t\tif (this.customResultMapper) {\n\t\t\treturn (this.customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows as unknown[][], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(this.fields!, this.joinsNotNullableMap))(\n\t\t\t\t\t[Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v))],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(\n\t\t\t\tthis.fields!,\n\t\t\t\tArray.prototype.slice.call(row).map((v) => normalizeFieldValue(v)),\n\t\t\t\tthis.joinsNotNullableMap,\n\t\t\t);\n\t}\n\n\tasync values(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn await this.queryWithCache(this.query.sql, params, async () => {\n\t\t\tconst stmt: InStatement = { sql: this.query.sql, args: params as InArgs };\n\t\t\treturn (this.tx ? this.tx.execute(stmt) : this.client.execute(stmt)).then(({ rows }) => rows) as Promise<\n\t\t\t\tT['values']\n\t\t\t>;\n\t\t});\n\t}\n}\n\nfunction normalizeRow(obj: any) {\n\t// The libSQL node-sqlite3 compatibility wrapper returns rows\n\t// that can be accessed both as objects and arrays. Let's\n\t// turn them into objects what's what other SQLite drivers\n\t// do.\n\treturn Object.keys(obj).reduce((acc: Record<string, any>, key) => {\n\t\tif (Object.prototype.propertyIsEnumerable.call(obj, key)) {\n\t\t\tacc[key] = obj[key];\n\t\t}\n\t\treturn acc;\n\t}, {});\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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"}
|
package/libsql/session.d.cts
CHANGED
|
@@ -16,7 +16,7 @@ import { Client, ResultSet, Transaction } from "@libsql/client";
|
|
|
16
16
|
interface LibSQLSessionOptions {
|
|
17
17
|
logger?: Logger;
|
|
18
18
|
cache?: Cache;
|
|
19
|
-
|
|
19
|
+
useJitMappers?: boolean;
|
|
20
20
|
}
|
|
21
21
|
type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
|
|
22
22
|
declare class LibSQLSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TSchema> {
|
|
@@ -56,7 +56,7 @@ declare class LibSQLPreparedQuery<T extends PreparedQueryConfig$1 = PreparedQuer
|
|
|
56
56
|
private client;
|
|
57
57
|
private logger;
|
|
58
58
|
private tx;
|
|
59
|
-
private
|
|
59
|
+
private useJitMappers;
|
|
60
60
|
private customResultMapper?;
|
|
61
61
|
private isRqbV2Query?;
|
|
62
62
|
private rqbConfig?;
|
|
@@ -67,7 +67,7 @@ declare class LibSQLPreparedQuery<T extends PreparedQueryConfig$1 = PreparedQuer
|
|
|
67
67
|
tables: string[];
|
|
68
68
|
} | undefined, cacheConfig: WithCacheConfig | undefined, /** @internal */
|
|
69
69
|
|
|
70
|
-
fields: SelectedFieldsOrdered | undefined, tx: Transaction | undefined, executeMethod: SQLiteExecuteMethod,
|
|
70
|
+
fields: SelectedFieldsOrdered | undefined, tx: Transaction | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
|
|
71
71
|
run(placeholderValues?: Record<string, unknown>): Promise<ResultSet>;
|
|
72
72
|
all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
|
|
73
73
|
private allRqbV2;
|
package/libsql/session.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { BatchItem } from "../batch.js";
|
|
|
16
16
|
interface LibSQLSessionOptions {
|
|
17
17
|
logger?: Logger;
|
|
18
18
|
cache?: Cache;
|
|
19
|
-
|
|
19
|
+
useJitMappers?: boolean;
|
|
20
20
|
}
|
|
21
21
|
type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
|
|
22
22
|
declare class LibSQLSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'async', ResultSet, TFullSchema, TRelations, TSchema> {
|
|
@@ -56,7 +56,7 @@ declare class LibSQLPreparedQuery<T extends PreparedQueryConfig$1 = PreparedQuer
|
|
|
56
56
|
private client;
|
|
57
57
|
private logger;
|
|
58
58
|
private tx;
|
|
59
|
-
private
|
|
59
|
+
private useJitMappers;
|
|
60
60
|
private customResultMapper?;
|
|
61
61
|
private isRqbV2Query?;
|
|
62
62
|
private rqbConfig?;
|
|
@@ -67,7 +67,7 @@ declare class LibSQLPreparedQuery<T extends PreparedQueryConfig$1 = PreparedQuer
|
|
|
67
67
|
tables: string[];
|
|
68
68
|
} | undefined, cacheConfig: WithCacheConfig | undefined, /** @internal */
|
|
69
69
|
|
|
70
|
-
fields: SelectedFieldsOrdered | undefined, tx: Transaction | undefined, executeMethod: SQLiteExecuteMethod,
|
|
70
|
+
fields: SelectedFieldsOrdered | undefined, tx: Transaction | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
|
|
71
71
|
run(placeholderValues?: Record<string, unknown>): Promise<ResultSet>;
|
|
72
72
|
all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
|
|
73
73
|
private allRqbV2;
|
package/libsql/session.js
CHANGED
|
@@ -23,10 +23,10 @@ var LibSQLSession = class LibSQLSession extends SQLiteSession {
|
|
|
23
23
|
this.cache = options.cache ?? new NoopCache();
|
|
24
24
|
}
|
|
25
25
|
prepareQuery(query, fields, executeMethod, customResultMapper, queryMetadata, cacheConfig) {
|
|
26
|
-
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, this.tx, executeMethod, this.options.
|
|
26
|
+
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, queryMetadata, cacheConfig, fields, this.tx, executeMethod, this.options.useJitMappers, customResultMapper);
|
|
27
27
|
}
|
|
28
28
|
prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
|
|
29
|
-
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, this.tx, executeMethod, this.options.
|
|
29
|
+
return new LibSQLPreparedQuery(this.client, query, this.logger, this.cache, void 0, void 0, fields, this.tx, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
|
|
30
30
|
}
|
|
31
31
|
async batch(queries) {
|
|
32
32
|
const preparedQueries = [];
|
|
@@ -98,13 +98,13 @@ var LibSQLTransaction = class LibSQLTransaction extends SQLiteTransaction {
|
|
|
98
98
|
var LibSQLPreparedQuery = class extends SQLitePreparedQuery {
|
|
99
99
|
static [entityKind] = "LibSQLPreparedQuery";
|
|
100
100
|
jitMapper;
|
|
101
|
-
constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, tx, executeMethod,
|
|
101
|
+
constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, tx, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
|
|
102
102
|
super("async", executeMethod, query, cache, queryMetadata, cacheConfig);
|
|
103
103
|
this.client = client;
|
|
104
104
|
this.logger = logger;
|
|
105
105
|
this.fields = fields;
|
|
106
106
|
this.tx = tx;
|
|
107
|
-
this.
|
|
107
|
+
this.useJitMappers = useJitMappers;
|
|
108
108
|
this.customResultMapper = customResultMapper;
|
|
109
109
|
this.isRqbV2Query = isRqbV2Query;
|
|
110
110
|
this.rqbConfig = rqbConfig;
|
|
@@ -150,9 +150,9 @@ var LibSQLPreparedQuery = class extends SQLitePreparedQuery {
|
|
|
150
150
|
mapAllResult(rows, isFromBatch) {
|
|
151
151
|
if (isFromBatch) rows = rows.rows;
|
|
152
152
|
if (!this.fields && !this.customResultMapper) return rows.map((row) => normalizeRow(row));
|
|
153
|
-
if (this.isRqbV2Query) return this.
|
|
153
|
+
if (this.isRqbV2Query) return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig, normalizeFieldValue))(rows) : this.customResultMapper(rows, normalizeFieldValue);
|
|
154
154
|
if (this.customResultMapper) return this.customResultMapper(rows, normalizeFieldValue);
|
|
155
|
-
return this.
|
|
155
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(this.fields, this.joinsNotNullableMap))(rows.map((row) => Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v)))) : rows.map((row) => mapResultRow(this.fields, row, this.joinsNotNullableMap));
|
|
156
156
|
}
|
|
157
157
|
async get(placeholderValues) {
|
|
158
158
|
if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
|
|
@@ -188,9 +188,9 @@ var LibSQLPreparedQuery = class extends SQLitePreparedQuery {
|
|
|
188
188
|
const row = rows[0];
|
|
189
189
|
if (!this.fields && !this.customResultMapper) return normalizeRow(row);
|
|
190
190
|
if (!row) return;
|
|
191
|
-
if (this.isRqbV2Query) return this.
|
|
191
|
+
if (this.isRqbV2Query) return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig, normalizeFieldValue))([row]) : this.customResultMapper([row], normalizeFieldValue);
|
|
192
192
|
if (this.customResultMapper) return this.customResultMapper(rows, normalizeFieldValue);
|
|
193
|
-
return this.
|
|
193
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(this.fields, this.joinsNotNullableMap))([Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v))])[0] : mapResultRow(this.fields, Array.prototype.slice.call(row).map((v) => normalizeFieldValue(v)), this.joinsNotNullableMap);
|
|
194
194
|
}
|
|
195
195
|
async values(placeholderValues) {
|
|
196
196
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|