@fragno-dev/db 0.1.14 → 0.2.0
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/.turbo/turbo-build.log +242 -139
- package/CHANGELOG.md +47 -0
- package/README.md +123 -8
- package/dist/adapters/adapters.d.ts +19 -5
- package/dist/adapters/adapters.d.ts.map +1 -1
- package/dist/adapters/adapters.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -19
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +7 -47
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/generate.d.ts +7 -1
- package/dist/adapters/drizzle/generate.d.ts.map +1 -1
- package/dist/adapters/drizzle/generate.js +46 -45
- package/dist/adapters/drizzle/generate.js.map +1 -1
- package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
- package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
- package/dist/adapters/generic-sql/driver-config.js +94 -0
- package/dist/adapters/generic-sql/driver-config.js.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
- package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
- package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
- package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
- package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
- package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
- package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
- package/dist/adapters/generic-sql/migration/executor.js +18 -0
- package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
- package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
- package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
- package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
- package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
- package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
- package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/select-builder.js +69 -0
- package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
- package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
- package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/where-builder.js +129 -0
- package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
- package/dist/adapters/generic-sql/result-interpreter.js +74 -0
- package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
- package/dist/adapters/generic-sql/uow-decoder.js +105 -0
- package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
- package/dist/adapters/generic-sql/uow-encoder.js +93 -0
- package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
- package/dist/adapters/kysely/kysely-adapter.d.ts +5 -16
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +6 -159
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +48 -62
- package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
- package/dist/adapters/{kysely/kysely-shared.d.ts → shared/table-name-mapper.d.ts} +3 -2
- package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
- package/dist/adapters/shared/table-name-mapper.js +43 -0
- package/dist/adapters/shared/table-name-mapper.js.map +1 -0
- package/dist/adapters/shared/uow-operation-compiler.js +105 -0
- package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
- package/dist/db-fragment-definition-builder.d.ts +186 -0
- package/dist/db-fragment-definition-builder.d.ts.map +1 -0
- package/dist/db-fragment-definition-builder.js +207 -0
- package/dist/db-fragment-definition-builder.js.map +1 -0
- package/dist/fragments/internal-fragment.d.ts +53 -0
- package/dist/fragments/internal-fragment.d.ts.map +1 -0
- package/dist/fragments/internal-fragment.js +111 -0
- package/dist/fragments/internal-fragment.js.map +1 -0
- package/dist/hooks/hooks.d.ts +51 -0
- package/dist/hooks/hooks.d.ts.map +1 -0
- package/dist/hooks/hooks.js +88 -0
- package/dist/hooks/hooks.js.map +1 -0
- package/dist/migration-engine/generation-engine.d.ts +0 -2
- package/dist/migration-engine/generation-engine.d.ts.map +1 -1
- package/dist/migration-engine/generation-engine.js +38 -56
- package/dist/migration-engine/generation-engine.js.map +1 -1
- package/dist/mod.d.ts +35 -23
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +48 -45
- package/dist/mod.js.map +1 -1
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +165 -0
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
- package/dist/packages/fragno/dist/api/bind-services.js +20 -0
- package/dist/packages/fragno/dist/api/bind-services.js.map +1 -0
- package/dist/packages/fragno/dist/api/error.js +48 -0
- package/dist/packages/fragno/dist/api/error.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js +320 -0
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js +525 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragno-response.js +73 -0
- package/dist/packages/fragno/dist/api/fragno-response.js.map +1 -0
- package/dist/packages/fragno/dist/api/internal/response-stream.js +81 -0
- package/dist/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
- package/dist/packages/fragno/dist/api/internal/route.js +10 -0
- package/dist/packages/fragno/dist/api/internal/route.js.map +1 -0
- package/dist/packages/fragno/dist/api/mutable-request-state.js +97 -0
- package/dist/packages/fragno/dist/api/mutable-request-state.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-context-storage.js +43 -0
- package/dist/packages/fragno/dist/api/request-context-storage.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-input-context.js +118 -0
- package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-middleware.js +83 -0
- package/dist/packages/fragno/dist/api/request-middleware.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-output-context.js +119 -0
- package/dist/packages/fragno/dist/api/request-output-context.js.map +1 -0
- package/dist/packages/fragno/dist/api/route.js +17 -0
- package/dist/packages/fragno/dist/api/route.js.map +1 -0
- package/dist/packages/fragno/dist/internal/symbols.js +10 -0
- package/dist/packages/fragno/dist/internal/symbols.js.map +1 -0
- package/dist/query/column-defaults.js +27 -0
- package/dist/query/column-defaults.js.map +1 -0
- package/dist/query/cursor.d.ts +14 -6
- package/dist/query/cursor.d.ts.map +1 -1
- package/dist/query/cursor.js +16 -7
- package/dist/query/cursor.js.map +1 -1
- package/dist/query/orm/orm.d.ts +1 -1
- package/dist/query/orm/orm.js.map +1 -1
- package/dist/query/serialize/create-sql-serializer.js +30 -0
- package/dist/query/serialize/create-sql-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
- package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
- package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
- package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
- package/dist/query/serialize/sql-serializer.js +67 -0
- package/dist/query/serialize/sql-serializer.js.map +1 -0
- package/dist/query/{query.d.ts → simple-query-interface.d.ts} +6 -6
- package/dist/query/simple-query-interface.d.ts.map +1 -0
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts +133 -0
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
- package/dist/query/unit-of-work/execute-unit-of-work.js +197 -0
- package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
- package/dist/query/unit-of-work/retry-policy.d.ts +88 -0
- package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
- package/dist/query/unit-of-work/retry-policy.js +61 -0
- package/dist/query/unit-of-work/retry-policy.js.map +1 -0
- package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +145 -58
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
- package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +435 -198
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
- package/dist/query/value-decoding.js +71 -0
- package/dist/query/value-decoding.js.map +1 -0
- package/dist/query/value-encoding.js +124 -0
- package/dist/query/value-encoding.js.map +1 -0
- package/dist/schema/create.d.ts +3 -0
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +4 -0
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
- package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
- package/dist/schema/type-conversion/dialect/mysql.js +57 -0
- package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
- package/dist/schema/type-conversion/dialect/postgres.js +56 -0
- package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
- package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
- package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
- package/dist/schema/type-conversion/type-mapping.js +63 -0
- package/dist/schema/type-conversion/type-mapping.js.map +1 -0
- package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
- package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
- package/dist/sql-driver/connection/connection-provider.js +19 -0
- package/dist/sql-driver/connection/connection-provider.js.map +1 -0
- package/dist/sql-driver/connection/single-connection-provider.js +23 -0
- package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
- package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
- package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
- package/dist/sql-driver/dialects/dialects.d.ts +2 -0
- package/dist/sql-driver/dialects/dialects.js +3 -0
- package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
- package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
- package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
- package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
- package/dist/sql-driver/driver/runtime-driver.js +56 -0
- package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
- package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
- package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
- package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
- package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
- package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
- package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
- package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
- package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
- package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver-adapter.js +68 -0
- package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
- package/dist/sql-driver/sql-driver.d.ts +38 -0
- package/dist/sql-driver/sql-driver.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver.js +1 -0
- package/dist/sql-driver/sql.js +50 -0
- package/dist/sql-driver/sql.js.map +1 -0
- package/dist/with-database.d.ts +32 -0
- package/dist/with-database.d.ts.map +1 -0
- package/dist/with-database.js +34 -0
- package/dist/with-database.js.map +1 -0
- package/package.json +43 -9
- package/src/adapters/adapters.ts +23 -4
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +140 -185
- package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +187 -55
- package/src/adapters/drizzle/drizzle-adapter.ts +14 -93
- package/src/adapters/drizzle/generate.test.ts +102 -269
- package/src/adapters/drizzle/generate.ts +89 -63
- package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
- package/src/adapters/drizzle/shared.ts +0 -34
- package/src/adapters/drizzle/test-utils.ts +36 -5
- package/src/adapters/generic-sql/README.md +14 -0
- package/src/adapters/generic-sql/driver-config.ts +144 -0
- package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
- package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
- package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
- package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
- package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
- package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
- package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
- package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
- package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
- package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
- package/src/adapters/generic-sql/migration/executor.ts +33 -0
- package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
- package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
- package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
- package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
- package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
- package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
- package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
- package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
- package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
- package/src/adapters/generic-sql/query/select-builder.ts +137 -0
- package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
- package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
- package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
- package/src/adapters/generic-sql/query/where-builder.ts +211 -0
- package/src/adapters/generic-sql/result-interpreter.ts +102 -0
- package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
- package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
- package/src/adapters/generic-sql/uow-decoder.ts +152 -0
- package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
- package/src/adapters/generic-sql/uow-encoder.ts +131 -0
- package/src/adapters/kysely/kysely-adapter-pglite.test.ts +90 -96
- package/src/adapters/kysely/kysely-adapter-sqlocal.test.ts +215 -0
- package/src/adapters/kysely/kysely-adapter.ts +10 -242
- package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +111 -106
- package/src/adapters/shared/table-name-mapper.ts +50 -0
- package/src/adapters/shared/uow-operation-compiler.ts +211 -0
- package/src/db-fragment-definition-builder.test.ts +887 -0
- package/src/db-fragment-definition-builder.ts +737 -0
- package/src/db-fragment-instantiator.test.ts +543 -0
- package/src/db-fragment-integration.test.ts +406 -0
- package/src/fragments/internal-fragment.test.ts +549 -0
- package/src/fragments/internal-fragment.ts +249 -0
- package/src/hooks/hooks.test.ts +575 -0
- package/src/hooks/hooks.ts +179 -0
- package/src/migration-engine/generation-engine.test.ts +60 -27
- package/src/migration-engine/generation-engine.ts +99 -92
- package/src/mod.ts +139 -78
- package/src/query/column-defaults.ts +49 -0
- package/src/query/cursor.test.ts +147 -3
- package/src/query/cursor.ts +25 -8
- package/src/query/orm/orm.ts +1 -1
- package/src/query/query-type.test.ts +9 -9
- package/src/query/serialize/create-sql-serializer.ts +34 -0
- package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
- package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
- package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
- package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
- package/src/query/serialize/sql-serializer.ts +143 -0
- package/src/query/{query.ts → simple-query-interface.ts} +4 -4
- package/src/query/unit-of-work/execute-unit-of-work.test.ts +1310 -0
- package/src/query/unit-of-work/execute-unit-of-work.ts +504 -0
- package/src/query/unit-of-work/retry-policy.test.ts +217 -0
- package/src/query/unit-of-work/retry-policy.ts +141 -0
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +831 -0
- package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +7 -5
- package/src/query/unit-of-work/unit-of-work.test.ts +1716 -0
- package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +716 -420
- package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -298
- package/src/query/value-decoding.ts +113 -0
- package/src/query/value-encoding.test.ts +390 -0
- package/src/query/value-encoding.ts +168 -0
- package/src/schema/create.test.ts +5 -1
- package/src/schema/create.ts +5 -0
- package/src/schema/serialize.test.ts +165 -407
- package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
- package/src/schema/type-conversion/dialect/mysql.ts +64 -0
- package/src/schema/type-conversion/dialect/postgres.ts +62 -0
- package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
- package/src/schema/type-conversion/type-mapping.test.ts +137 -0
- package/src/schema/type-conversion/type-mapping.ts +153 -0
- package/src/shared/connection-pool.ts +5 -5
- package/src/sql-driver/better-sqlite3.test.ts +126 -0
- package/src/sql-driver/connection/connection-provider.ts +27 -0
- package/src/sql-driver/connection/single-connection-provider.ts +42 -0
- package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
- package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
- package/src/sql-driver/dialects/dialects.ts +1 -0
- package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
- package/src/sql-driver/driver/runtime-driver.ts +91 -0
- package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
- package/src/sql-driver/query-executor/plugin.ts +22 -0
- package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
- package/src/sql-driver/query-executor/query-executor.ts +44 -0
- package/src/sql-driver/sql-driver-adapter.ts +96 -0
- package/src/sql-driver/sql-driver.ts +53 -0
- package/src/sql-driver/sql.ts +57 -0
- package/src/sql-driver/sqlocal.test.ts +117 -0
- package/src/with-database.ts +152 -0
- package/tsdown.config.ts +8 -2
- package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
- package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
- package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -315
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -116
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -149
- package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
- package/dist/adapters/drizzle/join-column-utils.js +0 -28
- package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
- package/dist/adapters/drizzle/shared.d.ts +0 -14
- package/dist/adapters/drizzle/shared.d.ts.map +0 -1
- package/dist/adapters/drizzle/shared.js +0 -35
- package/dist/adapters/drizzle/shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
- package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
- package/dist/adapters/kysely/kysely-query-builder.js +0 -321
- package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
- package/dist/adapters/kysely/kysely-query-compiler.js +0 -66
- package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-query.d.ts +0 -22
- package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-query.js +0 -223
- package/dist/adapters/kysely/kysely-query.js.map +0 -1
- package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-shared.js +0 -18
- package/dist/adapters/kysely/kysely-shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-compiler.js +0 -170
- package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-executor.js +0 -89
- package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-base.js +0 -128
- package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-factory.js +0 -34
- package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
- package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
- package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
- package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
- package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
- package/dist/adapters/kysely/migration/execute.js +0 -34
- package/dist/adapters/kysely/migration/execute.js.map +0 -1
- package/dist/bind-services.d.ts +0 -7
- package/dist/bind-services.d.ts.map +0 -1
- package/dist/bind-services.js +0 -14
- package/dist/bind-services.js.map +0 -1
- package/dist/fragment.d.ts +0 -173
- package/dist/fragment.d.ts.map +0 -1
- package/dist/fragment.js +0 -191
- package/dist/fragment.js.map +0 -1
- package/dist/migration-engine/create.d.ts +0 -37
- package/dist/migration-engine/create.d.ts.map +0 -1
- package/dist/migration-engine/create.js +0 -58
- package/dist/migration-engine/create.js.map +0 -1
- package/dist/migration-engine/shared.d.ts +0 -112
- package/dist/migration-engine/shared.d.ts.map +0 -1
- package/dist/query/query.d.ts.map +0 -1
- package/dist/query/result-transform.js +0 -168
- package/dist/query/result-transform.js.map +0 -1
- package/dist/query/unit-of-work.d.ts.map +0 -1
- package/dist/query/unit-of-work.js.map +0 -1
- package/dist/schema/serialize.js +0 -106
- package/dist/schema/serialize.js.map +0 -1
- package/dist/shared/settings-schema.js +0 -36
- package/dist/shared/settings-schema.js.map +0 -1
- package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -170
- package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
- package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1383
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -636
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -218
- package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -276
- package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
- package/src/adapters/drizzle/join-column-utils.ts +0 -39
- package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
- package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
- package/src/adapters/kysely/kysely-query-builder.ts +0 -666
- package/src/adapters/kysely/kysely-query-compiler.ts +0 -132
- package/src/adapters/kysely/kysely-query.test.ts +0 -498
- package/src/adapters/kysely/kysely-query.ts +0 -390
- package/src/adapters/kysely/kysely-shared.ts +0 -23
- package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -998
- package/src/adapters/kysely/kysely-uow-compiler.ts +0 -318
- package/src/adapters/kysely/kysely-uow-executor.ts +0 -145
- package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -811
- package/src/adapters/kysely/migration/execute-base.ts +0 -256
- package/src/adapters/kysely/migration/execute-factory.ts +0 -53
- package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
- package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
- package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
- package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
- package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
- package/src/adapters/kysely/migration/execute.ts +0 -50
- package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
- package/src/bind-services.test.ts +0 -214
- package/src/bind-services.ts +0 -37
- package/src/db-fragment.test.ts +0 -800
- package/src/fragment.ts +0 -727
- package/src/query/result-transform.ts +0 -271
- package/src/query/unit-of-work-multi-schema.test.ts +0 -64
- package/src/query/unit-of-work.test.ts +0 -943
- package/src/schema/serialize.ts +0 -396
- package/src/shared/settings-schema.ts +0 -61
- package/src/uow-context-integration.test.ts +0 -102
- package/src/uow-context.test.ts +0 -182
- /package/dist/query/{query.js → simple-query-interface.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialect-adapter.d.ts","names":[],"sources":["../../../src/sql-driver/dialect-adapter/dialect-adapter.ts"],"sourcesContent":[],"mappings":";UAAiB,cAAA;EAAA,SAAA,iBAAc,EAAA,OAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { DatabaseIntrospector, Dialect, Driver, Kysely, QueryCompiler, SqliteAdapter } from "kysely";
|
|
2
|
+
|
|
3
|
+
//#region src/sql-driver/dialects/durable-object-dialect.d.ts
|
|
4
|
+
interface DurableObjectId {
|
|
5
|
+
toString(): string;
|
|
6
|
+
equals(other: DurableObjectId): boolean;
|
|
7
|
+
readonly name?: string;
|
|
8
|
+
}
|
|
9
|
+
interface DurableObjectTransaction {
|
|
10
|
+
rollback(): void;
|
|
11
|
+
}
|
|
12
|
+
type SqlStorageValue = ArrayBuffer | string | number | null;
|
|
13
|
+
interface SqlStorage {
|
|
14
|
+
exec<T extends Record<string, SqlStorageValue>>(query: string, ...bindings: any[]): SqlStorageCursor<T>;
|
|
15
|
+
Cursor: typeof SqlStorageCursor;
|
|
16
|
+
Statement: typeof SqlStorageStatement;
|
|
17
|
+
}
|
|
18
|
+
declare abstract class SqlStorageStatement {}
|
|
19
|
+
declare abstract class SqlStorageCursor<T extends Record<string, SqlStorageValue>> {
|
|
20
|
+
next(): {
|
|
21
|
+
done?: false;
|
|
22
|
+
value: T;
|
|
23
|
+
} | {
|
|
24
|
+
done: true;
|
|
25
|
+
value?: never;
|
|
26
|
+
};
|
|
27
|
+
toArray(): T[];
|
|
28
|
+
one(): T;
|
|
29
|
+
raw<U extends SqlStorageValue[]>(): IterableIterator<U>;
|
|
30
|
+
columnNames: string[];
|
|
31
|
+
get rowsRead(): number;
|
|
32
|
+
get rowsWritten(): number;
|
|
33
|
+
[Symbol.iterator](): IterableIterator<T>;
|
|
34
|
+
}
|
|
35
|
+
interface DurableObjectStorage {
|
|
36
|
+
transaction<T>(closure: (txn: DurableObjectTransaction) => Promise<T>): Promise<T>;
|
|
37
|
+
readonly sql: SqlStorage;
|
|
38
|
+
}
|
|
39
|
+
interface DurableObjectState {
|
|
40
|
+
readonly id: DurableObjectId;
|
|
41
|
+
readonly storage: DurableObjectStorage;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Config for the Durable Objects dialect. Pass your Durable Object state to this object.
|
|
45
|
+
*/
|
|
46
|
+
interface DODialectConfig {
|
|
47
|
+
ctx: DurableObjectState;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* DO dialect that adds support for [Cloudflare Durable Objects][0] in [Kysely][1].
|
|
51
|
+
* The constructor takes the Durable Object state context.
|
|
52
|
+
*
|
|
53
|
+
* ```typescript
|
|
54
|
+
* new DurableObjectDialect({
|
|
55
|
+
* ctx: this.ctx,
|
|
56
|
+
* })
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* [0]: https://developers.cloudflare.com/durable-objects/
|
|
60
|
+
* [1]: https://github.com/koskimas/kysely
|
|
61
|
+
*/
|
|
62
|
+
declare class DurableObjectDialect implements Dialect {
|
|
63
|
+
#private;
|
|
64
|
+
constructor(config: DODialectConfig);
|
|
65
|
+
createAdapter(): SqliteAdapter;
|
|
66
|
+
createDriver(): Driver;
|
|
67
|
+
createQueryCompiler(): QueryCompiler;
|
|
68
|
+
createIntrospector(db: Kysely<unknown>): DatabaseIntrospector;
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { DODialectConfig, DurableObjectDialect };
|
|
72
|
+
//# sourceMappingURL=durable-object-dialect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-object-dialect.d.ts","names":[],"sources":["../../../src/sql-driver/dialects/durable-object-dialect.ts"],"sourcesContent":[],"mappings":";;;UAcU,eAAA;;EAAA,MAAA,CAAA,KAAA,EAEM,eAFS,CAET,EAAA,OAAA;EAIN,SAAA,IAAA,CAAA,EAAA,MAAA;AAAwB;AAIA,UAJxB,wBAAA,CAMU;EACY,QAAA,EAAA,EAAA,IAAA;;KAH3B,eAAA,GAAkB,WAOD,GAAA,MAAA,GAAA,MAAA,GAAA,IAAA;UALZ,UAAA,CAKL;EACY,IAAA,CAAA,UALA,MAKA,CAAA,MAAA,EALe,eAKf,CAAA,CAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,QAAA,EAAA,GAAA,EAAA,CAAA,EADZ,gBACY,CADK,CACL,CAAA;EACG,MAAA,EAAA,OADH,gBACG;EAAmB,SAAA,EAAA,OAAnB,mBAAmB;AAAA;AAGG,uBAAnB,mBAAA,CACgB;uBAAhB,gBAA2B,CAAA,UAAA,MAAA,CAAA,MAAA,EAAe,eAAf,CAAA,CAAA,CAAA;EAInC,IAAA,CAAA,CAAA,EAAA;IAMF,IAAA,CAAA,EAAA,KAAA;IACJ,KAAA,EAPM,CAON;EACO,CAAA,GAAA;IAAuC,IAAA,EAAA,IAAA;IAAjB,KAAA,CAAA,EAAA,KAAA;EAIE,CAAA;EAAjB,OAAA,CAAA,CAAA,EANV,CAMU,EAAA;EAApB,GAAA,CAAA,CAAO,EALD,CAKC;EAAQ,GAAA,CAAA,UAJF,eAIE,EAAA,CAAA,CAAA,CAAA,EAJoB,gBAIpB,CAJqC,CAIrC,CAAA;EAGR,WAAA,EAAA,MAAA,EAAA;EACsB,IAAA,QAAA,CAAA,CAAA,EAAA,MAAA;EAAqC,IAAA,WAAA,CAAA,CAAA,EAAA,MAAA;EAAR,CAJ1D,MAAA,CAAO,QAAA,GAImD,EAJtC,gBAIsC,CAJrB,CAIqB,CAAA;;UADnD,oBAAA,CACgE;EAE1D,WAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,GAAA,EAFgB,wBAEhB,EAAA,GAF6C,OAE7C,CAFqD,CAErD,CAAA,CAAA,EAF0D,OAE1D,CAFkE,CAElE,CAAA;EAAU,SAAA,GAAA,EAAV,UAAU;AAAA;AAW1B,UARU,kBAAA,CAQsB;EAiBnB,SAAA,EAAA,EAxBE,eAwBmB;EAGZ,SAAA,OAAA,EA1BF,oBA0BE;;;;;AAgBqB,UApC1B,eAAA,CAoC0B;EAnBE,GAAA,EAhBtC,kBAgBsC;;;;;;;;;;;;;;;cAAhC,oBAAA,YAAgC;;sBAGvB;mBAIP;kBAIG;yBAIO;yBAIA,kBAAkB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { CompiledQuery, Kysely, SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler } from "kysely";
|
|
2
|
+
|
|
3
|
+
//#region src/sql-driver/dialects/durable-object-dialect.ts
|
|
4
|
+
/**
|
|
5
|
+
* DO dialect that adds support for [Cloudflare Durable Objects][0] in [Kysely][1].
|
|
6
|
+
* The constructor takes the Durable Object state context.
|
|
7
|
+
*
|
|
8
|
+
* ```typescript
|
|
9
|
+
* new DurableObjectDialect({
|
|
10
|
+
* ctx: this.ctx,
|
|
11
|
+
* })
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* [0]: https://developers.cloudflare.com/durable-objects/
|
|
15
|
+
* [1]: https://github.com/koskimas/kysely
|
|
16
|
+
*/
|
|
17
|
+
var DurableObjectDialect = class {
|
|
18
|
+
#config;
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.#config = config;
|
|
21
|
+
}
|
|
22
|
+
createAdapter() {
|
|
23
|
+
return new SqliteAdapter();
|
|
24
|
+
}
|
|
25
|
+
createDriver() {
|
|
26
|
+
return new DurableObjectDriver(this.#config);
|
|
27
|
+
}
|
|
28
|
+
createQueryCompiler() {
|
|
29
|
+
return new SqliteQueryCompiler();
|
|
30
|
+
}
|
|
31
|
+
createIntrospector(db) {
|
|
32
|
+
return new SqliteIntrospector(db);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var DurableObjectDriver = class {
|
|
36
|
+
#config;
|
|
37
|
+
#connection = null;
|
|
38
|
+
constructor(config) {
|
|
39
|
+
this.#config = config;
|
|
40
|
+
}
|
|
41
|
+
async init() {}
|
|
42
|
+
async acquireConnection() {
|
|
43
|
+
if (!this.#connection) this.#connection = new DOConnection(this.#config);
|
|
44
|
+
return this.#connection;
|
|
45
|
+
}
|
|
46
|
+
async beginTransaction(conn) {
|
|
47
|
+
return await conn.beginTransaction();
|
|
48
|
+
}
|
|
49
|
+
async commitTransaction(conn) {
|
|
50
|
+
return await conn.commitTransaction();
|
|
51
|
+
}
|
|
52
|
+
async rollbackTransaction(conn) {
|
|
53
|
+
return await conn.rollbackTransaction();
|
|
54
|
+
}
|
|
55
|
+
async releaseConnection(_conn) {
|
|
56
|
+
this.#connection = null;
|
|
57
|
+
}
|
|
58
|
+
async destroy() {
|
|
59
|
+
this.#connection = null;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var DOConnection = class {
|
|
63
|
+
#config;
|
|
64
|
+
#transactionPromise = null;
|
|
65
|
+
#transactionControl = null;
|
|
66
|
+
#txn = null;
|
|
67
|
+
constructor(config) {
|
|
68
|
+
this.#config = config;
|
|
69
|
+
}
|
|
70
|
+
async executeQuery(compiledQuery) {
|
|
71
|
+
const cursor = this.#config.ctx.storage.sql.exec(compiledQuery.sql, ...compiledQuery.parameters);
|
|
72
|
+
const rows = cursor.toArray();
|
|
73
|
+
const numAffectedRows = cursor.rowsWritten > 0 ? BigInt(cursor.rowsWritten) : void 0;
|
|
74
|
+
return {
|
|
75
|
+
insertId: void 0,
|
|
76
|
+
rows: rows || [],
|
|
77
|
+
numAffectedRows
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async beginTransaction() {
|
|
81
|
+
if (this.#transactionPromise) throw new Error("Transaction already in progress");
|
|
82
|
+
let transactionReady = null;
|
|
83
|
+
const readyPromise = new Promise((resolve) => {
|
|
84
|
+
transactionReady = resolve;
|
|
85
|
+
});
|
|
86
|
+
this.#transactionPromise = this.#config.ctx.storage.transaction(async (txn) => {
|
|
87
|
+
this.#txn = txn;
|
|
88
|
+
await new Promise((resolve, reject) => {
|
|
89
|
+
this.#transactionControl = {
|
|
90
|
+
resolve,
|
|
91
|
+
reject
|
|
92
|
+
};
|
|
93
|
+
if (transactionReady) transactionReady();
|
|
94
|
+
});
|
|
95
|
+
}).catch((error) => {
|
|
96
|
+
throw error;
|
|
97
|
+
});
|
|
98
|
+
await readyPromise;
|
|
99
|
+
}
|
|
100
|
+
async commitTransaction() {
|
|
101
|
+
if (!this.#transactionPromise || !this.#transactionControl) throw new Error("No transaction to commit");
|
|
102
|
+
try {
|
|
103
|
+
this.#transactionControl.resolve();
|
|
104
|
+
await this.#transactionPromise;
|
|
105
|
+
} finally {
|
|
106
|
+
this.#transactionPromise = null;
|
|
107
|
+
this.#transactionControl = null;
|
|
108
|
+
this.#txn = null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async rollbackTransaction() {
|
|
112
|
+
if (!this.#transactionPromise || !this.#transactionControl) throw new Error("No transaction to rollback");
|
|
113
|
+
try {
|
|
114
|
+
if (this.#txn) this.#txn.rollback();
|
|
115
|
+
this.#transactionControl.reject(/* @__PURE__ */ new Error("Transaction rolled back"));
|
|
116
|
+
await this.#transactionPromise.catch(() => {});
|
|
117
|
+
} finally {
|
|
118
|
+
this.#transactionPromise = null;
|
|
119
|
+
this.#transactionControl = null;
|
|
120
|
+
this.#txn = null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async *streamQuery(_compiledQuery, _chunkSize) {
|
|
124
|
+
throw new Error("DO Driver does not support streaming");
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
//#endregion
|
|
129
|
+
export { DurableObjectDialect };
|
|
130
|
+
//# sourceMappingURL=durable-object-dialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-object-dialect.js","names":["#config","#connection","#transactionPromise","transactionReady: (() => void) | null","#txn","#transactionControl"],"sources":["../../../src/sql-driver/dialects/durable-object-dialect.ts"],"sourcesContent":["import {\n CompiledQuery,\n Kysely,\n SqliteAdapter,\n SqliteIntrospector,\n SqliteQueryCompiler,\n type DatabaseConnection,\n type DatabaseIntrospector,\n type Dialect,\n type Driver,\n type QueryCompiler,\n type QueryResult,\n} from \"kysely\";\n\ninterface DurableObjectId {\n toString(): string;\n equals(other: DurableObjectId): boolean;\n readonly name?: string;\n}\n\ninterface DurableObjectTransaction {\n rollback(): void;\n}\n\ntype SqlStorageValue = ArrayBuffer | string | number | null;\n\ninterface SqlStorage {\n exec<T extends Record<string, SqlStorageValue>>(\n query: string,\n // oxlint-disable-next-line no-explicit-any\n ...bindings: any[]\n ): SqlStorageCursor<T>;\n Cursor: typeof SqlStorageCursor;\n Statement: typeof SqlStorageStatement;\n}\n\ndeclare abstract class SqlStorageStatement {}\ndeclare abstract class SqlStorageCursor<T extends Record<string, SqlStorageValue>> {\n next():\n | {\n done?: false;\n value: T;\n }\n | {\n done: true;\n value?: never;\n };\n toArray(): T[];\n one(): T;\n raw<U extends SqlStorageValue[]>(): IterableIterator<U>;\n columnNames: string[];\n get rowsRead(): number;\n get rowsWritten(): number;\n [Symbol.iterator](): IterableIterator<T>;\n}\n\ninterface DurableObjectStorage {\n transaction<T>(closure: (txn: DurableObjectTransaction) => Promise<T>): Promise<T>;\n\n readonly sql: SqlStorage;\n}\n\ninterface DurableObjectState {\n readonly id: DurableObjectId;\n readonly storage: DurableObjectStorage;\n}\n\n/**\n * Config for the Durable Objects dialect. Pass your Durable Object state to this object.\n */\nexport interface DODialectConfig {\n ctx: DurableObjectState;\n}\n\n/**\n * DO dialect that adds support for [Cloudflare Durable Objects][0] in [Kysely][1].\n * The constructor takes the Durable Object state context.\n *\n * ```typescript\n * new DurableObjectDialect({\n * ctx: this.ctx,\n * })\n * ```\n *\n * [0]: https://developers.cloudflare.com/durable-objects/\n * [1]: https://github.com/koskimas/kysely\n */\nexport class DurableObjectDialect implements Dialect {\n #config: DODialectConfig;\n\n constructor(config: DODialectConfig) {\n this.#config = config;\n }\n\n createAdapter() {\n return new SqliteAdapter();\n }\n\n createDriver(): Driver {\n return new DurableObjectDriver(this.#config);\n }\n\n createQueryCompiler(): QueryCompiler {\n return new SqliteQueryCompiler();\n }\n\n createIntrospector(db: Kysely<unknown>): DatabaseIntrospector {\n return new SqliteIntrospector(db);\n }\n}\n\nclass DurableObjectDriver implements Driver {\n #config: DODialectConfig;\n #connection: DOConnection | null = null;\n\n constructor(config: DODialectConfig) {\n this.#config = config;\n }\n\n async init(): Promise<void> {}\n\n async acquireConnection(): Promise<DatabaseConnection> {\n // Ensure only one connection exists\n if (!this.#connection) {\n this.#connection = new DOConnection(this.#config);\n }\n return this.#connection;\n }\n\n async beginTransaction(conn: DOConnection): Promise<void> {\n return await conn.beginTransaction();\n }\n\n async commitTransaction(conn: DOConnection): Promise<void> {\n return await conn.commitTransaction();\n }\n\n async rollbackTransaction(conn: DOConnection): Promise<void> {\n return await conn.rollbackTransaction();\n }\n\n async releaseConnection(_conn: DOConnection): Promise<void> {\n this.#connection = null;\n }\n\n async destroy(): Promise<void> {\n this.#connection = null;\n }\n}\n\nclass DOConnection implements DatabaseConnection {\n #config: DODialectConfig;\n #transactionPromise: Promise<void> | null = null;\n #transactionControl: {\n resolve: () => void;\n reject: (error: Error) => void;\n } | null = null;\n #txn: DurableObjectTransaction | null = null;\n\n constructor(config: DODialectConfig) {\n this.#config = config;\n }\n\n async executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>> {\n const cursor = this.#config.ctx.storage.sql.exec(\n compiledQuery.sql,\n ...compiledQuery.parameters,\n );\n\n const rows = cursor.toArray() as O[];\n const numAffectedRows = cursor.rowsWritten > 0 ? BigInt(cursor.rowsWritten) : undefined;\n\n return {\n insertId: undefined, // Durable Objects doesn't provide last_row_id like D1\n rows: rows || [],\n numAffectedRows,\n };\n }\n\n async beginTransaction() {\n if (this.#transactionPromise) {\n throw new Error(\"Transaction already in progress\");\n }\n\n // Use a promise to wait for the transaction closure to actually start\n let transactionReady: (() => void) | null = null;\n const readyPromise = new Promise<void>((resolve) => {\n transactionReady = resolve;\n });\n\n // Start the transaction - all queries executed will be inside this closure\n this.#transactionPromise = this.#config.ctx.storage\n .transaction(async (txn) => {\n this.#txn = txn;\n\n // Wait for commit or rollback to be called\n await new Promise<void>((resolve, reject) => {\n this.#transactionControl = { resolve, reject };\n // Signal that transaction is ready\n if (transactionReady) {\n transactionReady();\n }\n });\n })\n .catch((error) => {\n // Don't clear state here - let commit/rollback handle it\n throw error;\n });\n\n // Wait for the transaction closure to set up before returning\n await readyPromise;\n }\n\n async commitTransaction() {\n if (!this.#transactionPromise || !this.#transactionControl) {\n throw new Error(\"No transaction to commit\");\n }\n\n try {\n // Signal commit and wait for transaction to complete\n this.#transactionControl.resolve();\n await this.#transactionPromise;\n } finally {\n this.#transactionPromise = null;\n this.#transactionControl = null;\n this.#txn = null;\n }\n }\n\n async rollbackTransaction() {\n if (!this.#transactionPromise || !this.#transactionControl) {\n throw new Error(\"No transaction to rollback\");\n }\n\n try {\n // Signal rollback\n if (this.#txn) {\n this.#txn.rollback();\n }\n this.#transactionControl.reject(new Error(\"Transaction rolled back\"));\n\n // Wait for transaction to complete (will reject, but we catch it)\n await this.#transactionPromise.catch(() => {\n /* Expected to reject on rollback */\n });\n } finally {\n this.#transactionPromise = null;\n this.#transactionControl = null;\n this.#txn = null;\n }\n }\n\n // oxlint-disable-next-line require-yield\n async *streamQuery<O>(\n _compiledQuery: CompiledQuery,\n _chunkSize: number,\n ): AsyncIterableIterator<QueryResult<O>> {\n throw new Error(\"DO Driver does not support streaming\");\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAuFA,IAAa,uBAAb,MAAqD;CACnD;CAEA,YAAY,QAAyB;AACnC,QAAKA,SAAU;;CAGjB,gBAAgB;AACd,SAAO,IAAI,eAAe;;CAG5B,eAAuB;AACrB,SAAO,IAAI,oBAAoB,MAAKA,OAAQ;;CAG9C,sBAAqC;AACnC,SAAO,IAAI,qBAAqB;;CAGlC,mBAAmB,IAA2C;AAC5D,SAAO,IAAI,mBAAmB,GAAG;;;AAIrC,IAAM,sBAAN,MAA4C;CAC1C;CACA,cAAmC;CAEnC,YAAY,QAAyB;AACnC,QAAKA,SAAU;;CAGjB,MAAM,OAAsB;CAE5B,MAAM,oBAAiD;AAErD,MAAI,CAAC,MAAKC,WACR,OAAKA,aAAc,IAAI,aAAa,MAAKD,OAAQ;AAEnD,SAAO,MAAKC;;CAGd,MAAM,iBAAiB,MAAmC;AACxD,SAAO,MAAM,KAAK,kBAAkB;;CAGtC,MAAM,kBAAkB,MAAmC;AACzD,SAAO,MAAM,KAAK,mBAAmB;;CAGvC,MAAM,oBAAoB,MAAmC;AAC3D,SAAO,MAAM,KAAK,qBAAqB;;CAGzC,MAAM,kBAAkB,OAAoC;AAC1D,QAAKA,aAAc;;CAGrB,MAAM,UAAyB;AAC7B,QAAKA,aAAc;;;AAIvB,IAAM,eAAN,MAAiD;CAC/C;CACA,sBAA4C;CAC5C,sBAGW;CACX,OAAwC;CAExC,YAAY,QAAyB;AACnC,QAAKD,SAAU;;CAGjB,MAAM,aAAgB,eAAuD;EAC3E,MAAM,SAAS,MAAKA,OAAQ,IAAI,QAAQ,IAAI,KAC1C,cAAc,KACd,GAAG,cAAc,WAClB;EAED,MAAM,OAAO,OAAO,SAAS;EAC7B,MAAM,kBAAkB,OAAO,cAAc,IAAI,OAAO,OAAO,YAAY,GAAG;AAE9E,SAAO;GACL,UAAU;GACV,MAAM,QAAQ,EAAE;GAChB;GACD;;CAGH,MAAM,mBAAmB;AACvB,MAAI,MAAKE,mBACP,OAAM,IAAI,MAAM,kCAAkC;EAIpD,IAAIC,mBAAwC;EAC5C,MAAM,eAAe,IAAI,SAAe,YAAY;AAClD,sBAAmB;IACnB;AAGF,QAAKD,qBAAsB,MAAKF,OAAQ,IAAI,QACzC,YAAY,OAAO,QAAQ;AAC1B,SAAKI,MAAO;AAGZ,SAAM,IAAI,SAAe,SAAS,WAAW;AAC3C,UAAKC,qBAAsB;KAAE;KAAS;KAAQ;AAE9C,QAAI,iBACF,mBAAkB;KAEpB;IACF,CACD,OAAO,UAAU;AAEhB,SAAM;IACN;AAGJ,QAAM;;CAGR,MAAM,oBAAoB;AACxB,MAAI,CAAC,MAAKH,sBAAuB,CAAC,MAAKG,mBACrC,OAAM,IAAI,MAAM,2BAA2B;AAG7C,MAAI;AAEF,SAAKA,mBAAoB,SAAS;AAClC,SAAM,MAAKH;YACH;AACR,SAAKA,qBAAsB;AAC3B,SAAKG,qBAAsB;AAC3B,SAAKD,MAAO;;;CAIhB,MAAM,sBAAsB;AAC1B,MAAI,CAAC,MAAKF,sBAAuB,CAAC,MAAKG,mBACrC,OAAM,IAAI,MAAM,6BAA6B;AAG/C,MAAI;AAEF,OAAI,MAAKD,IACP,OAAKA,IAAK,UAAU;AAEtB,SAAKC,mBAAoB,uBAAO,IAAI,MAAM,0BAA0B,CAAC;AAGrE,SAAM,MAAKH,mBAAoB,YAAY,GAEzC;YACM;AACR,SAAKA,qBAAsB;AAC3B,SAAKG,qBAAsB;AAC3B,SAAKD,MAAO;;;CAKhB,OAAO,YACL,gBACA,YACuC;AACvC,QAAM,IAAI,MAAM,uCAAuC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DatabaseConnection, Driver, TransactionSettings } from "../sql-driver.js";
|
|
2
|
+
|
|
3
|
+
//#region src/sql-driver/driver/runtime-driver.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A small wrapper around {@link Driver} that makes sure the driver is
|
|
7
|
+
* initialized before it is used, only initialized and destroyed
|
|
8
|
+
* once etc.
|
|
9
|
+
*/
|
|
10
|
+
declare class RuntimeDriver implements Driver {
|
|
11
|
+
#private;
|
|
12
|
+
constructor(driver: Driver);
|
|
13
|
+
init(): Promise<void>;
|
|
14
|
+
acquireConnection(): Promise<DatabaseConnection>;
|
|
15
|
+
releaseConnection(connection: DatabaseConnection): Promise<void>;
|
|
16
|
+
beginTransaction(connection: DatabaseConnection, settings: TransactionSettings): Promise<void>;
|
|
17
|
+
commitTransaction(connection: DatabaseConnection): Promise<void>;
|
|
18
|
+
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
19
|
+
destroy(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { RuntimeDriver };
|
|
23
|
+
//# sourceMappingURL=runtime-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-driver.d.ts","names":[],"sources":["../../../src/sql-driver/driver/runtime-driver.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA8DmF,cAhDtE,aAAA,YAAyB,MAgD6C,CAAA;EAInD,CAAA,OAAA;EAAqB,WAAA,CAAA,MAAA,EA7C/B,MA6C+B;EAInB,IAAA,CAAA,CAAA,EA5ClB,OA4CkB,CAAA,IAAA,CAAA;EAAqB,iBAAA,CAAA,CAAA,EAxB1B,OAwB0B,CAxBlB,kBAwBkB,CAAA;EAIpC,iBAAA,CAAA,UAAA,EAhBmB,kBAgBnB,CAAA,EAhBwC,OAgBxC,CAAA,IAAA,CAAA;EA5DmB,gBAAA,CAAA,UAAA,EAgDP,kBAhDO,EAAA,QAAA,EAgDuB,mBAhDvB,CAAA,EAgD6C,OAhD7C,CAAA,IAAA,CAAA;EAAM,iBAAA,CAAA,UAAA,EAoDZ,kBApDY,CAAA,EAoDS,OApDT,CAAA,IAAA,CAAA;kCAwDV,qBAAqB;aAIpC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//#region src/sql-driver/driver/runtime-driver.ts
|
|
2
|
+
/**
|
|
3
|
+
* A small wrapper around {@link Driver} that makes sure the driver is
|
|
4
|
+
* initialized before it is used, only initialized and destroyed
|
|
5
|
+
* once etc.
|
|
6
|
+
*/
|
|
7
|
+
var RuntimeDriver = class {
|
|
8
|
+
#driver;
|
|
9
|
+
#initPromise;
|
|
10
|
+
#initDone;
|
|
11
|
+
#destroyPromise;
|
|
12
|
+
constructor(driver) {
|
|
13
|
+
this.#initDone = false;
|
|
14
|
+
this.#driver = driver;
|
|
15
|
+
}
|
|
16
|
+
async init() {
|
|
17
|
+
if (this.#destroyPromise) throw new Error("driver has already been destroyed");
|
|
18
|
+
if (!this.#initPromise) this.#initPromise = this.#driver.init().then(() => {
|
|
19
|
+
this.#initDone = true;
|
|
20
|
+
}).catch((err) => {
|
|
21
|
+
this.#initPromise = void 0;
|
|
22
|
+
return Promise.reject(err);
|
|
23
|
+
});
|
|
24
|
+
await this.#initPromise;
|
|
25
|
+
}
|
|
26
|
+
async acquireConnection() {
|
|
27
|
+
if (this.#destroyPromise) throw new Error("driver has already been destroyed");
|
|
28
|
+
if (!this.#initDone) await this.init();
|
|
29
|
+
return await this.#driver.acquireConnection();
|
|
30
|
+
}
|
|
31
|
+
async releaseConnection(connection) {
|
|
32
|
+
await this.#driver.releaseConnection(connection);
|
|
33
|
+
}
|
|
34
|
+
beginTransaction(connection, settings) {
|
|
35
|
+
return this.#driver.beginTransaction(connection, settings);
|
|
36
|
+
}
|
|
37
|
+
commitTransaction(connection) {
|
|
38
|
+
return this.#driver.commitTransaction(connection);
|
|
39
|
+
}
|
|
40
|
+
rollbackTransaction(connection) {
|
|
41
|
+
return this.#driver.rollbackTransaction(connection);
|
|
42
|
+
}
|
|
43
|
+
async destroy() {
|
|
44
|
+
if (!this.#initPromise) return;
|
|
45
|
+
await this.#initPromise;
|
|
46
|
+
if (!this.#destroyPromise) this.#destroyPromise = this.#driver.destroy().catch((err) => {
|
|
47
|
+
this.#destroyPromise = void 0;
|
|
48
|
+
return Promise.reject(err);
|
|
49
|
+
});
|
|
50
|
+
await this.#destroyPromise;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { RuntimeDriver };
|
|
56
|
+
//# sourceMappingURL=runtime-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-driver.js","names":["#driver","#initDone","#destroyPromise","#initPromise"],"sources":["../../../src/sql-driver/driver/runtime-driver.ts"],"sourcesContent":["/**\n * Adapted from Kysely's RuntimeDriver\n * Modified from: https://github.com/kysely-org/kysely\n * License: MIT\n * Copyright (c) 2022 Sami Koskimäki\n */\n\nimport type { DatabaseConnection, Driver, TransactionSettings } from \"../sql-driver\";\n\n/**\n * A small wrapper around {@link Driver} that makes sure the driver is\n * initialized before it is used, only initialized and destroyed\n * once etc.\n */\nexport class RuntimeDriver implements Driver {\n readonly #driver: Driver;\n\n #initPromise?: Promise<void>;\n #initDone: boolean;\n #destroyPromise?: Promise<void>;\n\n constructor(driver: Driver) {\n this.#initDone = false;\n this.#driver = driver;\n }\n\n async init(): Promise<void> {\n if (this.#destroyPromise) {\n throw new Error(\"driver has already been destroyed\");\n }\n\n if (!this.#initPromise) {\n this.#initPromise = this.#driver\n .init()\n .then(() => {\n this.#initDone = true;\n })\n .catch((err) => {\n this.#initPromise = undefined;\n return Promise.reject(err);\n });\n }\n\n await this.#initPromise;\n }\n\n async acquireConnection(): Promise<DatabaseConnection> {\n if (this.#destroyPromise) {\n throw new Error(\"driver has already been destroyed\");\n }\n\n if (!this.#initDone) {\n await this.init();\n }\n\n return await this.#driver.acquireConnection();\n }\n\n async releaseConnection(connection: DatabaseConnection): Promise<void> {\n await this.#driver.releaseConnection(connection);\n }\n\n beginTransaction(connection: DatabaseConnection, settings: TransactionSettings): Promise<void> {\n return this.#driver.beginTransaction(connection, settings);\n }\n\n commitTransaction(connection: DatabaseConnection): Promise<void> {\n return this.#driver.commitTransaction(connection);\n }\n\n rollbackTransaction(connection: DatabaseConnection): Promise<void> {\n return this.#driver.rollbackTransaction(connection);\n }\n\n async destroy(): Promise<void> {\n if (!this.#initPromise) {\n return;\n }\n\n await this.#initPromise;\n\n if (!this.#destroyPromise) {\n this.#destroyPromise = this.#driver.destroy().catch((err) => {\n this.#destroyPromise = undefined;\n return Promise.reject(err);\n });\n }\n\n await this.#destroyPromise;\n }\n}\n"],"mappings":";;;;;;AAcA,IAAa,gBAAb,MAA6C;CAC3C,CAASA;CAET;CACA;CACA;CAEA,YAAY,QAAgB;AAC1B,QAAKC,WAAY;AACjB,QAAKD,SAAU;;CAGjB,MAAM,OAAsB;AAC1B,MAAI,MAAKE,eACP,OAAM,IAAI,MAAM,oCAAoC;AAGtD,MAAI,CAAC,MAAKC,YACR,OAAKA,cAAe,MAAKH,OACtB,MAAM,CACN,WAAW;AACV,SAAKC,WAAY;IACjB,CACD,OAAO,QAAQ;AACd,SAAKE,cAAe;AACpB,UAAO,QAAQ,OAAO,IAAI;IAC1B;AAGN,QAAM,MAAKA;;CAGb,MAAM,oBAAiD;AACrD,MAAI,MAAKD,eACP,OAAM,IAAI,MAAM,oCAAoC;AAGtD,MAAI,CAAC,MAAKD,SACR,OAAM,KAAK,MAAM;AAGnB,SAAO,MAAM,MAAKD,OAAQ,mBAAmB;;CAG/C,MAAM,kBAAkB,YAA+C;AACrE,QAAM,MAAKA,OAAQ,kBAAkB,WAAW;;CAGlD,iBAAiB,YAAgC,UAA8C;AAC7F,SAAO,MAAKA,OAAQ,iBAAiB,YAAY,SAAS;;CAG5D,kBAAkB,YAA+C;AAC/D,SAAO,MAAKA,OAAQ,kBAAkB,WAAW;;CAGnD,oBAAoB,YAA+C;AACjE,SAAO,MAAKA,OAAQ,oBAAoB,WAAW;;CAGrD,MAAM,UAAyB;AAC7B,MAAI,CAAC,MAAKG,YACR;AAGF,QAAM,MAAKA;AAEX,MAAI,CAAC,MAAKD,eACR,OAAKA,iBAAkB,MAAKF,OAAQ,SAAS,CAAC,OAAO,QAAQ;AAC3D,SAAKE,iBAAkB;AACvB,UAAO,QAAQ,OAAO,IAAI;IAC1B;AAGJ,QAAM,MAAKA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { QueryExecutorBase } from "./query-executor-base.js";
|
|
2
|
+
|
|
3
|
+
//#region src/sql-driver/query-executor/default-query-executor.ts
|
|
4
|
+
var DefaultQueryExecutor = class DefaultQueryExecutor extends QueryExecutorBase {
|
|
5
|
+
#connectionProvider;
|
|
6
|
+
constructor(connectionProvider, plugins = []) {
|
|
7
|
+
super(plugins);
|
|
8
|
+
this.#connectionProvider = connectionProvider;
|
|
9
|
+
}
|
|
10
|
+
provideConnection(consumer) {
|
|
11
|
+
return this.#connectionProvider.provideConnection(consumer);
|
|
12
|
+
}
|
|
13
|
+
withConnectionProvider(connectionProvider) {
|
|
14
|
+
return new DefaultQueryExecutor(connectionProvider, [...this.plugins]);
|
|
15
|
+
}
|
|
16
|
+
withPlugin(plugin) {
|
|
17
|
+
return new DefaultQueryExecutor(this.#connectionProvider, [...this.plugins, plugin]);
|
|
18
|
+
}
|
|
19
|
+
withoutPlugins() {
|
|
20
|
+
return new DefaultQueryExecutor(this.#connectionProvider, []);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { DefaultQueryExecutor };
|
|
26
|
+
//# sourceMappingURL=default-query-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-query-executor.js","names":["#connectionProvider"],"sources":["../../../src/sql-driver/query-executor/default-query-executor.ts"],"sourcesContent":["/**\n * Adapted from Kysely's DefaultQueryExecutor\n * Modified from: https://github.com/kysely-org/kysely\n * License: MIT\n * Copyright (c) 2022 Sami Koskimäki\n *\n * Simplified to remove query compilation.\n */\n\nimport type { DatabaseConnection } from \"../sql-driver\";\nimport type { ConnectionProvider } from \"../connection/connection-provider\";\nimport type { GenericSQLPlugin } from \"./plugin\";\nimport { QueryExecutorBase } from \"./query-executor-base\";\n\nexport class DefaultQueryExecutor extends QueryExecutorBase {\n readonly #connectionProvider: ConnectionProvider;\n\n constructor(connectionProvider: ConnectionProvider, plugins: GenericSQLPlugin[] = []) {\n super(plugins);\n this.#connectionProvider = connectionProvider;\n }\n\n provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T> {\n return this.#connectionProvider.provideConnection(consumer);\n }\n\n withConnectionProvider(connectionProvider: ConnectionProvider): DefaultQueryExecutor {\n return new DefaultQueryExecutor(connectionProvider, [...this.plugins]);\n }\n\n withPlugin(plugin: GenericSQLPlugin): DefaultQueryExecutor {\n return new DefaultQueryExecutor(this.#connectionProvider, [...this.plugins, plugin]);\n }\n\n withoutPlugins(): DefaultQueryExecutor {\n return new DefaultQueryExecutor(this.#connectionProvider, []);\n }\n}\n"],"mappings":";;;AAcA,IAAa,uBAAb,MAAa,6BAA6B,kBAAkB;CAC1D,CAASA;CAET,YAAY,oBAAwC,UAA8B,EAAE,EAAE;AACpF,QAAM,QAAQ;AACd,QAAKA,qBAAsB;;CAG7B,kBAAqB,UAAsE;AACzF,SAAO,MAAKA,mBAAoB,kBAAkB,SAAS;;CAG7D,uBAAuB,oBAA8D;AACnF,SAAO,IAAI,qBAAqB,oBAAoB,CAAC,GAAG,KAAK,QAAQ,CAAC;;CAGxE,WAAW,QAAgD;AACzD,SAAO,IAAI,qBAAqB,MAAKA,oBAAqB,CAAC,GAAG,KAAK,SAAS,OAAO,CAAC;;CAGtF,iBAAuC;AACrC,SAAO,IAAI,qBAAqB,MAAKA,oBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { QueryResult } from "../sql-driver.js";
|
|
2
|
+
|
|
3
|
+
//#region src/sql-driver/query-executor/plugin.d.ts
|
|
4
|
+
|
|
5
|
+
interface GenericSQLPlugin {
|
|
6
|
+
/**
|
|
7
|
+
* This method is called for each query after it has been executed.
|
|
8
|
+
* You can modify the result and return the modified result.
|
|
9
|
+
*/
|
|
10
|
+
transformResult(args: PluginTransformResultArgs): Promise<QueryResult<unknown>>;
|
|
11
|
+
}
|
|
12
|
+
interface PluginTransformResultArgs {
|
|
13
|
+
readonly result: QueryResult<unknown>;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { GenericSQLPlugin };
|
|
17
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../../../src/sql-driver/query-executor/plugin.ts"],"sourcesContent":[],"mappings":";;;;UAWiB,gBAAA;;;;;wBAKO,4BAA4B,QAAQ;;UAG3C,yBAAA;mBACE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/sql-driver/query-executor/query-executor-base.ts
|
|
2
|
+
const NO_PLUGINS = Object.freeze([]);
|
|
3
|
+
var QueryExecutorBase = class {
|
|
4
|
+
#plugins;
|
|
5
|
+
constructor(plugins = NO_PLUGINS) {
|
|
6
|
+
this.#plugins = plugins;
|
|
7
|
+
}
|
|
8
|
+
get plugins() {
|
|
9
|
+
return this.#plugins;
|
|
10
|
+
}
|
|
11
|
+
async executeQuery(compiledQuery) {
|
|
12
|
+
return await this.provideConnection(async (connection) => {
|
|
13
|
+
const result = await connection.executeQuery(compiledQuery);
|
|
14
|
+
return await this.#transformResult(result);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async #transformResult(result) {
|
|
18
|
+
for (const plugin of this.#plugins) result = await plugin.transformResult({ result });
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { QueryExecutorBase };
|
|
25
|
+
//# sourceMappingURL=query-executor-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-executor-base.js","names":["NO_PLUGINS: ReadonlyArray<GenericSQLPlugin>","#plugins","#transformResult"],"sources":["../../../src/sql-driver/query-executor/query-executor-base.ts"],"sourcesContent":["/**\n * Adapted from Kysely's QueryExecutorBase\n * Modified from: https://github.com/kysely-org/kysely\n * License: MIT\n * Copyright (c) 2022 Sami Koskimäki\n *\n * Simplified to remove query compilation, streaming, and batching.\n */\n\nimport type { DatabaseConnection, CompiledQuery, QueryResult } from \"../sql-driver\";\nimport type { ConnectionProvider } from \"../connection/connection-provider\";\nimport type { GenericSQLPlugin } from \"./plugin\";\nimport type { QueryExecutor } from \"./query-executor\";\n\nconst NO_PLUGINS: ReadonlyArray<GenericSQLPlugin> = Object.freeze([]);\n\nexport abstract class QueryExecutorBase implements QueryExecutor {\n readonly #plugins: ReadonlyArray<GenericSQLPlugin>;\n\n constructor(plugins: ReadonlyArray<GenericSQLPlugin> = NO_PLUGINS) {\n this.#plugins = plugins;\n }\n\n get plugins(): ReadonlyArray<GenericSQLPlugin> {\n return this.#plugins;\n }\n\n abstract provideConnection<T>(\n consumer: (connection: DatabaseConnection) => Promise<T>,\n ): Promise<T>;\n\n async executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>> {\n return await this.provideConnection(async (connection) => {\n const result = await connection.executeQuery(compiledQuery);\n return await this.#transformResult(result);\n });\n }\n\n abstract withConnectionProvider(connectionProvider: ConnectionProvider): QueryExecutorBase;\n\n abstract withPlugin(plugin: GenericSQLPlugin): QueryExecutorBase;\n\n abstract withoutPlugins(): QueryExecutorBase;\n\n // oxlint-disable-next-line no-explicit-any\n async #transformResult<T>(result: QueryResult<any>): Promise<QueryResult<T>> {\n for (const plugin of this.#plugins) {\n result = await plugin.transformResult({ result });\n }\n\n return result;\n }\n}\n"],"mappings":";AAcA,MAAMA,aAA8C,OAAO,OAAO,EAAE,CAAC;AAErE,IAAsB,oBAAtB,MAAiE;CAC/D,CAASC;CAET,YAAY,UAA2C,YAAY;AACjE,QAAKA,UAAW;;CAGlB,IAAI,UAA2C;AAC7C,SAAO,MAAKA;;CAOd,MAAM,aAAgB,eAAuD;AAC3E,SAAO,MAAM,KAAK,kBAAkB,OAAO,eAAe;GACxD,MAAM,SAAS,MAAM,WAAW,aAAa,cAAc;AAC3D,UAAO,MAAM,MAAKC,gBAAiB,OAAO;IAC1C;;CAUJ,OAAMA,gBAAoB,QAAmD;AAC3E,OAAK,MAAM,UAAU,MAAKD,QACxB,UAAS,MAAM,OAAO,gBAAgB,EAAE,QAAQ,CAAC;AAGnD,SAAO"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CompiledQuery, QueryResult } from "../sql-driver.js";
|
|
2
|
+
import { GenericSQLPlugin } from "./plugin.js";
|
|
3
|
+
import { ConnectionProvider } from "../connection/connection-provider.js";
|
|
4
|
+
|
|
5
|
+
//#region src/sql-driver/query-executor/query-executor.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This interface abstracts away the details of how to execute a query.
|
|
9
|
+
*/
|
|
10
|
+
interface QueryExecutor extends ConnectionProvider {
|
|
11
|
+
/**
|
|
12
|
+
* Returns all installed plugins.
|
|
13
|
+
*/
|
|
14
|
+
get plugins(): ReadonlyArray<GenericSQLPlugin>;
|
|
15
|
+
/**
|
|
16
|
+
* Executes a compiled query and runs the result through all plugins'
|
|
17
|
+
* `transformResult` method.
|
|
18
|
+
*/
|
|
19
|
+
executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a copy of this executor with a new connection provider.
|
|
22
|
+
*/
|
|
23
|
+
withConnectionProvider(connectionProvider: ConnectionProvider): QueryExecutor;
|
|
24
|
+
/**
|
|
25
|
+
* Returns a copy of this executor with a plugin added as the
|
|
26
|
+
* last plugin.
|
|
27
|
+
*/
|
|
28
|
+
withPlugin(plugin: GenericSQLPlugin): QueryExecutor;
|
|
29
|
+
/**
|
|
30
|
+
* Returns a copy of this executor without any plugins.
|
|
31
|
+
*/
|
|
32
|
+
withoutPlugins(): QueryExecutor;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { QueryExecutor };
|
|
36
|
+
//# sourceMappingURL=query-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-executor.d.ts","names":[],"sources":["../../../src/sql-driver/query-executor/query-executor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAqCqB,UArBJ,aAAA,SAAsB,kBAqBlB,CAAA;EAAmB;;;EArBiB,IAAA,OAAA,EAAA,EAIxC,aAJwC,CAI1B,gBAJ0B,CAAA;;;;;iCAUxB,gBAAgB,QAAQ,YAAY;;;;6CAKxB,qBAAqB;;;;;qBAM7C,mBAAmB;;;;oBAKpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CompiledQuery, Dialect, QueryResult } from "./sql-driver.js";
|
|
2
|
+
import { RuntimeDriver } from "./driver/runtime-driver.js";
|
|
3
|
+
import { GenericSQLPlugin } from "./query-executor/plugin.js";
|
|
4
|
+
import { QueryExecutor } from "./query-executor/query-executor.js";
|
|
5
|
+
|
|
6
|
+
//#region src/sql-driver/sql-driver-adapter.d.ts
|
|
7
|
+
|
|
8
|
+
declare class SqlDriverAdapter {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(dialect: Dialect);
|
|
11
|
+
constructor(dialect: Dialect, executor: QueryExecutor, driver: RuntimeDriver | null);
|
|
12
|
+
executeQuery(query: CompiledQuery): Promise<QueryResult<Record<string, unknown>>>;
|
|
13
|
+
transaction<T>(callback: (trx: SqlDriverAdapter) => Promise<T>): Promise<T>;
|
|
14
|
+
/**
|
|
15
|
+
* Returns a copy of this adapter with the given plugin installed.
|
|
16
|
+
*/
|
|
17
|
+
withPlugin(plugin: GenericSQLPlugin): SqlDriverAdapter;
|
|
18
|
+
/**
|
|
19
|
+
* Returns a copy of this adapter without any plugins.
|
|
20
|
+
*/
|
|
21
|
+
withoutPlugins(): SqlDriverAdapter;
|
|
22
|
+
/**
|
|
23
|
+
* Releases all resources and disconnects from the database.
|
|
24
|
+
*/
|
|
25
|
+
destroy(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { SqlDriverAdapter };
|
|
29
|
+
//# sourceMappingURL=sql-driver-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-driver-adapter.d.ts","names":[],"sources":["../../src/sql-driver/sql-driver-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;AAqBiE,cANpD,gBAAA,CAMoD;EAgBrC,CAAA,OAAA;EAAoC,WAAA,CAAA,OAAA,EAjBzC,OAiByC;EAAZ,WAAA,CAAA,OAAA,EAhB7B,OAgB6B,EAAA,QAAA,EAhBV,aAgBU,EAAA,MAAA,EAhBa,aAgBb,GAAA,IAAA;EAAR,YAAA,CAAA,KAAA,EAAhB,aAAgB,CAAA,EAAA,OAAA,CAAQ,WAAR,CAAoB,MAApB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;EAIL,WAAA,CAAA,CAAA,CAAA,CAAA,QAAA,EAAA,CAAA,GAAA,EAAA,gBAAA,EAAA,GAAqB,OAArB,CAA6B,CAA7B,CAAA,CAAA,EAAkC,OAAlC,CAA0C,CAA1C,CAAA;EAA6B;;;EAAK,UAAA,CAAA,MAAA,EAmCpD,gBAnCoD,CAAA,EAmCjC,gBAnCiC;EAmCpD;;;EAcF,cAAA,CAAA,CAAA,EAPC,gBAOD;EAAO;;;aAAP"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { DefaultConnectionProvider } from "./connection/connection-provider.js";
|
|
2
|
+
import { SingleConnectionProvider } from "./connection/single-connection-provider.js";
|
|
3
|
+
import { RuntimeDriver } from "./driver/runtime-driver.js";
|
|
4
|
+
import { DefaultQueryExecutor } from "./query-executor/default-query-executor.js";
|
|
5
|
+
|
|
6
|
+
//#region src/sql-driver/sql-driver-adapter.ts
|
|
7
|
+
var SqlDriverAdapter = class SqlDriverAdapter {
|
|
8
|
+
#dialect;
|
|
9
|
+
#driver;
|
|
10
|
+
#executor;
|
|
11
|
+
constructor(dialect, executor, driver) {
|
|
12
|
+
this.#dialect = dialect;
|
|
13
|
+
if (executor) {
|
|
14
|
+
this.#driver = driver ?? null;
|
|
15
|
+
this.#executor = executor;
|
|
16
|
+
} else {
|
|
17
|
+
const runtimeDriver = new RuntimeDriver(dialect.createDriver());
|
|
18
|
+
const connectionProvider = new DefaultConnectionProvider(runtimeDriver);
|
|
19
|
+
this.#driver = runtimeDriver;
|
|
20
|
+
this.#executor = new DefaultQueryExecutor(connectionProvider);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async executeQuery(query) {
|
|
24
|
+
return await this.#executor.executeQuery(query);
|
|
25
|
+
}
|
|
26
|
+
async transaction(callback) {
|
|
27
|
+
if (this.#driver === null) throw new Error("Cannot start transaction: adapter was created with custom executor");
|
|
28
|
+
const driver = this.#driver;
|
|
29
|
+
return await this.#executor.provideConnection(async (connection) => {
|
|
30
|
+
const singleConnectionProvider = new SingleConnectionProvider(connection);
|
|
31
|
+
const transactionExecutor = this.#executor.withConnectionProvider(singleConnectionProvider);
|
|
32
|
+
const transactionAdapter = new SqlDriverAdapter(this.#dialect, transactionExecutor, driver);
|
|
33
|
+
let transactionBegun = false;
|
|
34
|
+
try {
|
|
35
|
+
await driver.beginTransaction(connection, {});
|
|
36
|
+
transactionBegun = true;
|
|
37
|
+
const result = await callback(transactionAdapter);
|
|
38
|
+
await driver.commitTransaction(connection);
|
|
39
|
+
return result;
|
|
40
|
+
} catch (error) {
|
|
41
|
+
if (transactionBegun) await driver.rollbackTransaction(connection);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns a copy of this adapter with the given plugin installed.
|
|
48
|
+
*/
|
|
49
|
+
withPlugin(plugin) {
|
|
50
|
+
return new SqlDriverAdapter(this.#dialect, this.#executor.withPlugin(plugin), this.#driver);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Returns a copy of this adapter without any plugins.
|
|
54
|
+
*/
|
|
55
|
+
withoutPlugins() {
|
|
56
|
+
return new SqlDriverAdapter(this.#dialect, this.#executor.withoutPlugins(), this.#driver);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Releases all resources and disconnects from the database.
|
|
60
|
+
*/
|
|
61
|
+
async destroy() {
|
|
62
|
+
if (this.#driver !== null) await this.#driver.destroy();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
export { SqlDriverAdapter };
|
|
68
|
+
//# sourceMappingURL=sql-driver-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-driver-adapter.js","names":["#dialect","#driver","#executor"],"sources":["../../src/sql-driver/sql-driver-adapter.ts"],"sourcesContent":["/**\n * Adapted from Kysely patterns\n * Modified from: https://github.com/kysely-org/kysely\n * License: MIT\n * Copyright (c) 2022 Sami Koskimäki\n */\n\nimport type { CompiledQuery, Dialect, QueryResult } from \"./sql-driver\";\nimport { DefaultConnectionProvider } from \"./connection/connection-provider\";\nimport { SingleConnectionProvider } from \"./connection/single-connection-provider\";\nimport { RuntimeDriver } from \"./driver/runtime-driver\";\nimport type { GenericSQLPlugin } from \"./query-executor/plugin\";\nimport type { QueryExecutor } from \"./query-executor/query-executor\";\nimport { DefaultQueryExecutor } from \"./query-executor/default-query-executor\";\n\nexport class SqlDriverAdapter {\n readonly #dialect: Dialect;\n readonly #driver: RuntimeDriver | null;\n readonly #executor: QueryExecutor;\n\n constructor(dialect: Dialect);\n constructor(dialect: Dialect, executor: QueryExecutor, driver: RuntimeDriver | null);\n constructor(dialect: Dialect, executor?: QueryExecutor, driver?: RuntimeDriver | null) {\n this.#dialect = dialect;\n\n if (executor) {\n this.#driver = driver ?? null;\n this.#executor = executor;\n } else {\n const rawDriver = dialect.createDriver();\n const runtimeDriver = new RuntimeDriver(rawDriver);\n const connectionProvider = new DefaultConnectionProvider(runtimeDriver);\n this.#driver = runtimeDriver;\n this.#executor = new DefaultQueryExecutor(connectionProvider);\n }\n }\n\n async executeQuery(query: CompiledQuery): Promise<QueryResult<Record<string, unknown>>> {\n return await this.#executor.executeQuery(query);\n }\n\n async transaction<T>(callback: (trx: SqlDriverAdapter) => Promise<T>): Promise<T> {\n if (this.#driver === null) {\n throw new Error(\"Cannot start transaction: adapter was created with custom executor\");\n }\n\n const driver = this.#driver;\n\n return await this.#executor.provideConnection(async (connection) => {\n const singleConnectionProvider = new SingleConnectionProvider(connection);\n const transactionExecutor = this.#executor.withConnectionProvider(singleConnectionProvider);\n const transactionAdapter = new SqlDriverAdapter(this.#dialect, transactionExecutor, driver);\n\n let transactionBegun = false;\n try {\n await driver.beginTransaction(connection, {});\n transactionBegun = true;\n\n const result = await callback(transactionAdapter);\n\n await driver.commitTransaction(connection);\n\n return result;\n } catch (error) {\n if (transactionBegun) {\n await driver.rollbackTransaction(connection);\n }\n\n throw error;\n }\n });\n }\n\n /**\n * Returns a copy of this adapter with the given plugin installed.\n */\n withPlugin(plugin: GenericSQLPlugin): SqlDriverAdapter {\n return new SqlDriverAdapter(this.#dialect, this.#executor.withPlugin(plugin), this.#driver);\n }\n\n /**\n * Returns a copy of this adapter without any plugins.\n */\n withoutPlugins(): SqlDriverAdapter {\n return new SqlDriverAdapter(this.#dialect, this.#executor.withoutPlugins(), this.#driver);\n }\n\n /**\n * Releases all resources and disconnects from the database.\n */\n async destroy(): Promise<void> {\n if (this.#driver !== null) {\n await this.#driver.destroy();\n }\n }\n}\n"],"mappings":";;;;;;AAeA,IAAa,mBAAb,MAAa,iBAAiB;CAC5B,CAASA;CACT,CAASC;CACT,CAASC;CAIT,YAAY,SAAkB,UAA0B,QAA+B;AACrF,QAAKF,UAAW;AAEhB,MAAI,UAAU;AACZ,SAAKC,SAAU,UAAU;AACzB,SAAKC,WAAY;SACZ;GAEL,MAAM,gBAAgB,IAAI,cADR,QAAQ,cAAc,CACU;GAClD,MAAM,qBAAqB,IAAI,0BAA0B,cAAc;AACvE,SAAKD,SAAU;AACf,SAAKC,WAAY,IAAI,qBAAqB,mBAAmB;;;CAIjE,MAAM,aAAa,OAAqE;AACtF,SAAO,MAAM,MAAKA,SAAU,aAAa,MAAM;;CAGjD,MAAM,YAAe,UAA6D;AAChF,MAAI,MAAKD,WAAY,KACnB,OAAM,IAAI,MAAM,qEAAqE;EAGvF,MAAM,SAAS,MAAKA;AAEpB,SAAO,MAAM,MAAKC,SAAU,kBAAkB,OAAO,eAAe;GAClE,MAAM,2BAA2B,IAAI,yBAAyB,WAAW;GACzE,MAAM,sBAAsB,MAAKA,SAAU,uBAAuB,yBAAyB;GAC3F,MAAM,qBAAqB,IAAI,iBAAiB,MAAKF,SAAU,qBAAqB,OAAO;GAE3F,IAAI,mBAAmB;AACvB,OAAI;AACF,UAAM,OAAO,iBAAiB,YAAY,EAAE,CAAC;AAC7C,uBAAmB;IAEnB,MAAM,SAAS,MAAM,SAAS,mBAAmB;AAEjD,UAAM,OAAO,kBAAkB,WAAW;AAE1C,WAAO;YACA,OAAO;AACd,QAAI,iBACF,OAAM,OAAO,oBAAoB,WAAW;AAG9C,UAAM;;IAER;;;;;CAMJ,WAAW,QAA4C;AACrD,SAAO,IAAI,iBAAiB,MAAKA,SAAU,MAAKE,SAAU,WAAW,OAAO,EAAE,MAAKD,OAAQ;;;;;CAM7F,iBAAmC;AACjC,SAAO,IAAI,iBAAiB,MAAKD,SAAU,MAAKE,SAAU,gBAAgB,EAAE,MAAKD,OAAQ;;;;;CAM3F,MAAM,UAAyB;AAC7B,MAAI,MAAKA,WAAY,KACnB,OAAM,MAAKA,OAAQ,SAAS"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DialectAdapter } from "./dialect-adapter/dialect-adapter.js";
|
|
2
|
+
|
|
3
|
+
//#region src/sql-driver/sql-driver.d.ts
|
|
4
|
+
|
|
5
|
+
interface CompiledQuery {
|
|
6
|
+
readonly sql: string;
|
|
7
|
+
readonly parameters: ReadonlyArray<unknown>;
|
|
8
|
+
}
|
|
9
|
+
interface DatabaseConnection {
|
|
10
|
+
executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
|
|
11
|
+
}
|
|
12
|
+
interface QueryResult<O> {
|
|
13
|
+
readonly numAffectedRows?: bigint;
|
|
14
|
+
readonly numChangedRows?: bigint;
|
|
15
|
+
readonly insertId?: bigint;
|
|
16
|
+
readonly rows: O[];
|
|
17
|
+
}
|
|
18
|
+
interface TransactionSettings {}
|
|
19
|
+
interface Driver {
|
|
20
|
+
init(): Promise<void>;
|
|
21
|
+
acquireConnection(): Promise<DatabaseConnection>;
|
|
22
|
+
releaseConnection(connection: DatabaseConnection): Promise<void>;
|
|
23
|
+
beginTransaction(connection: DatabaseConnection, settings: TransactionSettings): Promise<void>;
|
|
24
|
+
commitTransaction(connection: DatabaseConnection): Promise<void>;
|
|
25
|
+
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
26
|
+
destroy(): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
interface QueryCompiler {
|
|
29
|
+
compileQuery(node: unknown, queryId: unknown): CompiledQuery;
|
|
30
|
+
}
|
|
31
|
+
interface Dialect {
|
|
32
|
+
createDriver(): Driver;
|
|
33
|
+
createAdapter(): DialectAdapter;
|
|
34
|
+
createQueryCompiler(): QueryCompiler;
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { CompiledQuery, DatabaseConnection, Dialect, Driver, QueryCompiler, QueryResult, TransactionSettings };
|
|
38
|
+
//# sourceMappingURL=sql-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-driver.d.ts","names":[],"sources":["../../src/sql-driver/sql-driver.ts"],"sourcesContent":[],"mappings":";;;;AAgBiD,UANhC,aAAA,CAMgC;EAAO,SAAA,GAAA,EAAA,MAAA;EAGvC,SAAA,UAAW,EAPL,aAYL,CAAA,OAAA,CAAA;AAGlB;AAIiB,UAhBA,kBAAA,CAgBM;EACb,YAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAhBuB,aAgBvB,CAAA,EAhBuC,OAgBvC,CAhB+C,WAgB/C,CAhB2D,CAgB3D,CAAA,CAAA;;AAEa,UAfN,WAeM,CAAA,CAAA,CAAA,CAAA;EACS,SAAA,eAAA,CAAA,EAAA,MAAA;EAAqB,SAAA,cAAA,CAAA,EAAA,MAAA;EAEtB,SAAA,QAAA,CAAA,EAAA,MAAA;EAA8B,SAAA,IAAA,EAb5C,CAa4C,EAAA;;AAC7B,UAXf,mBAAA,CAWe;AACE,UARjB,MAAA,CAQiB;EAAqB,IAAA,EAAA,EAP7C,OAO6C,CAAA,IAAA,CAAA;EAE1C,iBAAA,EAAA,EAPU,OAOV,CAPkB,kBAOlB,CAAA;EAAO,iBAAA,CAAA,UAAA,EANY,kBAMZ,CAAA,EANiC,OAMjC,CAAA,IAAA,CAAA;EAGH,gBAAa,CAAA,UAAA,EAPC,kBAQ+B,EAAA,QAAA,EARD,mBAQC,CAAA,EARqB,OAQrB,CAAA,IAAA,CAAA;EAG7C,iBAAO,CAAA,UAAA,EAVQ,kBAUR,CAAA,EAV6B,OAU7B,CAAA,IAAA,CAAA;EACN,mBAAA,CAAA,UAAA,EAVgB,kBAUhB,CAAA,EAVqC,OAUrC,CAAA,IAAA,CAAA;EACC,OAAA,EAAA,EATN,OASM,CAAA,IAAA,CAAA;;AACmB,UAPrB,aAAA,CAOqB;iDANW;;UAGhC,OAAA;kBACC;mBACC;yBACM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|