@decaf-ts/core 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/auth/constants.cjs +2 -2
- package/lib/cjs/auth/constants.cjs.map +1 -0
- package/lib/cjs/auth/decorators.cjs +1 -0
- package/lib/cjs/auth/decorators.cjs.map +1 -0
- package/lib/cjs/auth/index.cjs +1 -0
- package/lib/cjs/auth/index.cjs.map +1 -0
- package/lib/cjs/fs/FilesystemAdapter.cjs +40 -39
- package/lib/cjs/fs/FilesystemAdapter.cjs.map +1 -0
- package/lib/cjs/fs/FsDispatch.cjs +3 -2
- package/lib/cjs/fs/FsDispatch.cjs.map +1 -0
- package/lib/cjs/fs/helpers.cjs +1 -0
- package/lib/cjs/fs/helpers.cjs.map +1 -0
- package/lib/cjs/fs/index.cjs +1 -0
- package/lib/cjs/fs/index.cjs.map +1 -0
- package/lib/cjs/fs/indexStore.cjs +8 -7
- package/lib/cjs/fs/indexStore.cjs.map +1 -0
- package/lib/cjs/fs/locks/FilesystemLock.cjs +3 -2
- package/lib/cjs/fs/locks/FilesystemLock.cjs.map +1 -0
- package/lib/cjs/fs/locks/FilesystemMultiLock.cjs +5 -4
- package/lib/cjs/fs/locks/FilesystemMultiLock.cjs.map +1 -0
- package/lib/cjs/fs/types.cjs +1 -0
- package/lib/cjs/fs/types.cjs.map +1 -0
- package/lib/cjs/identity/decorators.cjs +11 -10
- package/lib/cjs/identity/decorators.cjs.map +1 -0
- package/lib/cjs/identity/index.cjs +1 -0
- package/lib/cjs/identity/index.cjs.map +1 -0
- package/lib/cjs/index.cjs +4 -3
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/interfaces/ContextuallyLogged.cjs +1 -0
- package/lib/cjs/interfaces/ContextuallyLogged.cjs.map +1 -0
- package/lib/cjs/interfaces/ErrorParser.cjs +1 -0
- package/lib/cjs/interfaces/ErrorParser.cjs.map +1 -0
- package/lib/cjs/interfaces/Executor.cjs +1 -0
- package/lib/cjs/interfaces/Executor.cjs.map +1 -0
- package/lib/cjs/interfaces/Observable.cjs +1 -0
- package/lib/cjs/interfaces/Observable.cjs.map +1 -0
- package/lib/cjs/interfaces/Observer.cjs +1 -0
- package/lib/cjs/interfaces/Observer.cjs.map +1 -0
- package/lib/cjs/interfaces/Paginatable.cjs +1 -0
- package/lib/cjs/interfaces/Paginatable.cjs.map +1 -0
- package/lib/cjs/interfaces/Queriable.cjs +1 -0
- package/lib/cjs/interfaces/Queriable.cjs.map +1 -0
- package/lib/cjs/interfaces/RawExecutor.cjs +1 -0
- package/lib/cjs/interfaces/RawExecutor.cjs.map +1 -0
- package/lib/cjs/interfaces/SequenceOptions.cjs +1 -0
- package/lib/cjs/interfaces/SequenceOptions.cjs.map +1 -0
- package/lib/cjs/interfaces/index.cjs +1 -0
- package/lib/cjs/interfaces/index.cjs.map +1 -0
- package/lib/cjs/migrations/Migration.cjs +16 -15
- package/lib/cjs/migrations/Migration.cjs.map +1 -0
- package/lib/cjs/migrations/MigrationService.cjs +38 -37
- package/lib/cjs/migrations/MigrationService.cjs.map +1 -0
- package/lib/cjs/migrations/MigrationTaskBuilder.cjs +3 -2
- package/lib/cjs/migrations/MigrationTaskBuilder.cjs.map +1 -0
- package/lib/cjs/migrations/MigrationTasks.cjs +22 -17
- package/lib/cjs/migrations/MigrationTasks.cjs.map +1 -0
- package/lib/cjs/migrations/MigrationVersioning.cjs +1 -0
- package/lib/cjs/migrations/MigrationVersioning.cjs.map +1 -0
- package/lib/cjs/migrations/SemverMigrationVersioning.cjs +1 -0
- package/lib/cjs/migrations/SemverMigrationVersioning.cjs.map +1 -0
- package/lib/cjs/migrations/StandardMigrationVersioning.cjs +1 -0
- package/lib/cjs/migrations/StandardMigrationVersioning.cjs.map +1 -0
- package/lib/cjs/migrations/constants.cjs +3 -2
- package/lib/cjs/migrations/constants.cjs.map +1 -0
- package/lib/cjs/migrations/decorators.cjs +10 -9
- package/lib/cjs/migrations/decorators.cjs.map +1 -0
- package/lib/cjs/migrations/index.cjs +6 -5
- package/lib/cjs/migrations/index.cjs.map +1 -0
- package/lib/cjs/migrations/types.cjs +1 -0
- package/lib/cjs/migrations/types.cjs.map +1 -0
- package/lib/cjs/model/BaseModel.cjs +14 -8
- package/lib/cjs/model/BaseModel.cjs.map +1 -0
- package/lib/cjs/model/SequenceModel.cjs +19 -13
- package/lib/cjs/model/SequenceModel.cjs.map +1 -0
- package/lib/cjs/model/construction.cjs +27 -26
- package/lib/cjs/model/construction.cjs.map +1 -0
- package/lib/cjs/model/decorators.cjs +48 -47
- package/lib/cjs/model/decorators.cjs.map +1 -0
- package/lib/cjs/model/index.cjs +1 -0
- package/lib/cjs/model/index.cjs.map +1 -0
- package/lib/cjs/model/indexing.cjs +6 -5
- package/lib/cjs/model/indexing.cjs.map +1 -0
- package/lib/cjs/model/types.cjs +1 -0
- package/lib/cjs/model/types.cjs.map +1 -0
- package/lib/cjs/overrides/Metadata.cjs +1 -0
- package/lib/cjs/overrides/Metadata.cjs.map +1 -0
- package/lib/cjs/overrides/Model.cjs +1 -0
- package/lib/cjs/overrides/Model.cjs.map +1 -0
- package/lib/cjs/overrides/ModelBuilder.cjs +1 -0
- package/lib/cjs/overrides/ModelBuilder.cjs.map +1 -0
- package/lib/cjs/overrides/index.cjs +1 -0
- package/lib/cjs/overrides/index.cjs.map +1 -0
- package/lib/cjs/overrides/injectables.cjs +1 -0
- package/lib/cjs/overrides/injectables.cjs.map +1 -0
- package/lib/cjs/overrides/overrides.cjs +22 -21
- package/lib/cjs/overrides/overrides.cjs.map +1 -0
- package/lib/cjs/persistence/Adapter.cjs +47 -41
- package/lib/cjs/persistence/Adapter.cjs.map +1 -0
- package/lib/cjs/persistence/Context.cjs +10 -7
- package/lib/cjs/persistence/Context.cjs.map +1 -0
- package/lib/cjs/persistence/ContextLock.cjs +1 -0
- package/lib/cjs/persistence/ContextLock.cjs.map +1 -0
- package/lib/cjs/persistence/Dispatch.cjs +15 -14
- package/lib/cjs/persistence/Dispatch.cjs.map +1 -0
- package/lib/cjs/persistence/ObserverHandler.cjs +3 -2
- package/lib/cjs/persistence/ObserverHandler.cjs.map +1 -0
- package/lib/cjs/persistence/Sequence.cjs +19 -18
- package/lib/cjs/persistence/Sequence.cjs.map +1 -0
- package/lib/cjs/persistence/constants.cjs +14 -21
- package/lib/cjs/persistence/constants.cjs.map +1 -0
- package/lib/cjs/persistence/decorators.cjs +6 -5
- package/lib/cjs/persistence/decorators.cjs.map +1 -0
- package/lib/cjs/persistence/errors.cjs +1 -0
- package/lib/cjs/persistence/errors.cjs.map +1 -0
- package/lib/cjs/persistence/event-filters.cjs +5 -4
- package/lib/cjs/persistence/event-filters.cjs.map +1 -0
- package/lib/cjs/persistence/generators.cjs +1 -0
- package/lib/cjs/persistence/generators.cjs.map +1 -0
- package/lib/cjs/persistence/index.cjs +1 -0
- package/lib/cjs/persistence/index.cjs.map +1 -0
- package/lib/cjs/persistence/transactions.cjs +9 -8
- package/lib/cjs/persistence/transactions.cjs.map +1 -0
- package/lib/cjs/persistence/types.cjs +1 -0
- package/lib/cjs/persistence/types.cjs.map +1 -0
- package/lib/cjs/query/Condition.cjs +173 -165
- package/lib/cjs/query/Condition.cjs.map +1 -0
- package/lib/cjs/query/MethodQueryBuilder.cjs +37 -34
- package/lib/cjs/query/MethodQueryBuilder.cjs.map +1 -0
- package/lib/cjs/query/Paginator.cjs +28 -27
- package/lib/cjs/query/Paginator.cjs.map +1 -0
- package/lib/cjs/query/Statement.cjs +90 -84
- package/lib/cjs/query/Statement.cjs.map +1 -0
- package/lib/cjs/query/constants.cjs +5 -21
- package/lib/cjs/query/constants.cjs.map +1 -0
- package/lib/cjs/query/decorators.cjs +16 -15
- package/lib/cjs/query/decorators.cjs.map +1 -0
- package/lib/cjs/query/errors.cjs +1 -0
- package/lib/cjs/query/errors.cjs.map +1 -0
- package/lib/cjs/query/index.cjs +1 -0
- package/lib/cjs/query/index.cjs.map +1 -0
- package/lib/cjs/query/options.cjs +1 -0
- package/lib/cjs/query/options.cjs.map +1 -0
- package/lib/cjs/query/selectors.cjs +1 -0
- package/lib/cjs/query/selectors.cjs.map +1 -0
- package/lib/cjs/query/types.cjs +2 -13
- package/lib/cjs/query/types.cjs.map +1 -0
- package/lib/cjs/query/utils.cjs +10 -9
- package/lib/cjs/query/utils.cjs.map +1 -0
- package/lib/cjs/ram/RamAdapter.cjs +21 -20
- package/lib/cjs/ram/RamAdapter.cjs.map +1 -0
- package/lib/cjs/ram/RamPaginator.cjs +3 -2
- package/lib/cjs/ram/RamPaginator.cjs.map +1 -0
- package/lib/cjs/ram/RamStatement.cjs +38 -37
- package/lib/cjs/ram/RamStatement.cjs.map +1 -0
- package/lib/cjs/ram/constants.cjs +1 -0
- package/lib/cjs/ram/constants.cjs.map +1 -0
- package/lib/cjs/ram/handlers.cjs +3 -2
- package/lib/cjs/ram/handlers.cjs.map +1 -0
- package/lib/cjs/ram/index.cjs +8 -7
- package/lib/cjs/ram/index.cjs.map +1 -0
- package/lib/cjs/ram/types.cjs +1 -0
- package/lib/cjs/ram/types.cjs.map +1 -0
- package/lib/cjs/repository/Repository.cjs +85 -79
- package/lib/cjs/repository/Repository.cjs.map +1 -0
- package/lib/cjs/repository/constants.cjs +5 -20
- package/lib/cjs/repository/constants.cjs.map +1 -0
- package/lib/cjs/repository/decorators.cjs +7 -6
- package/lib/cjs/repository/decorators.cjs.map +1 -0
- package/lib/cjs/repository/errors.cjs +1 -0
- package/lib/cjs/repository/errors.cjs.map +1 -0
- package/lib/cjs/repository/index.cjs +1 -0
- package/lib/cjs/repository/index.cjs.map +1 -0
- package/lib/cjs/repository/injectables.cjs +14 -13
- package/lib/cjs/repository/injectables.cjs.map +1 -0
- package/lib/cjs/repository/types.cjs +1 -0
- package/lib/cjs/repository/types.cjs.map +1 -0
- package/lib/cjs/repository/utils.cjs +3 -2
- package/lib/cjs/repository/utils.cjs.map +1 -0
- package/lib/cjs/services/ModelService.cjs +36 -30
- package/lib/cjs/services/ModelService.cjs.map +1 -0
- package/lib/cjs/services/PersistenceService.cjs +9 -8
- package/lib/cjs/services/PersistenceService.cjs.map +1 -0
- package/lib/cjs/services/index.cjs +1 -0
- package/lib/cjs/services/index.cjs.map +1 -0
- package/lib/cjs/services/services.cjs +37 -31
- package/lib/cjs/services/services.cjs.map +1 -0
- package/lib/cjs/tasks/CleanUpTask.cjs +30 -24
- package/lib/cjs/tasks/CleanUpTask.cjs.map +1 -0
- package/lib/cjs/tasks/TaskContext.cjs +16 -15
- package/lib/cjs/tasks/TaskContext.cjs.map +1 -0
- package/lib/cjs/tasks/TaskEngine.cjs +112 -111
- package/lib/cjs/tasks/TaskEngine.cjs.map +1 -0
- package/lib/cjs/tasks/TaskErrors.cjs +1 -0
- package/lib/cjs/tasks/TaskErrors.cjs.map +1 -0
- package/lib/cjs/tasks/TaskEventBus.cjs +7 -6
- package/lib/cjs/tasks/TaskEventBus.cjs.map +1 -0
- package/lib/cjs/tasks/TaskEventService.cjs +8 -7
- package/lib/cjs/tasks/TaskEventService.cjs.map +1 -0
- package/lib/cjs/tasks/TaskHandler.cjs +5 -4
- package/lib/cjs/tasks/TaskHandler.cjs.map +1 -0
- package/lib/cjs/tasks/TaskHandlerRegistry.cjs +1 -0
- package/lib/cjs/tasks/TaskHandlerRegistry.cjs.map +1 -0
- package/lib/cjs/tasks/TaskService.cjs +43 -37
- package/lib/cjs/tasks/TaskService.cjs.map +1 -0
- package/lib/cjs/tasks/TaskStateChangeError.cjs +1 -0
- package/lib/cjs/tasks/TaskStateChangeError.cjs.map +1 -0
- package/lib/cjs/tasks/TaskTracker.cjs +62 -61
- package/lib/cjs/tasks/TaskTracker.cjs.map +1 -0
- package/lib/cjs/tasks/builder.cjs +30 -24
- package/lib/cjs/tasks/builder.cjs.map +1 -0
- package/lib/cjs/tasks/constants.cjs +6 -10
- package/lib/cjs/tasks/constants.cjs.map +1 -0
- package/lib/cjs/tasks/decorators.cjs +5 -4
- package/lib/cjs/tasks/decorators.cjs.map +1 -0
- package/lib/cjs/tasks/index.cjs +6 -5
- package/lib/cjs/tasks/index.cjs.map +1 -0
- package/lib/cjs/tasks/logging.cjs +12 -11
- package/lib/cjs/tasks/logging.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskBackoffModel.cjs +16 -10
- package/lib/cjs/tasks/models/TaskBackoffModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskErrorModel.cjs +11 -5
- package/lib/cjs/tasks/models/TaskErrorModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskEventModel.cjs +29 -23
- package/lib/cjs/tasks/models/TaskEventModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskIOSerializer.cjs +4 -3
- package/lib/cjs/tasks/models/TaskIOSerializer.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskLogEntryModel.cjs +11 -5
- package/lib/cjs/tasks/models/TaskLogEntryModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskModel.cjs +72 -66
- package/lib/cjs/tasks/models/TaskModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskStepResultModel.cjs +14 -8
- package/lib/cjs/tasks/models/TaskStepResultModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/TaskStepSpecModel.cjs +11 -5
- package/lib/cjs/tasks/models/TaskStepSpecModel.cjs.map +1 -0
- package/lib/cjs/tasks/models/index.cjs +1 -0
- package/lib/cjs/tasks/models/index.cjs.map +1 -0
- package/lib/cjs/tasks/types.cjs +1 -0
- package/lib/cjs/tasks/types.cjs.map +1 -0
- package/lib/cjs/tasks/utils.cjs +6 -5
- package/lib/cjs/tasks/utils.cjs.map +1 -0
- package/lib/cjs/utils/ContextualLoggedClass.cjs +5 -4
- package/lib/cjs/utils/ContextualLoggedClass.cjs.map +1 -0
- package/lib/cjs/utils/decorators.cjs +9 -8
- package/lib/cjs/utils/decorators.cjs.map +1 -0
- package/lib/cjs/utils/errors.cjs +1 -0
- package/lib/cjs/utils/errors.cjs.map +1 -0
- package/lib/cjs/utils/index.cjs +1 -0
- package/lib/cjs/utils/index.cjs.map +1 -0
- package/lib/cjs/utils/throttling.cjs +4 -3
- package/lib/cjs/utils/throttling.cjs.map +1 -0
- package/lib/cjs/utils/types.cjs +1 -0
- package/lib/cjs/utils/types.cjs.map +1 -0
- package/lib/cjs/utils/utils.cjs +3 -2
- package/lib/cjs/utils/utils.cjs.map +1 -0
- package/lib/cjs/workers/TaskEngine.cjs +30 -29
- package/lib/cjs/workers/TaskEngine.cjs.map +1 -0
- package/lib/cjs/workers/WorkThreadEnvironment.cjs +1 -0
- package/lib/cjs/workers/WorkThreadEnvironment.cjs.map +1 -0
- package/lib/cjs/workers/index.cjs +1 -0
- package/lib/cjs/workers/index.cjs.map +1 -0
- package/lib/cjs/workers/messages.cjs +1 -0
- package/lib/cjs/workers/messages.cjs.map +1 -0
- package/lib/cjs/workers/types.cjs +1 -0
- package/lib/cjs/workers/types.cjs.map +1 -0
- package/lib/cjs/workers/workerThread.cjs +18 -17
- package/lib/cjs/workers/workerThread.cjs.map +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/types/auth/constants.d.cts +5 -0
- package/lib/types/auth/constants.d.mts +5 -0
- package/lib/types/auth/decorators.d.cts +5 -0
- package/lib/types/auth/decorators.d.mts +5 -0
- package/lib/types/auth/index.d.cts +2 -0
- package/lib/types/auth/index.d.mts +2 -0
- package/lib/types/fs/FilesystemAdapter.d.cts +70 -0
- package/lib/types/fs/FilesystemAdapter.d.mts +70 -0
- package/lib/types/fs/FsDispatch.d.cts +7 -0
- package/lib/types/fs/FsDispatch.d.mts +7 -0
- package/lib/types/fs/helpers.d.cts +17 -0
- package/lib/types/fs/helpers.d.mts +17 -0
- package/lib/types/fs/index.d.cts +4 -0
- package/lib/types/fs/index.d.mts +4 -0
- package/lib/types/fs/indexStore.d.cts +28 -0
- package/lib/types/fs/indexStore.d.mts +28 -0
- package/lib/types/fs/locks/FilesystemLock.d.cts +13 -0
- package/lib/types/fs/locks/FilesystemLock.d.mts +13 -0
- package/lib/types/fs/locks/FilesystemMultiLock.d.cts +8 -0
- package/lib/types/fs/locks/FilesystemMultiLock.d.mts +8 -0
- package/lib/types/fs/types.d.cts +40 -0
- package/lib/types/fs/types.d.mts +40 -0
- package/lib/types/identity/decorators.d.cts +72 -0
- package/lib/types/identity/decorators.d.mts +72 -0
- package/lib/types/identity/index.d.cts +6 -0
- package/lib/types/identity/index.d.mts +6 -0
- package/lib/types/index.d.cts +34 -0
- package/lib/types/index.d.mts +34 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/interfaces/ContextuallyLogged.d.cts +8 -0
- package/lib/types/interfaces/ContextuallyLogged.d.mts +8 -0
- package/lib/types/interfaces/ErrorParser.d.cts +16 -0
- package/lib/types/interfaces/ErrorParser.d.mts +16 -0
- package/lib/types/interfaces/Executor.d.cts +16 -0
- package/lib/types/interfaces/Executor.d.mts +16 -0
- package/lib/types/interfaces/Observable.d.cts +33 -0
- package/lib/types/interfaces/Observable.d.mts +33 -0
- package/lib/types/interfaces/Observer.d.cts +15 -0
- package/lib/types/interfaces/Observer.d.mts +15 -0
- package/lib/types/interfaces/Paginatable.d.cts +20 -0
- package/lib/types/interfaces/Paginatable.d.mts +20 -0
- package/lib/types/interfaces/Queriable.d.cts +47 -0
- package/lib/types/interfaces/Queriable.d.mts +47 -0
- package/lib/types/interfaces/RawExecutor.d.cts +28 -0
- package/lib/types/interfaces/RawExecutor.d.mts +28 -0
- package/lib/types/interfaces/SequenceOptions.d.cts +79 -0
- package/lib/types/interfaces/SequenceOptions.d.mts +79 -0
- package/lib/types/interfaces/index.d.cts +12 -0
- package/lib/types/interfaces/index.d.mts +12 -0
- package/lib/types/migrations/Migration.d.cts +19 -0
- package/lib/types/migrations/Migration.d.mts +19 -0
- package/lib/types/migrations/MigrationService.d.cts +63 -0
- package/lib/types/migrations/MigrationService.d.mts +63 -0
- package/lib/types/migrations/MigrationTaskBuilder.d.cts +10 -0
- package/lib/types/migrations/MigrationTaskBuilder.d.mts +10 -0
- package/lib/types/migrations/MigrationTasks.d.cts +9 -0
- package/lib/types/migrations/MigrationTasks.d.mts +9 -0
- package/lib/types/migrations/MigrationVersioning.d.cts +7 -0
- package/lib/types/migrations/MigrationVersioning.d.mts +7 -0
- package/lib/types/migrations/SemverMigrationVersioning.d.cts +10 -0
- package/lib/types/migrations/SemverMigrationVersioning.d.mts +10 -0
- package/lib/types/migrations/StandardMigrationVersioning.d.cts +12 -0
- package/lib/types/migrations/StandardMigrationVersioning.d.mts +12 -0
- package/lib/types/migrations/constants.d.cts +2 -0
- package/lib/types/migrations/constants.d.mts +2 -0
- package/lib/types/migrations/decorators.d.cts +12 -0
- package/lib/types/migrations/decorators.d.mts +12 -0
- package/lib/types/migrations/index.d.cts +15 -0
- package/lib/types/migrations/index.d.mts +15 -0
- package/lib/types/migrations/types.d.cts +46 -0
- package/lib/types/migrations/types.d.mts +46 -0
- package/lib/types/model/BaseModel.d.cts +37 -0
- package/lib/types/model/BaseModel.d.mts +37 -0
- package/lib/types/model/SequenceModel.d.cts +32 -0
- package/lib/types/model/SequenceModel.d.mts +32 -0
- package/lib/types/model/construction.d.cts +455 -0
- package/lib/types/model/construction.d.mts +455 -0
- package/lib/types/model/decorators.d.cts +237 -0
- package/lib/types/model/decorators.d.mts +237 -0
- package/lib/types/model/index.d.cts +11 -0
- package/lib/types/model/index.d.mts +11 -0
- package/lib/types/model/indexing.d.cts +20 -0
- package/lib/types/model/indexing.d.mts +20 -0
- package/lib/types/model/types.d.cts +60 -0
- package/lib/types/model/types.d.mts +60 -0
- package/lib/types/overrides/Metadata.d.cts +22 -0
- package/lib/types/overrides/Metadata.d.mts +22 -0
- package/lib/types/overrides/Model.d.cts +94 -0
- package/lib/types/overrides/Model.d.mts +94 -0
- package/lib/types/overrides/ModelBuilder.d.cts +31 -0
- package/lib/types/overrides/ModelBuilder.d.mts +31 -0
- package/lib/types/overrides/index.d.cts +11 -0
- package/lib/types/overrides/index.d.mts +11 -0
- package/lib/types/overrides/injectables.d.cts +10 -0
- package/lib/types/overrides/injectables.d.mts +10 -0
- package/lib/types/overrides/overrides.d.cts +1 -0
- package/lib/types/overrides/overrides.d.mts +1 -0
- package/lib/types/persistence/Adapter.d.cts +469 -0
- package/lib/types/persistence/Adapter.d.mts +469 -0
- package/lib/types/persistence/Context.d.cts +16 -0
- package/lib/types/persistence/Context.d.mts +16 -0
- package/lib/types/persistence/ContextLock.d.cts +18 -0
- package/lib/types/persistence/ContextLock.d.mts +18 -0
- package/lib/types/persistence/Dispatch.d.cts +128 -0
- package/lib/types/persistence/Dispatch.d.mts +128 -0
- package/lib/types/persistence/ObserverHandler.d.cts +111 -0
- package/lib/types/persistence/ObserverHandler.d.mts +111 -0
- package/lib/types/persistence/Sequence.d.cts +126 -0
- package/lib/types/persistence/Sequence.d.mts +126 -0
- package/lib/types/persistence/constants.d.cts +74 -0
- package/lib/types/persistence/constants.d.mts +74 -0
- package/lib/types/persistence/decorators.d.cts +28 -0
- package/lib/types/persistence/decorators.d.mts +28 -0
- package/lib/types/persistence/errors.d.cts +33 -0
- package/lib/types/persistence/errors.d.mts +33 -0
- package/lib/types/persistence/event-filters.d.cts +20 -0
- package/lib/types/persistence/event-filters.d.mts +20 -0
- package/lib/types/persistence/generators.d.cts +14 -0
- package/lib/types/persistence/generators.d.mts +14 -0
- package/lib/types/persistence/index.d.cts +18 -0
- package/lib/types/persistence/index.d.mts +18 -0
- package/lib/types/persistence/transactions.d.cts +4 -0
- package/lib/types/persistence/transactions.d.mts +4 -0
- package/lib/types/persistence/types.d.cts +86 -0
- package/lib/types/persistence/types.d.mts +86 -0
- package/lib/types/query/Condition.d.cts +131 -0
- package/lib/types/query/Condition.d.mts +131 -0
- package/lib/types/query/MethodQueryBuilder.d.cts +185 -0
- package/lib/types/query/MethodQueryBuilder.d.mts +185 -0
- package/lib/types/query/Paginator.d.cts +105 -0
- package/lib/types/query/Paginator.d.mts +105 -0
- package/lib/types/query/Statement.d.cts +136 -0
- package/lib/types/query/Statement.d.mts +136 -0
- package/lib/types/query/constants.d.cts +69 -0
- package/lib/types/query/constants.d.mts +69 -0
- package/lib/types/query/decorators.d.cts +8 -0
- package/lib/types/query/decorators.d.mts +8 -0
- package/lib/types/query/errors.d.cts +21 -0
- package/lib/types/query/errors.d.mts +21 -0
- package/lib/types/query/index.d.cts +16 -0
- package/lib/types/query/index.d.mts +16 -0
- package/lib/types/query/options.d.cts +393 -0
- package/lib/types/query/options.d.mts +393 -0
- package/lib/types/query/selectors.d.cts +39 -0
- package/lib/types/query/selectors.d.mts +39 -0
- package/lib/types/query/types.d.cts +158 -0
- package/lib/types/query/types.d.mts +158 -0
- package/lib/types/query/utils.d.cts +40 -0
- package/lib/types/query/utils.d.mts +40 -0
- package/lib/types/ram/RamAdapter.d.cts +341 -0
- package/lib/types/ram/RamAdapter.d.mts +341 -0
- package/lib/types/ram/RamPaginator.d.cts +54 -0
- package/lib/types/ram/RamPaginator.d.mts +54 -0
- package/lib/types/ram/RamStatement.d.cts +92 -0
- package/lib/types/ram/RamStatement.d.mts +92 -0
- package/lib/types/ram/constants.d.cts +8 -0
- package/lib/types/ram/constants.d.mts +8 -0
- package/lib/types/ram/handlers.d.cts +24 -0
- package/lib/types/ram/handlers.d.mts +24 -0
- package/lib/types/ram/index.d.cts +12 -0
- package/lib/types/ram/index.d.mts +12 -0
- package/lib/types/ram/types.d.cts +50 -0
- package/lib/types/ram/types.d.mts +50 -0
- package/lib/types/repository/Repository.d.cts +501 -0
- package/lib/types/repository/Repository.d.mts +501 -0
- package/lib/types/repository/constants.d.cts +36 -0
- package/lib/types/repository/constants.d.mts +36 -0
- package/lib/types/repository/decorators.d.cts +30 -0
- package/lib/types/repository/decorators.d.mts +30 -0
- package/lib/types/repository/errors.d.cts +19 -0
- package/lib/types/repository/errors.d.mts +19 -0
- package/lib/types/repository/index.d.cts +12 -0
- package/lib/types/repository/index.d.mts +12 -0
- package/lib/types/repository/injectables.d.cts +95 -0
- package/lib/types/repository/injectables.d.mts +95 -0
- package/lib/types/repository/types.d.cts +28 -0
- package/lib/types/repository/types.d.mts +28 -0
- package/lib/types/repository/utils.d.cts +36 -0
- package/lib/types/repository/utils.d.mts +36 -0
- package/lib/types/services/ModelService.d.cts +45 -0
- package/lib/types/services/ModelService.d.mts +45 -0
- package/lib/types/services/PersistenceService.d.cts +17 -0
- package/lib/types/services/PersistenceService.d.mts +17 -0
- package/lib/types/services/index.d.cts +8 -0
- package/lib/types/services/index.d.mts +8 -0
- package/lib/types/services/services.d.cts +96 -0
- package/lib/types/services/services.d.mts +96 -0
- package/lib/types/tasks/CleanUpTask.d.cts +15 -0
- package/lib/types/tasks/CleanUpTask.d.mts +15 -0
- package/lib/types/tasks/TaskContext.d.cts +30 -0
- package/lib/types/tasks/TaskContext.d.mts +30 -0
- package/lib/types/tasks/TaskEngine.d.cts +97 -0
- package/lib/types/tasks/TaskEngine.d.mts +97 -0
- package/lib/types/tasks/TaskErrors.d.cts +65 -0
- package/lib/types/tasks/TaskErrors.d.mts +65 -0
- package/lib/types/tasks/TaskEventBus.d.cts +17 -0
- package/lib/types/tasks/TaskEventBus.d.mts +17 -0
- package/lib/types/tasks/TaskEventService.d.cts +7 -0
- package/lib/types/tasks/TaskEventService.d.mts +7 -0
- package/lib/types/tasks/TaskHandler.d.cts +12 -0
- package/lib/types/tasks/TaskHandler.d.mts +12 -0
- package/lib/types/tasks/TaskHandlerRegistry.d.cts +8 -0
- package/lib/types/tasks/TaskHandlerRegistry.d.mts +8 -0
- package/lib/types/tasks/TaskService.d.cts +65 -0
- package/lib/types/tasks/TaskService.d.mts +65 -0
- package/lib/types/tasks/TaskStateChangeError.d.cts +11 -0
- package/lib/types/tasks/TaskStateChangeError.d.mts +11 -0
- package/lib/types/tasks/TaskTracker.d.cts +47 -0
- package/lib/types/tasks/TaskTracker.d.mts +47 -0
- package/lib/types/tasks/builder.d.cts +72 -0
- package/lib/types/tasks/builder.d.mts +72 -0
- package/lib/types/tasks/constants.d.cts +31 -0
- package/lib/types/tasks/constants.d.mts +31 -0
- package/lib/types/tasks/decorators.d.cts +4 -0
- package/lib/types/tasks/decorators.d.mts +4 -0
- package/lib/types/tasks/index.d.cts +23 -0
- package/lib/types/tasks/index.d.mts +23 -0
- package/lib/types/tasks/logging.d.cts +31 -0
- package/lib/types/tasks/logging.d.mts +31 -0
- package/lib/types/tasks/models/TaskBackoffModel.d.cts +9 -0
- package/lib/types/tasks/models/TaskBackoffModel.d.mts +9 -0
- package/lib/types/tasks/models/TaskErrorModel.d.cts +8 -0
- package/lib/types/tasks/models/TaskErrorModel.d.mts +8 -0
- package/lib/types/tasks/models/TaskEventModel.d.cts +11 -0
- package/lib/types/tasks/models/TaskEventModel.d.mts +11 -0
- package/lib/types/tasks/models/TaskIOSerializer.d.cts +33 -0
- package/lib/types/tasks/models/TaskIOSerializer.d.mts +33 -0
- package/lib/types/tasks/models/TaskLogEntryModel.d.cts +10 -0
- package/lib/types/tasks/models/TaskLogEntryModel.d.mts +10 -0
- package/lib/types/tasks/models/TaskModel.d.cts +43 -0
- package/lib/types/tasks/models/TaskModel.d.mts +43 -0
- package/lib/types/tasks/models/TaskStepResultModel.d.cts +9 -0
- package/lib/types/tasks/models/TaskStepResultModel.d.mts +9 -0
- package/lib/types/tasks/models/TaskStepSpecModel.d.cts +9 -0
- package/lib/types/tasks/models/TaskStepSpecModel.d.mts +9 -0
- package/lib/types/tasks/models/index.d.cts +8 -0
- package/lib/types/tasks/models/index.d.mts +8 -0
- package/lib/types/tasks/types.d.cts +71 -0
- package/lib/types/tasks/types.d.mts +71 -0
- package/lib/types/tasks/utils.d.cts +5 -0
- package/lib/types/tasks/utils.d.mts +5 -0
- package/lib/types/utils/ContextualLoggedClass.d.cts +37 -0
- package/lib/types/utils/ContextualLoggedClass.d.mts +37 -0
- package/lib/types/utils/decorators.d.cts +27 -0
- package/lib/types/utils/decorators.d.mts +27 -0
- package/lib/types/utils/errors.d.cts +56 -0
- package/lib/types/utils/errors.d.mts +56 -0
- package/lib/types/utils/index.d.cts +11 -0
- package/lib/types/utils/index.d.mts +11 -0
- package/lib/types/utils/throttling.d.cts +9 -0
- package/lib/types/utils/throttling.d.mts +9 -0
- package/lib/types/utils/types.d.cts +23 -0
- package/lib/types/utils/types.d.mts +23 -0
- package/lib/types/utils/utils.d.cts +22 -0
- package/lib/types/utils/utils.d.mts +22 -0
- package/lib/types/workers/TaskEngine.d.cts +40 -0
- package/lib/types/workers/TaskEngine.d.mts +40 -0
- package/lib/types/workers/WorkThreadEnvironment.d.cts +35 -0
- package/lib/types/workers/WorkThreadEnvironment.d.mts +35 -0
- package/lib/types/workers/index.d.cts +5 -0
- package/lib/types/workers/index.d.mts +5 -0
- package/lib/types/workers/messages.d.cts +69 -0
- package/lib/types/workers/messages.d.mts +69 -0
- package/lib/types/workers/types.d.cts +41 -0
- package/lib/types/workers/types.d.mts +41 -0
- package/lib/types/workers/workerThread.d.cts +1 -0
- package/lib/types/workers/workerThread.d.mts +1 -0
- package/package.json +4 -4
- package/lib/cjs/auth/constants.js.map +0 -1
- package/lib/cjs/auth/decorators.js.map +0 -1
- package/lib/cjs/auth/index.js.map +0 -1
- package/lib/cjs/fs/FilesystemAdapter.js.map +0 -1
- package/lib/cjs/fs/FsDispatch.js.map +0 -1
- package/lib/cjs/fs/helpers.js.map +0 -1
- package/lib/cjs/fs/index.js.map +0 -1
- package/lib/cjs/fs/indexStore.js.map +0 -1
- package/lib/cjs/fs/locks/FilesystemLock.js.map +0 -1
- package/lib/cjs/fs/locks/FilesystemMultiLock.js.map +0 -1
- package/lib/cjs/fs/types.js.map +0 -1
- package/lib/cjs/identity/decorators.js.map +0 -1
- package/lib/cjs/identity/index.js.map +0 -1
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/interfaces/ContextuallyLogged.js.map +0 -1
- package/lib/cjs/interfaces/ErrorParser.js.map +0 -1
- package/lib/cjs/interfaces/Executor.js.map +0 -1
- package/lib/cjs/interfaces/Observable.js.map +0 -1
- package/lib/cjs/interfaces/Observer.js.map +0 -1
- package/lib/cjs/interfaces/Paginatable.js.map +0 -1
- package/lib/cjs/interfaces/Queriable.js.map +0 -1
- package/lib/cjs/interfaces/RawExecutor.js.map +0 -1
- package/lib/cjs/interfaces/SequenceOptions.js.map +0 -1
- package/lib/cjs/interfaces/index.js.map +0 -1
- package/lib/cjs/migrations/Migration.js.map +0 -1
- package/lib/cjs/migrations/MigrationService.js.map +0 -1
- package/lib/cjs/migrations/MigrationTaskBuilder.js.map +0 -1
- package/lib/cjs/migrations/MigrationTasks.js.map +0 -1
- package/lib/cjs/migrations/MigrationVersioning.js.map +0 -1
- package/lib/cjs/migrations/SemverMigrationVersioning.js.map +0 -1
- package/lib/cjs/migrations/StandardMigrationVersioning.js.map +0 -1
- package/lib/cjs/migrations/constants.js.map +0 -1
- package/lib/cjs/migrations/decorators.js.map +0 -1
- package/lib/cjs/migrations/index.js.map +0 -1
- package/lib/cjs/migrations/types.js.map +0 -1
- package/lib/cjs/model/BaseModel.js.map +0 -1
- package/lib/cjs/model/SequenceModel.js.map +0 -1
- package/lib/cjs/model/construction.js.map +0 -1
- package/lib/cjs/model/decorators.js.map +0 -1
- package/lib/cjs/model/index.js.map +0 -1
- package/lib/cjs/model/indexing.js.map +0 -1
- package/lib/cjs/model/types.js.map +0 -1
- package/lib/cjs/overrides/Metadata.js.map +0 -1
- package/lib/cjs/overrides/Model.js.map +0 -1
- package/lib/cjs/overrides/ModelBuilder.js.map +0 -1
- package/lib/cjs/overrides/index.js.map +0 -1
- package/lib/cjs/overrides/injectables.js.map +0 -1
- package/lib/cjs/overrides/overrides.js.map +0 -1
- package/lib/cjs/persistence/Adapter.js.map +0 -1
- package/lib/cjs/persistence/Context.js.map +0 -1
- package/lib/cjs/persistence/ContextLock.js.map +0 -1
- package/lib/cjs/persistence/Dispatch.js.map +0 -1
- package/lib/cjs/persistence/ObserverHandler.js.map +0 -1
- package/lib/cjs/persistence/Sequence.js.map +0 -1
- package/lib/cjs/persistence/constants.js.map +0 -1
- package/lib/cjs/persistence/decorators.js.map +0 -1
- package/lib/cjs/persistence/errors.js.map +0 -1
- package/lib/cjs/persistence/event-filters.js.map +0 -1
- package/lib/cjs/persistence/generators.js.map +0 -1
- package/lib/cjs/persistence/index.js.map +0 -1
- package/lib/cjs/persistence/transactions.js.map +0 -1
- package/lib/cjs/persistence/types.js.map +0 -1
- package/lib/cjs/query/Condition.js.map +0 -1
- package/lib/cjs/query/MethodQueryBuilder.js.map +0 -1
- package/lib/cjs/query/Paginator.js.map +0 -1
- package/lib/cjs/query/Statement.js.map +0 -1
- package/lib/cjs/query/constants.js.map +0 -1
- package/lib/cjs/query/decorators.js.map +0 -1
- package/lib/cjs/query/errors.js.map +0 -1
- package/lib/cjs/query/index.js.map +0 -1
- package/lib/cjs/query/options.js.map +0 -1
- package/lib/cjs/query/selectors.js.map +0 -1
- package/lib/cjs/query/types.js.map +0 -1
- package/lib/cjs/query/utils.js.map +0 -1
- package/lib/cjs/ram/RamAdapter.js.map +0 -1
- package/lib/cjs/ram/RamPaginator.js.map +0 -1
- package/lib/cjs/ram/RamStatement.js.map +0 -1
- package/lib/cjs/ram/constants.js.map +0 -1
- package/lib/cjs/ram/handlers.js.map +0 -1
- package/lib/cjs/ram/index.js.map +0 -1
- package/lib/cjs/ram/types.js.map +0 -1
- package/lib/cjs/repository/Repository.js.map +0 -1
- package/lib/cjs/repository/constants.js.map +0 -1
- package/lib/cjs/repository/decorators.js.map +0 -1
- package/lib/cjs/repository/errors.js.map +0 -1
- package/lib/cjs/repository/index.js.map +0 -1
- package/lib/cjs/repository/injectables.js.map +0 -1
- package/lib/cjs/repository/types.js.map +0 -1
- package/lib/cjs/repository/utils.js.map +0 -1
- package/lib/cjs/services/ModelService.js.map +0 -1
- package/lib/cjs/services/PersistenceService.js.map +0 -1
- package/lib/cjs/services/index.js.map +0 -1
- package/lib/cjs/services/services.js.map +0 -1
- package/lib/cjs/tasks/CleanUpTask.js.map +0 -1
- package/lib/cjs/tasks/TaskContext.js.map +0 -1
- package/lib/cjs/tasks/TaskEngine.js.map +0 -1
- package/lib/cjs/tasks/TaskErrors.js.map +0 -1
- package/lib/cjs/tasks/TaskEventBus.js.map +0 -1
- package/lib/cjs/tasks/TaskEventService.js.map +0 -1
- package/lib/cjs/tasks/TaskHandler.js.map +0 -1
- package/lib/cjs/tasks/TaskHandlerRegistry.js.map +0 -1
- package/lib/cjs/tasks/TaskService.js.map +0 -1
- package/lib/cjs/tasks/TaskStateChangeError.js.map +0 -1
- package/lib/cjs/tasks/TaskTracker.js.map +0 -1
- package/lib/cjs/tasks/builder.js.map +0 -1
- package/lib/cjs/tasks/constants.js.map +0 -1
- package/lib/cjs/tasks/decorators.js.map +0 -1
- package/lib/cjs/tasks/index.js.map +0 -1
- package/lib/cjs/tasks/logging.js.map +0 -1
- package/lib/cjs/tasks/models/TaskBackoffModel.js.map +0 -1
- package/lib/cjs/tasks/models/TaskErrorModel.js.map +0 -1
- package/lib/cjs/tasks/models/TaskEventModel.js.map +0 -1
- package/lib/cjs/tasks/models/TaskIOSerializer.js.map +0 -1
- package/lib/cjs/tasks/models/TaskLogEntryModel.js.map +0 -1
- package/lib/cjs/tasks/models/TaskModel.js.map +0 -1
- package/lib/cjs/tasks/models/TaskStepResultModel.js.map +0 -1
- package/lib/cjs/tasks/models/TaskStepSpecModel.js.map +0 -1
- package/lib/cjs/tasks/models/index.js.map +0 -1
- package/lib/cjs/tasks/types.js.map +0 -1
- package/lib/cjs/tasks/utils.js.map +0 -1
- package/lib/cjs/utils/ContextualLoggedClass.js.map +0 -1
- package/lib/cjs/utils/decorators.js.map +0 -1
- package/lib/cjs/utils/errors.js.map +0 -1
- package/lib/cjs/utils/index.js.map +0 -1
- package/lib/cjs/utils/throttling.js.map +0 -1
- package/lib/cjs/utils/types.js.map +0 -1
- package/lib/cjs/utils/utils.js.map +0 -1
- package/lib/cjs/workers/TaskEngine.js.map +0 -1
- package/lib/cjs/workers/WorkThreadEnvironment.js.map +0 -1
- package/lib/cjs/workers/index.js.map +0 -1
- package/lib/cjs/workers/messages.js.map +0 -1
- package/lib/cjs/workers/types.js.map +0 -1
- package/lib/cjs/workers/workerThread.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
2
|
+
/**
|
|
3
|
+
* @description Error thrown when observer communication fails.
|
|
4
|
+
* @summary Represents a failure in observer communication between repositories.
|
|
5
|
+
* @param {string|Error} msg - The error message or Error object.
|
|
6
|
+
* @class ObserverError
|
|
7
|
+
* @category Errors
|
|
8
|
+
* @example
|
|
9
|
+
* try {
|
|
10
|
+
* // Some repository observer operation
|
|
11
|
+
* } catch (error) {
|
|
12
|
+
* if (error instanceof ObserverError) {
|
|
13
|
+
* console.error('Observer communication failed:', error.message);
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
export declare class ObserverError extends InternalError {
|
|
18
|
+
constructor(msg: string | Error);
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Exports for the repository module.
|
|
3
|
+
* @summary This file exports all the necessary components for the repository functionality, including constants, decorators, and more.
|
|
4
|
+
* @module core/repository
|
|
5
|
+
*/
|
|
6
|
+
export * from "./constants.cjs";
|
|
7
|
+
export * from "./decorators.cjs";
|
|
8
|
+
export * from "./errors.cjs";
|
|
9
|
+
export * from "./injectables.cjs";
|
|
10
|
+
export * from "./Repository.cjs";
|
|
11
|
+
export * from "./types.cjs";
|
|
12
|
+
export * from "./utils.cjs";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Exports for the repository module.
|
|
3
|
+
* @summary This file exports all the necessary components for the repository functionality, including constants, decorators, and more.
|
|
4
|
+
* @module core/repository
|
|
5
|
+
*/
|
|
6
|
+
export * from "./constants.js";
|
|
7
|
+
export * from "./decorators.js";
|
|
8
|
+
export * from "./errors.js";
|
|
9
|
+
export * from "./injectables.js";
|
|
10
|
+
export * from "./Repository.js";
|
|
11
|
+
export * from "./types.js";
|
|
12
|
+
export * from "./utils.js";
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { InjectableRegistryImp } from "@decaf-ts/injectable-decorators";
|
|
2
|
+
import { Logger } from "@decaf-ts/logging";
|
|
3
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
4
|
+
/**
|
|
5
|
+
* @description Registry for injectable repositories with auto-resolution.
|
|
6
|
+
* @summary Provides an InjectableRegistry implementation that resolves repositories by model name or constructor. If a repository
|
|
7
|
+
* is not explicitly registered, it attempts to infer the correct repository using model metadata and the active or specified adapter flavour.
|
|
8
|
+
* @param {void} [constructor] No constructor parameters required; the superclass handles internal state.
|
|
9
|
+
* @class InjectablesRegistry
|
|
10
|
+
* @example
|
|
11
|
+
* // Basic usage: retrieve a repository by model name
|
|
12
|
+
* const registry = new InjectablesRegistry();
|
|
13
|
+
* const userRepo = registry.get<UserRepository>('User');
|
|
14
|
+
* // If UserRepository is registered, it will be returned. Otherwise, a repository will be created if a User model exists.
|
|
15
|
+
*
|
|
16
|
+
* // Retrieve by constructor and specify adapter flavour
|
|
17
|
+
* const repoByCtor = registry.get<UserRepository>(UserModel, 'ram');
|
|
18
|
+
*
|
|
19
|
+
* // Retrieve by symbol (e.g., injectable token)
|
|
20
|
+
* const token = Symbol.for('UserRepository');
|
|
21
|
+
* const byToken = registry.get<UserRepository>(token);
|
|
22
|
+
* @mermaid
|
|
23
|
+
* sequenceDiagram
|
|
24
|
+
* participant C as Consumer
|
|
25
|
+
* participant R as InjectablesRegistry
|
|
26
|
+
* participant B as BaseRegistry
|
|
27
|
+
* participant M as Model
|
|
28
|
+
* participant A as Adapter
|
|
29
|
+
* participant RP as Repository
|
|
30
|
+
* C->>R: get(name, flavour?)
|
|
31
|
+
* activate R
|
|
32
|
+
* R->>B: super.get(name)
|
|
33
|
+
* alt Found in base registry
|
|
34
|
+
* B-->>R: injectable
|
|
35
|
+
* R-->>C: injectable
|
|
36
|
+
* else Not found
|
|
37
|
+
* R->>M: Model.get(name)
|
|
38
|
+
* alt Model found
|
|
39
|
+
* R->>A: resolve flavour (from arg/metadata/current)
|
|
40
|
+
* R->>RP: Repository.forModel(modelCtor, alias)
|
|
41
|
+
* alt Repository instance
|
|
42
|
+
* RP-->>R: repository instance
|
|
43
|
+
* R-->>C: repository instance
|
|
44
|
+
* else Repository ctor
|
|
45
|
+
* R->>A: Adapter.get(resolvedFlavour) or Adapter.current
|
|
46
|
+
* A-->>R: adapter instance
|
|
47
|
+
* R->>RP: new repoCtor(adapter, modelCtor)
|
|
48
|
+
* R-->>C: repository instance
|
|
49
|
+
* end
|
|
50
|
+
* else Model not found
|
|
51
|
+
* R-->>C: undefined
|
|
52
|
+
* end
|
|
53
|
+
* end
|
|
54
|
+
*/
|
|
55
|
+
export declare class InjectablesRegistry extends InjectableRegistryImp {
|
|
56
|
+
private logger?;
|
|
57
|
+
protected get log(): Logger;
|
|
58
|
+
constructor();
|
|
59
|
+
/**
|
|
60
|
+
* @description Retrieve an injectable with repository auto-resolution.
|
|
61
|
+
* @summary Attempts to get an injectable from the base registry; if not found and the name refers to a known model, it
|
|
62
|
+
* resolves the appropriate repository using the specified flavour or model metadata, falling back to the current adapter when needed.
|
|
63
|
+
* @template T The injectable type to be returned.
|
|
64
|
+
* @param {string | symbol | Constructor<T>} name Token, model name, or constructor associated with the injectable or model.
|
|
65
|
+
* @param {string} [flavour] Optional adapter flavour (e.g., "ram"). If omitted, derives from metadata or current adapter.
|
|
66
|
+
* @return {T | undefined} The located or auto-created injectable instance; otherwise undefined if it cannot be resolved.
|
|
67
|
+
* @mermaid
|
|
68
|
+
* sequenceDiagram
|
|
69
|
+
* participant G as get(name, flavour?)
|
|
70
|
+
* participant BR as BaseRegistry
|
|
71
|
+
* participant M as Model
|
|
72
|
+
* participant A as Adapter
|
|
73
|
+
* participant RP as Repository
|
|
74
|
+
* G->>BR: super.get(name)
|
|
75
|
+
* alt Found
|
|
76
|
+
* BR-->>G: injectable
|
|
77
|
+
* else Not found
|
|
78
|
+
* G->>M: derive modelCtor from name
|
|
79
|
+
* alt modelCtor resolved
|
|
80
|
+
* G->>A: resolve flavour (arg | metadata | current)
|
|
81
|
+
* G->>RP: Repository.forModel(modelCtor, alias)
|
|
82
|
+
* alt returns instance
|
|
83
|
+
* RP-->>G: Repository instance
|
|
84
|
+
* else returns ctor
|
|
85
|
+
* G->>A: Adapter.get(flavour) | Adapter.current
|
|
86
|
+
* A-->>G: adapter instance
|
|
87
|
+
* G->>RP: new repoCtor(adapter, modelCtor)
|
|
88
|
+
* end
|
|
89
|
+
* else no modelCtor
|
|
90
|
+
* G-->>G: return undefined
|
|
91
|
+
* end
|
|
92
|
+
* end
|
|
93
|
+
*/
|
|
94
|
+
get<T>(name: symbol | Constructor<T> | string, flavour?: string): T | undefined;
|
|
95
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { InjectableRegistryImp } from "@decaf-ts/injectable-decorators";
|
|
2
|
+
import { Logger } from "@decaf-ts/logging";
|
|
3
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
4
|
+
/**
|
|
5
|
+
* @description Registry for injectable repositories with auto-resolution.
|
|
6
|
+
* @summary Provides an InjectableRegistry implementation that resolves repositories by model name or constructor. If a repository
|
|
7
|
+
* is not explicitly registered, it attempts to infer the correct repository using model metadata and the active or specified adapter flavour.
|
|
8
|
+
* @param {void} [constructor] No constructor parameters required; the superclass handles internal state.
|
|
9
|
+
* @class InjectablesRegistry
|
|
10
|
+
* @example
|
|
11
|
+
* // Basic usage: retrieve a repository by model name
|
|
12
|
+
* const registry = new InjectablesRegistry();
|
|
13
|
+
* const userRepo = registry.get<UserRepository>('User');
|
|
14
|
+
* // If UserRepository is registered, it will be returned. Otherwise, a repository will be created if a User model exists.
|
|
15
|
+
*
|
|
16
|
+
* // Retrieve by constructor and specify adapter flavour
|
|
17
|
+
* const repoByCtor = registry.get<UserRepository>(UserModel, 'ram');
|
|
18
|
+
*
|
|
19
|
+
* // Retrieve by symbol (e.g., injectable token)
|
|
20
|
+
* const token = Symbol.for('UserRepository');
|
|
21
|
+
* const byToken = registry.get<UserRepository>(token);
|
|
22
|
+
* @mermaid
|
|
23
|
+
* sequenceDiagram
|
|
24
|
+
* participant C as Consumer
|
|
25
|
+
* participant R as InjectablesRegistry
|
|
26
|
+
* participant B as BaseRegistry
|
|
27
|
+
* participant M as Model
|
|
28
|
+
* participant A as Adapter
|
|
29
|
+
* participant RP as Repository
|
|
30
|
+
* C->>R: get(name, flavour?)
|
|
31
|
+
* activate R
|
|
32
|
+
* R->>B: super.get(name)
|
|
33
|
+
* alt Found in base registry
|
|
34
|
+
* B-->>R: injectable
|
|
35
|
+
* R-->>C: injectable
|
|
36
|
+
* else Not found
|
|
37
|
+
* R->>M: Model.get(name)
|
|
38
|
+
* alt Model found
|
|
39
|
+
* R->>A: resolve flavour (from arg/metadata/current)
|
|
40
|
+
* R->>RP: Repository.forModel(modelCtor, alias)
|
|
41
|
+
* alt Repository instance
|
|
42
|
+
* RP-->>R: repository instance
|
|
43
|
+
* R-->>C: repository instance
|
|
44
|
+
* else Repository ctor
|
|
45
|
+
* R->>A: Adapter.get(resolvedFlavour) or Adapter.current
|
|
46
|
+
* A-->>R: adapter instance
|
|
47
|
+
* R->>RP: new repoCtor(adapter, modelCtor)
|
|
48
|
+
* R-->>C: repository instance
|
|
49
|
+
* end
|
|
50
|
+
* else Model not found
|
|
51
|
+
* R-->>C: undefined
|
|
52
|
+
* end
|
|
53
|
+
* end
|
|
54
|
+
*/
|
|
55
|
+
export declare class InjectablesRegistry extends InjectableRegistryImp {
|
|
56
|
+
private logger?;
|
|
57
|
+
protected get log(): Logger;
|
|
58
|
+
constructor();
|
|
59
|
+
/**
|
|
60
|
+
* @description Retrieve an injectable with repository auto-resolution.
|
|
61
|
+
* @summary Attempts to get an injectable from the base registry; if not found and the name refers to a known model, it
|
|
62
|
+
* resolves the appropriate repository using the specified flavour or model metadata, falling back to the current adapter when needed.
|
|
63
|
+
* @template T The injectable type to be returned.
|
|
64
|
+
* @param {string | symbol | Constructor<T>} name Token, model name, or constructor associated with the injectable or model.
|
|
65
|
+
* @param {string} [flavour] Optional adapter flavour (e.g., "ram"). If omitted, derives from metadata or current adapter.
|
|
66
|
+
* @return {T | undefined} The located or auto-created injectable instance; otherwise undefined if it cannot be resolved.
|
|
67
|
+
* @mermaid
|
|
68
|
+
* sequenceDiagram
|
|
69
|
+
* participant G as get(name, flavour?)
|
|
70
|
+
* participant BR as BaseRegistry
|
|
71
|
+
* participant M as Model
|
|
72
|
+
* participant A as Adapter
|
|
73
|
+
* participant RP as Repository
|
|
74
|
+
* G->>BR: super.get(name)
|
|
75
|
+
* alt Found
|
|
76
|
+
* BR-->>G: injectable
|
|
77
|
+
* else Not found
|
|
78
|
+
* G->>M: derive modelCtor from name
|
|
79
|
+
* alt modelCtor resolved
|
|
80
|
+
* G->>A: resolve flavour (arg | metadata | current)
|
|
81
|
+
* G->>RP: Repository.forModel(modelCtor, alias)
|
|
82
|
+
* alt returns instance
|
|
83
|
+
* RP-->>G: Repository instance
|
|
84
|
+
* else returns ctor
|
|
85
|
+
* G->>A: Adapter.get(flavour) | Adapter.current
|
|
86
|
+
* A-->>G: adapter instance
|
|
87
|
+
* G->>RP: new repoCtor(adapter, modelCtor)
|
|
88
|
+
* end
|
|
89
|
+
* else no modelCtor
|
|
90
|
+
* G-->>G: return undefined
|
|
91
|
+
* end
|
|
92
|
+
* end
|
|
93
|
+
*/
|
|
94
|
+
get<T>(name: symbol | Constructor<T> | string, flavour?: string): T | undefined;
|
|
95
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Cascade, OrderDirection } from "./constants.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* @description Metadata for cascade operations on related entities.
|
|
4
|
+
* @summary Defines how update and delete operations should cascade to related entities.
|
|
5
|
+
* @typedef CascadeMetadata
|
|
6
|
+
* @property {Cascade} update - Determines cascade behavior for update operations.
|
|
7
|
+
* @property {Cascade} delete - Determines cascade behavior for delete operations.
|
|
8
|
+
* @memberOf module:core
|
|
9
|
+
*/
|
|
10
|
+
export type CascadeMetadata = {
|
|
11
|
+
update: Cascade;
|
|
12
|
+
delete: Cascade;
|
|
13
|
+
};
|
|
14
|
+
export type IndexMetadata = {
|
|
15
|
+
name?: string;
|
|
16
|
+
directions?: OrderDirection[2];
|
|
17
|
+
compositions?: string[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @description Metadata for a named index that extends IndexMetadata.
|
|
21
|
+
* @summary Extends IndexMetadata with a suffix to identify the index.
|
|
22
|
+
* @typedef NamedIndexMetadata
|
|
23
|
+
* @property {string} suffix - The suffix to append to the index name.
|
|
24
|
+
* @memberOf module:core
|
|
25
|
+
*/
|
|
26
|
+
export type NamedIndexMetadata = IndexMetadata & {
|
|
27
|
+
suffix: string;
|
|
28
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Cascade, OrderDirection } from "./constants.js";
|
|
2
|
+
/**
|
|
3
|
+
* @description Metadata for cascade operations on related entities.
|
|
4
|
+
* @summary Defines how update and delete operations should cascade to related entities.
|
|
5
|
+
* @typedef CascadeMetadata
|
|
6
|
+
* @property {Cascade} update - Determines cascade behavior for update operations.
|
|
7
|
+
* @property {Cascade} delete - Determines cascade behavior for delete operations.
|
|
8
|
+
* @memberOf module:core
|
|
9
|
+
*/
|
|
10
|
+
export type CascadeMetadata = {
|
|
11
|
+
update: Cascade;
|
|
12
|
+
delete: Cascade;
|
|
13
|
+
};
|
|
14
|
+
export type IndexMetadata = {
|
|
15
|
+
name?: string;
|
|
16
|
+
directions?: OrderDirection[2];
|
|
17
|
+
compositions?: string[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @description Metadata for a named index that extends IndexMetadata.
|
|
21
|
+
* @summary Extends IndexMetadata with a suffix to identify the index.
|
|
22
|
+
* @typedef NamedIndexMetadata
|
|
23
|
+
* @property {string} suffix - The suffix to append to the index name.
|
|
24
|
+
* @memberOf module:core
|
|
25
|
+
*/
|
|
26
|
+
export type NamedIndexMetadata = IndexMetadata & {
|
|
27
|
+
suffix: string;
|
|
28
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
3
|
+
/**
|
|
4
|
+
* @description Generates a unique injectable name for a repository.
|
|
5
|
+
* @summary Creates a standardized injectable token for repositories using the adapter flavour and model table name.
|
|
6
|
+
* This helps the DI system register and resolve repository instances consistently across adapters.
|
|
7
|
+
* @template T The model type that extends Model.
|
|
8
|
+
* @param {Constructor<T> | T} model The model constructor or instance from which to derive the table name.
|
|
9
|
+
* @param {string} [flavour] Optional adapter flavour/alias. If omitted, it is read from model metadata.
|
|
10
|
+
* @return {string} A namespaced injectable token for the repository (e.g., "db:repo:ram:users").
|
|
11
|
+
* @throws {InternalError} If the flavour cannot be determined from arguments or metadata.
|
|
12
|
+
* @function generateInjectableNameForRepository
|
|
13
|
+
* @mermaid
|
|
14
|
+
* sequenceDiagram
|
|
15
|
+
* participant C as Caller
|
|
16
|
+
* participant U as generateInjectableNameForRepository
|
|
17
|
+
* participant R as Reflect Metadata
|
|
18
|
+
* participant A as Adapter
|
|
19
|
+
* participant S as String Formatter
|
|
20
|
+
* C->>U: call(model, flavour?)
|
|
21
|
+
* alt flavour provided
|
|
22
|
+
* U-->>U: use provided flavour
|
|
23
|
+
* else flavour not provided
|
|
24
|
+
* U->>A: ADAPTER
|
|
25
|
+
* U->>R: getMetadata(key, model|model.ctor)
|
|
26
|
+
* alt metadata present
|
|
27
|
+
* R-->>U: flavour
|
|
28
|
+
* else missing
|
|
29
|
+
* U-->>C: throw InternalError
|
|
30
|
+
* end
|
|
31
|
+
* end
|
|
32
|
+
* U->>S: sf(INJECTABLE, flavour, Model.tableName(model))
|
|
33
|
+
* S-->>C: token string
|
|
34
|
+
* @memberOf module:core
|
|
35
|
+
*/
|
|
36
|
+
export declare function generateInjectableNameForRepository<T extends Model>(model: Constructor<T> | T, flavour?: string): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
3
|
+
/**
|
|
4
|
+
* @description Generates a unique injectable name for a repository.
|
|
5
|
+
* @summary Creates a standardized injectable token for repositories using the adapter flavour and model table name.
|
|
6
|
+
* This helps the DI system register and resolve repository instances consistently across adapters.
|
|
7
|
+
* @template T The model type that extends Model.
|
|
8
|
+
* @param {Constructor<T> | T} model The model constructor or instance from which to derive the table name.
|
|
9
|
+
* @param {string} [flavour] Optional adapter flavour/alias. If omitted, it is read from model metadata.
|
|
10
|
+
* @return {string} A namespaced injectable token for the repository (e.g., "db:repo:ram:users").
|
|
11
|
+
* @throws {InternalError} If the flavour cannot be determined from arguments or metadata.
|
|
12
|
+
* @function generateInjectableNameForRepository
|
|
13
|
+
* @mermaid
|
|
14
|
+
* sequenceDiagram
|
|
15
|
+
* participant C as Caller
|
|
16
|
+
* participant U as generateInjectableNameForRepository
|
|
17
|
+
* participant R as Reflect Metadata
|
|
18
|
+
* participant A as Adapter
|
|
19
|
+
* participant S as String Formatter
|
|
20
|
+
* C->>U: call(model, flavour?)
|
|
21
|
+
* alt flavour provided
|
|
22
|
+
* U-->>U: use provided flavour
|
|
23
|
+
* else flavour not provided
|
|
24
|
+
* U->>A: ADAPTER
|
|
25
|
+
* U->>R: getMetadata(key, model|model.ctor)
|
|
26
|
+
* alt metadata present
|
|
27
|
+
* R-->>U: flavour
|
|
28
|
+
* else missing
|
|
29
|
+
* U-->>C: throw InternalError
|
|
30
|
+
* end
|
|
31
|
+
* end
|
|
32
|
+
* U->>S: sf(INJECTABLE, flavour, Model.tableName(model))
|
|
33
|
+
* S-->>C: token string
|
|
34
|
+
* @memberOf module:core
|
|
35
|
+
*/
|
|
36
|
+
export declare function generateInjectableNameForRepository<T extends Model>(model: Constructor<T> | T, flavour?: string): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Constructor } from "@decaf-ts/decoration";
|
|
2
|
+
import { Model, type ModelConstructor } from "@decaf-ts/decorator-validation";
|
|
3
|
+
import { type Repo } from "../repository/Repository.cjs";
|
|
4
|
+
import { Service } from "./services.cjs";
|
|
5
|
+
import type { AllOperationKeys, ContextOf, EventIds, ObserverFilter, PersistenceObservable, PersistenceObserver } from "../persistence/types.cjs";
|
|
6
|
+
import { type IRepository, type PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
7
|
+
import type { ContextualArgs, ContextualizedArgs, MaybeContextualArg, MethodOrOperation } from "../utils/ContextualLoggedClass.cjs";
|
|
8
|
+
import { OrderDirection } from "../repository/constants.cjs";
|
|
9
|
+
import { type DirectionLimitOffset } from "../query/types.cjs";
|
|
10
|
+
import { type Observer } from "../interfaces/index.cjs";
|
|
11
|
+
import { SelectSelector, WhereOption } from "../query/index.cjs";
|
|
12
|
+
export type ArrayMode = "one" | "many";
|
|
13
|
+
export declare class ModelService<M extends Model<boolean>, R extends Repo<M> = Repo<M>> extends Service implements IRepository<M, ContextOf<R>>, PersistenceObservable<ContextOf<R>>, PersistenceObserver<ContextOf<R>> {
|
|
14
|
+
private readonly clazz;
|
|
15
|
+
protected _repository: R;
|
|
16
|
+
get class(): Constructor<M>;
|
|
17
|
+
get repo(): R;
|
|
18
|
+
constructor(clazz: Constructor<M>, name?: string);
|
|
19
|
+
static getService<M extends Model<boolean>, S extends ModelService<M>>(name: string | symbol | Constructor<M>): S;
|
|
20
|
+
create(model: M, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
21
|
+
createAll(models: M[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
22
|
+
delete(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
23
|
+
deleteAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
24
|
+
read(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
25
|
+
readAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
26
|
+
query<M, R extends ArrayMode = "one">(methodName: string, ...args: unknown[]): Promise<R extends "one" ? M : M[]>;
|
|
27
|
+
update(model: M, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
28
|
+
updateAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
29
|
+
select<S extends readonly SelectSelector<M>[]>(): WhereOption<M, M[]>;
|
|
30
|
+
select<S extends readonly SelectSelector<M>[]>(selector: readonly [...S]): WhereOption<M, Pick<M, S[number]>[]>;
|
|
31
|
+
listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
32
|
+
paginateBy(key: keyof M, order: OrderDirection, ref: Omit<DirectionLimitOffset, "direction">, ...args: MaybeContextualArg<ContextOf<R>>): Promise<import("..").SerializedPage<M>>;
|
|
33
|
+
findOneBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
34
|
+
findBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
35
|
+
findByPaginate(key: keyof M, value: any, ref: DirectionLimitOffset, ...args: MaybeContextualArg<ContextOf<R>>): Promise<import("..").SerializedPage<M>>;
|
|
36
|
+
statement(name: string, ...args: MaybeContextualArg<ContextOf<R>>): Promise<any>;
|
|
37
|
+
static forModel<M extends Model<boolean>, S extends ModelService<M>>(this: new (model: ModelConstructor<M>) => S, model: ModelConstructor<M>, alias?: string | symbol): S;
|
|
38
|
+
refresh(table: Constructor<M>, event: AllOperationKeys, id: EventIds, ...args: ContextualArgs<ContextOf<R>>): Promise<void>;
|
|
39
|
+
observe(observer: Observer, filter?: ObserverFilter): () => void;
|
|
40
|
+
unObserve(observer: Observer): void;
|
|
41
|
+
updateObservers(model: Constructor, operation: AllOperationKeys, ids: EventIds, ...args: ContextualArgs<ContextOf<R>>): Promise<void>;
|
|
42
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD): ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>;
|
|
43
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD, allowCreate: false): ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>;
|
|
44
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD, allowCreate: true): Promise<ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Constructor } from "@decaf-ts/decoration";
|
|
2
|
+
import { Model, type ModelConstructor } from "@decaf-ts/decorator-validation";
|
|
3
|
+
import { type Repo } from "../repository/Repository.js";
|
|
4
|
+
import { Service } from "./services.js";
|
|
5
|
+
import type { AllOperationKeys, ContextOf, EventIds, ObserverFilter, PersistenceObservable, PersistenceObserver } from "../persistence/types.js";
|
|
6
|
+
import { type IRepository, type PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
7
|
+
import type { ContextualArgs, ContextualizedArgs, MaybeContextualArg, MethodOrOperation } from "../utils/ContextualLoggedClass.js";
|
|
8
|
+
import { OrderDirection } from "../repository/constants.js";
|
|
9
|
+
import { type DirectionLimitOffset } from "../query/types.js";
|
|
10
|
+
import { type Observer } from "../interfaces/index.js";
|
|
11
|
+
import { SelectSelector, WhereOption } from "../query/index.js";
|
|
12
|
+
export type ArrayMode = "one" | "many";
|
|
13
|
+
export declare class ModelService<M extends Model<boolean>, R extends Repo<M> = Repo<M>> extends Service implements IRepository<M, ContextOf<R>>, PersistenceObservable<ContextOf<R>>, PersistenceObserver<ContextOf<R>> {
|
|
14
|
+
private readonly clazz;
|
|
15
|
+
protected _repository: R;
|
|
16
|
+
get class(): Constructor<M>;
|
|
17
|
+
get repo(): R;
|
|
18
|
+
constructor(clazz: Constructor<M>, name?: string);
|
|
19
|
+
static getService<M extends Model<boolean>, S extends ModelService<M>>(name: string | symbol | Constructor<M>): S;
|
|
20
|
+
create(model: M, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
21
|
+
createAll(models: M[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
22
|
+
delete(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
23
|
+
deleteAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
24
|
+
read(key: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
25
|
+
readAll(keys: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
26
|
+
query<M, R extends ArrayMode = "one">(methodName: string, ...args: unknown[]): Promise<R extends "one" ? M : M[]>;
|
|
27
|
+
update(model: M, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
28
|
+
updateAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
29
|
+
select<S extends readonly SelectSelector<M>[]>(): WhereOption<M, M[]>;
|
|
30
|
+
select<S extends readonly SelectSelector<M>[]>(selector: readonly [...S]): WhereOption<M, Pick<M, S[number]>[]>;
|
|
31
|
+
listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
32
|
+
paginateBy(key: keyof M, order: OrderDirection, ref: Omit<DirectionLimitOffset, "direction">, ...args: MaybeContextualArg<ContextOf<R>>): Promise<import("..").SerializedPage<M>>;
|
|
33
|
+
findOneBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M>;
|
|
34
|
+
findBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<R>>): Promise<M[]>;
|
|
35
|
+
findByPaginate(key: keyof M, value: any, ref: DirectionLimitOffset, ...args: MaybeContextualArg<ContextOf<R>>): Promise<import("..").SerializedPage<M>>;
|
|
36
|
+
statement(name: string, ...args: MaybeContextualArg<ContextOf<R>>): Promise<any>;
|
|
37
|
+
static forModel<M extends Model<boolean>, S extends ModelService<M>>(this: new (model: ModelConstructor<M>) => S, model: ModelConstructor<M>, alias?: string | symbol): S;
|
|
38
|
+
refresh(table: Constructor<M>, event: AllOperationKeys, id: EventIds, ...args: ContextualArgs<ContextOf<R>>): Promise<void>;
|
|
39
|
+
observe(observer: Observer, filter?: ObserverFilter): () => void;
|
|
40
|
+
unObserve(observer: Observer): void;
|
|
41
|
+
updateObservers(model: Constructor, operation: AllOperationKeys, ids: EventIds, ...args: ContextualArgs<ContextOf<R>>): Promise<void>;
|
|
42
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD): ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>;
|
|
43
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD, allowCreate: false): ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>;
|
|
44
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<ContextOf<this["repo"]>, ARGS>, operation: METHOD, allowCreate: true): Promise<ContextualizedArgs<ContextOf<this["repo"]>, ARGS, METHOD extends string ? true : false>>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ClientBasedService } from "./services.cjs";
|
|
2
|
+
import { Adapter } from "../persistence/Adapter.cjs";
|
|
3
|
+
import { ConfigOf, ContextOf } from "../persistence/types.cjs";
|
|
4
|
+
import { MaybeContextualArg } from "../utils/ContextualLoggedClass.cjs";
|
|
5
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
6
|
+
export declare class PersistenceService<A extends Adapter<any, any, any, any>> extends ClientBasedService<A[], [
|
|
7
|
+
Constructor<A>,
|
|
8
|
+
ConfigOf<A>,
|
|
9
|
+
...args: any[]
|
|
10
|
+
][], ContextOf<A>> {
|
|
11
|
+
constructor();
|
|
12
|
+
for(conf: any, ...args: any[]): this;
|
|
13
|
+
initialize(...args: MaybeContextualArg<ContextOf<A>>): Promise<{
|
|
14
|
+
config: [Constructor<A>, ConfigOf<A>, ...args: any[]][];
|
|
15
|
+
client: A[];
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ClientBasedService } from "./services.js";
|
|
2
|
+
import { Adapter } from "../persistence/Adapter.js";
|
|
3
|
+
import { ConfigOf, ContextOf } from "../persistence/types.js";
|
|
4
|
+
import { MaybeContextualArg } from "../utils/ContextualLoggedClass.js";
|
|
5
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
6
|
+
export declare class PersistenceService<A extends Adapter<any, any, any, any>> extends ClientBasedService<A[], [
|
|
7
|
+
Constructor<A>,
|
|
8
|
+
ConfigOf<A>,
|
|
9
|
+
...args: any[]
|
|
10
|
+
][], ContextOf<A>> {
|
|
11
|
+
constructor();
|
|
12
|
+
for(conf: any, ...args: any[]): this;
|
|
13
|
+
initialize(...args: MaybeContextualArg<ContextOf<A>>): Promise<{
|
|
14
|
+
config: [Constructor<A>, ConfigOf<A>, ...args: any[]][];
|
|
15
|
+
client: A[];
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Exports for the services module.
|
|
3
|
+
* @summary This file exports all the necessary components for the services functionality, including ModelService, PersistenceService, and services.
|
|
4
|
+
* @module core/services
|
|
5
|
+
*/
|
|
6
|
+
export * from "./ModelService.cjs";
|
|
7
|
+
export * from "./PersistenceService.cjs";
|
|
8
|
+
export * from "./services.cjs";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Exports for the services module.
|
|
3
|
+
* @summary This file exports all the necessary components for the services functionality, including ModelService, PersistenceService, and services.
|
|
4
|
+
* @module core/services
|
|
5
|
+
*/
|
|
6
|
+
export * from "./ModelService.js";
|
|
7
|
+
export * from "./PersistenceService.js";
|
|
8
|
+
export * from "./services.js";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { AllOperationKeys, ContextFlags, EventIds, FlagsOf, ObserverFilter, PersistenceObservable, PersistenceObserver } from "../persistence/types.cjs";
|
|
2
|
+
import { Context } from "../persistence/Context.cjs";
|
|
3
|
+
import { ContextualArgs, ContextualizedArgs, ContextualLoggedClass, MaybeContextualArg, MethodOrOperation } from "../utils/ContextualLoggedClass.cjs";
|
|
4
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
5
|
+
import type { Observer } from "../interfaces/Observer.cjs";
|
|
6
|
+
import { ObserverHandler } from "../persistence/ObserverHandler.cjs";
|
|
7
|
+
export declare abstract class Service<C extends Context<ContextFlags<any>> = Context<ContextFlags<any>>> extends ContextualLoggedClass<C> implements PersistenceObservable<C>, PersistenceObserver<C> {
|
|
8
|
+
readonly name?: string | undefined;
|
|
9
|
+
protected observers: Observer[];
|
|
10
|
+
protected observerHandler?: ObserverHandler;
|
|
11
|
+
protected constructor(name?: string | undefined);
|
|
12
|
+
for(conf: any, ...args: any[]): this;
|
|
13
|
+
override(conf: any, ...args: any[]): this;
|
|
14
|
+
/**
|
|
15
|
+
* @description Registers an observer for this repository.
|
|
16
|
+
* @summary Adds an observer that will be notified of changes to models in this repository.
|
|
17
|
+
* @param {Observer} observer - The observer to register.
|
|
18
|
+
* @param {ObserverFilter} [filter] - Optional filter to limit which events the observer receives.
|
|
19
|
+
* @return {void}
|
|
20
|
+
* @see {Observable#observe}
|
|
21
|
+
*/
|
|
22
|
+
observe(observer: Observer, filter?: ObserverFilter): () => void;
|
|
23
|
+
/**
|
|
24
|
+
* @description Unregisters an observer from this repository.
|
|
25
|
+
* @summary Removes an observer so it will no longer receive notifications of changes.
|
|
26
|
+
* @param {Observer} observer - The observer to unregister.
|
|
27
|
+
* @return {void}
|
|
28
|
+
* @throws {InternalError} If the observer handler is not initialized.
|
|
29
|
+
* @see {Observable#unObserve}
|
|
30
|
+
*/
|
|
31
|
+
unObserve(observer: Observer): void;
|
|
32
|
+
/**
|
|
33
|
+
* @description Notifies all observers of an event.
|
|
34
|
+
* @summary Updates all registered observers with information about a database event.
|
|
35
|
+
* @param {string} table - The table name where the event occurred.
|
|
36
|
+
* @param {OperationKeys|BulkCrudOperationKeys|string} event - The type of event that occurred.
|
|
37
|
+
* @param {EventIds} id - The ID or IDs of the affected records.
|
|
38
|
+
* @param {...any[]} args - Additional arguments.
|
|
39
|
+
* @return {Promise<void>} A promise that resolves when all observers have been notified.
|
|
40
|
+
* @throws {InternalError} If the observer handler is not initialized.
|
|
41
|
+
*/
|
|
42
|
+
updateObservers(table: Constructor<any> | string, event: AllOperationKeys, id: EventIds, ...args: ContextualArgs<C>): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* @description Creates repository flags for an operation
|
|
45
|
+
* @summary Generates a set of flags that describe a database operation, combining default flags with overrides
|
|
46
|
+
* @template F - The Repository Flags type
|
|
47
|
+
* @template M - The model type
|
|
48
|
+
* @param {OperationKeys} operation - The type of operation being performed
|
|
49
|
+
* @param {Partial<F>} flags - Custom flag overrides
|
|
50
|
+
* @param {...any[]} args - Additional arguments
|
|
51
|
+
* @return {Promise<F>} The complete set of flags
|
|
52
|
+
*/
|
|
53
|
+
protected flags(operation: string, flags: Partial<FlagsOf<C>>, ...args: any[]): Promise<FlagsOf<C>>;
|
|
54
|
+
/**
|
|
55
|
+
* @description Alias for updateObservers.
|
|
56
|
+
* @summary Notifies all observers of an event (alias for updateObservers).
|
|
57
|
+
* @param {string} table - The table name where the event occurred.
|
|
58
|
+
* @param {OperationKeys|BulkCrudOperationKeys|string} event - The type of event that occurred.
|
|
59
|
+
* @param {EventIds} id - The ID or IDs of the affected records.
|
|
60
|
+
* @param {...any[]} args - Additional arguments.
|
|
61
|
+
* @return {Promise<void>} A promise that resolves when all observers have been notified.
|
|
62
|
+
*/
|
|
63
|
+
refresh(table: Constructor<any> | string, event: AllOperationKeys, id: EventIds, ...args: ContextualArgs<C>): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* @description The context constructor for this adapter
|
|
66
|
+
* @summary Reference to the context class constructor used by this adapter
|
|
67
|
+
*/
|
|
68
|
+
protected readonly Context: Constructor<C>;
|
|
69
|
+
context(operation: ((...args: any[]) => any) | string, overrides: Partial<FlagsOf<C>>, ...args: MaybeContextualArg<Context<any>>): Promise<C>;
|
|
70
|
+
protected logCtx<CONTEXT extends Context<any> = C, ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD): ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>;
|
|
71
|
+
protected logCtx<CONTEXT extends Context<any> = C, ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD, allowCreate: false, overrides?: Partial<FlagsOf<CONTEXT>>): ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>;
|
|
72
|
+
protected logCtx<CONTEXT extends Context<any> = C, ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<CONTEXT, ARGS>, operation: METHOD, allowCreate: true, overrides?: Partial<FlagsOf<CONTEXT>>): Promise<ContextualizedArgs<CONTEXT, ARGS, METHOD extends string ? true : false>>;
|
|
73
|
+
/**
|
|
74
|
+
* @description Retrieves a Service instance by name/class
|
|
75
|
+
* @summary Looks up and returns a cached API instance by its name or constructor
|
|
76
|
+
* @template A Type extending Api
|
|
77
|
+
* @param {string | Constructor<A>} name - Name of the API or its constructor
|
|
78
|
+
* @return {A} The requested API instance
|
|
79
|
+
*/
|
|
80
|
+
static get<A extends Service>(name: string | symbol | Constructor<A>): A;
|
|
81
|
+
static boot<C extends Context<any> = any>(...args: MaybeContextualArg<C>): Promise<void>;
|
|
82
|
+
static shutdown<C extends Context<any> = any>(...args: MaybeContextualArg<C>): Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
export declare abstract class ClientBasedService<CLIENT, CONF, C extends Context<any> = any> extends Service {
|
|
85
|
+
protected _client?: CLIENT;
|
|
86
|
+
protected _config?: CONF;
|
|
87
|
+
protected constructor();
|
|
88
|
+
boot(...args: MaybeContextualArg<C>): Promise<void>;
|
|
89
|
+
abstract initialize(...args: ContextualArgs<C>): Promise<{
|
|
90
|
+
config: CONF;
|
|
91
|
+
client: CLIENT;
|
|
92
|
+
}>;
|
|
93
|
+
protected get config(): CONF;
|
|
94
|
+
get client(): CLIENT;
|
|
95
|
+
shutdown(...args: MaybeContextualArg<C>): Promise<void>;
|
|
96
|
+
}
|