semola 0.5.1 → 0.5.3
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/README.md +144 -29
- package/dist/api/core/index.cjs +206 -0
- package/dist/api/core/index.d.cts +21 -0
- package/dist/api/core/index.d.cts.map +1 -0
- package/dist/api/core/index.d.mts +21 -0
- package/dist/api/core/index.d.mts.map +1 -0
- package/dist/api/core/index.mjs +208 -0
- package/dist/api/core/index.mjs.map +1 -0
- package/dist/api/core/types.d.cts +107 -0
- package/dist/api/core/types.d.cts.map +1 -0
- package/dist/api/core/types.d.mts +107 -0
- package/dist/api/core/types.d.mts.map +1 -0
- package/dist/api/middleware/index.cjs +8 -0
- package/dist/api/middleware/index.d.cts +11 -0
- package/dist/api/middleware/index.d.cts.map +1 -0
- package/dist/api/middleware/index.d.mts +11 -0
- package/dist/api/middleware/index.d.mts.map +1 -0
- package/dist/api/middleware/index.mjs +10 -0
- package/dist/api/middleware/index.mjs.map +1 -0
- package/dist/api/middleware/types.d.cts +16 -0
- package/dist/api/middleware/types.d.cts.map +1 -0
- package/dist/api/middleware/types.d.mts +16 -0
- package/dist/api/middleware/types.d.mts.map +1 -0
- package/dist/api/openapi/index.cjs +254 -0
- package/dist/api/openapi/index.mjs +256 -0
- package/dist/api/openapi/index.mjs.map +1 -0
- package/dist/api/openapi/types.d.cts +60 -0
- package/dist/api/openapi/types.d.cts.map +1 -0
- package/dist/api/openapi/types.d.mts +60 -0
- package/dist/api/openapi/types.d.mts.map +1 -0
- package/dist/api/validation/index.cjs +64 -0
- package/dist/api/validation/index.mjs +61 -0
- package/dist/api/validation/index.mjs.map +1 -0
- package/dist/cache/types.d.cts +17 -0
- package/dist/cache/types.d.cts.map +1 -0
- package/dist/cache/types.d.mts +17 -0
- package/dist/cache/types.d.mts.map +1 -0
- package/dist/cron/builder/index.cjs +166 -0
- package/dist/cron/builder/index.d.cts +28 -0
- package/dist/cron/builder/index.d.cts.map +1 -0
- package/dist/cron/builder/index.d.mts +28 -0
- package/dist/cron/builder/index.d.mts.map +1 -0
- package/dist/cron/builder/index.mjs +163 -0
- package/dist/cron/builder/index.mjs.map +1 -0
- package/dist/cron/builder/types.cjs +27 -0
- package/dist/cron/builder/types.d.cts +79 -0
- package/dist/cron/builder/types.d.cts.map +1 -0
- package/dist/cron/builder/types.d.mts +79 -0
- package/dist/cron/builder/types.d.mts.map +1 -0
- package/dist/cron/builder/types.mjs +28 -0
- package/dist/cron/builder/types.mjs.map +1 -0
- package/dist/cron/core/index.cjs +308 -0
- package/dist/cron/core/index.d.cts +39 -0
- package/dist/cron/core/index.d.cts.map +1 -0
- package/dist/cron/core/index.d.mts +39 -0
- package/dist/cron/core/index.d.mts.map +1 -0
- package/dist/cron/core/index.mjs +310 -0
- package/dist/cron/core/index.mjs.map +1 -0
- package/dist/cron/core/scanner.cjs +237 -0
- package/dist/cron/core/scanner.mjs +238 -0
- package/dist/cron/core/scanner.mjs.map +1 -0
- package/dist/cron/core/types.d.cts +11 -0
- package/dist/cron/core/types.d.cts.map +1 -0
- package/dist/cron/core/types.d.mts +11 -0
- package/dist/cron/core/types.d.mts.map +1 -0
- package/dist/errors/types.d.cts +5 -0
- package/dist/errors/types.d.cts.map +1 -0
- package/dist/errors/types.d.mts +5 -0
- package/dist/errors/types.d.mts.map +1 -0
- package/dist/i18n/types.d.cts +13 -0
- package/dist/i18n/types.d.cts.map +1 -0
- package/dist/i18n/types.d.mts +13 -0
- package/dist/i18n/types.d.mts.map +1 -0
- package/dist/lib/api/index.cjs +5 -0
- package/dist/lib/api/index.d.cts +5 -0
- package/dist/lib/api/index.d.mts +5 -0
- package/dist/lib/api/index.mjs +3 -0
- package/dist/lib/cache/index.cjs +74 -0
- package/dist/lib/cache/index.d.cts +36 -0
- package/dist/lib/cache/index.d.cts.map +1 -0
- package/dist/lib/cache/index.d.mts +36 -0
- package/dist/lib/cache/index.d.mts.map +1 -0
- package/dist/lib/cache/index.mjs +75 -0
- package/dist/lib/cache/index.mjs.map +1 -0
- package/dist/lib/cron/index.cjs +13 -0
- package/dist/lib/cron/index.d.cts +4 -0
- package/dist/lib/cron/index.d.mts +4 -0
- package/dist/lib/cron/index.mjs +4 -0
- package/dist/lib/errors/index.cjs +30 -0
- package/dist/lib/errors/index.d.cts +13 -0
- package/dist/lib/errors/index.d.cts.map +1 -0
- package/dist/lib/errors/index.d.mts +13 -0
- package/dist/lib/errors/index.d.mts.map +1 -0
- package/dist/lib/errors/index.mjs +28 -0
- package/dist/lib/errors/index.mjs.map +1 -0
- package/dist/lib/i18n/index.cjs +42 -0
- package/dist/lib/i18n/index.d.cts +20 -0
- package/dist/lib/i18n/index.d.cts.map +1 -0
- package/dist/lib/i18n/index.d.mts +20 -0
- package/dist/lib/i18n/index.d.mts.map +1 -0
- package/dist/lib/i18n/index.mjs +43 -0
- package/dist/lib/i18n/index.mjs.map +1 -0
- package/dist/lib/logging/index.cjs +18 -0
- package/dist/lib/logging/index.d.cts +7 -0
- package/dist/lib/logging/index.d.mts +7 -0
- package/dist/lib/logging/index.mjs +5 -0
- package/dist/lib/orm/index.cjs +20 -0
- package/dist/lib/orm/index.d.cts +7 -0
- package/dist/lib/orm/index.d.mts +7 -0
- package/dist/lib/orm/index.mjs +6 -0
- package/dist/lib/policy/index.cjs +99 -0
- package/dist/lib/policy/index.d.cts +21 -0
- package/dist/lib/policy/index.d.cts.map +1 -0
- package/dist/lib/policy/index.d.mts +21 -0
- package/dist/lib/policy/index.d.mts.map +1 -0
- package/dist/lib/policy/index.mjs +81 -0
- package/dist/lib/policy/index.mjs.map +1 -0
- package/dist/lib/prompts/index.cjs +409 -0
- package/dist/lib/prompts/index.d.cts +31 -0
- package/dist/lib/prompts/index.d.cts.map +1 -0
- package/dist/lib/prompts/index.d.mts +31 -0
- package/dist/lib/prompts/index.d.mts.map +1 -0
- package/dist/lib/prompts/index.mjs +405 -0
- package/dist/lib/prompts/index.mjs.map +1 -0
- package/dist/lib/pubsub/index.cjs +117 -0
- package/dist/lib/pubsub/index.d.cts +36 -0
- package/dist/lib/pubsub/index.d.cts.map +1 -0
- package/dist/lib/pubsub/index.d.mts +36 -0
- package/dist/lib/pubsub/index.d.mts.map +1 -0
- package/dist/lib/pubsub/index.mjs +118 -0
- package/dist/lib/pubsub/index.mjs.map +1 -0
- package/dist/lib/queue/index.cjs +182 -0
- package/dist/lib/queue/index.d.cts +32 -0
- package/dist/lib/queue/index.d.cts.map +1 -0
- package/dist/lib/queue/index.d.mts +32 -0
- package/dist/lib/queue/index.d.mts.map +1 -0
- package/dist/lib/queue/index.mjs +183 -0
- package/dist/lib/queue/index.mjs.map +1 -0
- package/dist/lib/workflow/index.cjs +534 -0
- package/dist/lib/workflow/index.d.cts +7 -0
- package/dist/lib/workflow/index.d.cts.map +1 -0
- package/dist/lib/workflow/index.d.mts +7 -0
- package/dist/lib/workflow/index.d.mts.map +1 -0
- package/dist/lib/workflow/index.mjs +535 -0
- package/dist/lib/workflow/index.mjs.map +1 -0
- package/dist/logging/core/index.cjs +99 -0
- package/dist/logging/core/index.d.cts +26 -0
- package/dist/logging/core/index.d.cts.map +1 -0
- package/dist/logging/core/index.d.mts +26 -0
- package/dist/logging/core/index.d.mts.map +1 -0
- package/dist/logging/core/index.mjs +99 -0
- package/dist/logging/core/index.mjs.map +1 -0
- package/dist/logging/core/types.cjs +10 -0
- package/dist/logging/core/types.d.cts +22 -0
- package/dist/logging/core/types.d.cts.map +1 -0
- package/dist/logging/core/types.d.mts +22 -0
- package/dist/logging/core/types.d.mts.map +1 -0
- package/dist/logging/core/types.mjs +12 -0
- package/dist/logging/core/types.mjs.map +1 -0
- package/dist/logging/formatter/index.cjs +119 -0
- package/dist/logging/formatter/index.d.cts +27 -0
- package/dist/logging/formatter/index.d.cts.map +1 -0
- package/dist/logging/formatter/index.d.mts +27 -0
- package/dist/logging/formatter/index.d.mts.map +1 -0
- package/dist/logging/formatter/index.mjs +115 -0
- package/dist/logging/formatter/index.mjs.map +1 -0
- package/dist/logging/formatter/types.d.cts +5 -0
- package/dist/logging/formatter/types.d.cts.map +1 -0
- package/dist/logging/formatter/types.d.mts +5 -0
- package/dist/logging/formatter/types.d.mts.map +1 -0
- package/dist/logging/provider/index.cjs +165 -0
- package/dist/logging/provider/index.d.cts +28 -0
- package/dist/logging/provider/index.d.cts.map +1 -0
- package/dist/logging/provider/index.d.mts +28 -0
- package/dist/logging/provider/index.d.mts.map +1 -0
- package/dist/logging/provider/index.mjs +165 -0
- package/dist/logging/provider/index.mjs.map +1 -0
- package/dist/logging/provider/types.d.cts +23 -0
- package/dist/logging/provider/types.d.cts.map +1 -0
- package/dist/logging/provider/types.d.mts +23 -0
- package/dist/logging/provider/types.d.mts.map +1 -0
- package/dist/node_modules/@standard-schema/spec/dist/index.d.cts +80 -0
- package/dist/node_modules/@standard-schema/spec/dist/index.d.cts.map +1 -0
- package/dist/node_modules/@standard-schema/spec/dist/index.d.mts +80 -0
- package/dist/node_modules/@standard-schema/spec/dist/index.d.mts.map +1 -0
- package/dist/orm/column.cjs +137 -0
- package/dist/orm/column.d.cts +121 -0
- package/dist/orm/column.d.cts.map +1 -0
- package/dist/orm/column.d.mts +121 -0
- package/dist/orm/column.d.mts.map +1 -0
- package/dist/orm/column.mjs +132 -0
- package/dist/orm/column.mjs.map +1 -0
- package/dist/orm/dialect/index.cjs +14 -0
- package/dist/orm/dialect/index.mjs +16 -0
- package/dist/orm/dialect/index.mjs.map +1 -0
- package/dist/orm/dialect/mysql.cjs +31 -0
- package/dist/orm/dialect/mysql.mjs +33 -0
- package/dist/orm/dialect/mysql.mjs.map +1 -0
- package/dist/orm/dialect/postgres.cjs +23 -0
- package/dist/orm/dialect/postgres.mjs +25 -0
- package/dist/orm/dialect/postgres.mjs.map +1 -0
- package/dist/orm/dialect/sqlite.cjs +31 -0
- package/dist/orm/dialect/sqlite.mjs +33 -0
- package/dist/orm/dialect/sqlite.mjs.map +1 -0
- package/dist/orm/dialect/utils.cjs +8 -0
- package/dist/orm/dialect/utils.mjs +10 -0
- package/dist/orm/dialect/utils.mjs.map +1 -0
- package/dist/orm/internal/table-columns.cjs +31 -0
- package/dist/orm/internal/table-columns.mjs +32 -0
- package/dist/orm/internal/table-columns.mjs.map +1 -0
- package/dist/orm/internal/table-lookup.cjs +35 -0
- package/dist/orm/internal/table-lookup.mjs +35 -0
- package/dist/orm/internal/table-lookup.mjs.map +1 -0
- package/dist/orm/internal/table-relations.cjs +28 -0
- package/dist/orm/internal/table-relations.mjs +29 -0
- package/dist/orm/internal/table-relations.mjs.map +1 -0
- package/dist/orm/migration/config.cjs +7 -0
- package/dist/orm/migration/config.d.cts +7 -0
- package/dist/orm/migration/config.d.cts.map +1 -0
- package/dist/orm/migration/config.d.mts +7 -0
- package/dist/orm/migration/config.d.mts.map +1 -0
- package/dist/orm/migration/config.mjs +8 -0
- package/dist/orm/migration/config.mjs.map +1 -0
- package/dist/orm/migration/types.d.cts +20 -0
- package/dist/orm/migration/types.d.cts.map +1 -0
- package/dist/orm/migration/types.d.mts +20 -0
- package/dist/orm/migration/types.d.mts.map +1 -0
- package/dist/orm/orm.cjs +41 -0
- package/dist/orm/orm.d.cts +18 -0
- package/dist/orm/orm.d.cts.map +1 -0
- package/dist/orm/orm.d.mts +18 -0
- package/dist/orm/orm.d.mts.map +1 -0
- package/dist/orm/orm.mjs +43 -0
- package/dist/orm/orm.mjs.map +1 -0
- package/dist/orm/relation.cjs +18 -0
- package/dist/orm/relation.d.cts +8 -0
- package/dist/orm/relation.d.cts.map +1 -0
- package/dist/orm/relation.d.mts +8 -0
- package/dist/orm/relation.d.mts.map +1 -0
- package/dist/orm/relation.mjs +19 -0
- package/dist/orm/relation.mjs.map +1 -0
- package/dist/orm/runtime/builders/mutations.cjs +29 -0
- package/dist/orm/runtime/builders/mutations.mjs +28 -0
- package/dist/orm/runtime/builders/mutations.mjs.map +1 -0
- package/dist/orm/runtime/builders/select.cjs +18 -0
- package/dist/orm/runtime/builders/select.mjs +19 -0
- package/dist/orm/runtime/builders/select.mjs.map +1 -0
- package/dist/orm/runtime/client.cjs +90 -0
- package/dist/orm/runtime/client.mjs +92 -0
- package/dist/orm/runtime/client.mjs.map +1 -0
- package/dist/orm/runtime/context.cjs +49 -0
- package/dist/orm/runtime/context.mjs +51 -0
- package/dist/orm/runtime/context.mjs.map +1 -0
- package/dist/orm/runtime/dialect/index.cjs +11 -0
- package/dist/orm/runtime/dialect/index.mjs +13 -0
- package/dist/orm/runtime/dialect/index.mjs.map +1 -0
- package/dist/orm/runtime/dialect/mysql.cjs +95 -0
- package/dist/orm/runtime/dialect/mysql.mjs +97 -0
- package/dist/orm/runtime/dialect/mysql.mjs.map +1 -0
- package/dist/orm/runtime/dialect/postgres.cjs +51 -0
- package/dist/orm/runtime/dialect/postgres.mjs +53 -0
- package/dist/orm/runtime/dialect/postgres.mjs.map +1 -0
- package/dist/orm/runtime/dialect/sqlite.cjs +4 -0
- package/dist/orm/runtime/dialect/sqlite.mjs +7 -0
- package/dist/orm/runtime/dialect/sqlite.mjs.map +1 -0
- package/dist/orm/runtime/errors.cjs +19 -0
- package/dist/orm/runtime/errors.mjs +21 -0
- package/dist/orm/runtime/errors.mjs.map +1 -0
- package/dist/orm/runtime/hydrate/many.cjs +46 -0
- package/dist/orm/runtime/hydrate/many.mjs +48 -0
- package/dist/orm/runtime/hydrate/many.mjs.map +1 -0
- package/dist/orm/runtime/hydrate/one.cjs +38 -0
- package/dist/orm/runtime/hydrate/one.mjs +40 -0
- package/dist/orm/runtime/hydrate/one.mjs.map +1 -0
- package/dist/orm/runtime/hydrate.cjs +49 -0
- package/dist/orm/runtime/hydrate.mjs +51 -0
- package/dist/orm/runtime/hydrate.mjs.map +1 -0
- package/dist/orm/runtime/rows.cjs +30 -0
- package/dist/orm/runtime/rows.mjs +31 -0
- package/dist/orm/runtime/rows.mjs.map +1 -0
- package/dist/orm/runtime/utils.cjs +27 -0
- package/dist/orm/runtime/utils.mjs +27 -0
- package/dist/orm/runtime/utils.mjs.map +1 -0
- package/dist/orm/sql/parse-array.cjs +64 -0
- package/dist/orm/sql/parse-array.mjs +66 -0
- package/dist/orm/sql/parse-array.mjs.map +1 -0
- package/dist/orm/sql/plan/select.cjs +36 -0
- package/dist/orm/sql/plan/select.mjs +38 -0
- package/dist/orm/sql/plan/select.mjs.map +1 -0
- package/dist/orm/sql/plan/where/operators.cjs +95 -0
- package/dist/orm/sql/plan/where/operators.mjs +97 -0
- package/dist/orm/sql/plan/where/operators.mjs.map +1 -0
- package/dist/orm/sql/plan/where.cjs +59 -0
- package/dist/orm/sql/plan/where.mjs +61 -0
- package/dist/orm/sql/plan/where.mjs.map +1 -0
- package/dist/orm/sql/serialize/clauses.cjs +36 -0
- package/dist/orm/sql/serialize/clauses.mjs +37 -0
- package/dist/orm/sql/serialize/clauses.mjs.map +1 -0
- package/dist/orm/sql/serialize/joins.cjs +31 -0
- package/dist/orm/sql/serialize/joins.mjs +33 -0
- package/dist/orm/sql/serialize/joins.mjs.map +1 -0
- package/dist/orm/sql/serialize/values.cjs +30 -0
- package/dist/orm/sql/serialize/values.mjs +32 -0
- package/dist/orm/sql/serialize/values.mjs.map +1 -0
- package/dist/orm/sql/serialize/where/predicate.cjs +73 -0
- package/dist/orm/sql/serialize/where/predicate.mjs +75 -0
- package/dist/orm/sql/serialize/where/predicate.mjs.map +1 -0
- package/dist/orm/sql/serialize/where/tree.cjs +26 -0
- package/dist/orm/sql/serialize/where/tree.mjs +28 -0
- package/dist/orm/sql/serialize/where/tree.mjs.map +1 -0
- package/dist/orm/sql/serialize/where.cjs +10 -0
- package/dist/orm/sql/serialize/where.mjs +12 -0
- package/dist/orm/sql/serialize/where.mjs.map +1 -0
- package/dist/orm/sql/serialize.cjs +24 -0
- package/dist/orm/sql/serialize.mjs +25 -0
- package/dist/orm/sql/serialize.mjs.map +1 -0
- package/dist/orm/table.cjs +12 -0
- package/dist/orm/table.d.cts +12 -0
- package/dist/orm/table.d.cts.map +1 -0
- package/dist/orm/table.d.mts +12 -0
- package/dist/orm/table.d.mts.map +1 -0
- package/dist/orm/table.mjs +14 -0
- package/dist/orm/table.mjs.map +1 -0
- package/dist/orm/types.d.cts +183 -0
- package/dist/orm/types.d.cts.map +1 -0
- package/dist/orm/types.d.mts +183 -0
- package/dist/orm/types.d.mts.map +1 -0
- package/dist/policy/helpers.cjs +206 -0
- package/dist/policy/helpers.d.cts +50 -0
- package/dist/policy/helpers.d.cts.map +1 -0
- package/dist/policy/helpers.d.mts +50 -0
- package/dist/policy/helpers.d.mts.map +1 -0
- package/dist/policy/helpers.mjs +190 -0
- package/dist/policy/helpers.mjs.map +1 -0
- package/dist/policy/types.d.cts +16 -0
- package/dist/policy/types.d.cts.map +1 -0
- package/dist/policy/types.d.mts +16 -0
- package/dist/policy/types.d.mts.map +1 -0
- package/dist/prompts/core/keys.cjs +165 -0
- package/dist/prompts/core/keys.mjs +167 -0
- package/dist/prompts/core/keys.mjs.map +1 -0
- package/dist/prompts/core/runtime.cjs +104 -0
- package/dist/prompts/core/runtime.mjs +106 -0
- package/dist/prompts/core/runtime.mjs.map +1 -0
- package/dist/prompts/core/session.cjs +98 -0
- package/dist/prompts/core/session.mjs +100 -0
- package/dist/prompts/core/session.mjs.map +1 -0
- package/dist/prompts/core/types.d.cts +21 -0
- package/dist/prompts/core/types.d.cts.map +1 -0
- package/dist/prompts/core/types.d.mts +21 -0
- package/dist/prompts/core/types.d.mts.map +1 -0
- package/dist/prompts/types.d.cts +52 -0
- package/dist/prompts/types.d.cts.map +1 -0
- package/dist/prompts/types.d.mts +52 -0
- package/dist/prompts/types.d.mts.map +1 -0
- package/dist/pubsub/types.d.cts +10 -0
- package/dist/pubsub/types.d.cts.map +1 -0
- package/dist/pubsub/types.d.mts +10 -0
- package/dist/pubsub/types.d.mts.map +1 -0
- package/dist/queue/types.d.cts +47 -0
- package/dist/queue/types.d.cts.map +1 -0
- package/dist/queue/types.d.mts +47 -0
- package/dist/queue/types.d.mts.map +1 -0
- package/dist/workflow/types.d.cts +83 -0
- package/dist/workflow/types.d.cts.map +1 -0
- package/dist/workflow/types.d.mts +83 -0
- package/dist/workflow/types.d.mts.map +1 -0
- package/package.json +112 -16
- package/dist/lib/api/core/index.d.ts +0 -15
- package/dist/lib/api/core/index.d.ts.map +0 -1
- package/dist/lib/api/core/index.js +0 -218
- package/dist/lib/api/core/index.js.map +0 -1
- package/dist/lib/api/core/index.test.d.ts +0 -2
- package/dist/lib/api/core/index.test.d.ts.map +0 -1
- package/dist/lib/api/core/index.test.js +0 -219
- package/dist/lib/api/core/index.test.js.map +0 -1
- package/dist/lib/api/core/types.d.ts +0 -109
- package/dist/lib/api/core/types.d.ts.map +0 -1
- package/dist/lib/api/core/types.js +0 -2
- package/dist/lib/api/core/types.js.map +0 -1
- package/dist/lib/api/index.d.ts +0 -5
- package/dist/lib/api/index.d.ts.map +0 -1
- package/dist/lib/api/index.js +0 -3
- package/dist/lib/api/index.js.map +0 -1
- package/dist/lib/api/middleware/index.d.ts +0 -7
- package/dist/lib/api/middleware/index.d.ts.map +0 -1
- package/dist/lib/api/middleware/index.js +0 -7
- package/dist/lib/api/middleware/index.js.map +0 -1
- package/dist/lib/api/middleware/index.test.d.ts +0 -2
- package/dist/lib/api/middleware/index.test.d.ts.map +0 -1
- package/dist/lib/api/middleware/index.test.js +0 -67
- package/dist/lib/api/middleware/index.test.js.map +0 -1
- package/dist/lib/api/middleware/types.d.ts +0 -12
- package/dist/lib/api/middleware/types.d.ts.map +0 -1
- package/dist/lib/api/middleware/types.js +0 -2
- package/dist/lib/api/middleware/types.js.map +0 -1
- package/dist/lib/api/openapi/index.d.ts +0 -31
- package/dist/lib/api/openapi/index.d.ts.map +0 -1
- package/dist/lib/api/openapi/index.js +0 -284
- package/dist/lib/api/openapi/index.js.map +0 -1
- package/dist/lib/api/openapi/index.test.d.ts +0 -2
- package/dist/lib/api/openapi/index.test.d.ts.map +0 -1
- package/dist/lib/api/openapi/index.test.js +0 -359
- package/dist/lib/api/openapi/index.test.js.map +0 -1
- package/dist/lib/api/openapi/types.d.ts +0 -57
- package/dist/lib/api/openapi/types.d.ts.map +0 -1
- package/dist/lib/api/openapi/types.js +0 -5
- package/dist/lib/api/openapi/types.js.map +0 -1
- package/dist/lib/api/validation/index.d.ts +0 -33
- package/dist/lib/api/validation/index.d.ts.map +0 -1
- package/dist/lib/api/validation/index.js +0 -92
- package/dist/lib/api/validation/index.js.map +0 -1
- package/dist/lib/api/validation/index.test.d.ts +0 -2
- package/dist/lib/api/validation/index.test.d.ts.map +0 -1
- package/dist/lib/api/validation/index.test.js +0 -135
- package/dist/lib/api/validation/index.test.js.map +0 -1
- package/dist/lib/cache/index.d.ts +0 -25
- package/dist/lib/cache/index.d.ts.map +0 -1
- package/dist/lib/cache/index.js +0 -62
- package/dist/lib/cache/index.js.map +0 -1
- package/dist/lib/cache/index.test.d.ts +0 -2
- package/dist/lib/cache/index.test.d.ts.map +0 -1
- package/dist/lib/cache/index.test.js +0 -314
- package/dist/lib/cache/index.test.js.map +0 -1
- package/dist/lib/cache/types.d.ts +0 -5
- package/dist/lib/cache/types.d.ts.map +0 -1
- package/dist/lib/cache/types.js +0 -2
- package/dist/lib/cache/types.js.map +0 -1
- package/dist/lib/errors/index.d.ts +0 -9
- package/dist/lib/errors/index.d.ts.map +0 -1
- package/dist/lib/errors/index.js +0 -25
- package/dist/lib/errors/index.js.map +0 -1
- package/dist/lib/errors/index.test.d.ts +0 -2
- package/dist/lib/errors/index.test.d.ts.map +0 -1
- package/dist/lib/errors/index.test.js +0 -197
- package/dist/lib/errors/index.test.js.map +0 -1
- package/dist/lib/errors/types.d.ts +0 -2
- package/dist/lib/errors/types.d.ts.map +0 -1
- package/dist/lib/errors/types.js +0 -2
- package/dist/lib/errors/types.js.map +0 -1
- package/dist/lib/i18n/index.d.ts +0 -18
- package/dist/lib/i18n/index.d.ts.map +0 -1
- package/dist/lib/i18n/index.js +0 -38
- package/dist/lib/i18n/index.js.map +0 -1
- package/dist/lib/i18n/index.test.d.ts +0 -2
- package/dist/lib/i18n/index.test.d.ts.map +0 -1
- package/dist/lib/i18n/index.test.js +0 -402
- package/dist/lib/i18n/index.test.js.map +0 -1
- package/dist/lib/i18n/types.d.ts +0 -15
- package/dist/lib/i18n/types.d.ts.map +0 -1
- package/dist/lib/i18n/types.js +0 -2
- package/dist/lib/i18n/types.js.map +0 -1
- package/dist/lib/policy/index.d.ts +0 -9
- package/dist/lib/policy/index.d.ts.map +0 -1
- package/dist/lib/policy/index.js +0 -51
- package/dist/lib/policy/index.js.map +0 -1
- package/dist/lib/policy/index.test.d.ts +0 -2
- package/dist/lib/policy/index.test.d.ts.map +0 -1
- package/dist/lib/policy/index.test.js +0 -328
- package/dist/lib/policy/index.test.js.map +0 -1
- package/dist/lib/policy/types.d.ts +0 -27
- package/dist/lib/policy/types.d.ts.map +0 -1
- package/dist/lib/policy/types.js +0 -2
- package/dist/lib/policy/types.js.map +0 -1
- package/dist/lib/pubsub/index.d.ts +0 -23
- package/dist/lib/pubsub/index.d.ts.map +0 -1
- package/dist/lib/pubsub/index.js +0 -55
- package/dist/lib/pubsub/index.js.map +0 -1
- package/dist/lib/pubsub/index.test.d.ts +0 -2
- package/dist/lib/pubsub/index.test.d.ts.map +0 -1
- package/dist/lib/pubsub/index.test.js +0 -550
- package/dist/lib/pubsub/index.test.js.map +0 -1
- package/dist/lib/pubsub/types.d.ts +0 -7
- package/dist/lib/pubsub/types.d.ts.map +0 -1
- package/dist/lib/pubsub/types.js +0 -2
- package/dist/lib/pubsub/types.js.map +0 -1
- package/dist/lib/queue/index.d.ts +0 -28
- package/dist/lib/queue/index.d.ts.map +0 -1
- package/dist/lib/queue/index.js +0 -211
- package/dist/lib/queue/index.js.map +0 -1
- package/dist/lib/queue/index.test.d.ts +0 -2
- package/dist/lib/queue/index.test.d.ts.map +0 -1
- package/dist/lib/queue/index.test.js +0 -740
- package/dist/lib/queue/index.test.js.map +0 -1
- package/dist/lib/queue/types.d.ts +0 -52
- package/dist/lib/queue/types.d.ts.map +0 -1
- package/dist/lib/queue/types.js +0 -2
- package/dist/lib/queue/types.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/lib/orm/dialect/postgres.ts
|
|
2
|
+
function escapeLike(s) {
|
|
3
|
+
return s.replaceAll("%", "\\%").replaceAll("_", "\\_");
|
|
4
|
+
}
|
|
5
|
+
const postgresDialectAdapter = {
|
|
6
|
+
dialect: "postgres",
|
|
7
|
+
likeKeyword: "ILIKE",
|
|
8
|
+
quoteIdentifier(identifier) {
|
|
9
|
+
return `"${identifier.replaceAll("\"", "\"\"")}"`;
|
|
10
|
+
},
|
|
11
|
+
serializeValue(_kind, value) {
|
|
12
|
+
if (value instanceof Date) return value.toISOString();
|
|
13
|
+
return value;
|
|
14
|
+
},
|
|
15
|
+
renderLikePattern(mode, value) {
|
|
16
|
+
const escaped = escapeLike(value);
|
|
17
|
+
if (mode === "startsWith") return `${escaped}%`;
|
|
18
|
+
if (mode === "endsWith") return `%${escaped}`;
|
|
19
|
+
return `%${escaped}%`;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { postgresDialectAdapter };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=postgres.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.mjs","names":[],"sources":["../../../src/lib/orm/dialect/postgres.ts"],"sourcesContent":["import type { DialectAdapter } from \"../types.js\";\n\nfunction escapeLike(s: string) {\n return s.replaceAll(\"%\", \"\\\\%\").replaceAll(\"_\", \"\\\\_\");\n}\n\nexport const postgresDialectAdapter: DialectAdapter = {\n dialect: \"postgres\",\n likeKeyword: \"ILIKE\",\n\n quoteIdentifier(identifier: string) {\n return `\"${identifier.replaceAll('\"', '\"\"')}\"`;\n },\n\n serializeValue(_kind, value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n return value;\n },\n\n renderLikePattern(mode, value) {\n const escaped = escapeLike(value);\n\n if (mode === \"startsWith\") {\n return `${escaped}%`;\n }\n\n if (mode === \"endsWith\") {\n return `%${escaped}`;\n }\n\n return `%${escaped}%`;\n },\n};\n"],"mappings":";AAEA,SAAS,WAAW,GAAW;AAC7B,QAAO,EAAE,WAAW,KAAK,MAAM,CAAC,WAAW,KAAK,MAAM;;AAGxD,MAAa,yBAAyC;CACpD,SAAS;CACT,aAAa;CAEb,gBAAgB,YAAoB;AAClC,SAAO,IAAI,WAAW,WAAW,MAAK,OAAK,CAAC;;CAG9C,eAAe,OAAO,OAAO;AAC3B,MAAI,iBAAiB,KACnB,QAAO,MAAM,aAAa;AAG5B,SAAO;;CAGT,kBAAkB,MAAM,OAAO;EAC7B,MAAM,UAAU,WAAW,MAAM;AAEjC,MAAI,SAAS,aACX,QAAO,GAAG,QAAQ;AAGpB,MAAI,SAAS,WACX,QAAO,IAAI;AAGb,SAAO,IAAI,QAAQ;;CAEtB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/lib/orm/dialect/sqlite.ts
|
|
2
|
+
function escapeLike(s) {
|
|
3
|
+
return s.replaceAll("%", "\\%").replaceAll("_", "\\_");
|
|
4
|
+
}
|
|
5
|
+
const sqliteDialectAdapter = {
|
|
6
|
+
dialect: "sqlite",
|
|
7
|
+
likeKeyword: "LIKE",
|
|
8
|
+
quoteIdentifier(identifier) {
|
|
9
|
+
return `"${identifier.replaceAll("\"", "\"\"")}"`;
|
|
10
|
+
},
|
|
11
|
+
serializeValue(kind, value) {
|
|
12
|
+
if (kind === "date") {
|
|
13
|
+
if (value instanceof Date) return value.toISOString();
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
if (kind === "json" || kind === "jsonb") return JSON.stringify(value);
|
|
17
|
+
if (kind === "boolean") {
|
|
18
|
+
if (value === true) return 1;
|
|
19
|
+
if (value === false) return 0;
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
},
|
|
23
|
+
renderLikePattern(mode, value) {
|
|
24
|
+
const escaped = escapeLike(value);
|
|
25
|
+
if (mode === "startsWith") return `${escaped}%`;
|
|
26
|
+
if (mode === "endsWith") return `%${escaped}`;
|
|
27
|
+
return `%${escaped}%`;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
exports.sqliteDialectAdapter = sqliteDialectAdapter;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/lib/orm/dialect/sqlite.ts
|
|
2
|
+
function escapeLike(s) {
|
|
3
|
+
return s.replaceAll("%", "\\%").replaceAll("_", "\\_");
|
|
4
|
+
}
|
|
5
|
+
const sqliteDialectAdapter = {
|
|
6
|
+
dialect: "sqlite",
|
|
7
|
+
likeKeyword: "LIKE",
|
|
8
|
+
quoteIdentifier(identifier) {
|
|
9
|
+
return `"${identifier.replaceAll("\"", "\"\"")}"`;
|
|
10
|
+
},
|
|
11
|
+
serializeValue(kind, value) {
|
|
12
|
+
if (kind === "date") {
|
|
13
|
+
if (value instanceof Date) return value.toISOString();
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
if (kind === "json" || kind === "jsonb") return JSON.stringify(value);
|
|
17
|
+
if (kind === "boolean") {
|
|
18
|
+
if (value === true) return 1;
|
|
19
|
+
if (value === false) return 0;
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
},
|
|
23
|
+
renderLikePattern(mode, value) {
|
|
24
|
+
const escaped = escapeLike(value);
|
|
25
|
+
if (mode === "startsWith") return `${escaped}%`;
|
|
26
|
+
if (mode === "endsWith") return `%${escaped}`;
|
|
27
|
+
return `%${escaped}%`;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export { sqliteDialectAdapter };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=sqlite.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.mjs","names":[],"sources":["../../../src/lib/orm/dialect/sqlite.ts"],"sourcesContent":["import type { DialectAdapter } from \"../types.js\";\n\nfunction escapeLike(s: string) {\n return s.replaceAll(\"%\", \"\\\\%\").replaceAll(\"_\", \"\\\\_\");\n}\n\nexport const sqliteDialectAdapter: DialectAdapter = {\n dialect: \"sqlite\",\n likeKeyword: \"LIKE\",\n\n quoteIdentifier(identifier: string) {\n return `\"${identifier.replaceAll('\"', '\"\"')}\"`;\n },\n\n serializeValue(kind, value) {\n if (kind === \"date\") {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n return value;\n }\n\n if (kind === \"json\" || kind === \"jsonb\") {\n return JSON.stringify(value);\n }\n\n if (kind === \"boolean\") {\n if (value === true) return 1;\n if (value === false) return 0;\n }\n\n return value;\n },\n\n renderLikePattern(mode, value) {\n const escaped = escapeLike(value);\n\n if (mode === \"startsWith\") {\n return `${escaped}%`;\n }\n\n if (mode === \"endsWith\") {\n return `%${escaped}`;\n }\n\n return `%${escaped}%`;\n },\n};\n"],"mappings":";AAEA,SAAS,WAAW,GAAW;AAC7B,QAAO,EAAE,WAAW,KAAK,MAAM,CAAC,WAAW,KAAK,MAAM;;AAGxD,MAAa,uBAAuC;CAClD,SAAS;CACT,aAAa;CAEb,gBAAgB,YAAoB;AAClC,SAAO,IAAI,WAAW,WAAW,MAAK,OAAK,CAAC;;CAG9C,eAAe,MAAM,OAAO;AAC1B,MAAI,SAAS,QAAQ;AACnB,OAAI,iBAAiB,KACnB,QAAO,MAAM,aAAa;AAG5B,UAAO;;AAGT,MAAI,SAAS,UAAU,SAAS,QAC9B,QAAO,KAAK,UAAU,MAAM;AAG9B,MAAI,SAAS,WAAW;AACtB,OAAI,UAAU,KAAM,QAAO;AAC3B,OAAI,UAAU,MAAO,QAAO;;AAG9B,SAAO;;CAGT,kBAAkB,MAAM,OAAO;EAC7B,MAAM,UAAU,WAAW,MAAM;AAEjC,MAAI,SAAS,aACX,QAAO,GAAG,QAAQ;AAGpB,MAAI,SAAS,WACX,QAAO,IAAI;AAGb,SAAO,IAAI,QAAQ;;CAEtB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/lib/orm/dialect/utils.ts
|
|
2
|
+
function inferDialectFromUrl(url) {
|
|
3
|
+
if (url.startsWith("postgres://") || url.startsWith("postgresql://")) return "postgres";
|
|
4
|
+
if (url.startsWith("mysql://") || url.startsWith("mysql2://")) return "mysql";
|
|
5
|
+
return "sqlite";
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
exports.inferDialectFromUrl = inferDialectFromUrl;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/lib/orm/dialect/utils.ts
|
|
2
|
+
function inferDialectFromUrl(url) {
|
|
3
|
+
if (url.startsWith("postgres://") || url.startsWith("postgresql://")) return "postgres";
|
|
4
|
+
if (url.startsWith("mysql://") || url.startsWith("mysql2://")) return "mysql";
|
|
5
|
+
return "sqlite";
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { inferDialectFromUrl };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/lib/orm/dialect/utils.ts"],"sourcesContent":["import type { Dialect } from \"../types.js\";\n\nexport function inferDialectFromUrl(url: string): Dialect {\n if (url.startsWith(\"postgres://\") || url.startsWith(\"postgresql://\")) {\n return \"postgres\";\n }\n\n if (url.startsWith(\"mysql://\") || url.startsWith(\"mysql2://\")) {\n return \"mysql\";\n }\n\n return \"sqlite\";\n}\n\nexport function isDialect(value: Dialect) {\n return value === \"postgres\" || value === \"mysql\" || value === \"sqlite\";\n}\n"],"mappings":";AAEA,SAAgB,oBAAoB,KAAsB;AACxD,KAAI,IAAI,WAAW,cAAc,IAAI,IAAI,WAAW,gBAAgB,CAClE,QAAO;AAGT,KAAI,IAAI,WAAW,WAAW,IAAI,IAAI,WAAW,YAAY,CAC3D,QAAO;AAGT,QAAO"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/lib/orm/internal/table-columns.ts
|
|
2
|
+
function buildSelectColumns(sql, table) {
|
|
3
|
+
return buildAliasedColumns(sql, table, true);
|
|
4
|
+
}
|
|
5
|
+
function buildReturningColumns(sql, table) {
|
|
6
|
+
return buildAliasedColumns(sql, table, false);
|
|
7
|
+
}
|
|
8
|
+
function buildAliasedColumns(sql, table, qualifyWithTableName) {
|
|
9
|
+
const fragments = [];
|
|
10
|
+
for (const jsKey in table.columns) {
|
|
11
|
+
const col = table.columns[jsKey];
|
|
12
|
+
if (!col) continue;
|
|
13
|
+
if (qualifyWithTableName) {
|
|
14
|
+
fragments.push(sql`${sql(table.tableName)}.${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
fragments.push(sql`${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
|
|
18
|
+
}
|
|
19
|
+
const first = fragments[0];
|
|
20
|
+
if (!first) return sql`*`;
|
|
21
|
+
let joined = first;
|
|
22
|
+
for (let index = 1; index < fragments.length; index++) {
|
|
23
|
+
const fragment = fragments[index];
|
|
24
|
+
if (!fragment) continue;
|
|
25
|
+
joined = sql`${joined}, ${fragment}`;
|
|
26
|
+
}
|
|
27
|
+
return joined;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.buildReturningColumns = buildReturningColumns;
|
|
31
|
+
exports.buildSelectColumns = buildSelectColumns;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/lib/orm/internal/table-columns.ts
|
|
2
|
+
function buildSelectColumns(sql, table) {
|
|
3
|
+
return buildAliasedColumns(sql, table, true);
|
|
4
|
+
}
|
|
5
|
+
function buildReturningColumns(sql, table) {
|
|
6
|
+
return buildAliasedColumns(sql, table, false);
|
|
7
|
+
}
|
|
8
|
+
function buildAliasedColumns(sql, table, qualifyWithTableName) {
|
|
9
|
+
const fragments = [];
|
|
10
|
+
for (const jsKey in table.columns) {
|
|
11
|
+
const col = table.columns[jsKey];
|
|
12
|
+
if (!col) continue;
|
|
13
|
+
if (qualifyWithTableName) {
|
|
14
|
+
fragments.push(sql`${sql(table.tableName)}.${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
fragments.push(sql`${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
|
|
18
|
+
}
|
|
19
|
+
const first = fragments[0];
|
|
20
|
+
if (!first) return sql`*`;
|
|
21
|
+
let joined = first;
|
|
22
|
+
for (let index = 1; index < fragments.length; index++) {
|
|
23
|
+
const fragment = fragments[index];
|
|
24
|
+
if (!fragment) continue;
|
|
25
|
+
joined = sql`${joined}, ${fragment}`;
|
|
26
|
+
}
|
|
27
|
+
return joined;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { buildReturningColumns, buildSelectColumns };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=table-columns.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-columns.mjs","names":[],"sources":["../../../src/lib/orm/internal/table-columns.ts"],"sourcesContent":["import type { SQL, TransactionSQL } from \"bun\";\nimport type { Table } from \"../table.js\";\nimport type { ColDefs } from \"../types.js\";\n\nexport function buildSelectColumns(\n sql: SQL | TransactionSQL,\n table: Table<ColDefs>,\n) {\n return buildAliasedColumns(sql, table, true);\n}\n\nexport function buildReturningColumns(\n sql: SQL | TransactionSQL,\n table: Table<ColDefs>,\n) {\n return buildAliasedColumns(sql, table, false);\n}\n\nfunction buildAliasedColumns(\n sql: SQL | TransactionSQL,\n table: Table<ColDefs>,\n qualifyWithTableName: boolean,\n) {\n const fragments: SQL.Query<unknown>[] = [];\n\n for (const jsKey in table.columns) {\n const col = table.columns[jsKey];\n\n if (!col) {\n continue;\n }\n\n if (qualifyWithTableName) {\n fragments.push(\n sql`${sql(table.tableName)}.${sql(col.meta.sqlName)} AS ${sql(jsKey)}`,\n );\n continue;\n }\n\n fragments.push(sql`${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);\n }\n\n const first = fragments[0];\n\n if (!first) {\n return sql`*`;\n }\n\n let joined = first;\n\n for (let index = 1; index < fragments.length; index++) {\n const fragment = fragments[index];\n\n if (!fragment) {\n continue;\n }\n\n joined = sql`${joined}, ${fragment}`;\n }\n\n return joined;\n}\n"],"mappings":";AAIA,SAAgB,mBACd,KACA,OACA;AACA,QAAO,oBAAoB,KAAK,OAAO,KAAK;;AAG9C,SAAgB,sBACd,KACA,OACA;AACA,QAAO,oBAAoB,KAAK,OAAO,MAAM;;AAG/C,SAAS,oBACP,KACA,OACA,sBACA;CACA,MAAM,YAAkC,EAAE;AAE1C,MAAK,MAAM,SAAS,MAAM,SAAS;EACjC,MAAM,MAAM,MAAM,QAAQ;AAE1B,MAAI,CAAC,IACH;AAGF,MAAI,sBAAsB;AACxB,aAAU,KACR,GAAG,GAAG,IAAI,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,GACrE;AACD;;AAGF,YAAU,KAAK,GAAG,GAAG,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,GAAG;;CAGhE,MAAM,QAAQ,UAAU;AAExB,KAAI,CAAC,MACH,QAAO,GAAG;CAGZ,IAAI,SAAS;AAEb,MAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS;EACrD,MAAM,WAAW,UAAU;AAE3B,MAAI,CAAC,SACH;AAGF,WAAS,GAAG,GAAG,OAAO,IAAI;;AAG5B,QAAO"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/lib/orm/internal/table-lookup.ts
|
|
2
|
+
function getPrimaryKeyColumn(table) {
|
|
3
|
+
for (const jsKey in table.columns) {
|
|
4
|
+
const col = table.columns[jsKey];
|
|
5
|
+
if (!col) continue;
|
|
6
|
+
if (col.meta.isPrimaryKey) return {
|
|
7
|
+
jsKey,
|
|
8
|
+
col
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
function findColumnBySqlName(table, sqlName) {
|
|
14
|
+
for (const jsKey in table.columns) {
|
|
15
|
+
const col = table.columns[jsKey];
|
|
16
|
+
if (!col) continue;
|
|
17
|
+
if (col.meta.sqlName === sqlName) return {
|
|
18
|
+
jsKey,
|
|
19
|
+
col
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
function findTableKeyByValue(tables, targetTable) {
|
|
25
|
+
for (const tableKey in tables) {
|
|
26
|
+
const table = tables[tableKey];
|
|
27
|
+
if (!table) continue;
|
|
28
|
+
if (table === targetTable) return tableKey;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.findColumnBySqlName = findColumnBySqlName;
|
|
34
|
+
exports.findTableKeyByValue = findTableKeyByValue;
|
|
35
|
+
exports.getPrimaryKeyColumn = getPrimaryKeyColumn;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/lib/orm/internal/table-lookup.ts
|
|
2
|
+
function getPrimaryKeyColumn(table) {
|
|
3
|
+
for (const jsKey in table.columns) {
|
|
4
|
+
const col = table.columns[jsKey];
|
|
5
|
+
if (!col) continue;
|
|
6
|
+
if (col.meta.isPrimaryKey) return {
|
|
7
|
+
jsKey,
|
|
8
|
+
col
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
function findColumnBySqlName(table, sqlName) {
|
|
14
|
+
for (const jsKey in table.columns) {
|
|
15
|
+
const col = table.columns[jsKey];
|
|
16
|
+
if (!col) continue;
|
|
17
|
+
if (col.meta.sqlName === sqlName) return {
|
|
18
|
+
jsKey,
|
|
19
|
+
col
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
function findTableKeyByValue(tables, targetTable) {
|
|
25
|
+
for (const tableKey in tables) {
|
|
26
|
+
const table = tables[tableKey];
|
|
27
|
+
if (!table) continue;
|
|
28
|
+
if (table === targetTable) return tableKey;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { findColumnBySqlName, findTableKeyByValue, getPrimaryKeyColumn };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=table-lookup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-lookup.mjs","names":[],"sources":["../../../src/lib/orm/internal/table-lookup.ts"],"sourcesContent":["import type { ColumnDef } from \"../column.js\";\nimport type { Table } from \"../table.js\";\nimport type { ColDefs, ColumnKind, ColumnMetaBase } from \"../types.js\";\n\nexport type ResolvedColumn = {\n jsKey: string;\n col: ColumnDef<ColumnKind, ColumnMetaBase, unknown>;\n};\n\nexport function getPrimaryKeyColumn(table: Table<ColDefs>) {\n for (const jsKey in table.columns) {\n const col = table.columns[jsKey];\n\n if (!col) {\n continue;\n }\n\n if (col.meta.isPrimaryKey) {\n return {\n jsKey,\n col,\n } satisfies ResolvedColumn;\n }\n }\n\n return null;\n}\n\nexport function findColumnBySqlName(table: Table<ColDefs>, sqlName: string) {\n for (const jsKey in table.columns) {\n const col = table.columns[jsKey];\n\n if (!col) {\n continue;\n }\n\n if (col.meta.sqlName === sqlName) {\n return {\n jsKey,\n col,\n } satisfies ResolvedColumn;\n }\n }\n\n return null;\n}\n\nexport function findTableKeyByValue(\n tables: Record<string, Table<ColDefs>>,\n targetTable: Table<ColDefs>,\n) {\n for (const tableKey in tables) {\n const table = tables[tableKey];\n\n if (!table) {\n continue;\n }\n\n if (table === targetTable) {\n return tableKey;\n }\n }\n\n return null;\n}\n"],"mappings":";AASA,SAAgB,oBAAoB,OAAuB;AACzD,MAAK,MAAM,SAAS,MAAM,SAAS;EACjC,MAAM,MAAM,MAAM,QAAQ;AAE1B,MAAI,CAAC,IACH;AAGF,MAAI,IAAI,KAAK,aACX,QAAO;GACL;GACA;GACD;;AAIL,QAAO;;AAGT,SAAgB,oBAAoB,OAAuB,SAAiB;AAC1E,MAAK,MAAM,SAAS,MAAM,SAAS;EACjC,MAAM,MAAM,MAAM,QAAQ;AAE1B,MAAI,CAAC,IACH;AAGF,MAAI,IAAI,KAAK,YAAY,QACvB,QAAO;GACL;GACA;GACD;;AAIL,QAAO;;AAGT,SAAgB,oBACd,QACA,aACA;AACA,MAAK,MAAM,YAAY,QAAQ;EAC7B,MAAM,QAAQ,OAAO;AAErB,MAAI,CAAC,MACH;AAGF,MAAI,UAAU,YACZ,QAAO;;AAIX,QAAO"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const require_table_lookup = require("./table-lookup.cjs");
|
|
2
|
+
//#region src/lib/orm/internal/table-relations.ts
|
|
3
|
+
function findManyForeignKeyByReference(sourceTable, sourcePk) {
|
|
4
|
+
for (const key in sourceTable.columns) {
|
|
5
|
+
const col = sourceTable.columns[key];
|
|
6
|
+
if (!col) continue;
|
|
7
|
+
if (!col.meta.references) continue;
|
|
8
|
+
if (col.meta.references() === sourcePk) return col.meta.sqlName;
|
|
9
|
+
}
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
function inferManyForeignKeyFromInverse(sourceTable, targetTable, allRelations, allTables) {
|
|
13
|
+
const targetTableKey = require_table_lookup.findTableKeyByValue(allTables, targetTable);
|
|
14
|
+
if (!targetTableKey) return null;
|
|
15
|
+
const targetRels = allRelations[targetTableKey];
|
|
16
|
+
if (!targetRels) return null;
|
|
17
|
+
for (const relKey in targetRels) {
|
|
18
|
+
const rel = targetRels[relKey];
|
|
19
|
+
if (!rel) continue;
|
|
20
|
+
if (rel.kind !== "one") continue;
|
|
21
|
+
if (rel.table() !== sourceTable) continue;
|
|
22
|
+
return rel.foreignKey;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
exports.findManyForeignKeyByReference = findManyForeignKeyByReference;
|
|
28
|
+
exports.inferManyForeignKeyFromInverse = inferManyForeignKeyFromInverse;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { findTableKeyByValue } from "./table-lookup.mjs";
|
|
2
|
+
//#region src/lib/orm/internal/table-relations.ts
|
|
3
|
+
function findManyForeignKeyByReference(sourceTable, sourcePk) {
|
|
4
|
+
for (const key in sourceTable.columns) {
|
|
5
|
+
const col = sourceTable.columns[key];
|
|
6
|
+
if (!col) continue;
|
|
7
|
+
if (!col.meta.references) continue;
|
|
8
|
+
if (col.meta.references() === sourcePk) return col.meta.sqlName;
|
|
9
|
+
}
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
function inferManyForeignKeyFromInverse(sourceTable, targetTable, allRelations, allTables) {
|
|
13
|
+
const targetTableKey = findTableKeyByValue(allTables, targetTable);
|
|
14
|
+
if (!targetTableKey) return null;
|
|
15
|
+
const targetRels = allRelations[targetTableKey];
|
|
16
|
+
if (!targetRels) return null;
|
|
17
|
+
for (const relKey in targetRels) {
|
|
18
|
+
const rel = targetRels[relKey];
|
|
19
|
+
if (!rel) continue;
|
|
20
|
+
if (rel.kind !== "one") continue;
|
|
21
|
+
if (rel.table() !== sourceTable) continue;
|
|
22
|
+
return rel.foreignKey;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { findManyForeignKeyByReference, inferManyForeignKeyFromInverse };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=table-relations.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-relations.mjs","names":[],"sources":["../../../src/lib/orm/internal/table-relations.ts"],"sourcesContent":["import type { ColumnDef } from \"../column.js\";\nimport type { Table } from \"../table.js\";\nimport type {\n ColDefs,\n ColumnKind,\n ColumnMetaBase,\n RelationDefs,\n} from \"../types.js\";\nimport { findTableKeyByValue } from \"./table-lookup.js\";\n\nexport function findManyForeignKeyByReference(\n sourceTable: Table<ColDefs>,\n sourcePk: ColumnDef<ColumnKind, ColumnMetaBase, unknown>,\n) {\n for (const key in sourceTable.columns) {\n const col = sourceTable.columns[key];\n\n if (!col) {\n continue;\n }\n\n if (!col.meta.references) {\n continue;\n }\n\n const referenced = col.meta.references();\n\n if (referenced === sourcePk) {\n return col.meta.sqlName;\n }\n }\n\n return null;\n}\n\nexport function inferManyForeignKeyFromInverse(\n sourceTable: Table<ColDefs>,\n targetTable: Table<ColDefs>,\n allRelations: Partial<Record<string, RelationDefs>>,\n allTables: Record<string, Table<ColDefs>>,\n) {\n const targetTableKey = findTableKeyByValue(allTables, targetTable);\n\n if (!targetTableKey) {\n return null;\n }\n\n const targetRels = allRelations[targetTableKey];\n\n if (!targetRels) {\n return null;\n }\n\n for (const relKey in targetRels) {\n const rel = targetRels[relKey];\n\n if (!rel) {\n continue;\n }\n\n if (rel.kind !== \"one\") {\n continue;\n }\n\n if (rel.table() !== sourceTable) {\n continue;\n }\n\n return rel.foreignKey;\n }\n\n return null;\n}\n"],"mappings":";;AAUA,SAAgB,8BACd,aACA,UACA;AACA,MAAK,MAAM,OAAO,YAAY,SAAS;EACrC,MAAM,MAAM,YAAY,QAAQ;AAEhC,MAAI,CAAC,IACH;AAGF,MAAI,CAAC,IAAI,KAAK,WACZ;AAKF,MAFmB,IAAI,KAAK,YAAY,KAErB,SACjB,QAAO,IAAI,KAAK;;AAIpB,QAAO;;AAGT,SAAgB,+BACd,aACA,aACA,cACA,WACA;CACA,MAAM,iBAAiB,oBAAoB,WAAW,YAAY;AAElE,KAAI,CAAC,eACH,QAAO;CAGT,MAAM,aAAa,aAAa;AAEhC,KAAI,CAAC,WACH,QAAO;AAGT,MAAK,MAAM,UAAU,YAAY;EAC/B,MAAM,MAAM,WAAW;AAEvB,MAAI,CAAC,IACH;AAGF,MAAI,IAAI,SAAS,MACf;AAGF,MAAI,IAAI,OAAO,KAAK,YAClB;AAGF,SAAO,IAAI;;AAGb,QAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.cts","names":[],"sources":["../../../src/lib/orm/migration/config.ts"],"mappings":";;;iBAIgB,YAAA,CAAa,MAAA,EAAQ,YAAA,GAAY,YAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.mts","names":[],"sources":["../../../src/lib/orm/migration/config.ts"],"mappings":";;;iBAIgB,YAAA,CAAa,MAAA,EAAQ,YAAA,GAAY,YAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.mjs","names":[],"sources":["../../../src/lib/orm/migration/config.ts"],"sourcesContent":["import { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ResolvedSemolaConfig, SemolaConfig } from \"./types.js\";\n\nexport function defineConfig(config: SemolaConfig) {\n return config;\n}\n\nconst defaultMigrationDir = \"migrations\";\nconst defaultIntrospectOutput = \"orm.generated.ts\";\n\nasync function findConfigPath(cwd: string) {\n const candidates = [\n \"semola.config.ts\",\n \"semola.config.js\",\n \"semola.config.mjs\",\n ];\n for (const candidate of candidates) {\n const configPath = resolve(cwd, candidate);\n const exists = await Bun.file(configPath).exists();\n if (exists) {\n return configPath;\n }\n }\n return null;\n}\n\nexport async function loadConfig(cwd = process.cwd()) {\n const configPath = await findConfigPath(cwd);\n\n if (!configPath) {\n throw new Error(\"Could not find semola.config.ts in current directory\");\n }\n\n const configUrl = pathToFileURL(configPath).href;\n const mod = await import(`${configUrl}?t=${Date.now()}`);\n\n const loadedConfig = Reflect.get(mod, \"default\");\n\n if (typeof loadedConfig !== \"object\") {\n throw new Error(\"semola.config.ts must export a default config object\");\n }\n\n if (loadedConfig === null) {\n throw new Error(\"semola.config.ts must export a default config object\");\n }\n\n const orm = Reflect.get(loadedConfig, \"orm\");\n\n if (typeof orm !== \"object\") {\n throw new Error(\"semola.config.ts must contain an orm section\");\n }\n\n if (orm === null) {\n throw new Error(\"semola.config.ts must contain an orm section\");\n }\n\n const schema = Reflect.get(orm, \"schema\");\n\n if (typeof schema !== \"string\") {\n throw new Error(\"semola.config.ts must define orm.schema\");\n }\n\n const migrations = Reflect.get(orm, \"migrations\");\n const introspect = Reflect.get(orm, \"introspect\");\n\n const migrationDirValue =\n typeof migrations === \"object\" && migrations !== null\n ? Reflect.get(migrations, \"dir\")\n : null;\n\n const migrationDir =\n typeof migrationDirValue === \"string\"\n ? migrationDirValue\n : defaultMigrationDir;\n\n const transactionalValue =\n typeof migrations === \"object\" && migrations !== null\n ? Reflect.get(migrations, \"transactional\")\n : null;\n\n const transactional =\n typeof transactionalValue === \"boolean\" ? transactionalValue : true;\n\n const introspectOutputValue =\n typeof introspect === \"object\" && introspect !== null\n ? Reflect.get(introspect, \"output\")\n : null;\n\n const introspectOutput =\n typeof introspectOutputValue === \"string\"\n ? introspectOutputValue\n : defaultIntrospectOutput;\n\n const introspectUrlValue =\n typeof introspect === \"object\" && introspect !== null\n ? Reflect.get(introspect, \"url\")\n : null;\n\n const introspectUrl =\n typeof introspectUrlValue === \"string\" ? introspectUrlValue : null;\n\n const introspectDialectValue =\n typeof introspect === \"object\" && introspect !== null\n ? Reflect.get(introspect, \"dialect\")\n : null;\n\n const introspectDialect =\n introspectDialectValue === \"postgres\" ||\n introspectDialectValue === \"mysql\" ||\n introspectDialectValue === \"sqlite\"\n ? introspectDialectValue\n : null;\n\n const resolved: ResolvedSemolaConfig = {\n cwd,\n configPath,\n orm: {\n schema: resolve(cwd, schema),\n migrations: {\n dir: resolve(cwd, migrationDir),\n transactional,\n },\n introspect: {\n output: resolve(cwd, introspectOutput),\n url: introspectUrl,\n dialect: introspectDialect,\n },\n },\n };\n\n return resolved;\n}\n"],"mappings":";AAIA,SAAgB,aAAa,QAAsB;AACjD,QAAO"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Dialect } from "../types.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/orm/migration/types.d.ts
|
|
4
|
+
type SemolaConfig = {
|
|
5
|
+
orm: {
|
|
6
|
+
schema: string;
|
|
7
|
+
migrations?: {
|
|
8
|
+
dir?: string;
|
|
9
|
+
transactional?: boolean;
|
|
10
|
+
};
|
|
11
|
+
introspect?: {
|
|
12
|
+
output?: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
dialect?: Dialect;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { SemolaConfig };
|
|
20
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/orm/migration/types.ts"],"mappings":";;;KAEY,YAAA;EACV,GAAA;IACE,MAAA;IACA,UAAA;MACE,GAAA;MACA,aAAA;IAAA;IAEF,UAAA;MACE,MAAA;MACA,GAAA;MACA,OAAA,GAAU,OAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Dialect } from "../types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/orm/migration/types.d.ts
|
|
4
|
+
type SemolaConfig = {
|
|
5
|
+
orm: {
|
|
6
|
+
schema: string;
|
|
7
|
+
migrations?: {
|
|
8
|
+
dir?: string;
|
|
9
|
+
transactional?: boolean;
|
|
10
|
+
};
|
|
11
|
+
introspect?: {
|
|
12
|
+
output?: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
dialect?: Dialect;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { SemolaConfig };
|
|
20
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/orm/migration/types.ts"],"mappings":";;;KAEY,YAAA;EACV,GAAA;IACE,MAAA;IACA,UAAA;MACE,GAAA;MACA,aAAA;IAAA;IAEF,UAAA;MACE,MAAA;MACA,GAAA;MACA,OAAA,GAAU,OAAA;IAAA;EAAA;AAAA"}
|
package/dist/orm/orm.cjs
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const require_index = require("./dialect/index.cjs");
|
|
2
|
+
const require_utils = require("./dialect/utils.cjs");
|
|
3
|
+
const require_client = require("./runtime/client.cjs");
|
|
4
|
+
let bun = require("bun");
|
|
5
|
+
//#region src/lib/orm/orm.ts
|
|
6
|
+
function createOrm(options) {
|
|
7
|
+
const sql = new bun.SQL(options.url);
|
|
8
|
+
const dialect = options.dialect ?? require_utils.inferDialectFromUrl(options.url);
|
|
9
|
+
const dialectAdapter = require_index.getDialectAdapter(dialect);
|
|
10
|
+
const makeModels = (sqlOrTx) => {
|
|
11
|
+
const out = {};
|
|
12
|
+
for (const key of Object.keys(options.tables)) {
|
|
13
|
+
const table = options.tables[key];
|
|
14
|
+
if (!table) continue;
|
|
15
|
+
out[key] = require_client.createTableClient(sqlOrTx, table, options.relations?.[key] ?? {}, dialectAdapter, options.tables, options.relations ?? {});
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
};
|
|
19
|
+
const client = {
|
|
20
|
+
...makeModels(sql),
|
|
21
|
+
$transaction(fn) {
|
|
22
|
+
return sql.begin((tx) => fn(makeModels(tx)));
|
|
23
|
+
},
|
|
24
|
+
$raw(strings, ...values) {
|
|
25
|
+
return sql(strings, ...values);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(client, "__semolaOrm", {
|
|
29
|
+
value: {
|
|
30
|
+
options: { url: options.url },
|
|
31
|
+
dialect,
|
|
32
|
+
tables: options.tables
|
|
33
|
+
},
|
|
34
|
+
enumerable: false,
|
|
35
|
+
writable: false,
|
|
36
|
+
configurable: false
|
|
37
|
+
});
|
|
38
|
+
return client;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
exports.createOrm = createOrm;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Table } from "./table.cjs";
|
|
2
|
+
import { ColDefs, Dialect, RelationDefs, TinyTableClient } from "./types.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/orm/orm.d.ts
|
|
5
|
+
type OrmOptions<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = {
|
|
6
|
+
url: string;
|
|
7
|
+
tables: TTables;
|
|
8
|
+
relations?: TRels;
|
|
9
|
+
dialect?: Dialect;
|
|
10
|
+
};
|
|
11
|
+
type OrmModels<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = { [K in keyof TTables]: TinyTableClient<TTables[K] extends Table<infer C> ? C : never, K extends keyof TRels ? NonNullable<TRels[K]> : Record<never, never>> };
|
|
12
|
+
declare function createOrm<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>>(options: OrmOptions<TTables, TRels>): OrmModels<TTables, TRels> & {
|
|
13
|
+
$transaction<T>(fn: (tx: ReturnType<(sqlOrTx: SQL | TransactionSQL) => OrmModels<TTables, TRels>>) => Promise<T>): Promise<SQL.ContextCallbackResult<T>>;
|
|
14
|
+
$raw(strings: TemplateStringsArray, ...values: unknown[]): SQL.Query<any>;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { createOrm };
|
|
18
|
+
//# sourceMappingURL=orm.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm.d.cts","names":[],"sources":["../../src/lib/orm/orm.ts"],"mappings":";;;;KAaK,UAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA;EAE5C,GAAA;EACA,MAAA,EAAQ,OAAA;EACR,SAAA,GAAY,KAAA;EACZ,OAAA,GAAU,OAAA;AAAA;AAAA,KAGP,SAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,oBAEhC,OAAA,GAAU,eAAA,CACpB,OAAA,CAAQ,CAAA,UAAW,KAAA,YAAiB,CAAA,UACpC,CAAA,eAAgB,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAA,KAAM,MAAA;AAAA,iBA6BpC,SAAA,iBACE,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,GAAA,CAC5C,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,KAAA,IAAM,SAAA,CAAA,OAAA,EAAA,KAAA;kBAqCnB,EAAA,GAAO,EAAA,EAAI,UAAA,EAAU,OAAA,EA/B1B,GAAA,GAAM,cAAA,KACd,SAAA,CAAU,OAAA,EAAS,KAAA,OA8BuC,OAAA,CAAQ,CAAA,IAAE,OAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;gBAIvD,oBAAA,KAAoB,MAAA,cAAsB,GAAA,CAAA,KAAA;AAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Table } from "./table.mjs";
|
|
2
|
+
import { ColDefs, Dialect, RelationDefs, TinyTableClient } from "./types.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/orm/orm.d.ts
|
|
5
|
+
type OrmOptions<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = {
|
|
6
|
+
url: string;
|
|
7
|
+
tables: TTables;
|
|
8
|
+
relations?: TRels;
|
|
9
|
+
dialect?: Dialect;
|
|
10
|
+
};
|
|
11
|
+
type OrmModels<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = { [K in keyof TTables]: TinyTableClient<TTables[K] extends Table<infer C> ? C : never, K extends keyof TRels ? NonNullable<TRels[K]> : Record<never, never>> };
|
|
12
|
+
declare function createOrm<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>>(options: OrmOptions<TTables, TRels>): OrmModels<TTables, TRels> & {
|
|
13
|
+
$transaction<T>(fn: (tx: ReturnType<(sqlOrTx: SQL | TransactionSQL) => OrmModels<TTables, TRels>>) => Promise<T>): Promise<SQL.ContextCallbackResult<T>>;
|
|
14
|
+
$raw(strings: TemplateStringsArray, ...values: unknown[]): SQL.Query<any>;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { createOrm };
|
|
18
|
+
//# sourceMappingURL=orm.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm.d.mts","names":[],"sources":["../../src/lib/orm/orm.ts"],"mappings":";;;;KAaK,UAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA;EAE5C,GAAA;EACA,MAAA,EAAQ,OAAA;EACR,SAAA,GAAY,KAAA;EACZ,OAAA,GAAU,OAAA;AAAA;AAAA,KAGP,SAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,oBAEhC,OAAA,GAAU,eAAA,CACpB,OAAA,CAAQ,CAAA,UAAW,KAAA,YAAiB,CAAA,UACpC,CAAA,eAAgB,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAA,KAAM,MAAA;AAAA,iBA6BpC,SAAA,iBACE,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,GAAA,CAC5C,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,KAAA,IAAM,SAAA,CAAA,OAAA,EAAA,KAAA;kBAqCnB,EAAA,GAAO,EAAA,EAAI,UAAA,EAAU,OAAA,EA/B1B,GAAA,GAAM,cAAA,KACd,SAAA,CAAU,OAAA,EAAS,KAAA,OA8BuC,OAAA,CAAQ,CAAA,IAAE,OAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;gBAIvD,oBAAA,KAAoB,MAAA,cAAsB,GAAA,CAAA,KAAA;AAAA"}
|
package/dist/orm/orm.mjs
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getDialectAdapter } from "./dialect/index.mjs";
|
|
2
|
+
import { inferDialectFromUrl } from "./dialect/utils.mjs";
|
|
3
|
+
import { createTableClient } from "./runtime/client.mjs";
|
|
4
|
+
import { SQL } from "bun";
|
|
5
|
+
//#region src/lib/orm/orm.ts
|
|
6
|
+
function createOrm(options) {
|
|
7
|
+
const sql = new SQL(options.url);
|
|
8
|
+
const dialect = options.dialect ?? inferDialectFromUrl(options.url);
|
|
9
|
+
const dialectAdapter = getDialectAdapter(dialect);
|
|
10
|
+
const makeModels = (sqlOrTx) => {
|
|
11
|
+
const out = {};
|
|
12
|
+
for (const key of Object.keys(options.tables)) {
|
|
13
|
+
const table = options.tables[key];
|
|
14
|
+
if (!table) continue;
|
|
15
|
+
out[key] = createTableClient(sqlOrTx, table, options.relations?.[key] ?? {}, dialectAdapter, options.tables, options.relations ?? {});
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
};
|
|
19
|
+
const client = {
|
|
20
|
+
...makeModels(sql),
|
|
21
|
+
$transaction(fn) {
|
|
22
|
+
return sql.begin((tx) => fn(makeModels(tx)));
|
|
23
|
+
},
|
|
24
|
+
$raw(strings, ...values) {
|
|
25
|
+
return sql(strings, ...values);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(client, "__semolaOrm", {
|
|
29
|
+
value: {
|
|
30
|
+
options: { url: options.url },
|
|
31
|
+
dialect,
|
|
32
|
+
tables: options.tables
|
|
33
|
+
},
|
|
34
|
+
enumerable: false,
|
|
35
|
+
writable: false,
|
|
36
|
+
configurable: false
|
|
37
|
+
});
|
|
38
|
+
return client;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { createOrm };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=orm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm.mjs","names":[],"sources":["../../src/lib/orm/orm.ts"],"sourcesContent":["import type { TransactionSQL } from \"bun\";\nimport { SQL } from \"bun\";\nimport { getDialectAdapter } from \"./dialect/index.js\";\nimport { createTableClient } from \"./runtime/client.js\";\nimport { inferDialectFromUrl } from \"./runtime/errors.js\";\nimport type { Table } from \"./table.js\";\nimport type {\n ColDefs,\n Dialect,\n RelationDefs,\n TinyTableClient,\n} from \"./types.js\";\n\ntype OrmOptions<\n TTables extends Record<string, Table<ColDefs>>,\n TRels extends Partial<Record<keyof TTables, RelationDefs>>,\n> = {\n url: string;\n tables: TTables;\n relations?: TRels;\n dialect?: Dialect;\n};\n\ntype OrmModels<\n TTables extends Record<string, Table<ColDefs>>,\n TRels extends Partial<Record<keyof TTables, RelationDefs>>,\n> = {\n [K in keyof TTables]: TinyTableClient<\n TTables[K] extends Table<infer C> ? C : never,\n K extends keyof TRels ? NonNullable<TRels[K]> : Record<never, never>\n >;\n};\n\nexport class Orm {\n public constructor(\n public readonly options: OrmOptions<\n Record<string, Table<ColDefs>>,\n Record<string, RelationDefs>\n >,\n ) {}\n\n public get dialect(): Dialect {\n if (this.options.dialect) {\n return this.options.dialect;\n }\n\n return inferDialectFromUrl(this.options.url);\n }\n\n public get tables() {\n return this.options.tables;\n }\n\n public get relations() {\n return this.options.relations;\n }\n}\n\nexport function createOrm<\n TTables extends Record<string, Table<ColDefs>>,\n TRels extends Partial<Record<keyof TTables, RelationDefs>>,\n>(options: OrmOptions<TTables, TRels>) {\n const sql = new SQL(options.url);\n const dialect = options.dialect ?? inferDialectFromUrl(options.url);\n const dialectAdapter = getDialectAdapter(dialect);\n\n const makeModels = (\n sqlOrTx: SQL | TransactionSQL,\n ): OrmModels<TTables, TRels> => {\n const out: Record<string, TinyTableClient<ColDefs, RelationDefs>> = {};\n\n for (const key of Object.keys(options.tables)) {\n const table = options.tables[key];\n\n if (!table) {\n continue;\n }\n\n const rels = options.relations?.[key as keyof TRels];\n const relationDefs: RelationDefs = rels ?? {};\n\n out[key] = createTableClient(\n sqlOrTx,\n table,\n relationDefs,\n dialectAdapter,\n options.tables as Record<string, Table<ColDefs>>,\n (options.relations ?? {}) as Partial<Record<string, RelationDefs>>,\n );\n }\n\n // TypeScript cannot verify the dynamic key-to-type mapping at compile time\n return out as unknown as OrmModels<TTables, TRels>;\n };\n\n const client = {\n ...makeModels(sql),\n\n $transaction<T>(fn: (tx: ReturnType<typeof makeModels>) => Promise<T>) {\n return sql.begin((tx) => fn(makeModels(tx)));\n },\n\n $raw(strings: TemplateStringsArray, ...values: unknown[]) {\n return sql(strings, ...values);\n },\n };\n\n Object.defineProperty(client, \"__semolaOrm\", {\n value: {\n options: { url: options.url },\n dialect,\n tables: options.tables,\n },\n enumerable: false,\n writable: false,\n configurable: false,\n });\n\n return client;\n}\n"],"mappings":";;;;;AA0DA,SAAgB,UAGd,SAAqC;CACrC,MAAM,MAAM,IAAI,IAAI,QAAQ,IAAI;CAChC,MAAM,UAAU,QAAQ,WAAW,oBAAoB,QAAQ,IAAI;CACnE,MAAM,iBAAiB,kBAAkB,QAAQ;CAEjD,MAAM,cACJ,YAC8B;EAC9B,MAAM,MAA8D,EAAE;AAEtE,OAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,OAAO,EAAE;GAC7C,MAAM,QAAQ,QAAQ,OAAO;AAE7B,OAAI,CAAC,MACH;AAMF,OAAI,OAAO,kBACT,SACA,OALW,QAAQ,YAAY,QACU,EAAE,EAM3C,gBACA,QAAQ,QACP,QAAQ,aAAa,EAAE,CACzB;;AAIH,SAAO;;CAGT,MAAM,SAAS;EACb,GAAG,WAAW,IAAI;EAElB,aAAgB,IAAuD;AACrE,UAAO,IAAI,OAAO,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;;EAG9C,KAAK,SAA+B,GAAG,QAAmB;AACxD,UAAO,IAAI,SAAS,GAAG,OAAO;;EAEjC;AAED,QAAO,eAAe,QAAQ,eAAe;EAC3C,OAAO;GACL,SAAS,EAAE,KAAK,QAAQ,KAAK;GAC7B;GACA,QAAQ,QAAQ;GACjB;EACD,YAAY;EACZ,UAAU;EACV,cAAc;EACf,CAAC;AAEF,QAAO"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/lib/orm/relation.ts
|
|
2
|
+
function many(table, foreignKey) {
|
|
3
|
+
return {
|
|
4
|
+
kind: "many",
|
|
5
|
+
table,
|
|
6
|
+
foreignKey
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function one(foreignKey, table) {
|
|
10
|
+
return {
|
|
11
|
+
kind: "one",
|
|
12
|
+
foreignKey,
|
|
13
|
+
table
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.many = many;
|
|
18
|
+
exports.one = one;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ManyRelation, OneRelation } from "./types.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/orm/relation.d.ts
|
|
4
|
+
declare function many<TTable>(table: () => TTable, foreignKey?: string): ManyRelation<TTable>;
|
|
5
|
+
declare function one<TTable>(foreignKey: string, table: () => TTable): OneRelation<TTable>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { many, one };
|
|
8
|
+
//# sourceMappingURL=relation.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.d.cts","names":[],"sources":["../../src/lib/orm/relation.ts"],"mappings":";;;iBAEgB,IAAA,QAAA,CACd,KAAA,QAAa,MAAA,EACb,UAAA,YACC,YAAA,CAAa,MAAA;AAAA,iBAIA,GAAA,QAAA,CACd,UAAA,UACA,KAAA,QAAa,MAAA,GACZ,WAAA,CAAY,MAAA"}
|