@warlock.js/cascade 4.0.162 → 4.0.164
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/cjs/context/database-data-source-context.d.ts +29 -0
- package/cjs/context/database-data-source-context.d.ts.map +1 -0
- package/cjs/context/database-data-source-context.js +28 -0
- package/cjs/context/database-data-source-context.js.map +1 -0
- package/cjs/context/database-transaction-context.d.ts +35 -0
- package/cjs/context/database-transaction-context.d.ts.map +1 -0
- package/cjs/context/database-transaction-context.js +40 -0
- package/cjs/context/database-transaction-context.js.map +1 -0
- package/cjs/contracts/database-driver.contract.d.ts +450 -0
- package/cjs/contracts/database-driver.contract.d.ts.map +1 -0
- package/cjs/contracts/database-id-generator.contract.d.ts +109 -0
- package/cjs/contracts/database-id-generator.contract.d.ts.map +1 -0
- package/cjs/contracts/database-remover.contract.d.ts +104 -0
- package/cjs/contracts/database-remover.contract.d.ts.map +1 -0
- package/cjs/contracts/database-restorer.contract.d.ts +143 -0
- package/cjs/contracts/database-restorer.contract.d.ts.map +1 -0
- package/cjs/contracts/database-writer.contract.d.ts +119 -0
- package/cjs/contracts/database-writer.contract.d.ts.map +1 -0
- package/cjs/contracts/driver-blueprint.contract.d.ts +49 -0
- package/cjs/contracts/driver-blueprint.contract.d.ts.map +1 -0
- package/cjs/contracts/index.d.ts +10 -0
- package/cjs/contracts/index.d.ts.map +1 -0
- package/cjs/contracts/migration-driver.contract.d.ts +522 -0
- package/cjs/contracts/migration-driver.contract.d.ts.map +1 -0
- package/cjs/contracts/query-builder.contract.d.ts +1609 -0
- package/cjs/contracts/query-builder.contract.d.ts.map +1 -0
- package/cjs/contracts/sync-adapter.contract.d.ts +58 -0
- package/cjs/contracts/sync-adapter.contract.d.ts.map +1 -0
- package/cjs/data-source/data-source-registry.d.ts +108 -0
- package/cjs/data-source/data-source-registry.d.ts.map +1 -0
- package/cjs/data-source/data-source-registry.js +145 -0
- package/cjs/data-source/data-source-registry.js.map +1 -0
- package/cjs/data-source/data-source.d.ts +147 -0
- package/cjs/data-source/data-source.d.ts.map +1 -0
- package/cjs/data-source/data-source.js +83 -0
- package/cjs/data-source/data-source.js.map +1 -0
- package/cjs/database-dirty-tracker.d.ts +252 -0
- package/cjs/database-dirty-tracker.d.ts.map +1 -0
- package/cjs/database-dirty-tracker.js +386 -0
- package/cjs/database-dirty-tracker.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.js +51 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-driver.d.ts +325 -0
- package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-driver.js +838 -0
- package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.js +149 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.js +666 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.js +1988 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.js +270 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.js +1351 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js +146 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
- package/cjs/drivers/mongodb/types.d.ts +43 -0
- package/cjs/drivers/mongodb/types.d.ts.map +1 -0
- package/cjs/drivers/postgres/index.d.ts +16 -0
- package/cjs/drivers/postgres/index.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
- package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
- package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
- package/cjs/drivers/postgres/postgres-dialect.d.ts +136 -0
- package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-dialect.js +268 -0
- package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
- package/cjs/drivers/postgres/postgres-driver.d.ts +432 -0
- package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-driver.js +1010 -0
- package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts +397 -0
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-migration-driver.js +900 -0
- package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
- package/cjs/drivers/postgres/postgres-query-builder.d.ts +254 -0
- package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-query-builder.js +933 -0
- package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
- package/cjs/drivers/postgres/postgres-query-parser.d.ts +328 -0
- package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-query-parser.js +868 -0
- package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.js +400 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.js.map +1 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
- package/cjs/drivers/postgres/types.d.ts +144 -0
- package/cjs/drivers/postgres/types.d.ts.map +1 -0
- package/cjs/drivers/sql/index.d.ts +10 -0
- package/cjs/drivers/sql/index.d.ts.map +1 -0
- package/cjs/drivers/sql/sql-dialect.contract.d.ts +204 -0
- package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
- package/cjs/drivers/sql/sql-types.d.ts +202 -0
- package/cjs/drivers/sql/sql-types.d.ts.map +1 -0
- package/cjs/errors/missing-data-source.error.d.ts +22 -0
- package/cjs/errors/missing-data-source.error.d.ts.map +1 -0
- package/cjs/errors/missing-data-source.error.js +29 -0
- package/cjs/errors/missing-data-source.error.js.map +1 -0
- package/cjs/errors/transaction-rollback.error.d.ts +20 -0
- package/cjs/errors/transaction-rollback.error.d.ts.map +1 -0
- package/cjs/errors/transaction-rollback.error.js +27 -0
- package/cjs/errors/transaction-rollback.error.js.map +1 -0
- package/cjs/events/model-events.d.ts +231 -0
- package/cjs/events/model-events.d.ts.map +1 -0
- package/cjs/events/model-events.js +259 -0
- package/cjs/events/model-events.js.map +1 -0
- package/cjs/expressions/aggregate-expressions.d.ts +215 -0
- package/cjs/expressions/aggregate-expressions.d.ts.map +1 -0
- package/cjs/expressions/aggregate-expressions.js +221 -0
- package/cjs/expressions/aggregate-expressions.js.map +1 -0
- package/cjs/expressions/index.d.ts +2 -0
- package/cjs/expressions/index.d.ts.map +1 -0
- package/cjs/index.d.ts +45 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/migration/column-builder.d.ts +417 -0
- package/cjs/migration/column-builder.d.ts.map +1 -0
- package/cjs/migration/column-builder.js +586 -0
- package/cjs/migration/column-builder.js.map +1 -0
- package/cjs/migration/column-helpers.d.ts +275 -0
- package/cjs/migration/column-helpers.d.ts.map +1 -0
- package/cjs/migration/column-helpers.js +389 -0
- package/cjs/migration/column-helpers.js.map +1 -0
- package/cjs/migration/foreign-key-builder.d.ts +103 -0
- package/cjs/migration/foreign-key-builder.d.ts.map +1 -0
- package/cjs/migration/foreign-key-builder.js +121 -0
- package/cjs/migration/foreign-key-builder.js.map +1 -0
- package/cjs/migration/index.d.ts +7 -0
- package/cjs/migration/index.d.ts.map +1 -0
- package/cjs/migration/migration-runner.d.ts +278 -0
- package/cjs/migration/migration-runner.d.ts.map +1 -0
- package/cjs/migration/migration-runner.js +815 -0
- package/cjs/migration/migration-runner.js.map +1 -0
- package/cjs/migration/migration.d.ts +1992 -0
- package/cjs/migration/migration.d.ts.map +1 -0
- package/cjs/migration/migration.js +2162 -0
- package/cjs/migration/migration.js.map +1 -0
- package/cjs/migration/sql-grammar.d.ts +61 -0
- package/cjs/migration/sql-grammar.d.ts.map +1 -0
- package/cjs/migration/sql-grammar.js +164 -0
- package/cjs/migration/sql-grammar.js.map +1 -0
- package/cjs/migration/sql-serializer.d.ts +22 -0
- package/cjs/migration/sql-serializer.d.ts.map +1 -0
- package/cjs/migration/sql-serializer.js +26 -0
- package/cjs/migration/sql-serializer.js.map +1 -0
- package/cjs/migration/types.d.ts +155 -0
- package/cjs/migration/types.d.ts.map +1 -0
- package/cjs/model/methods/accessor-methods.d.ts +13 -0
- package/cjs/model/methods/accessor-methods.d.ts.map +1 -0
- package/cjs/model/methods/accessor-methods.js +51 -0
- package/cjs/model/methods/accessor-methods.js.map +1 -0
- package/cjs/model/methods/delete-methods.d.ts +10 -0
- package/cjs/model/methods/delete-methods.d.ts.map +1 -0
- package/cjs/model/methods/delete-methods.js +10 -0
- package/cjs/model/methods/delete-methods.js.map +1 -0
- package/cjs/model/methods/dirty-methods.d.ts +10 -0
- package/cjs/model/methods/dirty-methods.d.ts.map +1 -0
- package/cjs/model/methods/dirty-methods.js +15 -0
- package/cjs/model/methods/dirty-methods.js.map +1 -0
- package/cjs/model/methods/hydration-methods.d.ts +10 -0
- package/cjs/model/methods/hydration-methods.d.ts.map +1 -0
- package/cjs/model/methods/hydration-methods.js +57 -0
- package/cjs/model/methods/hydration-methods.js.map +1 -0
- package/cjs/model/methods/instance-event-methods.d.ts +7 -0
- package/cjs/model/methods/instance-event-methods.d.ts.map +1 -0
- package/cjs/model/methods/instance-event-methods.js +15 -0
- package/cjs/model/methods/instance-event-methods.js.map +1 -0
- package/cjs/model/methods/meta-methods.d.ts +7 -0
- package/cjs/model/methods/meta-methods.d.ts.map +1 -0
- package/cjs/model/methods/meta-methods.js +78 -0
- package/cjs/model/methods/meta-methods.js.map +1 -0
- package/cjs/model/methods/query-methods.d.ts +24 -0
- package/cjs/model/methods/query-methods.d.ts.map +1 -0
- package/cjs/model/methods/query-methods.js +164 -0
- package/cjs/model/methods/query-methods.js.map +1 -0
- package/cjs/model/methods/restore-methods.d.ts +10 -0
- package/cjs/model/methods/restore-methods.d.ts.map +1 -0
- package/cjs/model/methods/restore-methods.js +13 -0
- package/cjs/model/methods/restore-methods.js.map +1 -0
- package/cjs/model/methods/scope-methods.d.ts +7 -0
- package/cjs/model/methods/scope-methods.d.ts.map +1 -0
- package/cjs/model/methods/scope-methods.js +15 -0
- package/cjs/model/methods/scope-methods.js.map +1 -0
- package/cjs/model/methods/serialization-methods.d.ts +3 -0
- package/cjs/model/methods/serialization-methods.d.ts.map +1 -0
- package/cjs/model/methods/serialization-methods.js +27 -0
- package/cjs/model/methods/serialization-methods.js.map +1 -0
- package/cjs/model/methods/static-event-methods.d.ts +9 -0
- package/cjs/model/methods/static-event-methods.d.ts.map +1 -0
- package/cjs/model/methods/static-event-methods.js +29 -0
- package/cjs/model/methods/static-event-methods.js.map +1 -0
- package/cjs/model/methods/write-methods.d.ts +10 -0
- package/cjs/model/methods/write-methods.d.ts.map +1 -0
- package/cjs/model/methods/write-methods.js +52 -0
- package/cjs/model/methods/write-methods.js.map +1 -0
- package/cjs/model/model.d.ts +1647 -0
- package/cjs/model/model.d.ts.map +1 -0
- package/cjs/model/model.js +1657 -0
- package/cjs/model/model.js.map +1 -0
- package/cjs/model/model.types.d.ts +44 -0
- package/cjs/model/model.types.d.ts.map +1 -0
- package/cjs/model/register-model.d.ts +81 -0
- package/cjs/model/register-model.d.ts.map +1 -0
- package/cjs/model/register-model.js +94 -0
- package/cjs/model/register-model.js.map +1 -0
- package/cjs/query-builder/query-builder.d.ts +556 -0
- package/cjs/query-builder/query-builder.d.ts.map +1 -0
- package/cjs/query-builder/query-builder.js +1070 -0
- package/cjs/query-builder/query-builder.js.map +1 -0
- package/cjs/relations/helpers.d.ts +156 -0
- package/cjs/relations/helpers.d.ts.map +1 -0
- package/cjs/relations/helpers.js +202 -0
- package/cjs/relations/helpers.js.map +1 -0
- package/cjs/relations/index.d.ts +35 -0
- package/cjs/relations/index.d.ts.map +1 -0
- package/cjs/relations/pivot-operations.d.ts +160 -0
- package/cjs/relations/pivot-operations.d.ts.map +1 -0
- package/cjs/relations/pivot-operations.js +293 -0
- package/cjs/relations/pivot-operations.js.map +1 -0
- package/cjs/relations/relation-hydrator.d.ts +68 -0
- package/cjs/relations/relation-hydrator.d.ts.map +1 -0
- package/cjs/relations/relation-hydrator.js +81 -0
- package/cjs/relations/relation-hydrator.js.map +1 -0
- package/cjs/relations/relation-loader.d.ts +194 -0
- package/cjs/relations/relation-loader.d.ts.map +1 -0
- package/cjs/relations/relation-loader.js +466 -0
- package/cjs/relations/relation-loader.js.map +1 -0
- package/cjs/relations/types.d.ts +306 -0
- package/cjs/relations/types.d.ts.map +1 -0
- package/cjs/remover/database-remover.d.ts +100 -0
- package/cjs/remover/database-remover.d.ts.map +1 -0
- package/cjs/remover/database-remover.js +214 -0
- package/cjs/remover/database-remover.js.map +1 -0
- package/cjs/restorer/database-restorer.d.ts +131 -0
- package/cjs/restorer/database-restorer.d.ts.map +1 -0
- package/cjs/restorer/database-restorer.js +434 -0
- package/cjs/restorer/database-restorer.js.map +1 -0
- package/cjs/sql-database-dirty-tracker.d.ts +13 -0
- package/cjs/sql-database-dirty-tracker.d.ts.map +1 -0
- package/cjs/sql-database-dirty-tracker.js +14 -0
- package/cjs/sql-database-dirty-tracker.js.map +1 -0
- package/cjs/sync/index.d.ts +12 -0
- package/cjs/sync/index.d.ts.map +1 -0
- package/cjs/sync/model-events.d.ts +62 -0
- package/cjs/sync/model-events.d.ts.map +1 -0
- package/cjs/sync/model-events.js +49 -0
- package/cjs/sync/model-events.js.map +1 -0
- package/cjs/sync/model-sync-operation.d.ts +163 -0
- package/cjs/sync/model-sync-operation.d.ts.map +1 -0
- package/cjs/sync/model-sync-operation.js +292 -0
- package/cjs/sync/model-sync-operation.js.map +1 -0
- package/cjs/sync/model-sync.d.ts +130 -0
- package/cjs/sync/model-sync.d.ts.map +1 -0
- package/cjs/sync/model-sync.js +178 -0
- package/cjs/sync/model-sync.js.map +1 -0
- package/cjs/sync/sync-context.d.ts +70 -0
- package/cjs/sync/sync-context.d.ts.map +1 -0
- package/cjs/sync/sync-context.js +101 -0
- package/cjs/sync/sync-context.js.map +1 -0
- package/cjs/sync/sync-manager.d.ts +213 -0
- package/cjs/sync/sync-manager.d.ts.map +1 -0
- package/cjs/sync/sync-manager.js +689 -0
- package/cjs/sync/sync-manager.js.map +1 -0
- package/cjs/sync/types.d.ts +289 -0
- package/cjs/sync/types.d.ts.map +1 -0
- package/cjs/test-migrations/test-enhanced-features.migration.d.ts +15 -0
- package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
- package/cjs/types.d.ts +371 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/connect-to-database.d.ts +307 -0
- package/cjs/utils/connect-to-database.d.ts.map +1 -0
- package/cjs/utils/connect-to-database.js +130 -0
- package/cjs/utils/connect-to-database.js.map +1 -0
- package/cjs/utils/database-writer.utils.d.ts +15 -0
- package/cjs/utils/database-writer.utils.d.ts.map +1 -0
- package/cjs/utils/database-writer.utils.js +14 -0
- package/cjs/utils/database-writer.utils.js.map +1 -0
- package/cjs/utils/define-model.js +100 -0
- package/cjs/utils/define-model.js.map +1 -0
- package/cjs/utils/is-valid-date-value.d.ts +5 -0
- package/cjs/utils/is-valid-date-value.d.ts.map +1 -0
- package/cjs/utils/is-valid-date-value.js +25 -0
- package/cjs/utils/is-valid-date-value.js.map +1 -0
- package/cjs/utils/once-connected.d.ts +146 -0
- package/cjs/utils/once-connected.d.ts.map +1 -0
- package/cjs/utils/once-connected.js +251 -0
- package/cjs/utils/once-connected.js.map +1 -0
- package/cjs/validation/database-seal-plugins.d.ts +12 -0
- package/cjs/validation/database-seal-plugins.d.ts.map +1 -0
- package/cjs/validation/database-seal-plugins.js +1 -0
- package/cjs/validation/database-seal-plugins.js.map +1 -0
- package/cjs/validation/database-writer-validation-error.d.ts +97 -0
- package/cjs/validation/database-writer-validation-error.d.ts.map +1 -0
- package/cjs/validation/database-writer-validation-error.js +160 -0
- package/cjs/validation/database-writer-validation-error.js.map +1 -0
- package/cjs/validation/index.d.ts +3 -0
- package/cjs/validation/index.d.ts.map +1 -0
- package/cjs/validation/mutators/embed-mutator.d.ts +9 -0
- package/cjs/validation/mutators/embed-mutator.d.ts.map +1 -0
- package/cjs/validation/mutators/embed-mutator.js +33 -0
- package/cjs/validation/mutators/embed-mutator.js.map +1 -0
- package/cjs/validation/plugins/embed-validator-plugin.d.ts +24 -0
- package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
- package/cjs/validation/plugins/embed-validator-plugin.js +18 -0
- package/cjs/validation/plugins/embed-validator-plugin.js.map +1 -0
- package/cjs/validation/rules/database-model-rule.d.ts +7 -0
- package/cjs/validation/rules/database-model-rule.d.ts.map +1 -0
- package/cjs/validation/rules/database-model-rule.js +27 -0
- package/cjs/validation/rules/database-model-rule.js.map +1 -0
- package/cjs/validation/transformers/embed-model-transformer.d.ts +3 -0
- package/cjs/validation/transformers/embed-model-transformer.d.ts.map +1 -0
- package/cjs/validation/transformers/embed-model-transformer.js +18 -0
- package/cjs/validation/transformers/embed-model-transformer.js.map +1 -0
- package/cjs/validation/validators/embed-validator.d.ts +21 -0
- package/cjs/validation/validators/embed-validator.d.ts.map +1 -0
- package/cjs/validation/validators/embed-validator.js +43 -0
- package/cjs/validation/validators/embed-validator.js.map +1 -0
- package/cjs/writer/database-writer.d.ts +181 -0
- package/cjs/writer/database-writer.d.ts.map +1 -0
- package/cjs/writer/database-writer.js +407 -0
- package/cjs/writer/database-writer.js.map +1 -0
- package/esm/data-source/data-source-registry.d.ts +108 -0
- package/esm/data-source/data-source-registry.d.ts.map +1 -0
- package/esm/data-source/data-source-registry.js +145 -0
- package/esm/data-source/data-source-registry.js.map +1 -0
- package/esm/data-source/data-source.d.ts +147 -0
- package/esm/data-source/data-source.d.ts.map +1 -0
- package/esm/data-source/data-source.js +83 -0
- package/esm/data-source/data-source.js.map +1 -0
- package/esm/database-dirty-tracker.d.ts +252 -0
- package/esm/database-dirty-tracker.d.ts.map +1 -0
- package/esm/database-dirty-tracker.js +386 -0
- package/esm/database-dirty-tracker.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-blueprint.js +51 -0
- package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-driver.d.ts +325 -0
- package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-driver.js +838 -0
- package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-id-generator.js +149 -0
- package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.js +666 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-builder.js +1988 -0
- package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-operations.js +270 -0
- package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-parser.js +1351 -0
- package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.js +146 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
- package/esm/drivers/mongodb/types.d.ts +43 -0
- package/esm/drivers/mongodb/types.d.ts.map +1 -0
- package/esm/drivers/postgres/index.d.ts +16 -0
- package/esm/drivers/postgres/index.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
- package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.js +121 -0
- package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.d.ts +136 -0
- package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.js +268 -0
- package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
- package/esm/drivers/postgres/postgres-driver.d.ts +432 -0
- package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-driver.js +1010 -0
- package/esm/drivers/postgres/postgres-driver.js.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.ts +397 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.js +900 -0
- package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.d.ts +254 -0
- package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.js +933 -0
- package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.d.ts +328 -0
- package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.js +868 -0
- package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
- package/esm/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
- package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-sql-serializer.js +400 -0
- package/esm/drivers/postgres/postgres-sql-serializer.js.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
- package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
- package/esm/drivers/postgres/types.d.ts +144 -0
- package/esm/drivers/postgres/types.d.ts.map +1 -0
- package/esm/drivers/sql/index.d.ts +10 -0
- package/esm/drivers/sql/index.d.ts.map +1 -0
- package/esm/drivers/sql/sql-dialect.contract.d.ts +204 -0
- package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
- package/esm/drivers/sql/sql-types.d.ts +202 -0
- package/esm/drivers/sql/sql-types.d.ts.map +1 -0
- package/esm/errors/missing-data-source.error.d.ts +22 -0
- package/esm/errors/missing-data-source.error.d.ts.map +1 -0
- package/esm/errors/missing-data-source.error.js +29 -0
- package/esm/errors/missing-data-source.error.js.map +1 -0
- package/esm/errors/transaction-rollback.error.d.ts +20 -0
- package/esm/errors/transaction-rollback.error.d.ts.map +1 -0
- package/esm/errors/transaction-rollback.error.js +27 -0
- package/esm/errors/transaction-rollback.error.js.map +1 -0
- package/esm/events/model-events.d.ts +231 -0
- package/esm/events/model-events.d.ts.map +1 -0
- package/esm/events/model-events.js +259 -0
- package/esm/events/model-events.js.map +1 -0
- package/esm/expressions/aggregate-expressions.d.ts +215 -0
- package/esm/expressions/aggregate-expressions.d.ts.map +1 -0
- package/esm/expressions/aggregate-expressions.js +221 -0
- package/esm/expressions/aggregate-expressions.js.map +1 -0
- package/esm/expressions/index.d.ts +2 -0
- package/esm/expressions/index.d.ts.map +1 -0
- package/esm/index.d.ts +45 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/migration/column-builder.d.ts +417 -0
- package/esm/migration/column-builder.d.ts.map +1 -0
- package/esm/migration/column-builder.js +586 -0
- package/esm/migration/column-builder.js.map +1 -0
- package/esm/migration/column-helpers.d.ts +275 -0
- package/esm/migration/column-helpers.d.ts.map +1 -0
- package/esm/migration/column-helpers.js +389 -0
- package/esm/migration/column-helpers.js.map +1 -0
- package/esm/migration/foreign-key-builder.d.ts +103 -0
- package/esm/migration/foreign-key-builder.d.ts.map +1 -0
- package/esm/migration/foreign-key-builder.js +121 -0
- package/esm/migration/foreign-key-builder.js.map +1 -0
- package/esm/migration/index.d.ts +7 -0
- package/esm/migration/index.d.ts.map +1 -0
- package/esm/migration/migration-runner.d.ts +278 -0
- package/esm/migration/migration-runner.d.ts.map +1 -0
- package/esm/migration/migration-runner.js +815 -0
- package/esm/migration/migration-runner.js.map +1 -0
- package/esm/migration/migration.d.ts +1992 -0
- package/esm/migration/migration.d.ts.map +1 -0
- package/esm/migration/migration.js +2162 -0
- package/esm/migration/migration.js.map +1 -0
- package/esm/migration/sql-grammar.d.ts +61 -0
- package/esm/migration/sql-grammar.d.ts.map +1 -0
- package/esm/migration/sql-grammar.js +164 -0
- package/esm/migration/sql-grammar.js.map +1 -0
- package/esm/migration/sql-serializer.d.ts +22 -0
- package/esm/migration/sql-serializer.d.ts.map +1 -0
- package/esm/migration/sql-serializer.js +26 -0
- package/esm/migration/sql-serializer.js.map +1 -0
- package/esm/migration/types.d.ts +155 -0
- package/esm/migration/types.d.ts.map +1 -0
- package/esm/model/methods/accessor-methods.d.ts +13 -0
- package/esm/model/methods/accessor-methods.d.ts.map +1 -0
- package/esm/model/methods/accessor-methods.js +51 -0
- package/esm/model/methods/accessor-methods.js.map +1 -0
- package/esm/model/methods/delete-methods.d.ts +10 -0
- package/esm/model/methods/delete-methods.d.ts.map +1 -0
- package/esm/model/methods/delete-methods.js +10 -0
- package/esm/model/methods/delete-methods.js.map +1 -0
- package/esm/model/methods/dirty-methods.d.ts +10 -0
- package/esm/model/methods/dirty-methods.d.ts.map +1 -0
- package/esm/model/methods/dirty-methods.js +15 -0
- package/esm/model/methods/dirty-methods.js.map +1 -0
- package/esm/model/methods/hydration-methods.d.ts +10 -0
- package/esm/model/methods/hydration-methods.d.ts.map +1 -0
- package/esm/model/methods/hydration-methods.js +57 -0
- package/esm/model/methods/hydration-methods.js.map +1 -0
- package/esm/model/methods/instance-event-methods.d.ts +7 -0
- package/esm/model/methods/instance-event-methods.d.ts.map +1 -0
- package/esm/model/methods/instance-event-methods.js +15 -0
- package/esm/model/methods/instance-event-methods.js.map +1 -0
- package/esm/model/methods/meta-methods.d.ts +7 -0
- package/esm/model/methods/meta-methods.d.ts.map +1 -0
- package/esm/model/methods/meta-methods.js +78 -0
- package/esm/model/methods/meta-methods.js.map +1 -0
- package/esm/model/methods/query-methods.d.ts +24 -0
- package/esm/model/methods/query-methods.d.ts.map +1 -0
- package/esm/model/methods/query-methods.js +164 -0
- package/esm/model/methods/query-methods.js.map +1 -0
- package/esm/model/methods/restore-methods.d.ts +10 -0
- package/esm/model/methods/restore-methods.d.ts.map +1 -0
- package/esm/model/methods/restore-methods.js +13 -0
- package/esm/model/methods/restore-methods.js.map +1 -0
- package/esm/model/methods/scope-methods.d.ts +7 -0
- package/esm/model/methods/scope-methods.d.ts.map +1 -0
- package/esm/model/methods/scope-methods.js +15 -0
- package/esm/model/methods/scope-methods.js.map +1 -0
- package/esm/model/methods/serialization-methods.d.ts +3 -0
- package/esm/model/methods/serialization-methods.d.ts.map +1 -0
- package/esm/model/methods/serialization-methods.js +27 -0
- package/esm/model/methods/serialization-methods.js.map +1 -0
- package/esm/model/methods/static-event-methods.d.ts +9 -0
- package/esm/model/methods/static-event-methods.d.ts.map +1 -0
- package/esm/model/methods/static-event-methods.js +29 -0
- package/esm/model/methods/static-event-methods.js.map +1 -0
- package/esm/model/methods/write-methods.d.ts +10 -0
- package/esm/model/methods/write-methods.d.ts.map +1 -0
- package/esm/model/methods/write-methods.js +52 -0
- package/esm/model/methods/write-methods.js.map +1 -0
- package/esm/model/model.d.ts +1647 -0
- package/esm/model/model.d.ts.map +1 -0
- package/esm/model/model.js +1657 -0
- package/esm/model/model.js.map +1 -0
- package/esm/model/model.types.d.ts +44 -0
- package/esm/model/model.types.d.ts.map +1 -0
- package/esm/model/register-model.d.ts +81 -0
- package/esm/model/register-model.d.ts.map +1 -0
- package/esm/model/register-model.js +94 -0
- package/esm/model/register-model.js.map +1 -0
- package/esm/query-builder/query-builder.d.ts +556 -0
- package/esm/query-builder/query-builder.d.ts.map +1 -0
- package/esm/query-builder/query-builder.js +1070 -0
- package/esm/query-builder/query-builder.js.map +1 -0
- package/esm/relations/helpers.d.ts +156 -0
- package/esm/relations/helpers.d.ts.map +1 -0
- package/esm/relations/helpers.js +202 -0
- package/esm/relations/helpers.js.map +1 -0
- package/esm/relations/index.d.ts +35 -0
- package/esm/relations/index.d.ts.map +1 -0
- package/esm/relations/pivot-operations.d.ts +160 -0
- package/esm/relations/pivot-operations.d.ts.map +1 -0
- package/esm/relations/pivot-operations.js +293 -0
- package/esm/relations/pivot-operations.js.map +1 -0
- package/esm/relations/relation-hydrator.d.ts +68 -0
- package/esm/relations/relation-hydrator.d.ts.map +1 -0
- package/esm/relations/relation-hydrator.js +81 -0
- package/esm/relations/relation-hydrator.js.map +1 -0
- package/esm/relations/relation-loader.d.ts +194 -0
- package/esm/relations/relation-loader.d.ts.map +1 -0
- package/esm/relations/relation-loader.js +466 -0
- package/esm/relations/relation-loader.js.map +1 -0
- package/esm/relations/types.d.ts +306 -0
- package/esm/relations/types.d.ts.map +1 -0
- package/esm/remover/database-remover.d.ts +100 -0
- package/esm/remover/database-remover.d.ts.map +1 -0
- package/esm/remover/database-remover.js +214 -0
- package/esm/remover/database-remover.js.map +1 -0
- package/esm/restorer/database-restorer.d.ts +131 -0
- package/esm/restorer/database-restorer.d.ts.map +1 -0
- package/esm/restorer/database-restorer.js +434 -0
- package/esm/restorer/database-restorer.js.map +1 -0
- package/esm/sql-database-dirty-tracker.d.ts +13 -0
- package/esm/sql-database-dirty-tracker.d.ts.map +1 -0
- package/esm/sql-database-dirty-tracker.js +14 -0
- package/esm/sql-database-dirty-tracker.js.map +1 -0
- package/esm/sync/index.d.ts +12 -0
- package/esm/sync/index.d.ts.map +1 -0
- package/esm/sync/model-events.d.ts +62 -0
- package/esm/sync/model-events.d.ts.map +1 -0
- package/esm/sync/model-events.js +49 -0
- package/esm/sync/model-events.js.map +1 -0
- package/esm/sync/model-sync-operation.d.ts +163 -0
- package/esm/sync/model-sync-operation.d.ts.map +1 -0
- package/esm/sync/model-sync-operation.js +292 -0
- package/esm/sync/model-sync-operation.js.map +1 -0
- package/esm/sync/model-sync.d.ts +130 -0
- package/esm/sync/model-sync.d.ts.map +1 -0
- package/esm/sync/model-sync.js +178 -0
- package/esm/sync/model-sync.js.map +1 -0
- package/esm/sync/sync-context.d.ts +70 -0
- package/esm/sync/sync-context.d.ts.map +1 -0
- package/esm/sync/sync-context.js +101 -0
- package/esm/sync/sync-context.js.map +1 -0
- package/esm/sync/sync-manager.d.ts +213 -0
- package/esm/sync/sync-manager.d.ts.map +1 -0
- package/esm/sync/sync-manager.js +689 -0
- package/esm/sync/sync-manager.js.map +1 -0
- package/esm/sync/types.d.ts +289 -0
- package/esm/sync/types.d.ts.map +1 -0
- package/esm/test-migrations/test-enhanced-features.migration.d.ts +15 -0
- package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
- package/esm/types.d.ts +371 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/connect-to-database.d.ts +307 -0
- package/esm/utils/connect-to-database.d.ts.map +1 -0
- package/esm/utils/connect-to-database.js +130 -0
- package/esm/utils/connect-to-database.js.map +1 -0
- package/esm/utils/database-writer.utils.d.ts +15 -0
- package/esm/utils/database-writer.utils.d.ts.map +1 -0
- package/esm/utils/database-writer.utils.js +14 -0
- package/esm/utils/database-writer.utils.js.map +1 -0
- package/esm/utils/define-model.js +100 -0
- package/esm/utils/define-model.js.map +1 -0
- package/esm/utils/is-valid-date-value.d.ts +5 -0
- package/esm/utils/is-valid-date-value.d.ts.map +1 -0
- package/esm/utils/is-valid-date-value.js +25 -0
- package/esm/utils/is-valid-date-value.js.map +1 -0
- package/esm/utils/once-connected.d.ts +146 -0
- package/esm/utils/once-connected.d.ts.map +1 -0
- package/esm/utils/once-connected.js +251 -0
- package/esm/utils/once-connected.js.map +1 -0
- package/esm/validation/database-seal-plugins.d.ts +12 -0
- package/esm/validation/database-seal-plugins.d.ts.map +1 -0
- package/esm/validation/database-seal-plugins.js +1 -0
- package/esm/validation/database-seal-plugins.js.map +1 -0
- package/esm/validation/database-writer-validation-error.d.ts +97 -0
- package/esm/validation/database-writer-validation-error.d.ts.map +1 -0
- package/esm/validation/database-writer-validation-error.js +160 -0
- package/esm/validation/database-writer-validation-error.js.map +1 -0
- package/esm/validation/index.d.ts +3 -0
- package/esm/validation/index.d.ts.map +1 -0
- package/esm/validation/mutators/embed-mutator.d.ts +9 -0
- package/esm/validation/mutators/embed-mutator.d.ts.map +1 -0
- package/esm/validation/mutators/embed-mutator.js +33 -0
- package/esm/validation/mutators/embed-mutator.js.map +1 -0
- package/esm/validation/plugins/embed-validator-plugin.d.ts +24 -0
- package/esm/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
- package/esm/validation/plugins/embed-validator-plugin.js +18 -0
- package/esm/validation/plugins/embed-validator-plugin.js.map +1 -0
- package/esm/validation/rules/database-model-rule.d.ts +7 -0
- package/esm/validation/rules/database-model-rule.d.ts.map +1 -0
- package/esm/validation/rules/database-model-rule.js +27 -0
- package/esm/validation/rules/database-model-rule.js.map +1 -0
- package/esm/validation/transformers/embed-model-transformer.d.ts +3 -0
- package/esm/validation/transformers/embed-model-transformer.d.ts.map +1 -0
- package/esm/validation/transformers/embed-model-transformer.js +18 -0
- package/esm/validation/transformers/embed-model-transformer.js.map +1 -0
- package/esm/validation/validators/embed-validator.d.ts +21 -0
- package/esm/validation/validators/embed-validator.d.ts.map +1 -0
- package/esm/validation/validators/embed-validator.js +43 -0
- package/esm/validation/validators/embed-validator.js.map +1 -0
- package/esm/writer/database-writer.d.ts +181 -0
- package/esm/writer/database-writer.d.ts.map +1 -0
- package/esm/writer/database-writer.js +407 -0
- package/esm/writer/database-writer.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Light-weight async event emitter used to power model lifecycle hooks.
|
|
3
|
+
*
|
|
4
|
+
* The implementation intentionally avoids any external dependency so we can
|
|
5
|
+
* re-use it in drivers, writers, and other core services without pulling in
|
|
6
|
+
* heavier event libraries.
|
|
7
|
+
*/
|
|
8
|
+
class ModelEvents {
|
|
9
|
+
listeners = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Register a listener for the given event.
|
|
12
|
+
* Returns an unsubscribe function for convenience.
|
|
13
|
+
*/
|
|
14
|
+
on(event, listener) {
|
|
15
|
+
const listeners = this.ensureListenerSet(event);
|
|
16
|
+
listeners.add(listener);
|
|
17
|
+
return () => this.off(event, listener);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Register a listener that automatically unsubscribes after the first call.
|
|
21
|
+
*/
|
|
22
|
+
once(event, listener) {
|
|
23
|
+
const wrapper = async (model, context) => {
|
|
24
|
+
try {
|
|
25
|
+
await listener(model, context);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
this.off(event, wrapper);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return this.on(event, wrapper);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deregister a listener for the given event.
|
|
35
|
+
*/
|
|
36
|
+
off(event, listener) {
|
|
37
|
+
const listeners = this.listeners.get(event);
|
|
38
|
+
if (!listeners) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
listeners.delete(listener);
|
|
42
|
+
if (listeners.size === 0) {
|
|
43
|
+
this.listeners.delete(event);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Emit an event to all registered listeners.
|
|
48
|
+
*/
|
|
49
|
+
async emit(event, model, context) {
|
|
50
|
+
const listeners = this.listeners.get(event);
|
|
51
|
+
if (!listeners || listeners.size === 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
for (const listener of Array.from(listeners)) {
|
|
55
|
+
await listener(model, context);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Emit events for fetching
|
|
60
|
+
*/
|
|
61
|
+
async emitFetching(query, context) {
|
|
62
|
+
await this.emit("fetching", query, context);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Remove all registered listeners.
|
|
66
|
+
*/
|
|
67
|
+
clear() {
|
|
68
|
+
this.listeners.clear();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Registers a listener for the "saving" event.
|
|
72
|
+
*
|
|
73
|
+
* Fired before a model is persisted (both insert and update), and before validation.
|
|
74
|
+
* Use this hook for data enrichment and preparation (e.g., setting createdBy, updatedBy).
|
|
75
|
+
*
|
|
76
|
+
* @param listener - The callback to invoke
|
|
77
|
+
* @returns An unsubscribe function
|
|
78
|
+
*/
|
|
79
|
+
onSaving(listener) {
|
|
80
|
+
return this.on("saving", listener);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Registers a listener for the "saved" event.
|
|
84
|
+
*
|
|
85
|
+
* Fired after a model has been successfully persisted.
|
|
86
|
+
*
|
|
87
|
+
* @param listener - The callback to invoke
|
|
88
|
+
* @returns An unsubscribe function
|
|
89
|
+
*/
|
|
90
|
+
onSaved(listener) {
|
|
91
|
+
return this.on("saved", listener);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Registers a listener for the "creating" event.
|
|
95
|
+
*
|
|
96
|
+
* Fired before a new model is inserted into the database.
|
|
97
|
+
*
|
|
98
|
+
* @param listener - The callback to invoke
|
|
99
|
+
* @returns An unsubscribe function
|
|
100
|
+
*/
|
|
101
|
+
onCreating(listener) {
|
|
102
|
+
return this.on("creating", listener);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Registers a listener for the "created" event.
|
|
106
|
+
*
|
|
107
|
+
* Fired after a new model has been successfully inserted.
|
|
108
|
+
*
|
|
109
|
+
* @param listener - The callback to invoke
|
|
110
|
+
* @returns An unsubscribe function
|
|
111
|
+
*/
|
|
112
|
+
onCreated(listener) {
|
|
113
|
+
return this.on("created", listener);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Registers a listener for the "updating" event.
|
|
117
|
+
*
|
|
118
|
+
* Fired before an existing model is updated in the database.
|
|
119
|
+
*
|
|
120
|
+
* @param listener - The callback to invoke
|
|
121
|
+
* @returns An unsubscribe function
|
|
122
|
+
*/
|
|
123
|
+
onUpdating(listener) {
|
|
124
|
+
return this.on("updating", listener);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Registers a listener for the "updated" event.
|
|
128
|
+
*
|
|
129
|
+
* Fired after an existing model has been successfully updated.
|
|
130
|
+
*
|
|
131
|
+
* @param listener - The callback to invoke
|
|
132
|
+
* @returns An unsubscribe function
|
|
133
|
+
*/
|
|
134
|
+
onUpdated(listener) {
|
|
135
|
+
return this.on("updated", listener);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Registers a listener for the "deleting" event.
|
|
139
|
+
*
|
|
140
|
+
* Fired before a model is deleted from the database.
|
|
141
|
+
*
|
|
142
|
+
* @param listener - The callback to invoke
|
|
143
|
+
* @returns An unsubscribe function
|
|
144
|
+
*/
|
|
145
|
+
onDeleting(listener) {
|
|
146
|
+
return this.on("deleting", listener);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Registers a listener for the "deleted" event.
|
|
150
|
+
*
|
|
151
|
+
* Fired after a model has been successfully deleted.
|
|
152
|
+
*
|
|
153
|
+
* @param listener - The callback to invoke
|
|
154
|
+
* @returns An unsubscribe function
|
|
155
|
+
*/
|
|
156
|
+
onDeleted(listener) {
|
|
157
|
+
return this.on("deleted", listener);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Registers a listener for the "validating" event.
|
|
161
|
+
*
|
|
162
|
+
* Fired before model validation is performed.
|
|
163
|
+
*
|
|
164
|
+
* @param listener - The callback to invoke
|
|
165
|
+
* @returns An unsubscribe function
|
|
166
|
+
*/
|
|
167
|
+
onValidating(listener) {
|
|
168
|
+
return this.on("validating", listener);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Registers a listener for the "validated" event.
|
|
172
|
+
*
|
|
173
|
+
* Fired after model validation has completed.
|
|
174
|
+
*
|
|
175
|
+
* @param listener - The callback to invoke
|
|
176
|
+
* @returns An unsubscribe function
|
|
177
|
+
*/
|
|
178
|
+
onValidated(listener) {
|
|
179
|
+
return this.on("validated", listener);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Registers a listener for the "fetching" event.
|
|
183
|
+
*
|
|
184
|
+
* Fired before a query is executed to fetch models.
|
|
185
|
+
* Receives the query builder instance, allowing modification before execution.
|
|
186
|
+
*
|
|
187
|
+
* @param listener - The callback to invoke
|
|
188
|
+
* @returns An unsubscribe function
|
|
189
|
+
*/
|
|
190
|
+
onFetching(listener) {
|
|
191
|
+
return this.on("fetching", listener);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Registers a listener for the "hydrating" event.
|
|
195
|
+
*
|
|
196
|
+
* Fired after raw records are fetched but before they are hydrated into model instances.
|
|
197
|
+
* Allows modification of raw data before hydration.
|
|
198
|
+
*
|
|
199
|
+
* @param listener - The callback to invoke
|
|
200
|
+
* @returns An unsubscribe function
|
|
201
|
+
*/
|
|
202
|
+
onHydrating(listener) {
|
|
203
|
+
return this.on("hydrating", listener);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Registers a listener for the "fetched" event.
|
|
207
|
+
*
|
|
208
|
+
* Fired after models have been fetched and hydrated.
|
|
209
|
+
* Receives hydrated model instances and query context.
|
|
210
|
+
*
|
|
211
|
+
* @param listener - The callback to invoke
|
|
212
|
+
* @returns An unsubscribe function
|
|
213
|
+
*/
|
|
214
|
+
onFetched(listener) {
|
|
215
|
+
return this.on("fetched", listener);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Registers a listener for the "restoring" event.
|
|
219
|
+
*
|
|
220
|
+
* Fired before a soft-deleted model is restored.
|
|
221
|
+
*
|
|
222
|
+
* @param listener - The callback to invoke
|
|
223
|
+
* @returns An unsubscribe function
|
|
224
|
+
*/
|
|
225
|
+
onRestoring(listener) {
|
|
226
|
+
return this.on("restoring", listener);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Registers a listener for the "restored" event.
|
|
230
|
+
*
|
|
231
|
+
* Fired after a soft-deleted model has been successfully restored.
|
|
232
|
+
*
|
|
233
|
+
* @param listener - The callback to invoke
|
|
234
|
+
* @returns An unsubscribe function
|
|
235
|
+
*/
|
|
236
|
+
onRestored(listener) {
|
|
237
|
+
return this.on("restored", listener);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Ensures a listener set exists for the given event.
|
|
241
|
+
*
|
|
242
|
+
* @param event - The event name
|
|
243
|
+
* @returns The listener set for the event
|
|
244
|
+
* @private
|
|
245
|
+
*/
|
|
246
|
+
ensureListenerSet(event) {
|
|
247
|
+
let listeners = this.listeners.get(event);
|
|
248
|
+
if (!listeners) {
|
|
249
|
+
listeners = new Set();
|
|
250
|
+
this.listeners.set(event, listeners);
|
|
251
|
+
}
|
|
252
|
+
return listeners;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Global event emitter invoked for every model instance, regardless of type.
|
|
257
|
+
* Useful for cross-cutting concerns like auditing or request-scoped enrichment.
|
|
258
|
+
*/
|
|
259
|
+
const globalModelEvents = new ModelEvents();exports.ModelEvents=ModelEvents;exports.globalModelEvents=globalModelEvents;//# sourceMappingURL=model-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-events.js","sources":["../../src/events/model-events.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database-agnostic aggregation expressions.
|
|
3
|
+
*
|
|
4
|
+
* These helpers provide a unified API for building aggregate queries that work
|
|
5
|
+
* across different database types (MongoDB, PostgreSQL, MySQL, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Each driver implementation translates these abstract expressions to their
|
|
8
|
+
* native format:
|
|
9
|
+
* - MongoDB: { $sum: 1 }, { $sum: "$field" }, etc.
|
|
10
|
+
* - SQL: COUNT(*), SUM(field), etc.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { $agg } from '@warlock.js/cascade';
|
|
15
|
+
*
|
|
16
|
+
* // Works for both MongoDB and SQL
|
|
17
|
+
* Lesson.query()
|
|
18
|
+
* .groupBy("type", {
|
|
19
|
+
* count: $agg.count(),
|
|
20
|
+
* total: $agg.sum("duration"),
|
|
21
|
+
* avg: $agg.avg("rating")
|
|
22
|
+
* })
|
|
23
|
+
* .get();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Abstract aggregate expression format.
|
|
28
|
+
*
|
|
29
|
+
* This format is database-agnostic and will be translated by each driver
|
|
30
|
+
* to their native syntax.
|
|
31
|
+
*/
|
|
32
|
+
export type AggregateExpression = {
|
|
33
|
+
/** The aggregate function type */
|
|
34
|
+
__agg: AggregateFunction;
|
|
35
|
+
/** The field to aggregate (null for count) */
|
|
36
|
+
__field: string | null;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Supported aggregate functions.
|
|
40
|
+
*/
|
|
41
|
+
export type AggregateFunction = "count" | "sum" | "avg" | "min" | "max" | "first" | "last" | "distinct" | "floor";
|
|
42
|
+
/**
|
|
43
|
+
* Checks if a value is an abstract aggregate expression.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isAggregateExpression(value: unknown): value is AggregateExpression;
|
|
46
|
+
/**
|
|
47
|
+
* Database-agnostic aggregation expression helpers.
|
|
48
|
+
*
|
|
49
|
+
* These helpers create abstract expressions that each driver translates
|
|
50
|
+
* to their native format.
|
|
51
|
+
*/
|
|
52
|
+
export declare const $agg: {
|
|
53
|
+
/**
|
|
54
|
+
* Count documents in each group.
|
|
55
|
+
*
|
|
56
|
+
* @returns Abstract count expression
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* query.groupBy("type", {
|
|
61
|
+
* count: $agg.count()
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* Translates to:
|
|
66
|
+
* - MongoDB: `{ $sum: 1 }`
|
|
67
|
+
* - SQL: `COUNT(*)`
|
|
68
|
+
*/
|
|
69
|
+
count(): AggregateExpression;
|
|
70
|
+
/**
|
|
71
|
+
* Sum a numeric field across documents in each group.
|
|
72
|
+
*
|
|
73
|
+
* @param field - The field name to sum
|
|
74
|
+
* @returns Abstract sum expression
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* query.groupBy("type", {
|
|
79
|
+
* totalDuration: $agg.sum("duration")
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* Translates to:
|
|
84
|
+
* - MongoDB: `{ $sum: "$duration" }`
|
|
85
|
+
* - SQL: `SUM(duration)`
|
|
86
|
+
*/
|
|
87
|
+
sum(field: string): AggregateExpression;
|
|
88
|
+
/**
|
|
89
|
+
* Calculate the average value of a field across documents in each group.
|
|
90
|
+
*
|
|
91
|
+
* @param field - The field name to average
|
|
92
|
+
* @returns Abstract average expression
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* query.groupBy("type", {
|
|
97
|
+
* avgRating: $agg.avg("rating")
|
|
98
|
+
* });
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* Translates to:
|
|
102
|
+
* - MongoDB: `{ $avg: "$rating" }`
|
|
103
|
+
* - SQL: `AVG(rating)`
|
|
104
|
+
*/
|
|
105
|
+
avg(field: string): AggregateExpression;
|
|
106
|
+
/**
|
|
107
|
+
* Get the minimum value of a field across documents in each group.
|
|
108
|
+
*
|
|
109
|
+
* @param field - The field name
|
|
110
|
+
* @returns Abstract min expression
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* query.groupBy("type", {
|
|
115
|
+
* minPrice: $agg.min("price")
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* Translates to:
|
|
120
|
+
* - MongoDB: `{ $min: "$price" }`
|
|
121
|
+
* - SQL: `MIN(price)`
|
|
122
|
+
*/
|
|
123
|
+
min(field: string): AggregateExpression;
|
|
124
|
+
/**
|
|
125
|
+
* Get the maximum value of a field across documents in each group.
|
|
126
|
+
*
|
|
127
|
+
* @param field - The field name
|
|
128
|
+
* @returns Abstract max expression
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* query.groupBy("type", {
|
|
133
|
+
* maxPrice: $agg.max("price")
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* Translates to:
|
|
138
|
+
* - MongoDB: `{ $max: "$price" }`
|
|
139
|
+
* - SQL: `MAX(price)`
|
|
140
|
+
*/
|
|
141
|
+
max(field: string): AggregateExpression;
|
|
142
|
+
/**
|
|
143
|
+
* Get the distinct values of a field across documents in each group.
|
|
144
|
+
*
|
|
145
|
+
* @param field - The field name
|
|
146
|
+
* @returns Abstract distinct expression
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* query.groupBy("type", {
|
|
151
|
+
* distinctColors: $agg.distinct("color")
|
|
152
|
+
* });
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* Translates to:
|
|
156
|
+
* - MongoDB: `{ $distinct: "$color" }`
|
|
157
|
+
* - SQL: `DISTINCT(color)`
|
|
158
|
+
*/
|
|
159
|
+
distinct(field: string): AggregateExpression;
|
|
160
|
+
/**
|
|
161
|
+
* Get the floor value of a field across documents in each group.
|
|
162
|
+
*
|
|
163
|
+
* @param field - The field name
|
|
164
|
+
* @returns Abstract floor expression
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* query.groupBy("type", {
|
|
169
|
+
* floorPrice: $agg.floor("price")
|
|
170
|
+
* });
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* Translates to:
|
|
174
|
+
* - MongoDB: `{ $floor: "$price" }`
|
|
175
|
+
* - SQL: `FLOOR(price)`
|
|
176
|
+
*/
|
|
177
|
+
floor(field: string): AggregateExpression;
|
|
178
|
+
/**
|
|
179
|
+
* Get the first value of a field in each group (order-dependent).
|
|
180
|
+
*
|
|
181
|
+
* @param field - The field name
|
|
182
|
+
* @returns Abstract first expression
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* query.groupBy("type", {
|
|
187
|
+
* firstName: $agg.first("name")
|
|
188
|
+
* });
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* Translates to:
|
|
192
|
+
* - MongoDB: `{ $first: "$name" }`
|
|
193
|
+
* - SQL: `FIRST_VALUE(name) OVER (...)`
|
|
194
|
+
*/
|
|
195
|
+
first(field: string): AggregateExpression;
|
|
196
|
+
/**
|
|
197
|
+
* Get the last value of a field in each group (order-dependent).
|
|
198
|
+
*
|
|
199
|
+
* @param field - The field name
|
|
200
|
+
* @returns Abstract last expression
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* query.groupBy("type", {
|
|
205
|
+
* lastName: $agg.last("name")
|
|
206
|
+
* });
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* Translates to:
|
|
210
|
+
* - MongoDB: `{ $last: "$name" }`
|
|
211
|
+
* - SQL: `LAST_VALUE(name) OVER (...)`
|
|
212
|
+
*/
|
|
213
|
+
last(field: string): AggregateExpression;
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=aggregate-expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-expressions.d.ts","sourceRoot":"","sources":["../../src/expressions/aggregate-expressions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,kCAAkC;IAClC,KAAK,EAAE,iBAAiB,CAAC;IACzB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,OAAO,GACP,MAAM,GACN,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAOlF;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;OAeG;aACM,mBAAmB;IAI5B;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;oBACa,MAAM,GAAG,mBAAmB;IAI5C;;;;;;;;;;;;;;;;OAgBG;iBACU,MAAM,GAAG,mBAAmB;IAIzC;;;;;;;;;;;;;;;;OAgBG;iBACU,MAAM,GAAG,mBAAmB;IAIzC;;;;;;;;;;;;;;;;OAgBG;gBACS,MAAM,GAAG,mBAAmB;CAGzC,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Database-agnostic aggregation expressions.
|
|
3
|
+
*
|
|
4
|
+
* These helpers provide a unified API for building aggregate queries that work
|
|
5
|
+
* across different database types (MongoDB, PostgreSQL, MySQL, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Each driver implementation translates these abstract expressions to their
|
|
8
|
+
* native format:
|
|
9
|
+
* - MongoDB: { $sum: 1 }, { $sum: "$field" }, etc.
|
|
10
|
+
* - SQL: COUNT(*), SUM(field), etc.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { $agg } from '@warlock.js/cascade';
|
|
15
|
+
*
|
|
16
|
+
* // Works for both MongoDB and SQL
|
|
17
|
+
* Lesson.query()
|
|
18
|
+
* .groupBy("type", {
|
|
19
|
+
* count: $agg.count(),
|
|
20
|
+
* total: $agg.sum("duration"),
|
|
21
|
+
* avg: $agg.avg("rating")
|
|
22
|
+
* })
|
|
23
|
+
* .get();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a value is an abstract aggregate expression.
|
|
28
|
+
*/
|
|
29
|
+
function isAggregateExpression(value) {
|
|
30
|
+
return (typeof value === "object" &&
|
|
31
|
+
value !== null &&
|
|
32
|
+
"__field" in value &&
|
|
33
|
+
typeof value.__agg === "string");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Database-agnostic aggregation expression helpers.
|
|
37
|
+
*
|
|
38
|
+
* These helpers create abstract expressions that each driver translates
|
|
39
|
+
* to their native format.
|
|
40
|
+
*/
|
|
41
|
+
const $agg = {
|
|
42
|
+
/**
|
|
43
|
+
* Count documents in each group.
|
|
44
|
+
*
|
|
45
|
+
* @returns Abstract count expression
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* query.groupBy("type", {
|
|
50
|
+
* count: $agg.count()
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* Translates to:
|
|
55
|
+
* - MongoDB: `{ $sum: 1 }`
|
|
56
|
+
* - SQL: `COUNT(*)`
|
|
57
|
+
*/
|
|
58
|
+
count() {
|
|
59
|
+
return { __agg: "count", __field: null };
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* Sum a numeric field across documents in each group.
|
|
63
|
+
*
|
|
64
|
+
* @param field - The field name to sum
|
|
65
|
+
* @returns Abstract sum expression
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* query.groupBy("type", {
|
|
70
|
+
* totalDuration: $agg.sum("duration")
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* Translates to:
|
|
75
|
+
* - MongoDB: `{ $sum: "$duration" }`
|
|
76
|
+
* - SQL: `SUM(duration)`
|
|
77
|
+
*/
|
|
78
|
+
sum(field) {
|
|
79
|
+
return { __agg: "sum", __field: field };
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* Calculate the average value of a field across documents in each group.
|
|
83
|
+
*
|
|
84
|
+
* @param field - The field name to average
|
|
85
|
+
* @returns Abstract average expression
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* query.groupBy("type", {
|
|
90
|
+
* avgRating: $agg.avg("rating")
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* Translates to:
|
|
95
|
+
* - MongoDB: `{ $avg: "$rating" }`
|
|
96
|
+
* - SQL: `AVG(rating)`
|
|
97
|
+
*/
|
|
98
|
+
avg(field) {
|
|
99
|
+
return { __agg: "avg", __field: field };
|
|
100
|
+
},
|
|
101
|
+
/**
|
|
102
|
+
* Get the minimum value of a field across documents in each group.
|
|
103
|
+
*
|
|
104
|
+
* @param field - The field name
|
|
105
|
+
* @returns Abstract min expression
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* query.groupBy("type", {
|
|
110
|
+
* minPrice: $agg.min("price")
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* Translates to:
|
|
115
|
+
* - MongoDB: `{ $min: "$price" }`
|
|
116
|
+
* - SQL: `MIN(price)`
|
|
117
|
+
*/
|
|
118
|
+
min(field) {
|
|
119
|
+
return { __agg: "min", __field: field };
|
|
120
|
+
},
|
|
121
|
+
/**
|
|
122
|
+
* Get the maximum value of a field across documents in each group.
|
|
123
|
+
*
|
|
124
|
+
* @param field - The field name
|
|
125
|
+
* @returns Abstract max expression
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* query.groupBy("type", {
|
|
130
|
+
* maxPrice: $agg.max("price")
|
|
131
|
+
* });
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
* Translates to:
|
|
135
|
+
* - MongoDB: `{ $max: "$price" }`
|
|
136
|
+
* - SQL: `MAX(price)`
|
|
137
|
+
*/
|
|
138
|
+
max(field) {
|
|
139
|
+
return { __agg: "max", __field: field };
|
|
140
|
+
},
|
|
141
|
+
/**
|
|
142
|
+
* Get the distinct values of a field across documents in each group.
|
|
143
|
+
*
|
|
144
|
+
* @param field - The field name
|
|
145
|
+
* @returns Abstract distinct expression
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* query.groupBy("type", {
|
|
150
|
+
* distinctColors: $agg.distinct("color")
|
|
151
|
+
* });
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* Translates to:
|
|
155
|
+
* - MongoDB: `{ $distinct: "$color" }`
|
|
156
|
+
* - SQL: `DISTINCT(color)`
|
|
157
|
+
*/
|
|
158
|
+
distinct(field) {
|
|
159
|
+
return { __agg: "distinct", __field: field };
|
|
160
|
+
},
|
|
161
|
+
/**
|
|
162
|
+
* Get the floor value of a field across documents in each group.
|
|
163
|
+
*
|
|
164
|
+
* @param field - The field name
|
|
165
|
+
* @returns Abstract floor expression
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* query.groupBy("type", {
|
|
170
|
+
* floorPrice: $agg.floor("price")
|
|
171
|
+
* });
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* Translates to:
|
|
175
|
+
* - MongoDB: `{ $floor: "$price" }`
|
|
176
|
+
* - SQL: `FLOOR(price)`
|
|
177
|
+
*/
|
|
178
|
+
floor(field) {
|
|
179
|
+
return { __agg: "floor", __field: field };
|
|
180
|
+
},
|
|
181
|
+
/**
|
|
182
|
+
* Get the first value of a field in each group (order-dependent).
|
|
183
|
+
*
|
|
184
|
+
* @param field - The field name
|
|
185
|
+
* @returns Abstract first expression
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* query.groupBy("type", {
|
|
190
|
+
* firstName: $agg.first("name")
|
|
191
|
+
* });
|
|
192
|
+
* ```
|
|
193
|
+
*
|
|
194
|
+
* Translates to:
|
|
195
|
+
* - MongoDB: `{ $first: "$name" }`
|
|
196
|
+
* - SQL: `FIRST_VALUE(name) OVER (...)`
|
|
197
|
+
*/
|
|
198
|
+
first(field) {
|
|
199
|
+
return { __agg: "first", __field: field };
|
|
200
|
+
},
|
|
201
|
+
/**
|
|
202
|
+
* Get the last value of a field in each group (order-dependent).
|
|
203
|
+
*
|
|
204
|
+
* @param field - The field name
|
|
205
|
+
* @returns Abstract last expression
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* query.groupBy("type", {
|
|
210
|
+
* lastName: $agg.last("name")
|
|
211
|
+
* });
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* Translates to:
|
|
215
|
+
* - MongoDB: `{ $last: "$name" }`
|
|
216
|
+
* - SQL: `LAST_VALUE(name) OVER (...)`
|
|
217
|
+
*/
|
|
218
|
+
last(field) {
|
|
219
|
+
return { __agg: "last", __field: field };
|
|
220
|
+
},
|
|
221
|
+
};exports.$agg=$agg;exports.isAggregateExpression=isAggregateExpression;//# sourceMappingURL=aggregate-expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-expressions.js","sources":["../../src/expressions/aggregate-expressions.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AA6BH;;AAEG;AACG,SAAU,qBAAqB,CAAC,KAAc,EAAA;AAClD,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ;AACzB,QAAA,KAAK,KAAK,IAAI;AACd,QAAA,SAAS,IAAI,KAAK;AAClB,QAAA,OAAQ,KAA6B,CAAC,KAAK,KAAK,QAAQ,EACxD;AACJ,CAAC;AAED;;;;;AAKG;AACU,MAAA,IAAI,GAAG;AAClB;;;;;;;;;;;;;;;AAeG;IACH,KAAK,GAAA;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC1C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC9C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC3C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC3C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,IAAI,CAAC,KAAa,EAAA;QAChB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC1C;"}
|