drizzle-orm 0.43.1-b08434e → 0.43.1-e3d1c4f
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/pg/driver.cjs +7 -6
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +4 -3
- package/aws-data-api/pg/driver.d.ts +4 -3
- package/aws-data-api/pg/driver.js +7 -6
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/session.cjs +26 -9
- package/aws-data-api/pg/session.cjs.map +1 -1
- package/aws-data-api/pg/session.d.cts +5 -4
- package/aws-data-api/pg/session.d.ts +5 -4
- package/aws-data-api/pg/session.js +26 -9
- package/aws-data-api/pg/session.js.map +1 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.d.cts +4 -3
- package/better-sqlite3/driver.d.ts +4 -3
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/session.cjs +5 -5
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +5 -5
- package/better-sqlite3/session.d.ts +5 -5
- package/better-sqlite3/session.js +5 -5
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/driver.cjs +3 -2
- package/bun-sql/driver.cjs.map +1 -1
- package/bun-sql/driver.d.cts +4 -3
- package/bun-sql/driver.d.ts +4 -3
- package/bun-sql/driver.js +3 -2
- package/bun-sql/driver.js.map +1 -1
- package/bun-sql/session.cjs +20 -11
- package/bun-sql/session.cjs.map +1 -1
- package/bun-sql/session.d.cts +6 -5
- package/bun-sql/session.d.ts +6 -5
- package/bun-sql/session.js +20 -11
- package/bun-sql/session.js.map +1 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.d.cts +4 -3
- package/bun-sqlite/driver.d.ts +4 -3
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/session.cjs +5 -5
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.d.cts +5 -5
- package/bun-sqlite/session.d.ts +5 -5
- package/bun-sqlite/session.js +5 -5
- package/bun-sqlite/session.js.map +1 -1
- package/column-builder.cjs.map +1 -1
- package/column-builder.d.cts +7 -2
- package/column-builder.d.ts +7 -2
- package/column-builder.js.map +1 -1
- package/column.cjs +2 -0
- package/column.cjs.map +1 -1
- package/column.d.cts +6 -0
- package/column.d.ts +6 -0
- package/column.js +2 -0
- package/column.js.map +1 -1
- package/d1/driver.cjs +3 -2
- package/d1/driver.cjs.map +1 -1
- package/d1/driver.d.cts +2 -1
- package/d1/driver.d.ts +2 -1
- package/d1/driver.js +3 -2
- package/d1/driver.js.map +1 -1
- package/d1/session.cjs +20 -11
- package/d1/session.cjs.map +1 -1
- package/d1/session.d.cts +8 -7
- package/d1/session.d.ts +8 -7
- package/d1/session.js +20 -11
- package/d1/session.js.map +1 -1
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.d.cts +2 -1
- package/durable-sqlite/driver.d.ts +2 -1
- package/durable-sqlite/driver.js.map +1 -1
- package/durable-sqlite/session.cjs +5 -5
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.d.cts +5 -5
- package/durable-sqlite/session.d.ts +5 -5
- package/durable-sqlite/session.js +5 -5
- package/durable-sqlite/session.js.map +1 -1
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.d.cts +2 -1
- package/expo-sqlite/driver.d.ts +2 -1
- package/expo-sqlite/driver.js.map +1 -1
- package/expo-sqlite/session.cjs +5 -5
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.d.cts +5 -5
- package/expo-sqlite/session.d.ts +5 -5
- package/expo-sqlite/session.js +5 -5
- package/expo-sqlite/session.js.map +1 -1
- package/extension-core/gel/index.cjs +33 -0
- package/extension-core/gel/index.cjs.map +1 -0
- package/extension-core/gel/index.d.cts +67 -0
- package/extension-core/gel/index.d.ts +67 -0
- package/extension-core/gel/index.js +9 -0
- package/extension-core/gel/index.js.map +1 -0
- package/extension-core/index.cjs +42 -0
- package/extension-core/index.cjs.map +1 -0
- package/extension-core/index.d.cts +9 -0
- package/extension-core/index.d.ts +9 -0
- package/extension-core/index.js +15 -0
- package/extension-core/index.js.map +1 -0
- package/extension-core/mysql/index.cjs +33 -0
- package/extension-core/mysql/index.cjs.map +1 -0
- package/extension-core/mysql/index.d.cts +69 -0
- package/extension-core/mysql/index.d.ts +69 -0
- package/extension-core/mysql/index.js +9 -0
- package/extension-core/mysql/index.js.map +1 -0
- package/extension-core/pg/index.cjs +33 -0
- package/extension-core/pg/index.cjs.map +1 -0
- package/extension-core/pg/index.d.cts +67 -0
- package/extension-core/pg/index.d.ts +67 -0
- package/extension-core/pg/index.js +9 -0
- package/extension-core/pg/index.js.map +1 -0
- package/extension-core/singlestore/index.cjs +33 -0
- package/extension-core/singlestore/index.cjs.map +1 -0
- package/extension-core/singlestore/index.d.cts +67 -0
- package/extension-core/singlestore/index.d.ts +67 -0
- package/extension-core/singlestore/index.js +9 -0
- package/extension-core/singlestore/index.js.map +1 -0
- package/extension-core/sqlite/index.cjs +33 -0
- package/extension-core/sqlite/index.cjs.map +1 -0
- package/extension-core/sqlite/index.d.cts +68 -0
- package/extension-core/sqlite/index.d.ts +68 -0
- package/extension-core/sqlite/index.js +9 -0
- package/extension-core/sqlite/index.js.map +1 -0
- package/extensions/hook/gel/index.cjs +47 -0
- package/extensions/hook/gel/index.cjs.map +1 -0
- package/extensions/hook/gel/index.d.cts +11 -0
- package/extensions/hook/gel/index.d.ts +11 -0
- package/extensions/hook/gel/index.js +22 -0
- package/extensions/hook/gel/index.js.map +1 -0
- package/extensions/hook/mysql/index.cjs +47 -0
- package/extensions/hook/mysql/index.cjs.map +1 -0
- package/extensions/hook/mysql/index.d.cts +11 -0
- package/extensions/hook/mysql/index.d.ts +11 -0
- package/extensions/hook/mysql/index.js +22 -0
- package/extensions/hook/mysql/index.js.map +1 -0
- package/extensions/hook/pg/index.cjs +47 -0
- package/extensions/hook/pg/index.cjs.map +1 -0
- package/extensions/hook/pg/index.d.cts +11 -0
- package/extensions/hook/pg/index.d.ts +11 -0
- package/extensions/hook/pg/index.js +22 -0
- package/extensions/hook/pg/index.js.map +1 -0
- package/extensions/hook/singlestore/index.cjs +47 -0
- package/extensions/hook/singlestore/index.cjs.map +1 -0
- package/extensions/hook/singlestore/index.d.cts +11 -0
- package/extensions/hook/singlestore/index.d.ts +11 -0
- package/extensions/hook/singlestore/index.js +22 -0
- package/extensions/hook/singlestore/index.js.map +1 -0
- package/extensions/hook/sqlite/index.cjs +47 -0
- package/extensions/hook/sqlite/index.cjs.map +1 -0
- package/extensions/hook/sqlite/index.d.cts +11 -0
- package/extensions/hook/sqlite/index.d.ts +11 -0
- package/extensions/hook/sqlite/index.js +22 -0
- package/extensions/hook/sqlite/index.js.map +1 -0
- package/extensions/s3-file/common.cjs +321 -0
- package/extensions/s3-file/common.cjs.map +1 -0
- package/extensions/s3-file/common.d.cts +88 -0
- package/extensions/s3-file/common.d.ts +88 -0
- package/extensions/s3-file/common.js +288 -0
- package/extensions/s3-file/common.js.map +1 -0
- package/extensions/s3-file/gel/column.cjs +124 -0
- package/extensions/s3-file/gel/column.cjs.map +1 -0
- package/extensions/s3-file/gel/column.d.cts +105 -0
- package/extensions/s3-file/gel/column.d.ts +105 -0
- package/extensions/s3-file/gel/column.js +103 -0
- package/extensions/s3-file/gel/column.js.map +1 -0
- package/extensions/s3-file/gel/extension.cjs +271 -0
- package/extensions/s3-file/gel/extension.cjs.map +1 -0
- package/extensions/s3-file/gel/extension.d.cts +18 -0
- package/extensions/s3-file/gel/extension.d.ts +18 -0
- package/extensions/s3-file/gel/extension.js +257 -0
- package/extensions/s3-file/gel/extension.js.map +1 -0
- package/extensions/s3-file/gel/index.cjs +25 -0
- package/extensions/s3-file/gel/index.cjs.map +1 -0
- package/extensions/s3-file/gel/index.d.cts +2 -0
- package/extensions/s3-file/gel/index.d.ts +2 -0
- package/extensions/s3-file/gel/index.js +3 -0
- package/extensions/s3-file/gel/index.js.map +1 -0
- package/extensions/s3-file/index.cjs +23 -0
- package/extensions/s3-file/index.cjs.map +1 -0
- package/extensions/s3-file/index.d.cts +1 -0
- package/extensions/s3-file/index.d.ts +1 -0
- package/extensions/s3-file/index.js +2 -0
- package/extensions/s3-file/index.js.map +1 -0
- package/extensions/s3-file/mysql/column.cjs +121 -0
- package/extensions/s3-file/mysql/column.cjs.map +1 -0
- package/extensions/s3-file/mysql/column.d.cts +63 -0
- package/extensions/s3-file/mysql/column.d.ts +63 -0
- package/extensions/s3-file/mysql/column.js +97 -0
- package/extensions/s3-file/mysql/column.js.map +1 -0
- package/extensions/s3-file/mysql/extension.cjs +250 -0
- package/extensions/s3-file/mysql/extension.cjs.map +1 -0
- package/extensions/s3-file/mysql/extension.d.cts +18 -0
- package/extensions/s3-file/mysql/extension.d.ts +18 -0
- package/extensions/s3-file/mysql/extension.js +236 -0
- package/extensions/s3-file/mysql/extension.js.map +1 -0
- package/extensions/s3-file/mysql/index.cjs +25 -0
- package/extensions/s3-file/mysql/index.cjs.map +1 -0
- package/extensions/s3-file/mysql/index.d.cts +2 -0
- package/extensions/s3-file/mysql/index.d.ts +2 -0
- package/extensions/s3-file/mysql/index.js +3 -0
- package/extensions/s3-file/mysql/index.js.map +1 -0
- package/extensions/s3-file/pg/column.cjs +124 -0
- package/extensions/s3-file/pg/column.cjs.map +1 -0
- package/extensions/s3-file/pg/column.d.cts +105 -0
- package/extensions/s3-file/pg/column.d.ts +105 -0
- package/extensions/s3-file/pg/column.js +103 -0
- package/extensions/s3-file/pg/column.js.map +1 -0
- package/extensions/s3-file/pg/extension.cjs +272 -0
- package/extensions/s3-file/pg/extension.cjs.map +1 -0
- package/extensions/s3-file/pg/extension.d.cts +18 -0
- package/extensions/s3-file/pg/extension.d.ts +18 -0
- package/extensions/s3-file/pg/extension.js +258 -0
- package/extensions/s3-file/pg/extension.js.map +1 -0
- package/extensions/s3-file/pg/index.cjs +25 -0
- package/extensions/s3-file/pg/index.cjs.map +1 -0
- package/extensions/s3-file/pg/index.d.cts +2 -0
- package/extensions/s3-file/pg/index.d.ts +2 -0
- package/extensions/s3-file/pg/index.js +3 -0
- package/extensions/s3-file/pg/index.js.map +1 -0
- package/extensions/s3-file/singlestore/column.cjs +121 -0
- package/extensions/s3-file/singlestore/column.cjs.map +1 -0
- package/extensions/s3-file/singlestore/column.d.cts +63 -0
- package/extensions/s3-file/singlestore/column.d.ts +63 -0
- package/extensions/s3-file/singlestore/column.js +97 -0
- package/extensions/s3-file/singlestore/column.js.map +1 -0
- package/extensions/s3-file/singlestore/extension.cjs +247 -0
- package/extensions/s3-file/singlestore/extension.cjs.map +1 -0
- package/extensions/s3-file/singlestore/extension.d.cts +18 -0
- package/extensions/s3-file/singlestore/extension.d.ts +18 -0
- package/extensions/s3-file/singlestore/extension.js +233 -0
- package/extensions/s3-file/singlestore/extension.js.map +1 -0
- package/extensions/s3-file/singlestore/index.cjs +25 -0
- package/extensions/s3-file/singlestore/index.cjs.map +1 -0
- package/extensions/s3-file/singlestore/index.d.cts +2 -0
- package/extensions/s3-file/singlestore/index.d.ts +2 -0
- package/extensions/s3-file/singlestore/index.js +3 -0
- package/extensions/s3-file/singlestore/index.js.map +1 -0
- package/extensions/s3-file/sqlite/column.cjs +121 -0
- package/extensions/s3-file/sqlite/column.cjs.map +1 -0
- package/extensions/s3-file/sqlite/column.d.cts +63 -0
- package/extensions/s3-file/sqlite/column.d.ts +63 -0
- package/extensions/s3-file/sqlite/column.js +97 -0
- package/extensions/s3-file/sqlite/column.js.map +1 -0
- package/extensions/s3-file/sqlite/extension.cjs +250 -0
- package/extensions/s3-file/sqlite/extension.cjs.map +1 -0
- package/extensions/s3-file/sqlite/extension.d.cts +18 -0
- package/extensions/s3-file/sqlite/extension.d.ts +18 -0
- package/extensions/s3-file/sqlite/extension.js +236 -0
- package/extensions/s3-file/sqlite/extension.js.map +1 -0
- package/extensions/s3-file/sqlite/index.cjs +25 -0
- package/extensions/s3-file/sqlite/index.cjs.map +1 -0
- package/extensions/s3-file/sqlite/index.d.cts +2 -0
- package/extensions/s3-file/sqlite/index.d.ts +2 -0
- package/extensions/s3-file/sqlite/index.js +3 -0
- package/extensions/s3-file/sqlite/index.js.map +1 -0
- package/gel/driver.cjs +6 -4
- package/gel/driver.cjs.map +1 -1
- package/gel/driver.d.cts +6 -4
- package/gel/driver.d.ts +6 -4
- package/gel/driver.js +6 -4
- package/gel/driver.js.map +1 -1
- package/gel/session.cjs +12 -9
- package/gel/session.cjs.map +1 -1
- package/gel/session.d.cts +5 -4
- package/gel/session.d.ts +5 -4
- package/gel/session.js +12 -9
- package/gel/session.js.map +1 -1
- package/gel-core/columns/common.cjs +8 -0
- package/gel-core/columns/common.cjs.map +1 -1
- package/gel-core/columns/common.d.cts +2 -0
- package/gel-core/columns/common.d.ts +2 -0
- package/gel-core/columns/common.js +8 -0
- package/gel-core/columns/common.js.map +1 -1
- package/gel-core/db.cjs +5 -3
- package/gel-core/db.cjs.map +1 -1
- package/gel-core/db.d.cts +3 -1
- package/gel-core/db.d.ts +3 -1
- package/gel-core/db.js +5 -3
- package/gel-core/db.js.map +1 -1
- package/gel-core/dialect.cjs +25 -19
- package/gel-core/dialect.cjs.map +1 -1
- package/gel-core/dialect.d.cts +7 -6
- package/gel-core/dialect.d.ts +7 -6
- package/gel-core/dialect.js +26 -20
- package/gel-core/dialect.js.map +1 -1
- package/gel-core/query-builders/delete.cjs +7 -2
- package/gel-core/query-builders/delete.cjs.map +1 -1
- package/gel-core/query-builders/delete.js +7 -2
- package/gel-core/query-builders/delete.js.map +1 -1
- package/gel-core/query-builders/insert.cjs +32 -6
- package/gel-core/query-builders/insert.cjs.map +1 -1
- package/gel-core/query-builders/insert.js +34 -8
- package/gel-core/query-builders/insert.js.map +1 -1
- package/gel-core/query-builders/query.cjs +12 -1
- package/gel-core/query-builders/query.cjs.map +1 -1
- package/gel-core/query-builders/query.js +12 -1
- package/gel-core/query-builders/query.js.map +1 -1
- package/gel-core/query-builders/select.cjs +9 -2
- package/gel-core/query-builders/select.cjs.map +1 -1
- package/gel-core/query-builders/select.js +9 -2
- package/gel-core/query-builders/select.js.map +1 -1
- package/gel-core/query-builders/update.cjs +8 -3
- package/gel-core/query-builders/update.cjs.map +1 -1
- package/gel-core/query-builders/update.js +8 -3
- package/gel-core/query-builders/update.js.map +1 -1
- package/gel-core/session.cjs +48 -4
- package/gel-core/session.cjs.map +1 -1
- package/gel-core/session.d.cts +11 -5
- package/gel-core/session.d.ts +11 -5
- package/gel-core/session.js +48 -4
- package/gel-core/session.js.map +1 -1
- package/libsql/driver-core.cjs +3 -2
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +3 -2
- package/libsql/driver-core.js.map +1 -1
- package/libsql/driver.cjs +4 -1
- package/libsql/driver.cjs.map +1 -1
- package/libsql/driver.d.cts +4 -3
- package/libsql/driver.d.ts +4 -3
- package/libsql/driver.js +4 -1
- package/libsql/driver.js.map +1 -1
- package/libsql/http/index.cjs +4 -1
- package/libsql/http/index.cjs.map +1 -1
- package/libsql/http/index.d.cts +4 -3
- package/libsql/http/index.d.ts +4 -3
- package/libsql/http/index.js +4 -1
- package/libsql/http/index.js.map +1 -1
- package/libsql/node/index.cjs +4 -1
- package/libsql/node/index.cjs.map +1 -1
- package/libsql/node/index.d.cts +4 -3
- package/libsql/node/index.d.ts +4 -3
- package/libsql/node/index.js +4 -1
- package/libsql/node/index.js.map +1 -1
- package/libsql/session.cjs +29 -12
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +8 -7
- package/libsql/session.d.ts +8 -7
- package/libsql/session.js +29 -12
- package/libsql/session.js.map +1 -1
- package/libsql/sqlite3/index.cjs +4 -1
- package/libsql/sqlite3/index.cjs.map +1 -1
- package/libsql/sqlite3/index.d.cts +4 -3
- package/libsql/sqlite3/index.d.ts +4 -3
- package/libsql/sqlite3/index.js +4 -1
- package/libsql/sqlite3/index.js.map +1 -1
- package/libsql/wasm/index.cjs +4 -1
- package/libsql/wasm/index.cjs.map +1 -1
- package/libsql/wasm/index.d.cts +4 -3
- package/libsql/wasm/index.d.ts +4 -3
- package/libsql/wasm/index.js +4 -1
- package/libsql/wasm/index.js.map +1 -1
- package/libsql/web/index.cjs +4 -1
- package/libsql/web/index.cjs.map +1 -1
- package/libsql/web/index.d.cts +4 -3
- package/libsql/web/index.d.ts +4 -3
- package/libsql/web/index.js +4 -1
- package/libsql/web/index.js.map +1 -1
- package/libsql/ws/index.cjs +4 -1
- package/libsql/ws/index.cjs.map +1 -1
- package/libsql/ws/index.d.cts +4 -3
- package/libsql/ws/index.d.ts +4 -3
- package/libsql/ws/index.js +4 -1
- package/libsql/ws/index.js.map +1 -1
- package/mysql-core/db.cjs +5 -3
- package/mysql-core/db.cjs.map +1 -1
- package/mysql-core/db.d.cts +3 -1
- package/mysql-core/db.d.ts +3 -1
- package/mysql-core/db.js +5 -3
- package/mysql-core/db.js.map +1 -1
- package/mysql-core/dialect.cjs +30 -23
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +8 -7
- package/mysql-core/dialect.d.ts +8 -7
- package/mysql-core/dialect.js +31 -24
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/delete.cjs +8 -2
- package/mysql-core/query-builders/delete.cjs.map +1 -1
- package/mysql-core/query-builders/delete.js +8 -2
- package/mysql-core/query-builders/delete.js.map +1 -1
- package/mysql-core/query-builders/insert.cjs +29 -5
- package/mysql-core/query-builders/insert.cjs.map +1 -1
- package/mysql-core/query-builders/insert.js +31 -7
- package/mysql-core/query-builders/insert.js.map +1 -1
- package/mysql-core/query-builders/query.cjs +14 -2
- package/mysql-core/query-builders/query.cjs.map +1 -1
- package/mysql-core/query-builders/query.js +14 -2
- package/mysql-core/query-builders/query.js.map +1 -1
- package/mysql-core/query-builders/select.cjs +12 -4
- package/mysql-core/query-builders/select.cjs.map +1 -1
- package/mysql-core/query-builders/select.js +12 -4
- package/mysql-core/query-builders/select.js.map +1 -1
- package/mysql-core/query-builders/update.cjs +15 -3
- package/mysql-core/query-builders/update.cjs.map +1 -1
- package/mysql-core/query-builders/update.js +15 -3
- package/mysql-core/query-builders/update.js.map +1 -1
- package/mysql-core/session.cjs +45 -3
- package/mysql-core/session.cjs.map +1 -1
- package/mysql-core/session.d.cts +13 -4
- package/mysql-core/session.d.ts +13 -4
- package/mysql-core/session.js +45 -3
- package/mysql-core/session.js.map +1 -1
- package/mysql-proxy/driver.cjs +3 -2
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.d.cts +2 -1
- package/mysql-proxy/driver.d.ts +2 -1
- package/mysql-proxy/driver.js +3 -2
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql-proxy/session.cjs +8 -8
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +5 -6
- package/mysql-proxy/session.d.ts +5 -6
- package/mysql-proxy/session.js +8 -8
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +6 -4
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +4 -2
- package/mysql2/driver.d.ts +4 -2
- package/mysql2/driver.js +6 -4
- package/mysql2/driver.js.map +1 -1
- package/mysql2/session.cjs +14 -10
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +5 -5
- package/mysql2/session.d.ts +5 -5
- package/mysql2/session.js +14 -10
- package/mysql2/session.js.map +1 -1
- package/neon-http/driver.cjs +5 -3
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +6 -4
- package/neon-http/driver.d.ts +6 -4
- package/neon-http/driver.js +5 -3
- package/neon-http/driver.js.map +1 -1
- package/neon-http/session.cjs +8 -6
- package/neon-http/session.cjs.map +1 -1
- package/neon-http/session.d.cts +5 -4
- package/neon-http/session.d.ts +5 -4
- package/neon-http/session.js +8 -6
- package/neon-http/session.js.map +1 -1
- package/neon-serverless/driver.cjs +6 -4
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +6 -4
- package/neon-serverless/driver.d.ts +6 -4
- package/neon-serverless/driver.js +6 -4
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/session.cjs +23 -9
- package/neon-serverless/session.cjs.map +1 -1
- package/neon-serverless/session.d.cts +5 -4
- package/neon-serverless/session.d.ts +5 -4
- package/neon-serverless/session.js +23 -9
- package/neon-serverless/session.js.map +1 -1
- package/node-postgres/driver.cjs +6 -4
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +6 -4
- package/node-postgres/driver.d.ts +6 -4
- package/node-postgres/driver.js +6 -4
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/session.cjs +18 -9
- package/node-postgres/session.cjs.map +1 -1
- package/node-postgres/session.d.cts +5 -4
- package/node-postgres/session.d.ts +5 -4
- package/node-postgres/session.js +18 -9
- package/node-postgres/session.js.map +1 -1
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.d.cts +2 -1
- package/op-sqlite/driver.d.ts +2 -1
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/session.cjs +5 -5
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +5 -5
- package/op-sqlite/session.d.ts +5 -5
- package/op-sqlite/session.js +5 -5
- package/op-sqlite/session.js.map +1 -1
- package/package.json +347 -1
- package/pg-core/columns/common.cjs +2 -0
- package/pg-core/columns/common.cjs.map +1 -1
- package/pg-core/columns/common.js +2 -0
- package/pg-core/columns/common.js.map +1 -1
- package/pg-core/db.cjs +5 -3
- package/pg-core/db.cjs.map +1 -1
- package/pg-core/db.d.cts +3 -1
- package/pg-core/db.d.ts +3 -1
- package/pg-core/db.js +5 -3
- package/pg-core/db.js.map +1 -1
- package/pg-core/dialect.cjs +26 -19
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +7 -6
- package/pg-core/dialect.d.ts +7 -6
- package/pg-core/dialect.js +27 -20
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/query-builders/delete.cjs +7 -2
- package/pg-core/query-builders/delete.cjs.map +1 -1
- package/pg-core/query-builders/delete.d.cts +1 -1
- package/pg-core/query-builders/delete.d.ts +1 -1
- package/pg-core/query-builders/delete.js +7 -2
- package/pg-core/query-builders/delete.js.map +1 -1
- package/pg-core/query-builders/insert.cjs +37 -6
- package/pg-core/query-builders/insert.cjs.map +1 -1
- package/pg-core/query-builders/insert.js +39 -8
- package/pg-core/query-builders/insert.js.map +1 -1
- package/pg-core/query-builders/query.cjs +12 -1
- package/pg-core/query-builders/query.cjs.map +1 -1
- package/pg-core/query-builders/query.js +12 -1
- package/pg-core/query-builders/query.js.map +1 -1
- package/pg-core/query-builders/select.cjs +11 -4
- package/pg-core/query-builders/select.cjs.map +1 -1
- package/pg-core/query-builders/select.js +11 -4
- package/pg-core/query-builders/select.js.map +1 -1
- package/pg-core/query-builders/update.cjs +8 -3
- package/pg-core/query-builders/update.cjs.map +1 -1
- package/pg-core/query-builders/update.d.cts +2 -2
- package/pg-core/query-builders/update.d.ts +2 -2
- package/pg-core/query-builders/update.js +9 -8
- package/pg-core/query-builders/update.js.map +1 -1
- package/pg-core/session.cjs +49 -4
- package/pg-core/session.cjs.map +1 -1
- package/pg-core/session.d.cts +11 -5
- package/pg-core/session.d.ts +11 -5
- package/pg-core/session.js +49 -4
- package/pg-core/session.js.map +1 -1
- package/pg-proxy/driver.cjs +3 -2
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.d.cts +2 -1
- package/pg-proxy/driver.d.ts +2 -1
- package/pg-proxy/driver.js +3 -2
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/session.cjs +8 -6
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +5 -4
- package/pg-proxy/session.d.ts +5 -4
- package/pg-proxy/session.js +8 -6
- package/pg-proxy/session.js.map +1 -1
- package/pglite/driver.cjs +6 -4
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +6 -4
- package/pglite/driver.d.ts +6 -4
- package/pglite/driver.js +6 -4
- package/pglite/driver.js.map +1 -1
- package/pglite/session.cjs +19 -9
- package/pglite/session.cjs.map +1 -1
- package/pglite/session.d.cts +5 -4
- package/pglite/session.d.ts +5 -4
- package/pglite/session.js +19 -9
- package/pglite/session.js.map +1 -1
- package/planetscale-serverless/driver.cjs +3 -2
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +4 -3
- package/planetscale-serverless/driver.d.ts +4 -3
- package/planetscale-serverless/driver.js +3 -2
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/session.cjs +23 -13
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +6 -7
- package/planetscale-serverless/session.d.ts +6 -7
- package/planetscale-serverless/session.js +23 -13
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/driver.cjs +3 -2
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +4 -3
- package/postgres-js/driver.d.ts +4 -3
- package/postgres-js/driver.js +3 -2
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/session.cjs +27 -16
- package/postgres-js/session.cjs.map +1 -1
- package/postgres-js/session.d.cts +6 -5
- package/postgres-js/session.d.ts +6 -5
- package/postgres-js/session.js +27 -16
- package/postgres-js/session.js.map +1 -1
- package/prisma/mysql/driver.cjs +3 -3
- package/prisma/mysql/driver.cjs.map +1 -1
- package/prisma/mysql/driver.d.cts +3 -2
- package/prisma/mysql/driver.d.ts +3 -2
- package/prisma/mysql/driver.js +3 -3
- package/prisma/mysql/driver.js.map +1 -1
- package/prisma/mysql/session.cjs +10 -11
- package/prisma/mysql/session.cjs.map +1 -1
- package/prisma/mysql/session.d.cts +7 -6
- package/prisma/mysql/session.d.ts +7 -6
- package/prisma/mysql/session.js +10 -11
- package/prisma/mysql/session.js.map +1 -1
- package/prisma/pg/driver.cjs +3 -3
- package/prisma/pg/driver.cjs.map +1 -1
- package/prisma/pg/driver.d.cts +2 -1
- package/prisma/pg/driver.d.ts +2 -1
- package/prisma/pg/driver.js +3 -3
- package/prisma/pg/driver.js.map +1 -1
- package/prisma/pg/session.cjs +7 -7
- package/prisma/pg/session.cjs.map +1 -1
- package/prisma/pg/session.d.cts +6 -5
- package/prisma/pg/session.d.ts +6 -5
- package/prisma/pg/session.js +7 -7
- package/prisma/pg/session.js.map +1 -1
- package/prisma/sqlite/driver.cjs +7 -1
- package/prisma/sqlite/driver.cjs.map +1 -1
- package/prisma/sqlite/driver.d.cts +2 -1
- package/prisma/sqlite/driver.d.ts +2 -1
- package/prisma/sqlite/driver.js +7 -1
- package/prisma/sqlite/driver.js.map +1 -1
- package/prisma/sqlite/session.cjs +6 -6
- package/prisma/sqlite/session.cjs.map +1 -1
- package/prisma/sqlite/session.d.cts +6 -5
- package/prisma/sqlite/session.d.ts +6 -5
- package/prisma/sqlite/session.js +6 -6
- package/prisma/sqlite/session.js.map +1 -1
- package/singlestore/driver.cjs +28 -19
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +4 -2
- package/singlestore/driver.d.ts +4 -2
- package/singlestore/driver.js +28 -19
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs +14 -10
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +5 -5
- package/singlestore/session.d.ts +5 -5
- package/singlestore/session.js +14 -10
- package/singlestore/session.js.map +1 -1
- package/singlestore-core/db.cjs +5 -3
- package/singlestore-core/db.cjs.map +1 -1
- package/singlestore-core/db.d.cts +3 -1
- package/singlestore-core/db.d.ts +3 -1
- package/singlestore-core/db.js +5 -3
- package/singlestore-core/db.js.map +1 -1
- package/singlestore-core/dialect.cjs +25 -18
- package/singlestore-core/dialect.cjs.map +1 -1
- package/singlestore-core/dialect.d.cts +7 -6
- package/singlestore-core/dialect.d.ts +7 -6
- package/singlestore-core/dialect.js +26 -19
- package/singlestore-core/dialect.js.map +1 -1
- package/singlestore-core/query-builders/delete.cjs +8 -2
- package/singlestore-core/query-builders/delete.cjs.map +1 -1
- package/singlestore-core/query-builders/delete.js +8 -2
- package/singlestore-core/query-builders/delete.js.map +1 -1
- package/singlestore-core/query-builders/insert.cjs +29 -5
- package/singlestore-core/query-builders/insert.cjs.map +1 -1
- package/singlestore-core/query-builders/insert.js +31 -7
- package/singlestore-core/query-builders/insert.js.map +1 -1
- package/singlestore-core/query-builders/query.cjs +12 -1
- package/singlestore-core/query-builders/query.cjs.map +1 -1
- package/singlestore-core/query-builders/query.js +12 -1
- package/singlestore-core/query-builders/query.js.map +1 -1
- package/singlestore-core/query-builders/select.cjs +12 -4
- package/singlestore-core/query-builders/select.cjs.map +1 -1
- package/singlestore-core/query-builders/select.js +12 -4
- package/singlestore-core/query-builders/select.js.map +1 -1
- package/singlestore-core/query-builders/update.cjs +9 -3
- package/singlestore-core/query-builders/update.cjs.map +1 -1
- package/singlestore-core/query-builders/update.js +9 -3
- package/singlestore-core/query-builders/update.js.map +1 -1
- package/singlestore-core/session.cjs +45 -3
- package/singlestore-core/session.cjs.map +1 -1
- package/singlestore-core/session.d.cts +13 -4
- package/singlestore-core/session.d.ts +13 -4
- package/singlestore-core/session.js +45 -3
- package/singlestore-core/session.js.map +1 -1
- package/singlestore-proxy/driver.cjs +3 -2
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.d.cts +2 -1
- package/singlestore-proxy/driver.d.ts +2 -1
- package/singlestore-proxy/driver.js +3 -2
- package/singlestore-proxy/driver.js.map +1 -1
- package/singlestore-proxy/session.cjs +8 -8
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.d.cts +5 -6
- package/singlestore-proxy/session.d.ts +5 -6
- package/singlestore-proxy/session.js +8 -8
- package/singlestore-proxy/session.js.map +1 -1
- package/sql/sql.cjs +24 -2
- package/sql/sql.cjs.map +1 -1
- package/sql/sql.d.cts +12 -0
- package/sql/sql.d.ts +12 -0
- package/sql/sql.js +23 -2
- package/sql/sql.js.map +1 -1
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.d.cts +2 -1
- package/sql-js/driver.d.ts +2 -1
- package/sql-js/driver.js.map +1 -1
- package/sql-js/session.cjs +4 -4
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.d.cts +4 -4
- package/sql-js/session.d.ts +4 -4
- package/sql-js/session.js +4 -4
- package/sql-js/session.js.map +1 -1
- package/sqlite-core/db.cjs +5 -3
- package/sqlite-core/db.cjs.map +1 -1
- package/sqlite-core/db.d.cts +3 -1
- package/sqlite-core/db.d.ts +3 -1
- package/sqlite-core/db.js +5 -3
- package/sqlite-core/db.js.map +1 -1
- package/sqlite-core/dialect.cjs +30 -19
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +7 -6
- package/sqlite-core/dialect.d.ts +7 -6
- package/sqlite-core/dialect.js +31 -20
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs +8 -2
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.js +8 -2
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/insert.cjs +28 -5
- package/sqlite-core/query-builders/insert.cjs.map +1 -1
- package/sqlite-core/query-builders/insert.js +35 -7
- package/sqlite-core/query-builders/insert.js.map +1 -1
- package/sqlite-core/query-builders/query.cjs +12 -1
- package/sqlite-core/query-builders/query.cjs.map +1 -1
- package/sqlite-core/query-builders/query.js +12 -1
- package/sqlite-core/query-builders/query.js.map +1 -1
- package/sqlite-core/query-builders/select.cjs +15 -6
- package/sqlite-core/query-builders/select.cjs.map +1 -1
- package/sqlite-core/query-builders/select.js +15 -6
- package/sqlite-core/query-builders/select.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs +9 -3
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.js +9 -3
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-core/session.cjs +80 -6
- package/sqlite-core/session.cjs.map +1 -1
- package/sqlite-core/session.d.cts +19 -9
- package/sqlite-core/session.d.ts +19 -9
- package/sqlite-core/session.js +80 -6
- package/sqlite-core/session.js.map +1 -1
- package/sqlite-proxy/driver.cjs +4 -3
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.d.cts +3 -2
- package/sqlite-proxy/driver.d.ts +3 -2
- package/sqlite-proxy/driver.js +4 -3
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/session.cjs +20 -11
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +8 -7
- package/sqlite-proxy/session.d.ts +8 -7
- package/sqlite-proxy/session.js +20 -11
- package/sqlite-proxy/session.js.map +1 -1
- package/tidb-serverless/driver.cjs +9 -2
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +4 -3
- package/tidb-serverless/driver.d.ts +4 -3
- package/tidb-serverless/driver.js +9 -2
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/session.cjs +23 -13
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +6 -7
- package/tidb-serverless/session.d.ts +6 -7
- package/tidb-serverless/session.js +23 -13
- package/tidb-serverless/session.js.map +1 -1
- package/tracing.cjs.map +1 -1
- package/tracing.js.map +1 -1
- package/utils.cjs +34 -2
- package/utils.cjs.map +1 -1
- package/utils.d.cts +5 -1
- package/utils.d.ts +5 -1
- package/utils.js +35 -4
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +10 -5
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +6 -4
- package/vercel-postgres/driver.d.ts +6 -4
- package/vercel-postgres/driver.js +10 -5
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/session.cjs +18 -9
- package/vercel-postgres/session.cjs.map +1 -1
- package/vercel-postgres/session.d.cts +5 -4
- package/vercel-postgres/session.d.ts +5 -4
- package/vercel-postgres/session.js +18 -9
- package/vercel-postgres/session.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/xata-http/driver.cjs +7 -4
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +4 -2
- package/xata-http/driver.d.ts +4 -2
- package/xata-http/driver.js +7 -4
- package/xata-http/driver.js.map +1 -1
- package/xata-http/session.cjs +8 -6
- package/xata-http/session.cjs.map +1 -1
- package/xata-http/session.d.cts +5 -4
- package/xata-http/session.d.ts +5 -4
- package/xata-http/session.js +8 -6
- package/xata-http/session.js.map +1 -1
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3";
|
|
2
|
+
import { DrizzleError } from "../../errors.js";
|
|
3
|
+
class PresignerImporter {
|
|
4
|
+
static presignerImportSource = ["@aws", "sdk/s3", "request", "presigner"].join("-");
|
|
5
|
+
static presigner = void 0;
|
|
6
|
+
constructor() {
|
|
7
|
+
}
|
|
8
|
+
static async importPresigner() {
|
|
9
|
+
if (this.presigner)
|
|
10
|
+
return this.presigner;
|
|
11
|
+
this.presigner = await import(this.presignerImportSource).then((e) => e.getSignedUrl);
|
|
12
|
+
return this.presigner;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const AsyncFunction = async function() {
|
|
16
|
+
}.constructor;
|
|
17
|
+
const buildFunctionArrayRecursion = (dimensions, body) => {
|
|
18
|
+
if (dimensions) {
|
|
19
|
+
return buildFunctionArrayRecursion(dimensions - 1, `arr?.forEach((arr, i${dimensions}) => ${body})`);
|
|
20
|
+
}
|
|
21
|
+
return body;
|
|
22
|
+
};
|
|
23
|
+
const buildArrayRecursionIndexAccess = (dimensions) => {
|
|
24
|
+
let idxs = "";
|
|
25
|
+
for (let idx = 1; idx <= dimensions; ++idx) {
|
|
26
|
+
idxs = `${idxs}[i${idx}]`;
|
|
27
|
+
}
|
|
28
|
+
return idxs;
|
|
29
|
+
};
|
|
30
|
+
const formPresignerOptions = (options) => {
|
|
31
|
+
if (!options)
|
|
32
|
+
return "undefined";
|
|
33
|
+
const fields = Object.entries(options).map(
|
|
34
|
+
([k, v]) => (
|
|
35
|
+
// eslint-disable-next-line no-instanceof/no-instanceof
|
|
36
|
+
(`${JSON.stringify(k)}: ${v instanceof Set ? `new Set(${JSON.stringify([...v])})` : JSON.stringify(v)}`)
|
|
37
|
+
)
|
|
38
|
+
).join(",\n");
|
|
39
|
+
return `{${fields}}`;
|
|
40
|
+
};
|
|
41
|
+
const buildDecoderInner = (mappingInstructions) => {
|
|
42
|
+
return mappingInstructions.map((i) => {
|
|
43
|
+
const path = i.path.join("");
|
|
44
|
+
const optPath = i.path.join("?.");
|
|
45
|
+
return `if(row${optPath}) {
|
|
46
|
+
` + ("subinstructions" in i ? `row${path}.forEach(row => {
|
|
47
|
+
${buildDecoderInner(i.subinstructions)}
|
|
48
|
+
});` : i.arrayDimensions ? `const arr = row${path};
|
|
49
|
+
` + buildFunctionArrayRecursion(
|
|
50
|
+
i.arrayDimensions,
|
|
51
|
+
`p.push((async () => {
|
|
52
|
+
if(!arr || typeof arr !== 'string') return;
|
|
53
|
+
|
|
54
|
+
const { key, bucket } = idGetter(arr);
|
|
55
|
+
row${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = await ${i.fetchMode === "file" || i.fetchMode === "data" ? "downloader" : i.fetchMode === "presigned" ? "presigner" : "metagetter"}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${i.fetchMode === "data" ? "true" : "false"}, options: ${formPresignerOptions(i.options)}});
|
|
56
|
+
})().catch((e) => errors.push(e)))`
|
|
57
|
+
) : `p.push((async () => {
|
|
58
|
+
const str = row${path};
|
|
59
|
+
if(typeof str !== 'string') return;
|
|
60
|
+
|
|
61
|
+
const { key, bucket } = idGetter(str);
|
|
62
|
+
row${path} = await ${i.fetchMode === "file" || i.fetchMode === "data" ? "downloader" : i.fetchMode === "presigned" ? "presigner" : "metagetter"}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${i.fetchMode === "data" ? "true" : "false"}, options: ${formPresignerOptions(i.options)}});
|
|
63
|
+
})().catch((e) => errors.push(e)));`) + `
|
|
64
|
+
}`;
|
|
65
|
+
}).join("\n");
|
|
66
|
+
};
|
|
67
|
+
const buildDecoder = (mappingInstructions, mode = "many") => {
|
|
68
|
+
if (!mappingInstructions.length)
|
|
69
|
+
return () => void 0;
|
|
70
|
+
return new AsyncFunction(
|
|
71
|
+
"s3",
|
|
72
|
+
"data",
|
|
73
|
+
"errors",
|
|
74
|
+
"downloader",
|
|
75
|
+
// 'metagetter',
|
|
76
|
+
"presigner",
|
|
77
|
+
"idGetter",
|
|
78
|
+
mode === "many" ? `
|
|
79
|
+
await Promise.all(data.reduce((p, row) => {
|
|
80
|
+
${buildDecoderInner(mappingInstructions)}
|
|
81
|
+
return p;
|
|
82
|
+
}, []));` : `
|
|
83
|
+
const p = [];
|
|
84
|
+
const row = data;
|
|
85
|
+
${buildDecoderInner(mappingInstructions)}
|
|
86
|
+
await Promise.all(p);
|
|
87
|
+
`
|
|
88
|
+
);
|
|
89
|
+
};
|
|
90
|
+
const buildEncoder = (mappingInstructions) => {
|
|
91
|
+
if (!mappingInstructions.length)
|
|
92
|
+
return () => void 0;
|
|
93
|
+
return new AsyncFunction(
|
|
94
|
+
"s3",
|
|
95
|
+
"placeholders",
|
|
96
|
+
"errors",
|
|
97
|
+
"uploader",
|
|
98
|
+
"idBuilder",
|
|
99
|
+
`
|
|
100
|
+
if(!placeholders) return;
|
|
101
|
+
await Promise.all([
|
|
102
|
+
${mappingInstructions.map((i) => {
|
|
103
|
+
const path = `[${JSON.stringify(i.key)}]`;
|
|
104
|
+
return i.arrayDimensions ? `...(() => {
|
|
105
|
+
const arr = placeholders${path};
|
|
106
|
+
const p = [];
|
|
107
|
+
${buildFunctionArrayRecursion(
|
|
108
|
+
i.arrayDimensions,
|
|
109
|
+
`p.push((async () => {
|
|
110
|
+
if(!arr || typeof arr !== 'object') return;
|
|
111
|
+
|
|
112
|
+
const { key, bucket, data } = arr;
|
|
113
|
+
await uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });
|
|
114
|
+
placeholders${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = idBuilder(arr);
|
|
115
|
+
})().catch((e) => errors.push(e)))`
|
|
116
|
+
)}
|
|
117
|
+
return p;
|
|
118
|
+
})()` : `(async () => {
|
|
119
|
+
const params = placeholders${path};
|
|
120
|
+
if(!params || typeof params !== 'object') return;
|
|
121
|
+
|
|
122
|
+
const { key, bucket, data } = params;
|
|
123
|
+
await uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });
|
|
124
|
+
placeholders${path} = idBuilder(params);
|
|
125
|
+
})().catch((e) => errors.push(e))`;
|
|
126
|
+
}).join(",\n")}
|
|
127
|
+
]);
|
|
128
|
+
`
|
|
129
|
+
);
|
|
130
|
+
};
|
|
131
|
+
const separator = ":";
|
|
132
|
+
function objectIdToText({ key, bucket }) {
|
|
133
|
+
return `${bucket}${separator}${key}`;
|
|
134
|
+
}
|
|
135
|
+
function textToObjectId(text) {
|
|
136
|
+
const split = text.split(separator);
|
|
137
|
+
if (split.length < 2)
|
|
138
|
+
throw new Error(`Invalid S3 object identifier: "${text}". Expected: "bucket${separator}key"`);
|
|
139
|
+
const bucket = split.shift();
|
|
140
|
+
const key = split.join(separator);
|
|
141
|
+
return { key, bucket };
|
|
142
|
+
}
|
|
143
|
+
async function downloadFile({ key, bucket, s3, mode, fileOnly }) {
|
|
144
|
+
const res = await s3.send(
|
|
145
|
+
new GetObjectCommand({
|
|
146
|
+
Bucket: bucket,
|
|
147
|
+
Key: key
|
|
148
|
+
})
|
|
149
|
+
);
|
|
150
|
+
if (!res.Body) {
|
|
151
|
+
throw new DrizzleError({
|
|
152
|
+
message: `No data found in bucket "${bucket}" for key "${key}"`
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
let data;
|
|
156
|
+
switch (mode) {
|
|
157
|
+
case "uint8array": {
|
|
158
|
+
data = await res.Body.transformToByteArray();
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case "buffer": {
|
|
162
|
+
data = Buffer.from(await res.Body.transformToByteArray());
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
default: {
|
|
166
|
+
data = await res.Body.transformToString(mode);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return fileOnly ? data : {
|
|
171
|
+
key,
|
|
172
|
+
bucket,
|
|
173
|
+
data
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
async function presignDownload({ key, bucket, options, s3 }) {
|
|
177
|
+
const command = new GetObjectCommand({
|
|
178
|
+
Bucket: bucket,
|
|
179
|
+
Key: key
|
|
180
|
+
});
|
|
181
|
+
const presigner = await PresignerImporter.importPresigner();
|
|
182
|
+
const url = await presigner(s3, command, options);
|
|
183
|
+
return url;
|
|
184
|
+
}
|
|
185
|
+
async function uploadFile({ key, bucket, data, s3, mode }) {
|
|
186
|
+
let body;
|
|
187
|
+
switch (mode) {
|
|
188
|
+
case "uint8array":
|
|
189
|
+
case "buffer": {
|
|
190
|
+
body = data;
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
case "hex": {
|
|
194
|
+
body = Uint8Array.fromHex ? Uint8Array.fromHex(data) : Buffer.from(data, "hex");
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
case "base64": {
|
|
198
|
+
body = Uint8Array.fromBase64 ? Uint8Array.fromBase64(data) : Buffer.from(data, "base64");
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const res = await s3.send(
|
|
203
|
+
new PutObjectCommand({
|
|
204
|
+
Bucket: bucket,
|
|
205
|
+
Key: key,
|
|
206
|
+
Body: body
|
|
207
|
+
})
|
|
208
|
+
);
|
|
209
|
+
return res;
|
|
210
|
+
}
|
|
211
|
+
function mapArrayParam(s3, item, dimensions, mode, errors, promises) {
|
|
212
|
+
if (dimensions > 1) {
|
|
213
|
+
for (const sub of item) {
|
|
214
|
+
mapArrayParam(s3, sub, dimensions - 1, mode, errors, promises);
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
let i = 0;
|
|
219
|
+
for (const param of item) {
|
|
220
|
+
if (!param || typeof param !== "object") {
|
|
221
|
+
++i;
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const obj = param;
|
|
225
|
+
promises.push(
|
|
226
|
+
(async (i2) => {
|
|
227
|
+
await uploadFile({
|
|
228
|
+
s3,
|
|
229
|
+
key: obj.key,
|
|
230
|
+
bucket: obj.bucket,
|
|
231
|
+
data: obj.data,
|
|
232
|
+
mode
|
|
233
|
+
});
|
|
234
|
+
const value = objectIdToText(obj);
|
|
235
|
+
item[i2] = value;
|
|
236
|
+
})(i++).catch((e) => errors.push(e))
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async function mapParams(s3, params, indexes, errors) {
|
|
241
|
+
if (!indexes.length)
|
|
242
|
+
return;
|
|
243
|
+
const arrayIdxs = [];
|
|
244
|
+
await Promise.all(
|
|
245
|
+
indexes.reduce((p, { index, mode, arrayDimensions }) => {
|
|
246
|
+
const { value: param } = params[index];
|
|
247
|
+
if (arrayDimensions) {
|
|
248
|
+
mapArrayParam(s3, param, arrayDimensions, mode, errors, p);
|
|
249
|
+
arrayIdxs.push(index);
|
|
250
|
+
return p;
|
|
251
|
+
}
|
|
252
|
+
if (!param || typeof param !== "object")
|
|
253
|
+
return p;
|
|
254
|
+
p.push(
|
|
255
|
+
(async (i) => {
|
|
256
|
+
await uploadFile({
|
|
257
|
+
s3,
|
|
258
|
+
key: param.key,
|
|
259
|
+
bucket: param.bucket,
|
|
260
|
+
data: param.data,
|
|
261
|
+
mode
|
|
262
|
+
});
|
|
263
|
+
const value = objectIdToText(param);
|
|
264
|
+
params[i] = value;
|
|
265
|
+
})(index).catch((e) => errors.push(e))
|
|
266
|
+
);
|
|
267
|
+
return p;
|
|
268
|
+
}, [])
|
|
269
|
+
);
|
|
270
|
+
for (const idx of arrayIdxs) {
|
|
271
|
+
params[idx] = params[idx].value ? params[idx].encoder.mapToDriverValue(
|
|
272
|
+
params[idx].value
|
|
273
|
+
) : params[idx];
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
export {
|
|
277
|
+
buildDecoder,
|
|
278
|
+
buildDecoderInner,
|
|
279
|
+
buildEncoder,
|
|
280
|
+
downloadFile,
|
|
281
|
+
mapArrayParam,
|
|
282
|
+
mapParams,
|
|
283
|
+
objectIdToText,
|
|
284
|
+
presignDownload,
|
|
285
|
+
textToObjectId,
|
|
286
|
+
uploadFile
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/extensions/s3-file/common.ts"],"sourcesContent":["import { GetObjectCommand, /*HeadObjectCommand,*/ PutObjectCommand, type S3Client } from '@aws-sdk/client-s3';\nimport type { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { DrizzleError } from '~/errors.ts';\nimport type { ExtensionParam } from '~/sql/sql.ts';\nimport type { Simplify } from '~/utils.ts';\n\n// Local class, won't be used with `is` nor `instanceof`\n// eslint-disable-next-line drizzle-internal/require-entity-kind\nclass PresignerImporter {\n\tprivate static presignerImportSource: string = ['@aws', 'sdk/s3', 'request', 'presigner'].join('-');\n\tprivate static presigner: typeof getSignedUrl | undefined = undefined;\n\tconstructor() {}\n\n\tstatic async importPresigner(): Promise<typeof getSignedUrl> {\n\t\tif (this.presigner) return this.presigner;\n\n\t\tthis.presigner = await import(this.presignerImportSource).then((e) => e.getSignedUrl);\n\n\t\treturn this.presigner!;\n\t}\n}\n\nconst AsyncFunction = (async function() {}.constructor) as {\n\tnew(...args: string[]): (...args: any[]) => Promise<any>;\n\t(...args: string[]): (...args: any[]) => Promise<any>;\n};\n\nexport interface DecoderFunction {\n\t(\n\t\ts3: S3Client,\n\t\tdata: Record<string, unknown>[] | Record<string, unknown>,\n\t\terrors: unknown[],\n\t\tdownloader: typeof downloadFile,\n\t\t// metagetter: typeof downloadFileMeta,\n\t\tpresigner: typeof presignDownload,\n\t\tidGetter: typeof textToObjectId,\n\t): Promise<void>;\n}\n\nexport interface EncoderFunction {\n\t(\n\t\ts3: S3Client,\n\t\tplaceholders: Record<string, unknown> | undefined,\n\t\terrors: unknown[],\n\t\tuploader: typeof uploadFile,\n\t\tidBuilder: typeof objectIdToText,\n\t): Promise<void>;\n}\n\nconst buildFunctionArrayRecursion = (dimensions: number, body: string): string => {\n\tif (dimensions) {\n\t\treturn buildFunctionArrayRecursion(dimensions - 1, `arr?.forEach((arr, i${dimensions}) => ${body})`);\n\t}\n\n\treturn body;\n};\n\nconst buildArrayRecursionIndexAccess = (dimensions: number) => {\n\tlet idxs = '';\n\tfor (let idx = 1; idx <= dimensions; ++idx) {\n\t\tidxs = `${idxs}[i${idx}]`;\n\t}\n\treturn idxs;\n};\n\nconst formPresignerOptions = (options?: RequestPresigningArguments) => {\n\tif (!options) return 'undefined';\n\n\tconst fields = Object.entries(options).map(([k, v]) =>\n\t\t// eslint-disable-next-line no-instanceof/no-instanceof\n\t\t`${JSON.stringify(k)}: ${v instanceof Set ? `new Set(${JSON.stringify([...v])})` : JSON.stringify(v)}`\n\t).join(',\\n');\n\n\treturn `{${fields}}`;\n};\n\nexport const buildDecoderInner = (mappingInstructions: DrizzleS3FileOutputMappingInstruction[]): string => {\n\treturn mappingInstructions.map((i) => {\n\t\tconst path = i.path.join('');\n\t\tconst optPath = i.path.join('?.');\n\n\t\treturn `if(row${optPath}) {\\n` + (\n\t\t\t'subinstructions' in i\n\t\t\t\t? `row${path}.forEach(row => {\n\t\t\t${buildDecoderInner(i.subinstructions)} \n\t\t\t});`\n\t\t\t\t: i.arrayDimensions\n\t\t\t\t? `const arr = row${path};\n\t\t\t\t` + buildFunctionArrayRecursion(\n\t\t\t\t\ti.arrayDimensions,\n\t\t\t\t\t`p.push((async () => {\n\t\t\t\t\t\t\t\tif(!arr || typeof arr !== 'string') return;\n\n\t\t\t\t\t\t\t\tconst { key, bucket } = idGetter(arr);\n\t\t\t\t\t\t\t\trow${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = await ${\n\t\t\t\t\t\ti.fetchMode === 'file' || i.fetchMode === 'data'\n\t\t\t\t\t\t\t? 'downloader'\n\t\t\t\t\t\t\t: i.fetchMode === 'presigned'\n\t\t\t\t\t\t\t? 'presigner'\n\t\t\t\t\t\t\t: 'metagetter'\n\t\t\t\t\t}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${\n\t\t\t\t\t\ti.fetchMode === 'data' ? 'true' : 'false'\n\t\t\t\t\t}, options: ${formPresignerOptions(i.options)}});\n\t\t\t\t\t\t})().catch((e) => errors.push(e)))`,\n\t\t\t\t)\n\t\t\t\t: `p.push((async () => {\n\t\t\t\t\t\tconst str = row${path};\n\t\t\t\t\t\tif(typeof str !== 'string') return;\n\n\t\t\t\t\t\tconst { key, bucket } = idGetter(str);\n\t\t\t\t\t\trow${path} = await ${\n\t\t\t\t\ti.fetchMode === 'file' || i.fetchMode === 'data'\n\t\t\t\t\t\t? 'downloader'\n\t\t\t\t\t\t: i.fetchMode === 'presigned'\n\t\t\t\t\t\t? 'presigner'\n\t\t\t\t\t\t: 'metagetter'\n\t\t\t\t}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${\n\t\t\t\t\ti.fetchMode === 'data' ? 'true' : 'false'\n\t\t\t\t}, options: ${formPresignerOptions(i.options)}});\n\t\t\t\t\t\t})().catch((e) => errors.push(e)));`\n\t\t) + `\n\t\t}`;\n\t}).join('\\n');\n};\n\nexport const buildDecoder = (\n\tmappingInstructions: DrizzleS3FileOutputMappingInstruction[],\n\tmode: 'first' | 'many' = 'many',\n): DecoderFunction => {\n\tif (!mappingInstructions.length) return () => undefined as any;\n\n\treturn new AsyncFunction(\n\t\t's3',\n\t\t'data',\n\t\t'errors',\n\t\t'downloader',\n\t\t// 'metagetter',\n\t\t'presigner',\n\t\t'idGetter',\n\t\tmode === 'many'\n\t\t\t? `\n\t\t\tawait Promise.all(data.reduce((p, row) => {\n\t\t\t${buildDecoderInner(mappingInstructions)}\n\t\t\treturn p;\n\t\t}, []));`\n\t\t\t: `\n\t\t\tconst p = [];\n\t\t\tconst row = data;\n\t\t\t${buildDecoderInner(mappingInstructions)}\n\t\t\tawait Promise.all(p);\n\t\t`,\n\t);\n};\n\n// export const buildDecoder = (mappingInstructions: DrizzleS3FileOutputMappingInstruction[]): DecoderFunction => {\n// \tif (!mappingInstructions.length) return () => undefined as any;\n\n// \treturn new AsyncFunction(\n// \t\t's3',\n// \t\t'data',\n// \t\t'errors',\n// \t\t'downloader',\n// \t\t'metagetter',\n// \t\t'presigner',\n// \t\t'idGetter',\n// \t\t`await Promise.all(data.reduce((p, row) => {\n// \t\t\t\t${\n// \t\t\tmappingInstructions.map((i) => {\n// \t\t\t\tconst path = i.path.join('');\n// \t\t\t\tconst optPath = i.path.join('?.');\n\n// \t\t\t\treturn `if(row${optPath}) {\n// \t\t\t\t\t${(i.arrayDimensions\n// \t\t\t\t\t? `\n// \t\t\t\t\t\tconst arr = row${path}\n// \t\t\t\t\t\t${\n// \t\t\t\t\t\tbuildFunctionArrayRecursion(\n// \t\t\t\t\t\t\ti.arrayDimensions,\n// \t\t\t\t\t\t\t`p.push((async () => {\n// \t\t\t\t\t\t\t\tif(!arr || typeof arr !== 'string') return;\n\n// \t\t\t\t\t\t\t\tconst { key, bucket } = idGetter(arr);\n// \t\t\t\t\t\t\t\trow${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = await ${\n// \t\t\t\t\t\t\t\ti.fetchMode === 'file' ? 'downloader' : i.fetchMode === 'meta' ? 'metagetter' : 'presigner'\n// \t\t\t\t\t\t\t}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${\n// \t\t\t\t\t\t\t\ti.fetchMode === 'data' ? 'true' : 'false'\n// \t\t\t\t\t\t\t}, options: ${JSON.stringify(i.options)} });\n// \t\t\t\t\t\t})().catch((e) => errors.push(e)))`,\n// \t\t\t\t\t\t)\n// \t\t\t\t\t}\n// \t\t\t\t\t\t`\n// \t\t\t\t\t: `p.push((async () => {\n// \t\t\t\t\t\tconst str = row${path};\n// \t\t\t\t\t\tif(typeof str !== 'string') return;\n\n// \t\t\t\t\t\tconst { key, bucket } = idGetter(str);\n// \t\t\t\t\t\trow${path} = await ${\n// \t\t\t\t\t\ti.fetchMode === 'file' ? 'downloader' : i.fetchMode === 'meta' ? 'metagetter' : 'presigner'\n// \t\t\t\t\t}({ key, bucket, s3, mode: ${JSON.stringify(i.fileMode)}, fileOnly: ${\n// \t\t\t\t\t\ti.fetchMode === 'data' ? 'true' : 'false'\n// \t\t\t\t\t}, options: ${JSON.stringify(i.options)} });\n// \t\t\t\t\t\t})().catch((e) => errors.push(e)));`)}\n// \t\t\t\t\t}`;\n// \t\t\t}).join('\\n')\n// \t\t}\n// \t\t\t\treturn p;\n// \t\t\t}, []\n// \t\t\t));\n// \t\t`,\n// \t);\n// };\n\nexport const buildEncoder = (mappingInstructions: DrizzleS3FilePlaceholderMappingInstruction[]): EncoderFunction => {\n\tif (!mappingInstructions.length) return () => undefined as any;\n\n\treturn new AsyncFunction(\n\t\t's3',\n\t\t'placeholders',\n\t\t'errors',\n\t\t'uploader',\n\t\t'idBuilder',\n\t\t`\n\t\t\tif(!placeholders) return;\n\t\t\tawait Promise.all([\n\t\t\t\t${\n\t\t\tmappingInstructions.map((i) => {\n\t\t\t\tconst path = `[${JSON.stringify(i.key)}]`;\n\n\t\t\t\treturn i.arrayDimensions\n\t\t\t\t\t? `...(() => {\n\t\t\t\t\t\tconst arr = placeholders${path};\n\t\t\t\t\t\tconst p = [];\n\t\t\t\t\t\t${\n\t\t\t\t\t\tbuildFunctionArrayRecursion(\n\t\t\t\t\t\t\ti.arrayDimensions,\n\t\t\t\t\t\t\t`p.push((async () => {\n\t\t\t\t\t\t\tif(!arr || typeof arr !== 'object') return;\n\n\t\t\t\t\t\t\tconst { key, bucket, data } = arr;\n\t\t\t\t\t\t\tawait uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });\n\t\t\t\t\t\t\tplaceholders${path}${buildArrayRecursionIndexAccess(i.arrayDimensions)} = idBuilder(arr);\n\t\t\t\t\t\t})().catch((e) => errors.push(e)))`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\t\treturn p;\n\t\t\t\t\t})()`\n\t\t\t\t\t: `(async () => {\n\t\t\t\t\t\t\tconst params = placeholders${path};\n\t\t\t\t\t\t\tif(!params || typeof params !== 'object') return;\n\n\t\t\t\t\t\t\tconst { key, bucket, data } = params;\n\t\t\t\t\t\t\tawait uploader({ key, bucket, data, s3, mode: ${JSON.stringify(i.mode)} });\n\t\t\t\t\t\t\tplaceholders${path} = idBuilder(params);\n\t\t\t\t\t\t})().catch((e) => errors.push(e))`;\n\t\t\t}).join(',\\n')\n\t\t}\n\t\t\t]);\n\t\t`,\n\t);\n};\n\nexport type DrizzleS3FileMode = 'buffer' | 'hex' | 'base64' | 'uint8array';\n\nexport type DrizzleS3FileModeToData = {\n\tbuffer: Buffer;\n\thex: string;\n\tbase64: string;\n\tuint8array: Uint8Array;\n};\n\nexport type DrizzleS3FetchMode = 'file' | 'meta' | 'data' | 'presigned';\n\n// export interface DrizzleS3FileOutputMappingInstruction {\n// \tfileMode: DrizzleS3FileMode;\n// \tfetchMode: DrizzleS3FetchMode;\n// \toptions?: RequestPresigningArguments;\n// \tarrayDimensions?: number;\n// \tpath: string[];\n// }\n\nexport type DrizzleS3FileOutputMappingInstructionNodeCommon = {\n\tpath: string[];\n};\nexport type DrizzleS3FileOutputMappingInstruction =\n\t| DrizzleS3FileOutputMappingInstructionIterableNode\n\t| DrizzleS3FileOutputMappingInstructionTerminalNode;\n\nexport type DrizzleS3FileOutputMappingInstructionTerminalNode =\n\t& DrizzleS3FileOutputMappingInstructionNodeCommon\n\t& {\n\t\tfileMode: DrizzleS3FileMode;\n\t\tfetchMode: DrizzleS3FetchMode;\n\t\toptions?: RequestPresigningArguments;\n\t\tarrayDimensions?: number;\n\t};\n\nexport type DrizzleS3FileOutputMappingInstructionIterableNode =\n\t& DrizzleS3FileOutputMappingInstructionNodeCommon\n\t& {\n\t\tsubinstructions: DrizzleS3FileOutputMappingInstruction[];\n\t};\n\nexport interface DrizzleS3FileInputMappingInstruction {\n\tmode: DrizzleS3FileMode;\n\tindex: number;\n\tarrayDimensions?: number;\n}\n\nexport interface DrizzleS3FilePlaceholderMappingInstruction {\n\tmode: DrizzleS3FileMode;\n\tkey: string;\n\tarrayDimensions?: number;\n}\n\nexport type RequestPresigningArguments = typeof getSignedUrl extends\n\t((client: any, command: any, options?: infer R) => any) ? R\n\t: Record<string, unknown>;\n\nexport interface DrizzleS3ObjectIdentification {\n\tkey: string;\n\tbucket: string;\n}\n\nexport interface S3ExtMeta {\n\tdecoder?: DecoderFunction;\n\tencoder?: EncoderFunction;\n}\n\nexport type DrizzleS3Object<TData extends string | Buffer | Uint8Array = string | Buffer | Uint8Array> = Simplify<\n\t& DrizzleS3ObjectIdentification\n\t& {\n\t\tdata: TData;\n\t}\n>;\n\nexport type DrizzleS3ObjectFile<TData extends string | Buffer | Uint8Array = string | Buffer | Uint8Array> = Simplify<\n\t& DrizzleS3ObjectIdentification\n\t& {\n\t\tdata: TData;\n\t}\n>;\n\n// export type DrizzleS3ObjectMeta = Simplify<\n// \t& DrizzleS3ObjectIdentification\n// \t& {\n// \t\tmeta?: Record<string, unknown>;\n// \t}\n// >;\n\nconst separator = ':';\n\nexport function objectIdToText({ key, bucket }: DrizzleS3ObjectIdentification): string {\n\treturn `${bucket}${separator}${key}`;\n}\n\nexport function textToObjectId(text: string): DrizzleS3ObjectIdentification {\n\tconst split = text.split(separator);\n\n\tif (split.length < 2) throw new Error(`Invalid S3 object identifier: \"${text}\". Expected: \"bucket${separator}key\"`);\n\n\tconst bucket = split.shift()!;\n\tconst key = split.join(separator);\n\n\treturn { key, bucket };\n}\n\nexport async function downloadFile(\n\t{ key, bucket, s3, mode, fileOnly }: {\n\t\tkey: string;\n\t\tbucket: string;\n\t\ts3: S3Client;\n\t\tmode: DrizzleS3FileMode;\n\t\tfileOnly?: boolean;\n\t},\n) {\n\tconst res = await s3.send(\n\t\tnew GetObjectCommand({\n\t\t\tBucket: bucket,\n\t\t\tKey: key,\n\t\t}),\n\t);\n\n\tif (!res.Body) {\n\t\tthrow new DrizzleError({\n\t\t\tmessage: `No data found in bucket \"${bucket}\" for key \"${key}\"`,\n\t\t});\n\t}\n\n\tlet data;\n\tswitch (mode) {\n\t\tcase 'uint8array': {\n\t\t\tdata = await res.Body.transformToByteArray();\n\t\t\tbreak;\n\t\t}\n\t\tcase 'buffer': {\n\t\t\tdata = Buffer.from(await res.Body.transformToByteArray());\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tdata = await res.Body.transformToString(mode);\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn fileOnly ? data : {\n\t\tkey,\n\t\tbucket,\n\t\tdata,\n\t};\n}\n\n// export async function downloadFileMeta({ key, bucket, s3 }: { key: string; bucket: string; s3: S3Client }) {\n// \tconst { Metadata: meta } = await s3.send(\n// \t\tnew HeadObjectCommand({\n// \t\t\tBucket: bucket,\n// \t\t\tKey: key,\n// \t\t}),\n// \t);\n\n// \treturn {\n// \t\tkey,\n// \t\tbucket,\n// \t\tmeta,\n// \t};\n// }\n\nexport async function presignDownload(\n\t{ key, bucket, options, s3 }: { key: string; bucket: string; options?: RequestPresigningArguments; s3: S3Client },\n) {\n\tconst command = new GetObjectCommand({\n\t\tBucket: bucket,\n\t\tKey: key,\n\t});\n\n\tconst presigner = await PresignerImporter.importPresigner();\n\t// Types are compatible, errors seem to be caused by internal package issues\n\tconst url = await presigner(s3 as any, command as any, options);\n\n\treturn url;\n}\n\nexport async function uploadFile(\n\t{ key, bucket, data, s3, mode }: {\n\t\tkey: string;\n\t\tbucket: string;\n\t\tdata: DrizzleS3Object['data'];\n\t\ts3: S3Client;\n\t\tmode: DrizzleS3FileMode;\n\t},\n) {\n\tlet body: Buffer | Uint8Array;\n\tswitch (mode) {\n\t\tcase 'uint8array':\n\t\tcase 'buffer': {\n\t\t\tbody = data as Buffer | Uint8Array;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'hex': {\n\t\t\tbody = Uint8Array.fromHex ? Uint8Array.fromHex(data as string) : Buffer.from(data as string, 'hex');\n\t\t\tbreak;\n\t\t}\n\t\tcase 'base64': {\n\t\t\tbody = Uint8Array.fromBase64 ? Uint8Array.fromBase64(data as string) : Buffer.from(data as string, 'base64');\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst res = await s3.send(\n\t\tnew PutObjectCommand({\n\t\t\tBucket: bucket,\n\t\t\tKey: key,\n\t\t\tBody: body,\n\t\t}),\n\t);\n\n\treturn res;\n}\n\ntype RecursiveArrayItem = DrizzleS3Object | RecursiveArrayItem[];\n\nexport function mapArrayParam(\n\ts3: S3Client,\n\titem: RecursiveArrayItem,\n\tdimensions: number,\n\tmode: DrizzleS3FileMode,\n\terrors: unknown[],\n\tpromises: Promise<unknown>[],\n) {\n\tif (dimensions > 1) {\n\t\tfor (const sub of item as Exclude<RecursiveArrayItem, DrizzleS3Object>) {\n\t\t\tmapArrayParam(s3, sub, dimensions - 1, mode, errors, promises);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tlet i = 0;\n\tfor (const param of item as (DrizzleS3Object | unknown)[]) {\n\t\tif (!param || typeof param !== 'object') {\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\t\tconst obj = param as DrizzleS3Object;\n\n\t\tpromises.push(\n\t\t\t(async (i: number) => {\n\t\t\t\tawait uploadFile({\n\t\t\t\t\ts3: s3,\n\t\t\t\t\tkey: obj.key,\n\t\t\t\t\tbucket: obj.bucket,\n\t\t\t\t\tdata: obj.data,\n\t\t\t\t\tmode: mode,\n\t\t\t\t});\n\n\t\t\t\tconst value = objectIdToText(obj);\n\t\t\t\t(item as unknown[])[i] = value;\n\t\t\t})(i++).catch((e) => errors.push(e)),\n\t\t);\n\t}\n}\n\nexport async function mapParams(\n\ts3: S3Client,\n\tparams: unknown[],\n\tindexes: DrizzleS3FileInputMappingInstruction[],\n\terrors: unknown[],\n) {\n\tif (!indexes.length) return;\n\n\tconst arrayIdxs: number[] = [];\n\tawait Promise.all(\n\t\tindexes.reduce((p, { index, mode, arrayDimensions }) => {\n\t\t\tconst { value: param } = params![index]! as ExtensionParam<DrizzleS3Object, string>;\n\n\t\t\tif (arrayDimensions) {\n\t\t\t\tmapArrayParam(s3, param, arrayDimensions, mode, errors, p);\n\t\t\t\tarrayIdxs.push(index);\n\n\t\t\t\treturn p;\n\t\t\t}\n\n\t\t\tif (!param || typeof param !== 'object') return p;\n\n\t\t\tp.push(\n\t\t\t\t(async (i: number) => {\n\t\t\t\t\tawait uploadFile({\n\t\t\t\t\t\ts3: s3,\n\t\t\t\t\t\tkey: param.key,\n\t\t\t\t\t\tbucket: param.bucket,\n\t\t\t\t\t\tdata: param.data,\n\t\t\t\t\t\tmode: mode,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst value = objectIdToText(param);\n\t\t\t\t\tparams![i] = value;\n\t\t\t\t})(index).catch((e) => errors.push(e)),\n\t\t\t);\n\n\t\t\treturn p;\n\t\t}, [] as Promise<unknown>[]),\n\t);\n\n\tfor (const idx of arrayIdxs) {\n\t\tparams[idx] = (<ExtensionParam<any[]>> params[idx]).value\n\t\t\t? (<ExtensionParam> params[idx]).encoder.mapToDriverValue(\n\t\t\t\t(<ExtensionParam<any[]>> params[idx]).value,\n\t\t\t)\n\t\t\t: params[idx];\n\t}\n}\n"],"mappings":"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","names":["i"]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var column_exports = {};
|
|
20
|
+
__export(column_exports, {
|
|
21
|
+
GelS3File: () => GelS3File,
|
|
22
|
+
GelS3FileBuilder: () => GelS3FileBuilder,
|
|
23
|
+
s3File: () => s3File
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(column_exports);
|
|
26
|
+
var import_entity = require("../../../entity.cjs");
|
|
27
|
+
var import_extension_core = require("../../../extension-core/index.cjs");
|
|
28
|
+
var import_gel_core = require("../../../gel-core/index.cjs");
|
|
29
|
+
var import_utils = require("../../../utils.cjs");
|
|
30
|
+
var import_common = require("../common.cjs");
|
|
31
|
+
var import_extension = require("./extension.cjs");
|
|
32
|
+
class GelS3FileBuilder extends import_gel_core.GelColumnBuilder {
|
|
33
|
+
static [import_entity.entityKind] = "GelS3FileBuilder";
|
|
34
|
+
[import_extension_core.extensionColumnConfig];
|
|
35
|
+
constructor(name, config) {
|
|
36
|
+
super(name, "custom", "GelS3File");
|
|
37
|
+
this[import_extension_core.extensionColumnConfig] = {
|
|
38
|
+
fileMode: config.mode,
|
|
39
|
+
fetchMode: "file"
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
array(size) {
|
|
43
|
+
return super.array(size);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Allows to set default to an existing file
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```
|
|
50
|
+
* fileColumn: s3File().default(sql`${bucket}:${key}`)
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @returns
|
|
54
|
+
*/
|
|
55
|
+
default(value) {
|
|
56
|
+
return super.default(value);
|
|
57
|
+
}
|
|
58
|
+
generatedAlwaysAs(as) {
|
|
59
|
+
return super.generatedAlwaysAs(as);
|
|
60
|
+
}
|
|
61
|
+
/** @internal */
|
|
62
|
+
build(table) {
|
|
63
|
+
return new GelS3File(
|
|
64
|
+
table,
|
|
65
|
+
this.config,
|
|
66
|
+
this[import_extension_core.extensionColumnConfig]
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
class GelS3File extends import_gel_core.GelColumn {
|
|
71
|
+
static [import_entity.entityKind] = "GelS3File";
|
|
72
|
+
[import_extension_core.requiredExtension] = import_extension.DrizzleGelS3Extension;
|
|
73
|
+
[import_extension_core.extensionColumnConfig];
|
|
74
|
+
constructor(table, config, extensionConfig) {
|
|
75
|
+
super(table, config);
|
|
76
|
+
this[import_extension_core.extensionColumnConfig] = extensionConfig ?? {
|
|
77
|
+
fileMode: "buffer",
|
|
78
|
+
fetchMode: "file"
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
mapToDriverValue(value) {
|
|
82
|
+
if (typeof value === "string")
|
|
83
|
+
return value;
|
|
84
|
+
return (0, import_common.objectIdToText)(value);
|
|
85
|
+
}
|
|
86
|
+
data() {
|
|
87
|
+
return new GelS3File(
|
|
88
|
+
this.table,
|
|
89
|
+
this.config,
|
|
90
|
+
{ fileMode: this[import_extension_core.extensionColumnConfig].fileMode, fetchMode: "data" }
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
// meta(): Omit<GelS3File<Omit<T, 'data'> & { data: DrizzleS3ObjectMeta }>, 'data' | 'meta' | 'presigned'> {
|
|
94
|
+
// return new GelS3File(
|
|
95
|
+
// this.table,
|
|
96
|
+
// this.config as ColumnRuntimeConfig<
|
|
97
|
+
// DrizzleS3ObjectMeta,
|
|
98
|
+
// Omit<T, 'data'> & { data: DrizzleS3ObjectMeta }
|
|
99
|
+
// >,
|
|
100
|
+
// { fileMode: this[extensionColumnConfig].fileMode, fetchMode: 'meta' },
|
|
101
|
+
// );
|
|
102
|
+
// }
|
|
103
|
+
presigned(options) {
|
|
104
|
+
return new GelS3File(
|
|
105
|
+
this.table,
|
|
106
|
+
this.config,
|
|
107
|
+
{ fileMode: this[import_extension_core.extensionColumnConfig].fileMode, fetchMode: "presigned", options }
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
getSQLType() {
|
|
111
|
+
return "text";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function s3File(a, b) {
|
|
115
|
+
const { name, config } = (0, import_utils.getColumnNameAndConfig)(a, b);
|
|
116
|
+
return new GelS3FileBuilder(name, config);
|
|
117
|
+
}
|
|
118
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
119
|
+
0 && (module.exports = {
|
|
120
|
+
GelS3File,
|
|
121
|
+
GelS3FileBuilder,
|
|
122
|
+
s3File
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=column.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/extensions/s3-file/gel/column.ts"],"sourcesContent":["import type {\n\tColumnBuilderBaseConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tHasDefault,\n\tHasGenerated,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport type { ColumnBaseConfig, /*, ColumnRuntimeConfig*/ ColumnRuntimeConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { extensionColumnConfig, requiredExtension } from '~/extension-core/index.ts';\nimport {\n\ttype GelArrayBuilder,\n\ttype GelArrayColumnBuilderBaseConfig,\n\tGelColumn,\n\tGelColumnBuilder,\n} from '~/gel-core/index.ts';\nimport type { AnyGelTable, GelTable } from '~/gel-core/table.ts';\nimport type { SQL } from '~/sql/index.ts';\nimport { type Assume, getColumnNameAndConfig } from '~/utils.ts';\nimport {\n\ttype DrizzleS3FetchMode,\n\ttype DrizzleS3FileMode,\n\ttype DrizzleS3FileModeToData,\n\ttype DrizzleS3ObjectFile,\n\ttype DrizzleS3ObjectIdentification,\n\t// type DrizzleS3ObjectMeta,\n\tobjectIdToText,\n\ttype RequestPresigningArguments,\n} from '../common.ts';\nimport { DrizzleGelS3Extension } from './extension.ts';\n\nexport type GelS3FileBuilderInitial<TName extends string, TMode extends DrizzleS3FileMode> = GelS3FileBuilder<{\n\tname: TName;\n\tdataType: 'custom';\n\tcolumnType: 'GelS3File';\n\tdata: DrizzleS3ObjectFile<DrizzleS3FileModeToData[TMode]>;\n\tenumValues: undefined;\n\tdriverParam: string;\n}>;\n\nexport interface GelS3FileArrayBuilder<\n\tT extends GelArrayColumnBuilderBaseConfig,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string> | GelArrayColumnBuilderBaseConfig,\n> extends GelArrayBuilder<T, TBase> {\n\tdefault(value: SQL<unknown>): HasDefault<this>;\n\tgeneratedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, { type: 'always' }>;\n\tarray<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'GelArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t\tsize: TSize;\n\t\t\tbaseBuilder: T;\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t>;\n}\n\nexport class GelS3FileBuilder<\n\tT extends ColumnBuilderBaseConfig<'custom', 'GelS3File'>,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends GelColumnBuilder<T, TRuntimeConfig, TTypeConfig> {\n\tstatic override readonly [entityKind]: string = 'GelS3FileBuilder';\n\treadonly [extensionColumnConfig]: GelS3FileExtensionColumnConfig;\n\n\tconstructor(\n\t\tname: T['name'],\n\t\tconfig: GelS3FileConfig,\n\t) {\n\t\tsuper(name, 'custom', 'GelS3File');\n\t\tthis[extensionColumnConfig] = {\n\t\t\tfileMode: config.mode,\n\t\t\tfetchMode: 'file',\n\t\t};\n\t}\n\n\toverride array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'GelArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t\tsize: TSize;\n\t\t\tbaseBuilder: T;\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn super.array(size) as any;\n\t}\n\n\t/**\n\t * Allows to set default to an existing file\n\t *\n\t * @example\n\t * ```\n\t * fileColumn: s3File().default(sql`${bucket}:${key}`)\n\t * ```\n\t *\n\t * @returns\n\t */\n\toverride default(value: SQL<unknown>): HasDefault<this> {\n\t\treturn super.default(value);\n\t}\n\n\toverride generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, { type: 'always' }> {\n\t\treturn super.generatedAlwaysAs(as);\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyGelTable<{ name: TTableName }>,\n\t): GelS3File<MakeColumnConfig<T, TTableName>> {\n\t\treturn new GelS3File<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t\tthis[extensionColumnConfig],\n\t\t);\n\t}\n}\n\nexport type GelS3FileExtensionColumnConfig = {\n\tfetchMode: DrizzleS3FetchMode;\n\tfileMode: DrizzleS3FileMode;\n\toptions?: RequestPresigningArguments;\n};\n\nexport class GelS3File<T extends ColumnBaseConfig<'custom', 'GelS3File'> = ColumnBaseConfig<'custom', 'GelS3File'>>\n\textends GelColumn<T, { enumValues: T['enumValues'] }>\n{\n\tstatic override readonly [entityKind]: string = 'GelS3File';\n\toverride [requiredExtension] = DrizzleGelS3Extension;\n\t[extensionColumnConfig]: GelS3FileExtensionColumnConfig;\n\n\tconstructor(\n\t\ttable: GelTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], T>,\n\t\textensionConfig?: GelS3FileExtensionColumnConfig,\n\t) {\n\t\tsuper(table, config);\n\n\t\tthis[extensionColumnConfig] = extensionConfig ?? {\n\t\t\tfileMode: 'buffer',\n\t\t\tfetchMode: 'file',\n\t\t};\n\t}\n\n\toverride mapToDriverValue(value: unknown): string {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn objectIdToText(value as DrizzleS3ObjectIdentification);\n\t}\n\n\tdata(): GelColumn<Omit<T, 'data'> & { data: Assume<T['data'], DrizzleS3ObjectFile>['data'] }> {\n\t\treturn new GelS3File(\n\t\t\tthis.table,\n\t\t\tthis.config as ColumnRuntimeConfig<\n\t\t\t\tDrizzleS3ObjectFile['data'],\n\t\t\t\tOmit<T, 'data'> & { data: Assume<T['data'], DrizzleS3ObjectFile>['data'] }\n\t\t\t>,\n\t\t\t{ fileMode: this[extensionColumnConfig].fileMode, fetchMode: 'data' },\n\t\t);\n\t}\n\n\t// meta(): Omit<GelS3File<Omit<T, 'data'> & { data: DrizzleS3ObjectMeta }>, 'data' | 'meta' | 'presigned'> {\n\t// \treturn new GelS3File(\n\t// \t\tthis.table,\n\t// \t\tthis.config as ColumnRuntimeConfig<\n\t// \t\t\tDrizzleS3ObjectMeta,\n\t// \t\t\tOmit<T, 'data'> & { data: DrizzleS3ObjectMeta }\n\t// \t\t>,\n\t// \t\t{ fileMode: this[extensionColumnConfig].fileMode, fetchMode: 'meta' },\n\t// \t);\n\t// }\n\n\tpresigned(options?: RequestPresigningArguments): GelColumn<Omit<T, 'data'> & { data: string }> {\n\t\treturn new GelS3File(\n\t\t\tthis.table,\n\t\t\tthis.config as ColumnRuntimeConfig<\n\t\t\t\tstring,\n\t\t\t\tOmit<T, 'data'> & { data: string }\n\t\t\t>,\n\t\t\t{ fileMode: this[extensionColumnConfig].fileMode, fetchMode: 'presigned', options },\n\t\t);\n\t}\n\n\tgetSQLType(): string {\n\t\treturn 'text';\n\t}\n}\n\nexport interface GelS3FileConfig<\n\tTMode extends DrizzleS3FileMode = DrizzleS3FileMode,\n> {\n\tmode: TMode;\n}\n\nexport function s3File<TName extends string, TMode extends DrizzleS3FileMode>(\n\tconfig: GelS3FileConfig<TMode>,\n): GelS3FileBuilderInitial<TName, TMode>;\nexport function s3File<TName extends string, TMode extends DrizzleS3FileMode>(\n\tname: TName,\n\tconfig: GelS3FileConfig<TMode>,\n): GelS3FileBuilderInitial<TName, TMode>;\nexport function s3File(a: string | GelS3FileConfig, b?: GelS3FileConfig): any {\n\tconst { name, config } = getColumnNameAndConfig<GelS3FileConfig>(a, b);\n\treturn new GelS3FileBuilder(name, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,oBAA2B;AAC3B,4BAAyD;AACzD,sBAKO;AAGP,mBAAoD;AACpD,oBASO;AACP,uBAAsC;AAkC/B,MAAM,yBAIH,iCAAiD;AAAA,EAC1D,QAA0B,wBAAU,IAAY;AAAA,EAChD,CAAU,2CAAqB;AAAA,EAE/B,YACC,MACA,QACC;AACD,UAAM,MAAM,UAAU,WAAW;AACjC,SAAK,2CAAqB,IAAI;AAAA,MAC7B,UAAU,OAAO;AAAA,MACjB,WAAW;AAAA,IACZ;AAAA,EACD;AAAA,EAES,MAAoD,MAc3D;AACD,WAAO,MAAM,MAAM,IAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYS,QAAQ,OAAuC;AACvD,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AAAA,EAES,kBAAkB,IAAwE;AAClG,WAAO,MAAM,kBAAkB,EAAE;AAAA,EAClC;AAAA;AAAA,EAGS,MACR,OAC6C;AAC7C,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,MACL,KAAK,2CAAqB;AAAA,IAC3B;AAAA,EACD;AACD;AAQO,MAAM,kBACJ,0BACT;AAAA,EACC,QAA0B,wBAAU,IAAY;AAAA,EAChD,CAAU,uCAAiB,IAAI;AAAA,EAC/B,CAAC,2CAAqB;AAAA,EAEtB,YACC,OACA,QACA,iBACC;AACD,UAAM,OAAO,MAAM;AAEnB,SAAK,2CAAqB,IAAI,mBAAmB;AAAA,MAChD,UAAU;AAAA,MACV,WAAW;AAAA,IACZ;AAAA,EACD;AAAA,EAES,iBAAiB,OAAwB;AACjD,QAAI,OAAO,UAAU;AAAU,aAAO;AAEtC,eAAO,8BAAe,KAAsC;AAAA,EAC7D;AAAA,EAEA,OAA8F;AAC7F,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MAIL,EAAE,UAAU,KAAK,2CAAqB,EAAE,UAAU,WAAW,OAAO;AAAA,IACrE;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,UAAU,SAAqF;AAC9F,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MAIL,EAAE,UAAU,KAAK,2CAAqB,EAAE,UAAU,WAAW,aAAa,QAAQ;AAAA,IACnF;AAAA,EACD;AAAA,EAEA,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAeO,SAAS,OAAO,GAA6B,GAA0B;AAC7E,QAAM,EAAE,MAAM,OAAO,QAAI,qCAAwC,GAAG,CAAC;AACrE,SAAO,IAAI,iBAAiB,MAAM,MAAM;AACzC;","names":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, ColumnDataType, HasDefault, HasGenerated } from "../../../column-builder.cjs";
|
|
2
|
+
import type { ColumnBaseConfig } from "../../../column.cjs";
|
|
3
|
+
import { entityKind } from "../../../entity.cjs";
|
|
4
|
+
import { extensionColumnConfig, requiredExtension } from "../../../extension-core/index.cjs";
|
|
5
|
+
import { type GelArrayBuilder, type GelArrayColumnBuilderBaseConfig, GelColumn, GelColumnBuilder } from "../../../gel-core/index.cjs";
|
|
6
|
+
import type { GelTable } from "../../../gel-core/table.cjs";
|
|
7
|
+
import type { SQL } from "../../../sql/index.cjs";
|
|
8
|
+
import { type Assume } from "../../../utils.cjs";
|
|
9
|
+
import { type DrizzleS3FetchMode, type DrizzleS3FileMode, type DrizzleS3FileModeToData, type DrizzleS3ObjectFile, type RequestPresigningArguments } from "../common.cjs";
|
|
10
|
+
import { DrizzleGelS3Extension } from "./extension.cjs";
|
|
11
|
+
export type GelS3FileBuilderInitial<TName extends string, TMode extends DrizzleS3FileMode> = GelS3FileBuilder<{
|
|
12
|
+
name: TName;
|
|
13
|
+
dataType: 'custom';
|
|
14
|
+
columnType: 'GelS3File';
|
|
15
|
+
data: DrizzleS3ObjectFile<DrizzleS3FileModeToData[TMode]>;
|
|
16
|
+
enumValues: undefined;
|
|
17
|
+
driverParam: string;
|
|
18
|
+
}>;
|
|
19
|
+
export interface GelS3FileArrayBuilder<T extends GelArrayColumnBuilderBaseConfig, TBase extends ColumnBuilderBaseConfig<ColumnDataType, string> | GelArrayColumnBuilderBaseConfig> extends GelArrayBuilder<T, TBase> {
|
|
20
|
+
default(value: SQL<unknown>): HasDefault<this>;
|
|
21
|
+
generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, {
|
|
22
|
+
type: 'always';
|
|
23
|
+
}>;
|
|
24
|
+
array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<{
|
|
25
|
+
name: T['name'];
|
|
26
|
+
dataType: 'array';
|
|
27
|
+
columnType: 'GelArray';
|
|
28
|
+
data: T['data'][];
|
|
29
|
+
driverParam: T['driverParam'][] | string;
|
|
30
|
+
enumValues: T['enumValues'];
|
|
31
|
+
size: TSize;
|
|
32
|
+
baseBuilder: T;
|
|
33
|
+
} & (T extends {
|
|
34
|
+
notNull: true;
|
|
35
|
+
} ? {
|
|
36
|
+
notNull: true;
|
|
37
|
+
} : {}) & (T extends {
|
|
38
|
+
hasDefault: true;
|
|
39
|
+
} ? {
|
|
40
|
+
hasDefault: true;
|
|
41
|
+
} : {}), T>;
|
|
42
|
+
}
|
|
43
|
+
export declare class GelS3FileBuilder<T extends ColumnBuilderBaseConfig<'custom', 'GelS3File'>, TRuntimeConfig extends object = {}, TTypeConfig extends object = {}> extends GelColumnBuilder<T, TRuntimeConfig, TTypeConfig> {
|
|
44
|
+
static readonly [entityKind]: string;
|
|
45
|
+
readonly [extensionColumnConfig]: GelS3FileExtensionColumnConfig;
|
|
46
|
+
constructor(name: T['name'], config: GelS3FileConfig);
|
|
47
|
+
array<TSize extends number | undefined = undefined>(size?: TSize): GelS3FileArrayBuilder<{
|
|
48
|
+
name: T['name'];
|
|
49
|
+
dataType: 'array';
|
|
50
|
+
columnType: 'GelArray';
|
|
51
|
+
data: T['data'][];
|
|
52
|
+
driverParam: T['driverParam'][] | string;
|
|
53
|
+
enumValues: T['enumValues'];
|
|
54
|
+
size: TSize;
|
|
55
|
+
baseBuilder: T;
|
|
56
|
+
} & (T extends {
|
|
57
|
+
notNull: true;
|
|
58
|
+
} ? {
|
|
59
|
+
notNull: true;
|
|
60
|
+
} : {}) & (T extends {
|
|
61
|
+
hasDefault: true;
|
|
62
|
+
} ? {
|
|
63
|
+
hasDefault: true;
|
|
64
|
+
} : {}), T>;
|
|
65
|
+
/**
|
|
66
|
+
* Allows to set default to an existing file
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```
|
|
70
|
+
* fileColumn: s3File().default(sql`${bucket}:${key}`)
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @returns
|
|
74
|
+
*/
|
|
75
|
+
default(value: SQL<unknown>): HasDefault<this>;
|
|
76
|
+
generatedAlwaysAs(as: SQL<unknown> | (() => SQL)): HasGenerated<this, {
|
|
77
|
+
type: 'always';
|
|
78
|
+
}>;
|
|
79
|
+
}
|
|
80
|
+
export type GelS3FileExtensionColumnConfig = {
|
|
81
|
+
fetchMode: DrizzleS3FetchMode;
|
|
82
|
+
fileMode: DrizzleS3FileMode;
|
|
83
|
+
options?: RequestPresigningArguments;
|
|
84
|
+
};
|
|
85
|
+
export declare class GelS3File<T extends ColumnBaseConfig<'custom', 'GelS3File'> = ColumnBaseConfig<'custom', 'GelS3File'>> extends GelColumn<T, {
|
|
86
|
+
enumValues: T['enumValues'];
|
|
87
|
+
}> {
|
|
88
|
+
static readonly [entityKind]: string;
|
|
89
|
+
[requiredExtension]: typeof DrizzleGelS3Extension;
|
|
90
|
+
[extensionColumnConfig]: GelS3FileExtensionColumnConfig;
|
|
91
|
+
constructor(table: GelTable, config: ColumnBuilderRuntimeConfig<T['data'], T>, extensionConfig?: GelS3FileExtensionColumnConfig);
|
|
92
|
+
mapToDriverValue(value: unknown): string;
|
|
93
|
+
data(): GelColumn<Omit<T, 'data'> & {
|
|
94
|
+
data: Assume<T['data'], DrizzleS3ObjectFile>['data'];
|
|
95
|
+
}>;
|
|
96
|
+
presigned(options?: RequestPresigningArguments): GelColumn<Omit<T, 'data'> & {
|
|
97
|
+
data: string;
|
|
98
|
+
}>;
|
|
99
|
+
getSQLType(): string;
|
|
100
|
+
}
|
|
101
|
+
export interface GelS3FileConfig<TMode extends DrizzleS3FileMode = DrizzleS3FileMode> {
|
|
102
|
+
mode: TMode;
|
|
103
|
+
}
|
|
104
|
+
export declare function s3File<TName extends string, TMode extends DrizzleS3FileMode>(config: GelS3FileConfig<TMode>): GelS3FileBuilderInitial<TName, TMode>;
|
|
105
|
+
export declare function s3File<TName extends string, TMode extends DrizzleS3FileMode>(name: TName, config: GelS3FileConfig<TMode>): GelS3FileBuilderInitial<TName, TMode>;
|