@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,386 @@
|
|
|
1
|
+
import {areEqual,clone}from'@mongez/reinforcements';import {isPlainObject}from'@mongez/supportive-is';function canBeFlatten(object) {
|
|
2
|
+
return isPlainObject(object);
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* A fix for flatten as non-plain object is being flatten as well which it should not be
|
|
6
|
+
*/
|
|
7
|
+
function flatten(object, separator = ".", keepNestedOriginalObject = false, parent, root = {}) {
|
|
8
|
+
if (canBeFlatten(object) === false) {
|
|
9
|
+
return object;
|
|
10
|
+
}
|
|
11
|
+
// object = toPlainObject(object);
|
|
12
|
+
for (const key of Object.keys(object)) {
|
|
13
|
+
const value = object[key];
|
|
14
|
+
const keyChain = parent ? parent + separator + key : key;
|
|
15
|
+
if ((Array.isArray(value) && value.length === 0) || typeof value === "function") {
|
|
16
|
+
root[keyChain] = value;
|
|
17
|
+
}
|
|
18
|
+
else if (canBeFlatten(value)) {
|
|
19
|
+
if (keepNestedOriginalObject) {
|
|
20
|
+
root[keyChain] = value;
|
|
21
|
+
}
|
|
22
|
+
flatten(value, separator, keepNestedOriginalObject, keyChain, root);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
root[keyChain] = value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return root;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Tracks changes to model data by maintaining snapshots of initial and current state.
|
|
32
|
+
*
|
|
33
|
+
* The tracker stores both raw (nested) and flattened (dot-notation) versions of the data
|
|
34
|
+
* to accurately detect modifications, additions, and removals at any nesting level.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice", age: 30 });
|
|
39
|
+
* tracker.mergeChanges({ age: 31 });
|
|
40
|
+
* console.log(tracker.hasChanges()); // true
|
|
41
|
+
* console.log(tracker.getDirtyColumns()); // ["age"]
|
|
42
|
+
* console.log(tracker.getDirtyColumnsWithValues());
|
|
43
|
+
* // { age: { oldValue: 30, newValue: 31 } }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
class DatabaseDirtyTracker {
|
|
47
|
+
/**
|
|
48
|
+
* The initial raw data snapshot taken at construction or last reset.
|
|
49
|
+
* Used as the baseline for comparison.
|
|
50
|
+
*/
|
|
51
|
+
initialRaw;
|
|
52
|
+
/**
|
|
53
|
+
* The current raw data snapshot reflecting all changes made via merge/unset.
|
|
54
|
+
*/
|
|
55
|
+
currentRaw;
|
|
56
|
+
/**
|
|
57
|
+
* Flattened version of the initial data using dot-notation keys.
|
|
58
|
+
* Example: { "address.city": "NYC" }
|
|
59
|
+
*/
|
|
60
|
+
initialFlattened;
|
|
61
|
+
/**
|
|
62
|
+
* Flattened version of the current data using dot-notation keys.
|
|
63
|
+
*/
|
|
64
|
+
currentFlattened;
|
|
65
|
+
/**
|
|
66
|
+
* Set of column names (dot-notation paths) that have been modified.
|
|
67
|
+
*/
|
|
68
|
+
dirtyColumns = new Set();
|
|
69
|
+
/**
|
|
70
|
+
* Set of column names (dot-notation paths) that existed initially but have been removed.
|
|
71
|
+
*/
|
|
72
|
+
removedColumns = new Set();
|
|
73
|
+
constructor(data) {
|
|
74
|
+
this.initialRaw = this.cloneData(data);
|
|
75
|
+
this.currentRaw = this.cloneData(data);
|
|
76
|
+
this.initialFlattened = this.flattenData(this.initialRaw);
|
|
77
|
+
this.currentFlattened = { ...this.initialFlattened };
|
|
78
|
+
this.updateDirtyState();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Returns the list of dirty columns using dot-notation.
|
|
82
|
+
*
|
|
83
|
+
* A column is considered dirty if its value has changed compared to the initial snapshot.
|
|
84
|
+
*
|
|
85
|
+
* @returns An array of column names (dot-notation paths) that have been modified
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* tracker.mergeChanges({ name: "Bob", "address.city": "LA" });
|
|
90
|
+
* tracker.getDirtyColumns(); // ["name", "address.city"]
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
getDirtyColumns() {
|
|
94
|
+
return Array.from(this.dirtyColumns);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Determines whether there are any tracked changes.
|
|
98
|
+
*
|
|
99
|
+
* Returns `true` if any columns have been modified or removed since the initial snapshot.
|
|
100
|
+
*
|
|
101
|
+
* @returns `true` if there are changes, `false` otherwise
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice" });
|
|
106
|
+
* tracker.hasChanges(); // false
|
|
107
|
+
* tracker.mergeChanges({ name: "Bob" });
|
|
108
|
+
* tracker.hasChanges(); // true
|
|
109
|
+
* tracker.unset("name");
|
|
110
|
+
* tracker.hasChanges(); // true (removed column counts as a change)
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
hasChanges() {
|
|
114
|
+
return this.dirtyColumns.size > 0 || this.removedColumns.size > 0;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if the given column is dirty (changed)
|
|
118
|
+
*/
|
|
119
|
+
isDirty(column) {
|
|
120
|
+
return this.dirtyColumns.has(column);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Returns the set of columns that have been removed compared to the baseline.
|
|
124
|
+
*
|
|
125
|
+
* A column is considered removed if it existed in the initial snapshot but has been
|
|
126
|
+
* explicitly unset or deleted from the current data.
|
|
127
|
+
*
|
|
128
|
+
* @returns An array of column names (dot-notation paths) that have been removed
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice", temp: "value" });
|
|
133
|
+
* tracker.unset("temp");
|
|
134
|
+
* tracker.getRemovedColumns(); // ["temp"]
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
getRemovedColumns() {
|
|
138
|
+
return Array.from(this.removedColumns);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Provides a mapping of dirty columns to their previous and current values.
|
|
142
|
+
*
|
|
143
|
+
* This is useful for generating audit logs, building partial update payloads,
|
|
144
|
+
* or displaying change summaries to users.
|
|
145
|
+
*
|
|
146
|
+
* @returns A record mapping each dirty column to an object containing oldValue and newValue
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice", age: 30 });
|
|
151
|
+
* tracker.mergeChanges({ age: 31 });
|
|
152
|
+
* tracker.getDirtyColumnsWithValues();
|
|
153
|
+
* // { age: { oldValue: 30, newValue: 31 } }
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
getDirtyColumnsWithValues() {
|
|
157
|
+
const result = {};
|
|
158
|
+
for (const column of this.dirtyColumns) {
|
|
159
|
+
const hasCurrent = this.currentFlattened[column] !== undefined || column in this.currentFlattened;
|
|
160
|
+
result[column] = {
|
|
161
|
+
oldValue: this.initialFlattened[column],
|
|
162
|
+
newValue: hasCurrent ? this.currentFlattened[column] : undefined,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Replaces the current data snapshot entirely and recomputes the diff.
|
|
169
|
+
*
|
|
170
|
+
* This is useful when you want to replace all current data with a new set,
|
|
171
|
+
* while keeping the initial baseline for comparison.
|
|
172
|
+
*
|
|
173
|
+
* @param data - The new data to set as the current snapshot
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice" });
|
|
178
|
+
* tracker.replaceCurrentData({ name: "Bob", email: "bob@example.com" });
|
|
179
|
+
* tracker.getDirtyColumns(); // ["name", "email"]
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
replaceCurrentData(data) {
|
|
183
|
+
this.currentRaw = this.cloneData(data);
|
|
184
|
+
this.currentFlattened = this.flattenData(this.currentRaw);
|
|
185
|
+
this.updateDirtyState();
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Merges a partial payload into the current snapshot and recomputes the diff.
|
|
189
|
+
*
|
|
190
|
+
* This performs a deep merge, preserving existing nested structures while
|
|
191
|
+
* updating only the specified fields.
|
|
192
|
+
*
|
|
193
|
+
* @param partial - Partial data to merge into the current snapshot
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice", address: { city: "NYC" } });
|
|
198
|
+
* tracker.mergeChanges({ address: { zip: "10001" } });
|
|
199
|
+
* // Current data: { name: "Alice", address: { city: "NYC", zip: "10001" } }
|
|
200
|
+
* tracker.getDirtyColumns(); // ["address.zip"]
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
mergeChanges(partial) {
|
|
204
|
+
this.mergeIntoRaw(this.currentRaw, partial);
|
|
205
|
+
this.currentFlattened = this.flattenData(this.currentRaw);
|
|
206
|
+
this.updateDirtyState();
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Explicitly removes one or more columns from the current data.
|
|
210
|
+
*
|
|
211
|
+
* Supports both single column names and arrays of column names.
|
|
212
|
+
* Columns can be specified using dot-notation for nested paths.
|
|
213
|
+
*
|
|
214
|
+
* @param columns - A single column name or an array of column names to remove
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* tracker.unset("tempField");
|
|
219
|
+
* tracker.unset(["field1", "field2", "nested.field"]);
|
|
220
|
+
* tracker.getRemovedColumns(); // ["tempField", "field1", "field2", "nested.field"]
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
unset(columns) {
|
|
224
|
+
const targets = Array.isArray(columns) ? columns : [columns];
|
|
225
|
+
for (const path of targets) {
|
|
226
|
+
this.deleteFromRaw(path);
|
|
227
|
+
}
|
|
228
|
+
this.currentFlattened = this.flattenData(this.currentRaw);
|
|
229
|
+
this.updateDirtyState();
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Resets both the initial and current snapshots to the provided data.
|
|
233
|
+
*
|
|
234
|
+
* If no data is provided, the current snapshot becomes the new baseline.
|
|
235
|
+
* This clears all tracked changes and removed columns.
|
|
236
|
+
*
|
|
237
|
+
* @param data - Optional new data to use as the baseline. If omitted, uses current data.
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```typescript
|
|
241
|
+
* const tracker = new DatabaseDirtyTracker({ name: "Alice" });
|
|
242
|
+
* tracker.mergeChanges({ name: "Bob" });
|
|
243
|
+
* tracker.hasChanges(); // true
|
|
244
|
+
* tracker.reset(); // Make current state the new baseline
|
|
245
|
+
* tracker.hasChanges(); // false
|
|
246
|
+
*
|
|
247
|
+
* // Or reset to entirely new data:
|
|
248
|
+
* tracker.reset({ name: "Charlie", age: 25 });
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
251
|
+
reset(data) {
|
|
252
|
+
const source = data ?? this.currentRaw;
|
|
253
|
+
this.initialRaw = this.cloneData(source);
|
|
254
|
+
this.currentRaw = this.cloneData(source);
|
|
255
|
+
this.initialFlattened = this.flattenData(this.initialRaw);
|
|
256
|
+
this.currentFlattened = this.flattenData(this.currentRaw);
|
|
257
|
+
this.dirtyColumns.clear();
|
|
258
|
+
this.removedColumns.clear();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Flattens the given data object.
|
|
262
|
+
* Can be overridden by subclasses to change flattening behavior.
|
|
263
|
+
*/
|
|
264
|
+
flattenData(data) {
|
|
265
|
+
return flatten(data);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Recomputes the dirty and removed column sets by comparing initial and current snapshots.
|
|
269
|
+
*
|
|
270
|
+
* This method is called internally after any operation that modifies the current data.
|
|
271
|
+
* It iterates through all keys in both flattened snapshots and determines which columns
|
|
272
|
+
* have been modified or removed.
|
|
273
|
+
*
|
|
274
|
+
* @protected
|
|
275
|
+
*/
|
|
276
|
+
updateDirtyState() {
|
|
277
|
+
this.dirtyColumns.clear();
|
|
278
|
+
this.removedColumns.clear();
|
|
279
|
+
const keys = new Set([
|
|
280
|
+
...Object.keys(this.initialFlattened),
|
|
281
|
+
...Object.keys(this.currentFlattened),
|
|
282
|
+
]);
|
|
283
|
+
for (const key of keys) {
|
|
284
|
+
const hasCurrent = this.currentFlattened[key] !== undefined || key in this.currentFlattened;
|
|
285
|
+
const hasInitial = this.initialFlattened[key] !== undefined || key in this.initialFlattened;
|
|
286
|
+
if (!hasCurrent && hasInitial) {
|
|
287
|
+
this.removedColumns.add(key);
|
|
288
|
+
}
|
|
289
|
+
const initialValue = this.initialFlattened[key];
|
|
290
|
+
const currentValue = hasCurrent ? this.currentFlattened[key] : undefined;
|
|
291
|
+
if (!areEqual(initialValue, currentValue)) {
|
|
292
|
+
this.dirtyColumns.add(key);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Recursively merges source object into target object, performing a deep merge.
|
|
298
|
+
*
|
|
299
|
+
* For nested objects, the merge is recursive. For arrays and primitives, the source
|
|
300
|
+
* value replaces the target value. All values are cloned to prevent reference sharing.
|
|
301
|
+
*
|
|
302
|
+
* @param target - The object to merge into
|
|
303
|
+
* @param source - The object to merge from
|
|
304
|
+
* @private
|
|
305
|
+
*/
|
|
306
|
+
mergeIntoRaw(target, source) {
|
|
307
|
+
for (const [key, value] of Object.entries(source)) {
|
|
308
|
+
if (value &&
|
|
309
|
+
typeof value === "object" &&
|
|
310
|
+
!Array.isArray(value) &&
|
|
311
|
+
target[key] &&
|
|
312
|
+
typeof target[key] === "object" &&
|
|
313
|
+
!Array.isArray(target[key])) {
|
|
314
|
+
this.mergeIntoRaw(target[key], value);
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
target[key] = this.cloneData(value);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Deletes a field from the current raw data using a dot-notation path.
|
|
322
|
+
*
|
|
323
|
+
* Supports nested paths (e.g., "address.city") and array indices (e.g., "items.0").
|
|
324
|
+
* If any segment in the path doesn't exist, the operation is a no-op.
|
|
325
|
+
*
|
|
326
|
+
* @param path - The dot-notation path to the field to delete
|
|
327
|
+
* @private
|
|
328
|
+
*/
|
|
329
|
+
deleteFromRaw(path) {
|
|
330
|
+
const segments = path.split(".");
|
|
331
|
+
let container = this.currentRaw;
|
|
332
|
+
for (let index = 0; index < segments.length - 1; index += 1) {
|
|
333
|
+
if (container === undefined || container === null) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
container = this.resolveSegment(container, segments[index]);
|
|
337
|
+
}
|
|
338
|
+
if (container === undefined || container === null) {
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
const lastSegment = segments[segments.length - 1];
|
|
342
|
+
if (Array.isArray(container)) {
|
|
343
|
+
const numericIndex = Number(lastSegment);
|
|
344
|
+
if (!Number.isNaN(numericIndex)) {
|
|
345
|
+
container.splice(numericIndex, 1);
|
|
346
|
+
}
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
if (typeof container === "object") {
|
|
350
|
+
delete container[lastSegment];
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Resolves a single segment of a dot-notation path within a container.
|
|
355
|
+
*
|
|
356
|
+
* Handles both object property access and array index access.
|
|
357
|
+
*
|
|
358
|
+
* @param container - The object or array to access
|
|
359
|
+
* @param segment - The property name or array index as a string
|
|
360
|
+
* @returns The value at the specified segment, or undefined if not found
|
|
361
|
+
* @private
|
|
362
|
+
*/
|
|
363
|
+
resolveSegment(container, segment) {
|
|
364
|
+
if (Array.isArray(container)) {
|
|
365
|
+
const numericIndex = Number(segment);
|
|
366
|
+
if (Number.isNaN(numericIndex)) {
|
|
367
|
+
return undefined;
|
|
368
|
+
}
|
|
369
|
+
return container[numericIndex];
|
|
370
|
+
}
|
|
371
|
+
if (container && typeof container === "object") {
|
|
372
|
+
return container[segment];
|
|
373
|
+
}
|
|
374
|
+
return undefined;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Creates a deep clone of the provided data.
|
|
378
|
+
*
|
|
379
|
+
* @param data - The data to clone
|
|
380
|
+
* @returns A deep clone of the data
|
|
381
|
+
* @private
|
|
382
|
+
*/
|
|
383
|
+
cloneData(data) {
|
|
384
|
+
return clone(data);
|
|
385
|
+
}
|
|
386
|
+
}export{DatabaseDirtyTracker};//# sourceMappingURL=database-dirty-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-dirty-tracker.js","sources":["../src/database-dirty-tracker.ts"],"sourcesContent":[null],"names":[],"mappings":"sGAGA,SAAS,YAAY,CAAC,MAAe,EAAA;AACnC,IAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;AAEG;AACH,SAAS,OAAO,CACd,MAA+B,EAC/B,SAAS,GAAG,GAAG,EACf,wBAAwB,GAAG,KAAK,EAChC,MAAe,EACf,OAAgC,EAAE,EAAA;AAElC,IAAA,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAClC,QAAA,OAAO,MAAM,CAAC;AACf,KAAA;;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/E,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACxB,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9B,YAAA,IAAI,wBAAwB,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACxB,aAAA;YACD,OAAO,CACL,KAAgC,EAChC,SAAS,EACT,wBAAwB,EACxB,QAAQ,EACR,IAAI,CACL,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACxB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAYD;;;;;;;;;;;;;;;AAeG;MACU,oBAAoB,CAAA;AAC/B;;;AAGG;AACO,IAAA,UAAU,CAA0B;AAE9C;;AAEG;AACO,IAAA,UAAU,CAA0B;AAE9C;;;AAGG;AACO,IAAA,gBAAgB,CAAa;AAEvC;;AAEG;AACO,IAAA,gBAAgB,CAAa;AAEvC;;AAEG;AACgB,IAAA,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpD;;AAEG;AACgB,IAAA,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;AAEtD,IAAA,WAAA,CAAmB,IAA6B,EAAA;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED;;;;;;;;;;;;AAYG;IACI,eAAe,GAAA;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;AAgBG;IACI,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;KACnE;AAED;;AAEG;AACI,IAAA,OAAO,CAAC,MAAc,EAAA;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;AAcG;IACI,iBAAiB,GAAA;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACxC;AAED;;;;;;;;;;;;;;;AAeG;IACI,yBAAyB,GAAA;QAC9B,MAAM,MAAM,GAAsC,EAAE,CAAC;AAErD,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AACtC,YAAA,MAAM,UAAU,GACd,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC;YAEjF,MAAM,CAAC,MAAM,CAAC,GAAG;AACf,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACvC,gBAAA,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS;aACjE,CAAC;AACH,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;;;;;;;;;;;;AAcG;AACI,IAAA,kBAAkB,CAAC,IAA6B,EAAA;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED;;;;;;;;;;;;;;;AAeG;AACI,IAAA,YAAY,CAAC,OAAgC,EAAA;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED;;;;;;;;;;;;;;AAcG;AACI,IAAA,KAAK,CAAC,OAA0B,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AAE7D,QAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED;;;;;;;;;;;;;;;;;;;AAmBG;AACI,IAAA,KAAK,CAAC,IAA8B,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;KAC7B;AAED;;;AAGG;AACO,IAAA,WAAW,CAAC,IAA6B,EAAA;AACjD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;KACtB;AAED;;;;;;;;AAQG;IACO,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAE5B,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;AACnB,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACrC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACtC,SAAA,CAAC,CAAC;AAEH,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC5F,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAE5F,YAAA,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;AAC7B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,aAAA;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAChD,YAAA,MAAM,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAEzE,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;KACF;AAED;;;;;;;;;AASG;IACO,YAAY,CAAC,MAA+B,EAAE,MAA+B,EAAA;AACrF,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjD,YAAA,IACE,KAAK;gBACL,OAAO,KAAK,KAAK,QAAQ;AACzB,gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC;AACX,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAC3B;gBACA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAA4B,EAAE,KAAgC,CAAC,CAAC;gBAC5F,SAAS;AACV,aAAA;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrC,SAAA;KACF;AAED;;;;;;;;AAQG;AACO,IAAA,aAAa,CAAC,IAAY,EAAA;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,SAAS,GAAY,IAAI,CAAC,UAAU,CAAC;AAEzC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AAC3D,YAAA,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;gBACjD,OAAO;AACR,aAAA;AAED,YAAA,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,SAAA;AAED,QAAA,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;YACjD,OAAO;AACR,SAAA;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC/B,gBAAA,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACnC,aAAA;YACD,OAAO;AACR,SAAA;AAED,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,OAAQ,SAAqC,CAAC,WAAW,CAAC,CAAC;AAC5D,SAAA;KACF;AAED;;;;;;;;;AASG;IACO,cAAc,CAAC,SAAkB,EAAE,OAAe,EAAA;AAC1D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC5B,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC9B,gBAAA,OAAO,SAAS,CAAC;AAClB,aAAA;AAED,YAAA,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC;AAChC,SAAA;AAED,QAAA,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AAC9C,YAAA,OAAQ,SAAqC,CAAC,OAAO,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;;;;;AAMG;AACO,IAAA,SAAS,CAAI,IAAO,EAAA;AAC5B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;AACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Db, IndexDescriptionInfo } from "mongodb";
|
|
2
|
+
import { DriverBlueprintContract, TableIndexInformation } from "../../contracts/driver-blueprint.contract";
|
|
3
|
+
export declare class MongoDBBlueprint implements DriverBlueprintContract {
|
|
4
|
+
protected database: Db;
|
|
5
|
+
/**
|
|
6
|
+
* Constructor
|
|
7
|
+
*/
|
|
8
|
+
constructor(database: Db);
|
|
9
|
+
/**
|
|
10
|
+
* List all tables in the database
|
|
11
|
+
*/
|
|
12
|
+
listTables(): Promise<string[]>;
|
|
13
|
+
/**
|
|
14
|
+
* List all indexes for a specific table
|
|
15
|
+
*/
|
|
16
|
+
listIndexes(table: string): Promise<TableIndexInformation[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Build index information
|
|
19
|
+
*/
|
|
20
|
+
protected buildIndexInformation(index: IndexDescriptionInfo): TableIndexInformation;
|
|
21
|
+
/**
|
|
22
|
+
* List all columns for a specific table
|
|
23
|
+
*/
|
|
24
|
+
listColumns(table: string): Promise<string[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if the given table exists
|
|
27
|
+
*/
|
|
28
|
+
tableExists(table: string): Promise<boolean>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=mongodb-blueprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb-blueprint.d.ts","sourceRoot":"","sources":["../../../src/drivers/mongodb/mongodb-blueprint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AAEnD,qBAAa,gBAAiB,YAAW,uBAAuB;IAI3C,SAAS,CAAC,QAAQ,EAAE,EAAE;IAHzC;;OAEG;gBAC0B,QAAQ,EAAE,EAAE;IAEzC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C;;OAEG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAMzE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB;IAWnF;;OAEG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU1D;;OAEG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI1D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {colors}from'@mongez/copper';class MongoDBBlueprint {
|
|
2
|
+
database;
|
|
3
|
+
/**
|
|
4
|
+
* Constructor
|
|
5
|
+
*/
|
|
6
|
+
constructor(database) {
|
|
7
|
+
this.database = database;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* List all tables in the database
|
|
11
|
+
*/
|
|
12
|
+
async listTables() {
|
|
13
|
+
const collections = await this.database.listCollections().toArray();
|
|
14
|
+
return collections.map((collection) => collection.name);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* List all indexes for a specific table
|
|
18
|
+
*/
|
|
19
|
+
async listIndexes(table) {
|
|
20
|
+
const collection = this.database.collection(table);
|
|
21
|
+
const indexes = await collection.indexes();
|
|
22
|
+
return indexes.map(this.buildIndexInformation);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build index information
|
|
26
|
+
*/
|
|
27
|
+
buildIndexInformation(index) {
|
|
28
|
+
return {
|
|
29
|
+
name: index.name,
|
|
30
|
+
type: index.type,
|
|
31
|
+
columns: Object.keys(index.key),
|
|
32
|
+
unique: !!index.unique,
|
|
33
|
+
partial: !!index.partialFilterExpression,
|
|
34
|
+
options: index,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* List all columns for a specific table
|
|
39
|
+
*/
|
|
40
|
+
async listColumns(table) {
|
|
41
|
+
console.log(colors.yellowBright(`MongoDBBlueprint: listColumns(${table}) MongoDB does not have static columns`));
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if the given table exists
|
|
46
|
+
*/
|
|
47
|
+
async tableExists(table) {
|
|
48
|
+
const collections = await this.database.listCollections().toArray();
|
|
49
|
+
return collections.some((collection) => collection.name === table);
|
|
50
|
+
}
|
|
51
|
+
}export{MongoDBBlueprint};//# sourceMappingURL=mongodb-blueprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb-blueprint.js","sources":["../../../src/drivers/mongodb/mongodb-blueprint.ts"],"sourcesContent":[null],"names":[],"mappings":"0CAOa,gBAAgB,CAAA;AAIE,IAAA,QAAA,CAAA;AAH7B;;AAEG;AACH,IAAA,WAAA,CAA6B,QAAY,EAAA;QAAZ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAI;KAAI;AAE7C;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;AACpE,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;KACzD;AAED;;AAEG;IACI,MAAM,WAAW,CAAC,KAAa,EAAA;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnD,QAAA,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAChD;AAED;;AAEG;AACO,IAAA,qBAAqB,CAAC,KAA2B,EAAA;QACzD,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAK;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;AACtB,YAAA,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB;AACxC,YAAA,OAAO,EAAE,KAAK;SACf,CAAC;KACH;AAED;;AAEG;IACI,MAAM,WAAW,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,YAAY,CACjB,CAAA,8BAAA,EAAiC,KAAK,CAAA,sCAAA,CAAwC,CAC/E,CACF,CAAC;AAEF,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;AAEG;IACI,MAAM,WAAW,CAAC,KAAa,EAAA;AACpC,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;AACpE,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;KACpE;AACF"}
|