@elsikora/cladi 2.0.2-dev.1 → 2.1.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +598 -211
- package/dist/cjs/application/utility/safe-deep-clone.utility.d.ts.map +1 -1
- package/dist/cjs/application/utility/safe-deep-clone.utility.js +104 -10
- package/dist/cjs/application/utility/safe-deep-clone.utility.js.map +1 -1
- package/dist/cjs/domain/enum/captive-dependency-policy.enum.d.ts +6 -0
- package/dist/cjs/domain/enum/captive-dependency-policy.enum.d.ts.map +1 -0
- package/dist/cjs/domain/enum/captive-dependency-policy.enum.js +9 -0
- package/dist/cjs/domain/enum/captive-dependency-policy.enum.js.map +1 -0
- package/dist/cjs/domain/enum/dependency-lifecycle.enum.d.ts +6 -0
- package/dist/cjs/domain/enum/dependency-lifecycle.enum.d.ts.map +1 -0
- package/dist/cjs/domain/enum/dependency-lifecycle.enum.js +9 -0
- package/dist/cjs/domain/enum/dependency-lifecycle.enum.js.map +1 -0
- package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.d.ts +6 -0
- package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.d.ts.map +1 -0
- package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.js +9 -0
- package/dist/cjs/domain/enum/di-container-duplicate-provider-policy.enum.js.map +1 -0
- package/dist/cjs/domain/enum/index.d.ts +4 -0
- package/dist/cjs/domain/enum/index.d.ts.map +1 -1
- package/dist/cjs/domain/enum/logger-log-level.enum.js.map +1 -1
- package/dist/cjs/domain/enum/provider-type.enum.d.ts +8 -0
- package/dist/cjs/domain/enum/provider-type.enum.d.ts.map +1 -0
- package/dist/cjs/domain/enum/provider-type.enum.js +11 -0
- package/dist/cjs/domain/enum/provider-type.enum.js.map +1 -0
- package/dist/cjs/domain/index.d.ts +1 -0
- package/dist/cjs/domain/index.d.ts.map +1 -1
- package/dist/cjs/domain/interface/di/alias-provider.interface.d.ts +6 -0
- package/dist/cjs/domain/interface/di/alias-provider.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/class-provider.interface.d.ts +9 -0
- package/dist/cjs/domain/interface/di/class-provider.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/container-snapshot.interface.d.ts +19 -0
- package/dist/cjs/domain/interface/di/container-snapshot.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/dependency-graph.interface.d.ts +19 -0
- package/dist/cjs/domain/interface/di/dependency-graph.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/factory-provider.interface.d.ts +9 -0
- package/dist/cjs/domain/interface/di/factory-provider.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/index.d.ts +15 -0
- package/dist/cjs/domain/interface/di/index.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/lazy-provider.interface.d.ts +6 -0
- package/dist/cjs/domain/interface/di/lazy-provider.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/module.interface.d.ts +8 -0
- package/dist/cjs/domain/interface/di/module.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/provider-base.interface.d.ts +11 -0
- package/dist/cjs/domain/interface/di/provider-base.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/resolution-explanation.interface.d.ts +14 -0
- package/dist/cjs/domain/interface/di/resolution-explanation.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/resolve-interceptor.interface.d.ts +26 -0
- package/dist/cjs/domain/interface/di/resolve-interceptor.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/resolver.interface.d.ts +10 -0
- package/dist/cjs/domain/interface/di/resolver.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/scope-create-options.interface.d.ts +9 -0
- package/dist/cjs/domain/interface/di/scope-create-options.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/scope.interface.d.ts +23 -0
- package/dist/cjs/domain/interface/di/scope.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/di/value-provider.interface.d.ts +5 -0
- package/dist/cjs/domain/interface/di/value-provider.interface.d.ts.map +1 -0
- package/dist/cjs/domain/interface/error.interface.d.ts +6 -2
- package/dist/cjs/domain/interface/error.interface.d.ts.map +1 -1
- package/dist/cjs/domain/interface/index.d.ts +1 -3
- package/dist/cjs/domain/interface/index.d.ts.map +1 -1
- package/dist/cjs/domain/interface/logger/index.d.ts +2 -2
- package/dist/cjs/domain/interface/logger/index.d.ts.map +1 -1
- package/dist/cjs/domain/type/di/constructor.type.d.ts +2 -0
- package/dist/cjs/domain/type/di/constructor.type.d.ts.map +1 -0
- package/dist/cjs/domain/type/di/di-container.type.d.ts +3 -0
- package/dist/cjs/domain/type/di/di-container.type.d.ts.map +1 -0
- package/dist/cjs/domain/type/di/index.d.ts +5 -0
- package/dist/cjs/domain/type/di/index.d.ts.map +1 -0
- package/dist/cjs/domain/type/di/provider.type.d.ts +7 -0
- package/dist/cjs/domain/type/di/provider.type.d.ts.map +1 -0
- package/dist/cjs/domain/type/di/token.type.d.ts +4 -0
- package/dist/cjs/domain/type/di/token.type.d.ts.map +1 -0
- package/dist/cjs/domain/type/index.d.ts +2 -0
- package/dist/cjs/domain/type/index.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +60 -12
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/infrastructure/class/base/error.class.d.ts +7 -4
- package/dist/cjs/infrastructure/class/base/error.class.d.ts.map +1 -1
- package/dist/cjs/infrastructure/class/base/error.class.js +13 -3
- package/dist/cjs/infrastructure/class/base/error.class.js.map +1 -1
- package/dist/cjs/infrastructure/class/base/index.d.ts +0 -3
- package/dist/cjs/infrastructure/class/base/index.d.ts.map +1 -1
- package/dist/cjs/infrastructure/class/di/cache/coordinator.class.d.ts +14 -0
- package/dist/cjs/infrastructure/class/di/cache/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/cache/coordinator.class.js +126 -0
- package/dist/cjs/infrastructure/class/di/cache/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/captive/coordinator.class.d.ts +17 -0
- package/dist/cjs/infrastructure/class/di/captive/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/captive/coordinator.class.js +62 -0
- package/dist/cjs/infrastructure/class/di/captive/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/container.class.d.ts +75 -0
- package/dist/cjs/infrastructure/class/di/container.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/container.class.js +632 -0
- package/dist/cjs/infrastructure/class/di/container.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.d.ts +34 -0
- package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.js +93 -0
- package/dist/cjs/infrastructure/class/di/disposal/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/disposal/manager.class.d.ts +28 -0
- package/dist/cjs/infrastructure/class/di/disposal/manager.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/disposal/manager.class.js +104 -0
- package/dist/cjs/infrastructure/class/di/disposal/manager.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.d.ts +41 -0
- package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.js +140 -0
- package/dist/cjs/infrastructure/class/di/disposer/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/engine/resolution.class.d.ts +38 -0
- package/dist/cjs/infrastructure/class/di/engine/resolution.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/engine/resolution.class.js +153 -0
- package/dist/cjs/infrastructure/class/di/engine/resolution.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/graph/coordinator.class.d.ts +42 -0
- package/dist/cjs/infrastructure/class/di/graph/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/graph/coordinator.class.js +121 -0
- package/dist/cjs/infrastructure/class/di/graph/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/index.d.ts +3 -0
- package/dist/cjs/infrastructure/class/di/index.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.d.ts +17 -0
- package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.js +91 -0
- package/dist/cjs/infrastructure/class/di/interceptor/dispatcher.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/interface/index.d.ts +3 -0
- package/dist/cjs/infrastructure/class/di/interface/index.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/interface/internal-container-options.interface.d.ts +7 -0
- package/dist/cjs/infrastructure/class/di/interface/internal-container-options.interface.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/interface/provider/index.d.ts +3 -0
- package/dist/cjs/infrastructure/class/di/interface/provider/index.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/interface/provider/lookup.interface.d.ts +8 -0
- package/dist/cjs/infrastructure/class/di/interface/provider/lookup.interface.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/interface/provider/registration.interface.d.ts +11 -0
- package/dist/cjs/infrastructure/class/di/interface/provider/registration.interface.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.d.ts +10 -0
- package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.js +78 -0
- package/dist/cjs/infrastructure/class/di/lookup/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/registration/coordinator.class.d.ts +41 -0
- package/dist/cjs/infrastructure/class/di/registration/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/registration/coordinator.class.js +251 -0
- package/dist/cjs/infrastructure/class/di/registration/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.d.ts +62 -0
- package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.d.ts.map +1 -0
- package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.js +599 -0
- package/dist/cjs/infrastructure/class/di/resolution/coordinator.class.js.map +1 -0
- package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.js +4 -0
- package/dist/cjs/infrastructure/constant/console-logger-default-options.constant.js.map +1 -1
- package/dist/cjs/infrastructure/factory/core.factory.d.ts +11 -31
- package/dist/cjs/infrastructure/factory/core.factory.d.ts.map +1 -1
- package/dist/cjs/infrastructure/factory/core.factory.js +13 -47
- package/dist/cjs/infrastructure/factory/core.factory.js.map +1 -1
- package/dist/cjs/infrastructure/index.d.ts +1 -0
- package/dist/cjs/infrastructure/index.d.ts.map +1 -1
- package/dist/cjs/infrastructure/interface/base/error-options.interface.d.ts +1 -1
- package/dist/cjs/infrastructure/interface/base/index.d.ts +0 -3
- package/dist/cjs/infrastructure/interface/base/index.d.ts.map +1 -1
- package/dist/cjs/infrastructure/interface/console-logger-options.interface.d.ts +1 -1
- package/dist/cjs/infrastructure/interface/core-factory-options.interface.d.ts +1 -1
- package/dist/cjs/infrastructure/interface/di-container-options.interface.d.ts +12 -0
- package/dist/cjs/infrastructure/interface/di-container-options.interface.d.ts.map +1 -0
- package/dist/cjs/infrastructure/interface/index.d.ts +1 -0
- package/dist/cjs/infrastructure/interface/index.d.ts.map +1 -1
- package/dist/cjs/infrastructure/service/console-logger.service.d.ts.map +1 -1
- package/dist/cjs/infrastructure/service/console-logger.service.js +10 -6
- package/dist/cjs/infrastructure/service/console-logger.service.js.map +1 -1
- package/dist/cjs/infrastructure/utility/to-error.utility.d.ts +7 -0
- package/dist/cjs/infrastructure/utility/to-error.utility.d.ts.map +1 -0
- package/dist/cjs/infrastructure/utility/to-error.utility.js +22 -0
- package/dist/cjs/infrastructure/utility/to-error.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts +2 -0
- package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.js +6 -0
- package/dist/cjs/presentation/ergonomics/constant/injectable-metadata-key.constant.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.d.ts +2 -0
- package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.js +6 -0
- package/dist/cjs/presentation/ergonomics/constant/module-metadata-key.constant.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.d.ts +6 -0
- package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.js +41 -0
- package/dist/cjs/presentation/ergonomics/decorator/after-resolve.decorator.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/index.d.ts +7 -0
- package/dist/cjs/presentation/ergonomics/decorator/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.d.ts +8 -0
- package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.js +35 -0
- package/dist/cjs/presentation/ergonomics/decorator/inject.decorator.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.d.ts +8 -0
- package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.js +89 -0
- package/dist/cjs/presentation/ergonomics/decorator/injectable.decorator.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/module.decorator.d.ts +8 -0
- package/dist/cjs/presentation/ergonomics/decorator/module.decorator.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/module.decorator.js +143 -0
- package/dist/cjs/presentation/ergonomics/decorator/module.decorator.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.d.ts +6 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.js +41 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-dispose.decorator.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.d.ts +6 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.js +41 -0
- package/dist/cjs/presentation/ergonomics/decorator/on-init.decorator.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/index.d.ts +4 -0
- package/dist/cjs/presentation/ergonomics/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts +12 -0
- package/dist/cjs/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/create/index.d.ts +3 -0
- package/dist/cjs/presentation/ergonomics/interface/create/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/create/module-options.interface.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/interface/create/module-options.interface.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/decorator/index.d.ts +2 -0
- package/dist/cjs/presentation/ergonomics/interface/decorator/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/decorator/module-options.interface.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/interface/decorator/module-options.interface.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/index.d.ts +4 -0
- package/dist/cjs/presentation/ergonomics/interface/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/injectable/index.d.ts +3 -0
- package/dist/cjs/presentation/ergonomics/interface/injectable/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/injectable/metadata.interface.d.ts +12 -0
- package/dist/cjs/presentation/ergonomics/interface/injectable/metadata.interface.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/interface/injectable/options.interface.d.ts +4 -0
- package/dist/cjs/presentation/ergonomics/interface/injectable/options.interface.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.js +63 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-decorated-modules.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.d.ts +10 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.js +188 -0
- package/dist/cjs/presentation/ergonomics/utility/compose-modules.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts +14 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.js +110 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire-provider.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.d.ts +15 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.js +34 -0
- package/dist/cjs/presentation/ergonomics/utility/create/autowire.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/index.d.ts +5 -0
- package/dist/cjs/presentation/ergonomics/utility/create/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.js +135 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module-from-decorator.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module.utility.js +19 -0
- package/dist/cjs/presentation/ergonomics/utility/create/module.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/index.d.ts +6 -0
- package/dist/cjs/presentation/ergonomics/utility/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.js +20 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/get.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/index.d.ts +3 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.js +15 -0
- package/dist/cjs/presentation/ergonomics/utility/injectable-metadata/set.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.js +20 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/get.utility.js.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/index.d.ts +3 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/index.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.d.ts +9 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.js +15 -0
- package/dist/cjs/presentation/ergonomics/utility/module-metadata/set.utility.js.map +1 -0
- package/dist/cjs/presentation/utility/create/di-container.utility.d.ts +9 -0
- package/dist/cjs/presentation/utility/create/di-container.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/utility/create/di-container.utility.js +15 -0
- package/dist/cjs/presentation/utility/create/di-container.utility.js.map +1 -0
- package/dist/cjs/presentation/utility/create/index.d.ts +3 -3
- package/dist/cjs/presentation/utility/create/index.d.ts.map +1 -1
- package/dist/cjs/presentation/utility/create/lazy-provider.utility.d.ts +24 -0
- package/dist/cjs/presentation/utility/create/lazy-provider.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/utility/create/lazy-provider.utility.js +29 -0
- package/dist/cjs/presentation/utility/create/lazy-provider.utility.js.map +1 -0
- package/dist/cjs/presentation/utility/create/logger.utility.d.ts +1 -1
- package/dist/cjs/presentation/utility/create/logger.utility.js +1 -1
- package/dist/cjs/presentation/utility/create/logger.utility.js.map +1 -1
- package/dist/cjs/presentation/utility/create/token.utility.d.ts +9 -0
- package/dist/cjs/presentation/utility/create/token.utility.d.ts.map +1 -0
- package/dist/cjs/presentation/utility/create/token.utility.js +14 -0
- package/dist/cjs/presentation/utility/create/token.utility.js.map +1 -0
- package/dist/esm/application/utility/safe-deep-clone.utility.d.ts.map +1 -1
- package/dist/esm/application/utility/safe-deep-clone.utility.js +104 -10
- package/dist/esm/application/utility/safe-deep-clone.utility.js.map +1 -1
- package/dist/esm/domain/enum/captive-dependency-policy.enum.d.ts +6 -0
- package/dist/esm/domain/enum/captive-dependency-policy.enum.d.ts.map +1 -0
- package/dist/esm/domain/enum/captive-dependency-policy.enum.js +9 -0
- package/dist/esm/domain/enum/captive-dependency-policy.enum.js.map +1 -0
- package/dist/esm/domain/enum/dependency-lifecycle.enum.d.ts +6 -0
- package/dist/esm/domain/enum/dependency-lifecycle.enum.d.ts.map +1 -0
- package/dist/esm/domain/enum/dependency-lifecycle.enum.js +9 -0
- package/dist/esm/domain/enum/dependency-lifecycle.enum.js.map +1 -0
- package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.d.ts +6 -0
- package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.d.ts.map +1 -0
- package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.js +9 -0
- package/dist/esm/domain/enum/di-container-duplicate-provider-policy.enum.js.map +1 -0
- package/dist/esm/domain/enum/index.d.ts +4 -0
- package/dist/esm/domain/enum/index.d.ts.map +1 -1
- package/dist/esm/domain/enum/logger-log-level.enum.js.map +1 -1
- package/dist/esm/domain/enum/provider-type.enum.d.ts +8 -0
- package/dist/esm/domain/enum/provider-type.enum.d.ts.map +1 -0
- package/dist/esm/domain/enum/provider-type.enum.js +11 -0
- package/dist/esm/domain/enum/provider-type.enum.js.map +1 -0
- package/dist/esm/domain/index.d.ts +1 -0
- package/dist/esm/domain/index.d.ts.map +1 -1
- package/dist/esm/domain/interface/di/alias-provider.interface.d.ts +6 -0
- package/dist/esm/domain/interface/di/alias-provider.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/class-provider.interface.d.ts +9 -0
- package/dist/esm/domain/interface/di/class-provider.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/container-snapshot.interface.d.ts +19 -0
- package/dist/esm/domain/interface/di/container-snapshot.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/dependency-graph.interface.d.ts +19 -0
- package/dist/esm/domain/interface/di/dependency-graph.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/factory-provider.interface.d.ts +9 -0
- package/dist/esm/domain/interface/di/factory-provider.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/index.d.ts +15 -0
- package/dist/esm/domain/interface/di/index.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/lazy-provider.interface.d.ts +6 -0
- package/dist/esm/domain/interface/di/lazy-provider.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/module.interface.d.ts +8 -0
- package/dist/esm/domain/interface/di/module.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/provider-base.interface.d.ts +11 -0
- package/dist/esm/domain/interface/di/provider-base.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/resolution-explanation.interface.d.ts +14 -0
- package/dist/esm/domain/interface/di/resolution-explanation.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/resolve-interceptor.interface.d.ts +26 -0
- package/dist/esm/domain/interface/di/resolve-interceptor.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/resolver.interface.d.ts +10 -0
- package/dist/esm/domain/interface/di/resolver.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/scope-create-options.interface.d.ts +9 -0
- package/dist/esm/domain/interface/di/scope-create-options.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/scope.interface.d.ts +23 -0
- package/dist/esm/domain/interface/di/scope.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/di/value-provider.interface.d.ts +5 -0
- package/dist/esm/domain/interface/di/value-provider.interface.d.ts.map +1 -0
- package/dist/esm/domain/interface/error.interface.d.ts +6 -2
- package/dist/esm/domain/interface/error.interface.d.ts.map +1 -1
- package/dist/esm/domain/interface/index.d.ts +1 -3
- package/dist/esm/domain/interface/index.d.ts.map +1 -1
- package/dist/esm/domain/interface/logger/index.d.ts +2 -2
- package/dist/esm/domain/interface/logger/index.d.ts.map +1 -1
- package/dist/esm/domain/type/di/constructor.type.d.ts +2 -0
- package/dist/esm/domain/type/di/constructor.type.d.ts.map +1 -0
- package/dist/esm/domain/type/di/di-container.type.d.ts +3 -0
- package/dist/esm/domain/type/di/di-container.type.d.ts.map +1 -0
- package/dist/esm/domain/type/di/index.d.ts +5 -0
- package/dist/esm/domain/type/di/index.d.ts.map +1 -0
- package/dist/esm/domain/type/di/provider.type.d.ts +7 -0
- package/dist/esm/domain/type/di/provider.type.d.ts.map +1 -0
- package/dist/esm/domain/type/di/token.type.d.ts +4 -0
- package/dist/esm/domain/type/di/token.type.d.ts.map +1 -0
- package/dist/esm/domain/type/index.d.ts +2 -0
- package/dist/esm/domain/type/index.d.ts.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +24 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/infrastructure/class/base/error.class.d.ts +7 -4
- package/dist/esm/infrastructure/class/base/error.class.d.ts.map +1 -1
- package/dist/esm/infrastructure/class/base/error.class.js +13 -3
- package/dist/esm/infrastructure/class/base/error.class.js.map +1 -1
- package/dist/esm/infrastructure/class/base/index.d.ts +0 -3
- package/dist/esm/infrastructure/class/base/index.d.ts.map +1 -1
- package/dist/esm/infrastructure/class/di/cache/coordinator.class.d.ts +14 -0
- package/dist/esm/infrastructure/class/di/cache/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/cache/coordinator.class.js +124 -0
- package/dist/esm/infrastructure/class/di/cache/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/captive/coordinator.class.d.ts +17 -0
- package/dist/esm/infrastructure/class/di/captive/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/captive/coordinator.class.js +60 -0
- package/dist/esm/infrastructure/class/di/captive/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/container.class.d.ts +75 -0
- package/dist/esm/infrastructure/class/di/container.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/container.class.js +630 -0
- package/dist/esm/infrastructure/class/di/container.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/disposal/coordinator.class.d.ts +34 -0
- package/dist/esm/infrastructure/class/di/disposal/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/disposal/coordinator.class.js +91 -0
- package/dist/esm/infrastructure/class/di/disposal/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/disposal/manager.class.d.ts +28 -0
- package/dist/esm/infrastructure/class/di/disposal/manager.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/disposal/manager.class.js +102 -0
- package/dist/esm/infrastructure/class/di/disposal/manager.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/disposer/coordinator.class.d.ts +41 -0
- package/dist/esm/infrastructure/class/di/disposer/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/disposer/coordinator.class.js +138 -0
- package/dist/esm/infrastructure/class/di/disposer/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/engine/resolution.class.d.ts +38 -0
- package/dist/esm/infrastructure/class/di/engine/resolution.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/engine/resolution.class.js +151 -0
- package/dist/esm/infrastructure/class/di/engine/resolution.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/graph/coordinator.class.d.ts +42 -0
- package/dist/esm/infrastructure/class/di/graph/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/graph/coordinator.class.js +119 -0
- package/dist/esm/infrastructure/class/di/graph/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/index.d.ts +3 -0
- package/dist/esm/infrastructure/class/di/index.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.d.ts +17 -0
- package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.js +89 -0
- package/dist/esm/infrastructure/class/di/interceptor/dispatcher.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/interface/index.d.ts +3 -0
- package/dist/esm/infrastructure/class/di/interface/index.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/interface/internal-container-options.interface.d.ts +7 -0
- package/dist/esm/infrastructure/class/di/interface/internal-container-options.interface.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/interface/provider/index.d.ts +3 -0
- package/dist/esm/infrastructure/class/di/interface/provider/index.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/interface/provider/lookup.interface.d.ts +8 -0
- package/dist/esm/infrastructure/class/di/interface/provider/lookup.interface.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/interface/provider/registration.interface.d.ts +11 -0
- package/dist/esm/infrastructure/class/di/interface/provider/registration.interface.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/lookup/coordinator.class.d.ts +10 -0
- package/dist/esm/infrastructure/class/di/lookup/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/lookup/coordinator.class.js +76 -0
- package/dist/esm/infrastructure/class/di/lookup/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/registration/coordinator.class.d.ts +41 -0
- package/dist/esm/infrastructure/class/di/registration/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/registration/coordinator.class.js +249 -0
- package/dist/esm/infrastructure/class/di/registration/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/class/di/resolution/coordinator.class.d.ts +62 -0
- package/dist/esm/infrastructure/class/di/resolution/coordinator.class.d.ts.map +1 -0
- package/dist/esm/infrastructure/class/di/resolution/coordinator.class.js +597 -0
- package/dist/esm/infrastructure/class/di/resolution/coordinator.class.js.map +1 -0
- package/dist/esm/infrastructure/constant/console-logger-default-options.constant.js +4 -0
- package/dist/esm/infrastructure/constant/console-logger-default-options.constant.js.map +1 -1
- package/dist/esm/infrastructure/factory/core.factory.d.ts +11 -31
- package/dist/esm/infrastructure/factory/core.factory.d.ts.map +1 -1
- package/dist/esm/infrastructure/factory/core.factory.js +13 -47
- package/dist/esm/infrastructure/factory/core.factory.js.map +1 -1
- package/dist/esm/infrastructure/index.d.ts +1 -0
- package/dist/esm/infrastructure/index.d.ts.map +1 -1
- package/dist/esm/infrastructure/interface/base/error-options.interface.d.ts +1 -1
- package/dist/esm/infrastructure/interface/base/index.d.ts +0 -3
- package/dist/esm/infrastructure/interface/base/index.d.ts.map +1 -1
- package/dist/esm/infrastructure/interface/console-logger-options.interface.d.ts +1 -1
- package/dist/esm/infrastructure/interface/core-factory-options.interface.d.ts +1 -1
- package/dist/esm/infrastructure/interface/di-container-options.interface.d.ts +12 -0
- package/dist/esm/infrastructure/interface/di-container-options.interface.d.ts.map +1 -0
- package/dist/esm/infrastructure/interface/index.d.ts +1 -0
- package/dist/esm/infrastructure/interface/index.d.ts.map +1 -1
- package/dist/esm/infrastructure/service/console-logger.service.d.ts.map +1 -1
- package/dist/esm/infrastructure/service/console-logger.service.js +10 -6
- package/dist/esm/infrastructure/service/console-logger.service.js.map +1 -1
- package/dist/esm/infrastructure/utility/to-error.utility.d.ts +7 -0
- package/dist/esm/infrastructure/utility/to-error.utility.d.ts.map +1 -0
- package/dist/esm/infrastructure/utility/to-error.utility.js +20 -0
- package/dist/esm/infrastructure/utility/to-error.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts +2 -0
- package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.js +4 -0
- package/dist/esm/presentation/ergonomics/constant/injectable-metadata-key.constant.js.map +1 -0
- package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.d.ts +2 -0
- package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.js +4 -0
- package/dist/esm/presentation/ergonomics/constant/module-metadata-key.constant.js.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.d.ts +6 -0
- package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.js +39 -0
- package/dist/esm/presentation/ergonomics/decorator/after-resolve.decorator.js.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/index.d.ts +7 -0
- package/dist/esm/presentation/ergonomics/decorator/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/inject.decorator.d.ts +8 -0
- package/dist/esm/presentation/ergonomics/decorator/inject.decorator.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/inject.decorator.js +33 -0
- package/dist/esm/presentation/ergonomics/decorator/inject.decorator.js.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.d.ts +8 -0
- package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.js +87 -0
- package/dist/esm/presentation/ergonomics/decorator/injectable.decorator.js.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/module.decorator.d.ts +8 -0
- package/dist/esm/presentation/ergonomics/decorator/module.decorator.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/module.decorator.js +141 -0
- package/dist/esm/presentation/ergonomics/decorator/module.decorator.js.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.d.ts +6 -0
- package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.js +39 -0
- package/dist/esm/presentation/ergonomics/decorator/on-dispose.decorator.js.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.d.ts +6 -0
- package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.js +39 -0
- package/dist/esm/presentation/ergonomics/decorator/on-init.decorator.js.map +1 -0
- package/dist/esm/presentation/ergonomics/index.d.ts +4 -0
- package/dist/esm/presentation/ergonomics/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts +12 -0
- package/dist/esm/presentation/ergonomics/interface/create/autowire-provider-options.interface.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/create/index.d.ts +3 -0
- package/dist/esm/presentation/ergonomics/interface/create/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/create/module-options.interface.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/interface/create/module-options.interface.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/decorator/index.d.ts +2 -0
- package/dist/esm/presentation/ergonomics/interface/decorator/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/decorator/module-options.interface.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/interface/decorator/module-options.interface.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/index.d.ts +4 -0
- package/dist/esm/presentation/ergonomics/interface/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/injectable/index.d.ts +3 -0
- package/dist/esm/presentation/ergonomics/interface/injectable/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/injectable/metadata.interface.d.ts +12 -0
- package/dist/esm/presentation/ergonomics/interface/injectable/metadata.interface.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/interface/injectable/options.interface.d.ts +4 -0
- package/dist/esm/presentation/ergonomics/interface/injectable/options.interface.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.js +61 -0
- package/dist/esm/presentation/ergonomics/utility/compose-decorated-modules.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.d.ts +10 -0
- package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.js +186 -0
- package/dist/esm/presentation/ergonomics/utility/compose-modules.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts +14 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.js +108 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire-provider.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.d.ts +15 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.js +32 -0
- package/dist/esm/presentation/ergonomics/utility/create/autowire.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/index.d.ts +5 -0
- package/dist/esm/presentation/ergonomics/utility/create/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.js +133 -0
- package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/module.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/create/module.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/create/module.utility.js +17 -0
- package/dist/esm/presentation/ergonomics/utility/create/module.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/index.d.ts +6 -0
- package/dist/esm/presentation/ergonomics/utility/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.js +18 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/get.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/index.d.ts +3 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.js +13 -0
- package/dist/esm/presentation/ergonomics/utility/injectable-metadata/set.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.js +18 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/get.utility.js.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/index.d.ts +3 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/index.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.d.ts +9 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.d.ts.map +1 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.js +13 -0
- package/dist/esm/presentation/ergonomics/utility/module-metadata/set.utility.js.map +1 -0
- package/dist/esm/presentation/utility/create/di-container.utility.d.ts +9 -0
- package/dist/esm/presentation/utility/create/di-container.utility.d.ts.map +1 -0
- package/dist/esm/presentation/utility/create/di-container.utility.js +13 -0
- package/dist/esm/presentation/utility/create/di-container.utility.js.map +1 -0
- package/dist/esm/presentation/utility/create/index.d.ts +3 -3
- package/dist/esm/presentation/utility/create/index.d.ts.map +1 -1
- package/dist/esm/presentation/utility/create/lazy-provider.utility.d.ts +24 -0
- package/dist/esm/presentation/utility/create/lazy-provider.utility.d.ts.map +1 -0
- package/dist/esm/presentation/utility/create/lazy-provider.utility.js +27 -0
- package/dist/esm/presentation/utility/create/lazy-provider.utility.js.map +1 -0
- package/dist/esm/presentation/utility/create/logger.utility.d.ts +1 -1
- package/dist/esm/presentation/utility/create/logger.utility.js +1 -1
- package/dist/esm/presentation/utility/create/logger.utility.js.map +1 -1
- package/dist/esm/presentation/utility/create/token.utility.d.ts +9 -0
- package/dist/esm/presentation/utility/create/token.utility.d.ts.map +1 -0
- package/dist/esm/presentation/utility/create/token.utility.js +12 -0
- package/dist/esm/presentation/utility/create/token.utility.js.map +1 -0
- package/package.json +37 -29
- package/dist/cjs/domain/interface/container.interface.d.ts +0 -56
- package/dist/cjs/domain/interface/container.interface.d.ts.map +0 -1
- package/dist/cjs/domain/interface/factory.interface.d.ts +0 -20
- package/dist/cjs/domain/interface/factory.interface.d.ts.map +0 -1
- package/dist/cjs/domain/interface/registry.interface.d.ts +0 -55
- package/dist/cjs/domain/interface/registry.interface.d.ts.map +0 -1
- package/dist/cjs/infrastructure/class/base/container.class.d.ts +0 -68
- package/dist/cjs/infrastructure/class/base/container.class.d.ts.map +0 -1
- package/dist/cjs/infrastructure/class/base/container.class.js +0 -194
- package/dist/cjs/infrastructure/class/base/container.class.js.map +0 -1
- package/dist/cjs/infrastructure/class/base/factory.class.d.ts +0 -49
- package/dist/cjs/infrastructure/class/base/factory.class.d.ts.map +0 -1
- package/dist/cjs/infrastructure/class/base/factory.class.js +0 -88
- package/dist/cjs/infrastructure/class/base/factory.class.js.map +0 -1
- package/dist/cjs/infrastructure/class/base/registry.class.d.ts +0 -74
- package/dist/cjs/infrastructure/class/base/registry.class.d.ts.map +0 -1
- package/dist/cjs/infrastructure/class/base/registry.class.js +0 -222
- package/dist/cjs/infrastructure/class/base/registry.class.js.map +0 -1
- package/dist/cjs/infrastructure/interface/base/container-options.interface.d.ts +0 -13
- package/dist/cjs/infrastructure/interface/base/container-options.interface.d.ts.map +0 -1
- package/dist/cjs/infrastructure/interface/base/factory-options.interface.d.ts +0 -22
- package/dist/cjs/infrastructure/interface/base/factory-options.interface.d.ts.map +0 -1
- package/dist/cjs/infrastructure/interface/base/registry-options.interface.d.ts +0 -13
- package/dist/cjs/infrastructure/interface/base/registry-options.interface.d.ts.map +0 -1
- package/dist/cjs/presentation/utility/create/container.utility.d.ts +0 -10
- package/dist/cjs/presentation/utility/create/container.utility.d.ts.map +0 -1
- package/dist/cjs/presentation/utility/create/container.utility.js +0 -18
- package/dist/cjs/presentation/utility/create/container.utility.js.map +0 -1
- package/dist/cjs/presentation/utility/create/factory.utility.d.ts +0 -11
- package/dist/cjs/presentation/utility/create/factory.utility.d.ts.map +0 -1
- package/dist/cjs/presentation/utility/create/factory.utility.js +0 -19
- package/dist/cjs/presentation/utility/create/factory.utility.js.map +0 -1
- package/dist/cjs/presentation/utility/create/registry.utility.d.ts +0 -13
- package/dist/cjs/presentation/utility/create/registry.utility.d.ts.map +0 -1
- package/dist/cjs/presentation/utility/create/registry.utility.js +0 -19
- package/dist/cjs/presentation/utility/create/registry.utility.js.map +0 -1
- package/dist/esm/domain/interface/container.interface.d.ts +0 -56
- package/dist/esm/domain/interface/container.interface.d.ts.map +0 -1
- package/dist/esm/domain/interface/factory.interface.d.ts +0 -20
- package/dist/esm/domain/interface/factory.interface.d.ts.map +0 -1
- package/dist/esm/domain/interface/registry.interface.d.ts +0 -55
- package/dist/esm/domain/interface/registry.interface.d.ts.map +0 -1
- package/dist/esm/infrastructure/class/base/container.class.d.ts +0 -68
- package/dist/esm/infrastructure/class/base/container.class.d.ts.map +0 -1
- package/dist/esm/infrastructure/class/base/container.class.js +0 -192
- package/dist/esm/infrastructure/class/base/container.class.js.map +0 -1
- package/dist/esm/infrastructure/class/base/factory.class.d.ts +0 -49
- package/dist/esm/infrastructure/class/base/factory.class.d.ts.map +0 -1
- package/dist/esm/infrastructure/class/base/factory.class.js +0 -86
- package/dist/esm/infrastructure/class/base/factory.class.js.map +0 -1
- package/dist/esm/infrastructure/class/base/registry.class.d.ts +0 -74
- package/dist/esm/infrastructure/class/base/registry.class.d.ts.map +0 -1
- package/dist/esm/infrastructure/class/base/registry.class.js +0 -220
- package/dist/esm/infrastructure/class/base/registry.class.js.map +0 -1
- package/dist/esm/infrastructure/interface/base/container-options.interface.d.ts +0 -13
- package/dist/esm/infrastructure/interface/base/container-options.interface.d.ts.map +0 -1
- package/dist/esm/infrastructure/interface/base/factory-options.interface.d.ts +0 -22
- package/dist/esm/infrastructure/interface/base/factory-options.interface.d.ts.map +0 -1
- package/dist/esm/infrastructure/interface/base/registry-options.interface.d.ts +0 -13
- package/dist/esm/infrastructure/interface/base/registry-options.interface.d.ts.map +0 -1
- package/dist/esm/presentation/utility/create/container.utility.d.ts +0 -10
- package/dist/esm/presentation/utility/create/container.utility.d.ts.map +0 -1
- package/dist/esm/presentation/utility/create/container.utility.js +0 -16
- package/dist/esm/presentation/utility/create/container.utility.js.map +0 -1
- package/dist/esm/presentation/utility/create/factory.utility.d.ts +0 -11
- package/dist/esm/presentation/utility/create/factory.utility.d.ts.map +0 -1
- package/dist/esm/presentation/utility/create/factory.utility.js +0 -17
- package/dist/esm/presentation/utility/create/factory.utility.js.map +0 -1
- package/dist/esm/presentation/utility/create/registry.utility.d.ts +0 -13
- package/dist/esm/presentation/utility/create/registry.utility.d.ts.map +0 -1
- package/dist/esm/presentation/utility/create/registry.utility.js +0 -17
- package/dist/esm/presentation/utility/create/registry.utility.js.map +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { BaseError } from '../../../infrastructure/class/base/error.class.js';
|
|
2
|
+
|
|
3
|
+
const IMPORT_REGISTRATION_MODE_RANK = 1;
|
|
4
|
+
const ROOT_REGISTRATION_MODE_RANK = 2;
|
|
5
|
+
const MODULE_REGISTRATION_MODE_RANK = {
|
|
6
|
+
import: IMPORT_REGISTRATION_MODE_RANK,
|
|
7
|
+
root: ROOT_REGISTRATION_MODE_RANK,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Registers module trees in deterministic order (imports first, then local providers).
|
|
11
|
+
* Imported modules expose providers through the `exports` contract.
|
|
12
|
+
* @param {IDIContainer} container Target container.
|
|
13
|
+
* @param {Array<IDIModule>} modules Module list to compose.
|
|
14
|
+
*/
|
|
15
|
+
function composeModules(container, modules) {
|
|
16
|
+
const processingModules = new Set();
|
|
17
|
+
const registeredModuleModes = new WeakMap();
|
|
18
|
+
const registeredModuleProvidersByToken = new WeakMap();
|
|
19
|
+
const registerModule = (moduleDefinition, mode, modulePath) => {
|
|
20
|
+
const previousMode = registeredModuleModes.get(moduleDefinition);
|
|
21
|
+
const hasSufficientRegistrationMode = previousMode !== undefined && MODULE_REGISTRATION_MODE_RANK[previousMode] >= MODULE_REGISTRATION_MODE_RANK[mode];
|
|
22
|
+
if (hasSufficientRegistrationMode) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (processingModules.has(moduleDefinition)) {
|
|
26
|
+
throw new BaseError("Circular module imports detected", {
|
|
27
|
+
code: "MODULE_CIRCULAR_DEPENDENCY",
|
|
28
|
+
context: {
|
|
29
|
+
cyclePath: getModuleCyclePath(modulePath, moduleDefinition),
|
|
30
|
+
},
|
|
31
|
+
source: "composeModules",
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
processingModules.add(moduleDefinition);
|
|
35
|
+
try {
|
|
36
|
+
const localProvidersByToken = getLocalProvidersByToken(moduleDefinition);
|
|
37
|
+
validateModuleExports(moduleDefinition, localProvidersByToken);
|
|
38
|
+
const nextModulePath = [...modulePath, moduleDefinition];
|
|
39
|
+
for (const importedModule of moduleDefinition.imports) {
|
|
40
|
+
registerModule(importedModule, "import", nextModulePath);
|
|
41
|
+
}
|
|
42
|
+
const providersToRegister = mode === "root" ? moduleDefinition.providers : collectImportableProviders(moduleDefinition, localProvidersByToken);
|
|
43
|
+
const previouslyRegisteredProvidersByToken = registeredModuleProvidersByToken.get(moduleDefinition) ?? new Map();
|
|
44
|
+
const nextRegisteredProvidersByToken = new Map(previouslyRegisteredProvidersByToken);
|
|
45
|
+
for (const provider of providersToRegister) {
|
|
46
|
+
const previouslyRegisteredProviders = nextRegisteredProvidersByToken.get(provider.provide) ?? new Set();
|
|
47
|
+
if (previouslyRegisteredProviders.has(provider)) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
container.register(provider);
|
|
51
|
+
const nextProviders = new Set(previouslyRegisteredProviders);
|
|
52
|
+
nextProviders.add(provider);
|
|
53
|
+
nextRegisteredProvidersByToken.set(provider.provide, nextProviders);
|
|
54
|
+
}
|
|
55
|
+
registeredModuleModes.set(moduleDefinition, mode);
|
|
56
|
+
registeredModuleProvidersByToken.set(moduleDefinition, nextRegisteredProvidersByToken);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
processingModules.delete(moduleDefinition);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
for (const moduleDefinition of modules) {
|
|
63
|
+
registerModule(moduleDefinition, "root", []);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Selects provider subset visible to an importing module.
|
|
68
|
+
* @param {IDIModule} moduleDefinition Source module definition.
|
|
69
|
+
* @param {Map<symbol, Array<Provider>>} localProvidersByToken Local providers indexed by token.
|
|
70
|
+
* @returns {Array<Provider>} Importable providers for current module.
|
|
71
|
+
*/
|
|
72
|
+
function collectImportableProviders(moduleDefinition, localProvidersByToken) {
|
|
73
|
+
const importableTokens = new Set();
|
|
74
|
+
const pendingTokens = [...moduleDefinition.exports];
|
|
75
|
+
while (pendingTokens.length > 0) {
|
|
76
|
+
const currentToken = pendingTokens.pop();
|
|
77
|
+
if (!currentToken || importableTokens.has(currentToken)) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
importableTokens.add(currentToken);
|
|
81
|
+
const currentProviders = localProvidersByToken.get(currentToken);
|
|
82
|
+
if (!currentProviders) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
for (const currentProvider of currentProviders) {
|
|
86
|
+
const dependencies = getProviderDependencies(currentProvider);
|
|
87
|
+
for (const dependencyToken of dependencies) {
|
|
88
|
+
if (localProvidersByToken.has(dependencyToken)) {
|
|
89
|
+
pendingTokens.push(dependencyToken);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return moduleDefinition.providers.filter((provider) => importableTokens.has(provider.provide));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Converts token symbol to readable debug representation.
|
|
98
|
+
* @param {Token<unknown>} token Provider token.
|
|
99
|
+
* @returns {string} Human readable token string.
|
|
100
|
+
*/
|
|
101
|
+
function describeToken(token) {
|
|
102
|
+
return token.description ? `Symbol(${token.description})` : token.toString();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Builds map of local providers by token.
|
|
106
|
+
* @param {IDIModule} moduleDefinition Module definition.
|
|
107
|
+
* @returns {Map<symbol, Array<Provider>>} Providers indexed by token.
|
|
108
|
+
*/
|
|
109
|
+
function getLocalProvidersByToken(moduleDefinition) {
|
|
110
|
+
const providersByToken = new Map();
|
|
111
|
+
for (const provider of moduleDefinition.providers) {
|
|
112
|
+
const providersForToken = providersByToken.get(provider.provide);
|
|
113
|
+
if (providersForToken) {
|
|
114
|
+
providersForToken.push(provider);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
providersByToken.set(provider.provide, [provider]);
|
|
118
|
+
}
|
|
119
|
+
return providersByToken;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Builds a module cycle path for structured error context.
|
|
123
|
+
* @param {Array<IDIModule>} modulePath Current traversal path.
|
|
124
|
+
* @param {IDIModule} repeatedModule Repeated module that closes the cycle.
|
|
125
|
+
* @returns {Array<string>} Human readable cycle chain.
|
|
126
|
+
*/
|
|
127
|
+
function getModuleCyclePath(modulePath, repeatedModule) {
|
|
128
|
+
const cycleStartIndex = modulePath.indexOf(repeatedModule);
|
|
129
|
+
const cycleModules = cycleStartIndex === -1 ? [...modulePath, repeatedModule] : [...modulePath.slice(cycleStartIndex), repeatedModule];
|
|
130
|
+
return cycleModules.map((cycleModule) => getModuleName(cycleModule));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Returns readable module identifier for diagnostics.
|
|
134
|
+
* @param {IDIModule} moduleDefinition Module definition.
|
|
135
|
+
* @returns {string} Module name for diagnostics.
|
|
136
|
+
*/
|
|
137
|
+
function getModuleName(moduleDefinition) {
|
|
138
|
+
return moduleDefinition.name ?? "anonymous-module";
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Returns direct dependency tokens required by provider strategy.
|
|
142
|
+
* @param {Provider} provider Provider definition.
|
|
143
|
+
* @returns {Array<Token<unknown>>} Direct dependency token list.
|
|
144
|
+
*/
|
|
145
|
+
function getProviderDependencies(provider) {
|
|
146
|
+
if ("useExisting" in provider) {
|
|
147
|
+
return [provider.useExisting];
|
|
148
|
+
}
|
|
149
|
+
if ("useLazy" in provider) {
|
|
150
|
+
return [provider.useLazy];
|
|
151
|
+
}
|
|
152
|
+
if ("deps" in provider) {
|
|
153
|
+
return provider.deps ?? [];
|
|
154
|
+
}
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Ensures each exported token is either local provider token or re-export from imports.
|
|
159
|
+
* @param {IDIModule} moduleDefinition Module definition.
|
|
160
|
+
* @param {Map<symbol, Array<Provider>>} localProvidersByToken Local providers indexed by token.
|
|
161
|
+
*/
|
|
162
|
+
function validateModuleExports(moduleDefinition, localProvidersByToken) {
|
|
163
|
+
const importedExportTokens = new Set();
|
|
164
|
+
for (const importedModule of moduleDefinition.imports) {
|
|
165
|
+
for (const exportedToken of importedModule.exports) {
|
|
166
|
+
importedExportTokens.add(exportedToken);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
for (const exportedToken of moduleDefinition.exports) {
|
|
170
|
+
const hasLocalProvider = localProvidersByToken.has(exportedToken);
|
|
171
|
+
const hasImportedExport = importedExportTokens.has(exportedToken);
|
|
172
|
+
if (!hasLocalProvider && !hasImportedExport) {
|
|
173
|
+
throw new BaseError("Invalid module exports: token is not provided locally or by imported modules", {
|
|
174
|
+
code: "MODULE_EXPORT_INVALID",
|
|
175
|
+
context: {
|
|
176
|
+
moduleName: moduleDefinition.name ?? "anonymous-module",
|
|
177
|
+
token: describeToken(exportedToken),
|
|
178
|
+
},
|
|
179
|
+
source: "composeModules",
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export { composeModules };
|
|
186
|
+
//# sourceMappingURL=compose-modules.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-modules.utility.js","sources":["../../../../../../src/presentation/ergonomics/utility/compose-modules.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IClassProvider } from '../../../../domain/interface/index';
|
|
2
|
+
import type { Constructor, Token } from '../../../../domain/type/index';
|
|
3
|
+
import type { ICreateAutowireProviderOptions } from '../../interface/index';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a class provider using explicit options and optional class metadata.
|
|
6
|
+
* @param {Constructor<T>} useClass Class constructor to instantiate.
|
|
7
|
+
* @param {ICreateAutowireProviderOptions<T>} options Explicit provider options.
|
|
8
|
+
* @returns {IClassProvider<T>} Class provider definition.
|
|
9
|
+
* @template T Provider instance type.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createAutowireProvider<T, TDependencies extends ReadonlyArray<Token<unknown>> = ReadonlyArray<Token<unknown>>>(useClass: Constructor<T, number extends TDependencies["length"] ? Array<never> : {
|
|
12
|
+
[Index in keyof TDependencies]: TDependencies[Index] extends Token<infer TValue> ? TValue : never;
|
|
13
|
+
}>, options: ICreateAutowireProviderOptions<T, TDependencies>): IClassProvider<T, TDependencies>;
|
|
14
|
+
//# sourceMappingURL=autowire-provider.utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autowire-provider.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/autowire-provider.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,8BAA8B,EAAuB,MAAM,oCAAoC,CAAC;AAK9G;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,aAAa,SAAS,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC5H,QAAQ,EAAE,WAAW,CACpB,CAAC,EACD,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,GACnC,KAAK,CAAC,KAAK,CAAC,GACZ;KACC,KAAK,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;CACjG,CACH,EACD,OAAO,EAAE,8BAA8B,CAAC,CAAC,EAAE,aAAa,CAAC,GACvD,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAsBlC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { BaseError } from '../../../../infrastructure/class/base/error.class.js';
|
|
2
|
+
import { getInjectableMetadata } from '../injectable-metadata/get.utility.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Creates a class provider using explicit options and optional class metadata.
|
|
6
|
+
* @param {Constructor<T>} useClass Class constructor to instantiate.
|
|
7
|
+
* @param {ICreateAutowireProviderOptions<T>} options Explicit provider options.
|
|
8
|
+
* @returns {IClassProvider<T>} Class provider definition.
|
|
9
|
+
* @template T Provider instance type.
|
|
10
|
+
*/
|
|
11
|
+
function createAutowireProvider(useClass, options) {
|
|
12
|
+
const metadata = getInjectableMetadata(useClass);
|
|
13
|
+
const staticDependencies = useClass.inject;
|
|
14
|
+
const dependencies = options.deps ?? metadata?.deps ?? staticDependencies ?? [];
|
|
15
|
+
const afterResolve = options.afterResolve ?? createLifecycleMethodHook(useClass, options.token, metadata?.afterResolveMethod, "afterResolve");
|
|
16
|
+
const onDispose = options.onDispose ?? createLifecycleMethodHook(useClass, options.token, metadata?.onDisposeMethod, "onDispose");
|
|
17
|
+
const onInit = options.onInit ?? createLifecycleMethodHook(useClass, options.token, metadata?.onInitMethod, "onInit");
|
|
18
|
+
validateDependencies(dependencies);
|
|
19
|
+
return {
|
|
20
|
+
afterResolve,
|
|
21
|
+
deps: dependencies,
|
|
22
|
+
isMultiBinding: options.isMultiBinding ?? metadata?.isMultiBinding,
|
|
23
|
+
lifecycle: options.lifecycle ?? metadata?.lifecycle,
|
|
24
|
+
onDispose,
|
|
25
|
+
onInit,
|
|
26
|
+
provide: options.token,
|
|
27
|
+
useClass,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolves a lifecycle hook method from injectable metadata.
|
|
32
|
+
* @param {Constructor<T>} useClass Provider class.
|
|
33
|
+
* @param {Token<T>} token Provider token for diagnostics.
|
|
34
|
+
* @param {string | undefined} methodName Decorated method name.
|
|
35
|
+
* @param {"afterResolve" | "onDispose" | "onInit"} hookName Hook type.
|
|
36
|
+
* @returns {((instance: T) => Promise<void> | void) | undefined} Lifecycle hook function.
|
|
37
|
+
* @template T Provider instance type.
|
|
38
|
+
*/
|
|
39
|
+
function createLifecycleMethodHook(useClass, token, methodName, hookName) {
|
|
40
|
+
if (!methodName) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const prototypeCandidate = useClass.prototype;
|
|
44
|
+
const prototype = (typeof prototypeCandidate === "object" && prototypeCandidate !== null ? prototypeCandidate : {});
|
|
45
|
+
const prototypeMethod = prototype[methodName];
|
|
46
|
+
if (typeof prototypeMethod !== "function") {
|
|
47
|
+
throw new BaseError("Injectable lifecycle method not found on class prototype", {
|
|
48
|
+
code: "INJECTABLE_LIFECYCLE_METHOD_NOT_FOUND",
|
|
49
|
+
context: {
|
|
50
|
+
hook: hookName,
|
|
51
|
+
methodName,
|
|
52
|
+
token: describeToken(token),
|
|
53
|
+
},
|
|
54
|
+
source: "createAutowireProvider",
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return (instance) => {
|
|
58
|
+
const instanceRecord = instance;
|
|
59
|
+
const instanceMethod = instanceRecord[methodName];
|
|
60
|
+
if (typeof instanceMethod !== "function") {
|
|
61
|
+
throw new BaseError("Injectable lifecycle method is not callable on resolved instance", {
|
|
62
|
+
code: "INJECTABLE_LIFECYCLE_METHOD_INVALID",
|
|
63
|
+
context: {
|
|
64
|
+
hook: hookName,
|
|
65
|
+
methodName,
|
|
66
|
+
token: describeToken(token),
|
|
67
|
+
},
|
|
68
|
+
source: "createAutowireProvider",
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return instanceMethod.call(instance);
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Builds readable token description for diagnostics.
|
|
76
|
+
* @param {Token<unknown>} token Provider token.
|
|
77
|
+
* @returns {string} Token description.
|
|
78
|
+
*/
|
|
79
|
+
function describeToken(token) {
|
|
80
|
+
return token.description ? `Symbol(${token.description})` : token.toString();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validates dependency metadata for autowire provider creation.
|
|
84
|
+
* @param {ReadonlyArray<Token<unknown>>} dependencies Dependency token list.
|
|
85
|
+
*/
|
|
86
|
+
function validateDependencies(dependencies) {
|
|
87
|
+
for (let dependencyIndex = 0; dependencyIndex < dependencies.length; dependencyIndex += 1) {
|
|
88
|
+
const hasDependencyAtIndex = Object.prototype.hasOwnProperty.call(dependencies, dependencyIndex);
|
|
89
|
+
if (!hasDependencyAtIndex) {
|
|
90
|
+
throw new BaseError("Injectable metadata has sparse dependency indexes", {
|
|
91
|
+
code: "INJECTABLE_METADATA_DEPS_SPARSE",
|
|
92
|
+
context: { index: dependencyIndex },
|
|
93
|
+
source: "createAutowireProvider",
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
const dependencyValue = dependencies[dependencyIndex];
|
|
97
|
+
if (typeof dependencyValue !== "symbol") {
|
|
98
|
+
throw new BaseError("Injectable metadata dependency token must be a symbol", {
|
|
99
|
+
code: "INJECTABLE_METADATA_DEPS_TOKEN_INVALID",
|
|
100
|
+
context: { index: dependencyIndex },
|
|
101
|
+
source: "createAutowireProvider",
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export { createAutowireProvider };
|
|
108
|
+
//# sourceMappingURL=autowire-provider.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autowire-provider.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/autowire-provider.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IClassProvider } from '../../../../domain/interface/index';
|
|
2
|
+
import type { Constructor, Token } from '../../../../domain/type/index';
|
|
3
|
+
import type { ICreateAutowireProviderOptions } from '../../interface/index';
|
|
4
|
+
/**
|
|
5
|
+
* Creates autowired provider using token defined in injectable metadata.
|
|
6
|
+
* @param {Constructor<T>} useClass Class constructor to instantiate.
|
|
7
|
+
* @param {Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">} [options] Optional provider overrides.
|
|
8
|
+
* @returns {IClassProvider<T, TDependencies>} Class provider definition.
|
|
9
|
+
* @template T Provider instance type.
|
|
10
|
+
* @template TDependencies Constructor dependency tokens.
|
|
11
|
+
*/
|
|
12
|
+
export declare function autowire<T, TDependencies extends ReadonlyArray<Token<unknown>> = ReadonlyArray<Token<unknown>>>(useClass: Constructor<T, number extends TDependencies["length"] ? Array<never> : {
|
|
13
|
+
[Index in keyof TDependencies]: TDependencies[Index] extends Token<infer TValue> ? TValue : never;
|
|
14
|
+
}>, options?: Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">): IClassProvider<T, TDependencies>;
|
|
15
|
+
//# sourceMappingURL=autowire.utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autowire.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/autowire.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,8BAA8B,EAAuB,MAAM,oCAAoC,CAAC;AAO9G;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,aAAa,SAAS,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC9G,QAAQ,EAAE,WAAW,CACpB,CAAC,EACD,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,GACnC,KAAK,CAAC,KAAK,CAAC,GACZ;KACC,KAAK,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;CACjG,CACH,EACD,OAAO,GAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,CAAM,GAC3E,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAkBlC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BaseError } from '../../../../infrastructure/class/base/error.class.js';
|
|
2
|
+
import { getInjectableMetadata } from '../injectable-metadata/get.utility.js';
|
|
3
|
+
import { createAutowireProvider } from './autowire-provider.utility.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates autowired provider using token defined in injectable metadata.
|
|
7
|
+
* @param {Constructor<T>} useClass Class constructor to instantiate.
|
|
8
|
+
* @param {Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">} [options] Optional provider overrides.
|
|
9
|
+
* @returns {IClassProvider<T, TDependencies>} Class provider definition.
|
|
10
|
+
* @template T Provider instance type.
|
|
11
|
+
* @template TDependencies Constructor dependency tokens.
|
|
12
|
+
*/
|
|
13
|
+
function autowire(useClass, options = {}) {
|
|
14
|
+
const metadata = getInjectableMetadata(useClass);
|
|
15
|
+
const metadataToken = metadata?.token;
|
|
16
|
+
if (!metadataToken || typeof metadataToken !== "symbol") {
|
|
17
|
+
throw new BaseError("Injectable metadata token is missing; use @Injectable({ token }) or createAutowireProvider(..., { token })", {
|
|
18
|
+
code: "INJECTABLE_TOKEN_MISSING",
|
|
19
|
+
context: {
|
|
20
|
+
className: useClass.name ?? "anonymous-class",
|
|
21
|
+
},
|
|
22
|
+
source: "autowire",
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return createAutowireProvider(useClass, {
|
|
26
|
+
...options,
|
|
27
|
+
token: metadataToken,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { autowire };
|
|
32
|
+
//# sourceMappingURL=autowire.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autowire.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/autowire.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AASA;;;;;;;AAOG;SACa,QAAQ,CACvB,QAOC,EACD,UAA2E,EAAE,EAAA;AAE7E,IAAA,MAAM,QAAQ,GAAoC,qBAAqB,CAAC,QAAgC,CAAC;AACzG,IAAA,MAAM,aAAa,GAAyB,QAAQ,EAAE,KAA6B;IAEnF,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACxD,QAAA,MAAM,IAAI,SAAS,CAAC,4GAA4G,EAAE;AACjI,YAAA,IAAI,EAAE,0BAA0B;AAChC,YAAA,OAAO,EAAE;AACR,gBAAA,SAAS,EAAG,QAAyC,CAAC,IAAI,IAAI,iBAAiB;AAC/E,aAAA;AACD,YAAA,MAAM,EAAE,UAAU;AAClB,SAAA,CAAC;IACH;IAEA,OAAO,sBAAsB,CAAC,QAAQ,EAAE;AACvC,QAAA,GAAG,OAAO;AACV,QAAA,KAAK,EAAE,aAAa;AACpB,KAAA,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createAutowireProvider } from './autowire-provider.utility';
|
|
2
|
+
export { autowire } from './autowire.utility';
|
|
3
|
+
export { createModuleFromDecorator } from './module-from-decorator.utility';
|
|
4
|
+
export { createModule } from './module.utility';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IDIModule } from '../../../../domain/interface/index';
|
|
2
|
+
import type { Constructor } from '../../../../domain/type/index';
|
|
3
|
+
/**
|
|
4
|
+
* Builds a module definition from a class decorated with @Module.
|
|
5
|
+
* @param {Constructor<unknown>} moduleClass Decorated module class.
|
|
6
|
+
* @returns {IDIModule} Normalized module definition.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createModuleFromDecorator(moduleClass: Constructor<unknown>): IDIModule;
|
|
9
|
+
//# sourceMappingURL=module-from-decorator.utility.d.ts.map
|
package/dist/esm/presentation/ergonomics/utility/create/module-from-decorator.utility.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-from-decorator.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/module-from-decorator.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,cAAc,CAAC;AAS1D;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAEtF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { BaseError } from '../../../../infrastructure/class/base/error.class.js';
|
|
2
|
+
import { getModuleMetadata } from '../module-metadata/get.utility.js';
|
|
3
|
+
import { autowire } from './autowire.utility.js';
|
|
4
|
+
import { createModule } from './module.utility.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Builds a module definition from a class decorated with @Module.
|
|
8
|
+
* @param {Constructor<unknown>} moduleClass Decorated module class.
|
|
9
|
+
* @returns {IDIModule} Normalized module definition.
|
|
10
|
+
*/
|
|
11
|
+
function createModuleFromDecorator(moduleClass) {
|
|
12
|
+
return resolveModuleClass(moduleClass, new Map(), []);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether input is constructable class constructor.
|
|
16
|
+
* @param {unknown} candidate Candidate value.
|
|
17
|
+
* @returns {boolean} True when value is a constructable class.
|
|
18
|
+
*/
|
|
19
|
+
function isConstructable(candidate) {
|
|
20
|
+
if (typeof candidate !== "function") {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const candidateAsConstructor = candidate;
|
|
24
|
+
const prototype = candidateAsConstructor.prototype;
|
|
25
|
+
return !!prototype && prototype.constructor === candidate;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks whether input is module definition shape.
|
|
29
|
+
* @param {unknown} candidate Candidate value.
|
|
30
|
+
* @returns {boolean} True when candidate is module definition-like.
|
|
31
|
+
*/
|
|
32
|
+
function isModuleDefinition(candidate) {
|
|
33
|
+
if (typeof candidate !== "object" || candidate === null) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
const moduleCandidate = candidate;
|
|
37
|
+
return Array.isArray(moduleCandidate.exports) && Array.isArray(moduleCandidate.imports) && Array.isArray(moduleCandidate.providers);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Checks whether input is provider definition shape.
|
|
41
|
+
* @param {unknown} candidate Candidate value.
|
|
42
|
+
* @returns {boolean} True when candidate is provider-like object.
|
|
43
|
+
*/
|
|
44
|
+
function isProviderDefinition(candidate) {
|
|
45
|
+
if (typeof candidate !== "object" || candidate === null) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const providerCandidate = candidate;
|
|
49
|
+
return typeof providerCandidate.provide === "symbol";
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolves module class recursively into module definition.
|
|
53
|
+
* @param {Constructor<unknown>} moduleClass Decorated module class.
|
|
54
|
+
* @param {Map<Constructor<unknown>, IDIModule>} cache Resolved module cache.
|
|
55
|
+
* @param {Array<Constructor<unknown>>} path Current recursion path.
|
|
56
|
+
* @returns {IDIModule} Resolved module definition.
|
|
57
|
+
*/
|
|
58
|
+
function resolveModuleClass(moduleClass, cache, path) {
|
|
59
|
+
const cachedModuleDefinition = cache.get(moduleClass);
|
|
60
|
+
if (cachedModuleDefinition) {
|
|
61
|
+
return cachedModuleDefinition;
|
|
62
|
+
}
|
|
63
|
+
if (path.includes(moduleClass)) {
|
|
64
|
+
throw new BaseError("Circular module decorator imports detected", {
|
|
65
|
+
code: "MODULE_DECORATOR_CIRCULAR_IMPORT",
|
|
66
|
+
context: {
|
|
67
|
+
cyclePath: [...path, moduleClass].map((currentModuleClass) => currentModuleClass.name || "anonymous-module-class"),
|
|
68
|
+
},
|
|
69
|
+
source: "createModuleFromDecorator",
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const metadata = getModuleMetadata(moduleClass);
|
|
73
|
+
if (!metadata) {
|
|
74
|
+
throw new BaseError("Module metadata not found on class; decorate class with @Module", {
|
|
75
|
+
code: "MODULE_DECORATOR_METADATA_MISSING",
|
|
76
|
+
context: {
|
|
77
|
+
className: moduleClass.name || "anonymous-module-class",
|
|
78
|
+
},
|
|
79
|
+
source: "createModuleFromDecorator",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const nextPath = [...path, moduleClass];
|
|
83
|
+
const imports = (metadata.imports ?? []).map((importEntry) => resolveModuleImport(importEntry, cache, nextPath));
|
|
84
|
+
const providers = (metadata.providers ?? []).map((providerEntry) => resolveModuleProvider(providerEntry));
|
|
85
|
+
const moduleName = metadata.name ?? (moduleClass.name || undefined);
|
|
86
|
+
const moduleDefinition = createModule({
|
|
87
|
+
exports: metadata.exports,
|
|
88
|
+
imports,
|
|
89
|
+
name: moduleName,
|
|
90
|
+
providers,
|
|
91
|
+
});
|
|
92
|
+
cache.set(moduleClass, moduleDefinition);
|
|
93
|
+
return moduleDefinition;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Resolves module import entry to module definition.
|
|
97
|
+
* @param {Constructor<unknown> | IDIModule} importEntry Module import entry.
|
|
98
|
+
* @param {Map<Constructor<unknown>, IDIModule>} cache Resolved module cache.
|
|
99
|
+
* @param {Array<Constructor<unknown>>} path Current recursion path.
|
|
100
|
+
* @returns {IDIModule} Resolved module definition.
|
|
101
|
+
*/
|
|
102
|
+
function resolveModuleImport(importEntry, cache, path) {
|
|
103
|
+
if (isModuleDefinition(importEntry)) {
|
|
104
|
+
return importEntry;
|
|
105
|
+
}
|
|
106
|
+
if (isConstructable(importEntry)) {
|
|
107
|
+
return resolveModuleClass(importEntry, cache, path);
|
|
108
|
+
}
|
|
109
|
+
throw new BaseError("Module import must be a decorated module class or module definition", {
|
|
110
|
+
code: "MODULE_DECORATOR_IMPORT_INVALID",
|
|
111
|
+
source: "createModuleFromDecorator",
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Resolves module provider entry to provider definition.
|
|
116
|
+
* @param {Constructor<unknown> | Provider} providerEntry Module provider entry.
|
|
117
|
+
* @returns {Provider} Resolved provider definition.
|
|
118
|
+
*/
|
|
119
|
+
function resolveModuleProvider(providerEntry) {
|
|
120
|
+
if (isProviderDefinition(providerEntry)) {
|
|
121
|
+
return providerEntry;
|
|
122
|
+
}
|
|
123
|
+
if (isConstructable(providerEntry)) {
|
|
124
|
+
return autowire(providerEntry);
|
|
125
|
+
}
|
|
126
|
+
throw new BaseError("Module provider must be a decorated class or provider definition", {
|
|
127
|
+
code: "MODULE_DECORATOR_PROVIDER_INVALID",
|
|
128
|
+
source: "createModuleFromDecorator",
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export { createModuleFromDecorator };
|
|
133
|
+
//# sourceMappingURL=module-from-decorator.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-from-decorator.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/module-from-decorator.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IDIModule } from '../../../../domain/interface/index';
|
|
2
|
+
import type { ICreateModuleOptions } from '../../interface/index';
|
|
3
|
+
/**
|
|
4
|
+
* Builds a declarative module definition for DI composition.
|
|
5
|
+
* @param {ICreateModuleOptions} options Module configuration.
|
|
6
|
+
* @returns {IDIModule} Normalized module definition.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createModule(options: ICreateModuleOptions): IDIModule;
|
|
9
|
+
//# sourceMappingURL=module.utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/create/module.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CASrE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a declarative module definition for DI composition.
|
|
3
|
+
* @param {ICreateModuleOptions} options Module configuration.
|
|
4
|
+
* @returns {IDIModule} Normalized module definition.
|
|
5
|
+
*/
|
|
6
|
+
function createModule(options) {
|
|
7
|
+
const moduleDefinition = {
|
|
8
|
+
exports: Object.freeze([...(options.exports ?? [])]),
|
|
9
|
+
imports: Object.freeze([...(options.imports ?? [])]),
|
|
10
|
+
name: options.name,
|
|
11
|
+
providers: Object.freeze([...(options.providers ?? [])]),
|
|
12
|
+
};
|
|
13
|
+
return Object.freeze(moduleDefinition);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { createModule };
|
|
17
|
+
//# sourceMappingURL=module.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.utility.js","sources":["../../../../../../../src/presentation/ergonomics/utility/create/module.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;;;;AAIG;AACG,SAAU,YAAY,CAAC,OAA6B,EAAA;AACzD,IAAA,MAAM,gBAAgB,GAAc;AACnC,QAAA,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACvC;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { composeDecoratedModules } from './compose-decorated-modules.utility';
|
|
2
|
+
export { composeModules } from './compose-modules.utility';
|
|
3
|
+
export * from './create/index';
|
|
4
|
+
export * from './injectable-metadata/index';
|
|
5
|
+
export * from './module-metadata/index';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/ergonomics/utility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Constructor } from '../../../../domain/type/index';
|
|
2
|
+
import type { IInjectableMetadata } from '../../interface/index';
|
|
3
|
+
/**
|
|
4
|
+
* Reads injectable metadata from a class constructor.
|
|
5
|
+
* @param {Constructor<unknown>} target Constructor to inspect.
|
|
6
|
+
* @returns {IInjectableMetadata | undefined} Stored metadata.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getInjectableMetadata(target: Constructor<unknown>): IInjectableMetadata | undefined;
|
|
9
|
+
//# sourceMappingURL=get.utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.utility.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/ergonomics/utility/injectable-metadata/get.utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAI9E;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,mBAAmB,GAAG,SAAS,CASnG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { INJECTABLE_METADATA_KEY } from '../../constant/injectable-metadata-key.constant.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reads injectable metadata from a class constructor.
|
|
5
|
+
* @param {Constructor<unknown>} target Constructor to inspect.
|
|
6
|
+
* @returns {IInjectableMetadata | undefined} Stored metadata.
|
|
7
|
+
*/
|
|
8
|
+
function getInjectableMetadata(target) {
|
|
9
|
+
const targetWithMetadata = target;
|
|
10
|
+
const hasOwnMetadata = Object.prototype.hasOwnProperty.call(targetWithMetadata, INJECTABLE_METADATA_KEY);
|
|
11
|
+
if (!hasOwnMetadata) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return targetWithMetadata[INJECTABLE_METADATA_KEY];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { getInjectableMetadata };
|
|
18
|
+
//# sourceMappingURL=get.utility.js.map
|