@venizia/ignis-kernel 0.4.3 → 0.4.4
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/LICENSE.md +2 -5
- package/README.md +13 -0
- package/dist/esm/base/applications/common/types/application.d.ts +1 -1
- package/dist/esm/base/applications/common/types/application.d.ts.map +1 -1
- package/dist/esm/base/applications/common/types/application.js.map +1 -1
- package/dist/esm/base/applications/common/types/middlewares.d.ts +7 -1
- package/dist/esm/base/applications/common/types/middlewares.d.ts.map +1 -1
- package/dist/esm/base/applications/common/types/middlewares.js.map +1 -1
- package/dist/esm/base/applications/rest.d.ts +1 -1
- package/dist/esm/base/applications/rest.d.ts.map +1 -1
- package/dist/esm/base/applications/rest.js +8 -24
- package/dist/esm/base/applications/rest.js.map +1 -1
- package/dist/esm/base/metadata/model-metadata.d.ts +4 -6
- package/dist/esm/base/metadata/model-metadata.d.ts.map +1 -1
- package/dist/esm/base/metadata/model-metadata.js +12 -25
- package/dist/esm/base/metadata/model-metadata.js.map +1 -1
- package/dist/esm/helpers/inversion/common/types/model.d.ts +0 -12
- package/dist/esm/helpers/inversion/common/types/model.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/common/types/model.js.map +1 -1
- package/dist/esm/helpers/inversion/mixins/artifact.mixin.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/mixins/controllers/controller.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/mixins/controllers/grpc.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/mixins/controllers/rest.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/mixins/datasource.mixin.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/mixins/model.mixin.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/mixins/repository.mixin.d.ts.map +1 -1
- package/dist/esm/helpers/inversion/registry.d.ts.map +1 -1
- package/package.json +13 -23
- package/dist/cjs/base/applications/abstract.d.ts +0 -43
- package/dist/cjs/base/applications/abstract.d.ts.map +0 -1
- package/dist/cjs/base/applications/abstract.js +0 -96
- package/dist/cjs/base/applications/abstract.js.map +0 -1
- package/dist/cjs/base/applications/artifact-group.d.ts +0 -63
- package/dist/cjs/base/applications/artifact-group.d.ts.map +0 -1
- package/dist/cjs/base/applications/artifact-group.js +0 -136
- package/dist/cjs/base/applications/artifact-group.js.map +0 -1
- package/dist/cjs/base/applications/artifact-index.d.ts +0 -45
- package/dist/cjs/base/applications/artifact-index.d.ts.map +0 -1
- package/dist/cjs/base/applications/artifact-index.js +0 -238
- package/dist/cjs/base/applications/artifact-index.js.map +0 -1
- package/dist/cjs/base/applications/boot-sequence.d.ts +0 -33
- package/dist/cjs/base/applications/boot-sequence.d.ts.map +0 -1
- package/dist/cjs/base/applications/boot-sequence.js +0 -66
- package/dist/cjs/base/applications/boot-sequence.js.map +0 -1
- package/dist/cjs/base/applications/common/constants.d.ts +0 -24
- package/dist/cjs/base/applications/common/constants.d.ts.map +0 -1
- package/dist/cjs/base/applications/common/constants.js +0 -36
- package/dist/cjs/base/applications/common/constants.js.map +0 -1
- package/dist/cjs/base/applications/common/index.d.ts +0 -3
- package/dist/cjs/base/applications/common/index.d.ts.map +0 -1
- package/dist/cjs/base/applications/common/index.js +0 -19
- package/dist/cjs/base/applications/common/index.js.map +0 -1
- package/dist/cjs/base/applications/common/types/application.d.ts +0 -83
- package/dist/cjs/base/applications/common/types/application.d.ts.map +0 -1
- package/dist/cjs/base/applications/common/types/application.js +0 -3
- package/dist/cjs/base/applications/common/types/application.js.map +0 -1
- package/dist/cjs/base/applications/common/types/artifacts.d.ts +0 -38
- package/dist/cjs/base/applications/common/types/artifacts.d.ts.map +0 -1
- package/dist/cjs/base/applications/common/types/artifacts.js +0 -3
- package/dist/cjs/base/applications/common/types/artifacts.js.map +0 -1
- package/dist/cjs/base/applications/common/types/index.d.ts +0 -4
- package/dist/cjs/base/applications/common/types/index.d.ts.map +0 -1
- package/dist/cjs/base/applications/common/types/index.js +0 -20
- package/dist/cjs/base/applications/common/types/index.js.map +0 -1
- package/dist/cjs/base/applications/common/types/middlewares.d.ts +0 -44
- package/dist/cjs/base/applications/common/types/middlewares.d.ts.map +0 -1
- package/dist/cjs/base/applications/common/types/middlewares.js +0 -3
- package/dist/cjs/base/applications/common/types/middlewares.js.map +0 -1
- package/dist/cjs/base/applications/cors.d.ts +0 -13
- package/dist/cjs/base/applications/cors.d.ts.map +0 -1
- package/dist/cjs/base/applications/cors.js +0 -43
- package/dist/cjs/base/applications/cors.js.map +0 -1
- package/dist/cjs/base/applications/deprecations.d.ts +0 -10
- package/dist/cjs/base/applications/deprecations.d.ts.map +0 -1
- package/dist/cjs/base/applications/deprecations.js +0 -23
- package/dist/cjs/base/applications/deprecations.js.map +0 -1
- package/dist/cjs/base/applications/index.d.ts +0 -6
- package/dist/cjs/base/applications/index.d.ts.map +0 -1
- package/dist/cjs/base/applications/index.js +0 -22
- package/dist/cjs/base/applications/index.js.map +0 -1
- package/dist/cjs/base/applications/rest.d.ts +0 -154
- package/dist/cjs/base/applications/rest.d.ts.map +0 -1
- package/dist/cjs/base/applications/rest.js +0 -660
- package/dist/cjs/base/applications/rest.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/codecs.d.ts +0 -11
- package/dist/cjs/base/auth/authenticate/common/codecs.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/codecs.js +0 -28
- package/dist/cjs/base/auth/authenticate/common/codecs.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/authentication.d.ts +0 -34
- package/dist/cjs/base/auth/authenticate/common/constants/authentication.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/authentication.js +0 -44
- package/dist/cjs/base/auth/authenticate/common/constants/authentication.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/index.d.ts +0 -4
- package/dist/cjs/base/auth/authenticate/common/constants/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/index.js +0 -20
- package/dist/cjs/base/auth/authenticate/common/constants/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/jose.d.ts +0 -40
- package/dist/cjs/base/auth/authenticate/common/constants/jose.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/jose.js +0 -51
- package/dist/cjs/base/auth/authenticate/common/constants/jose.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/service-assertion.d.ts +0 -25
- package/dist/cjs/base/auth/authenticate/common/constants/service-assertion.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/constants/service-assertion.js +0 -28
- package/dist/cjs/base/auth/authenticate/common/constants/service-assertion.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/errors.d.ts +0 -130
- package/dist/cjs/base/auth/authenticate/common/errors.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/errors.js +0 -121
- package/dist/cjs/base/auth/authenticate/common/errors.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/index.d.ts +0 -6
- package/dist/cjs/base/auth/authenticate/common/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/index.js +0 -22
- package/dist/cjs/base/auth/authenticate/common/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/keys.d.ts +0 -9
- package/dist/cjs/base/auth/authenticate/common/keys.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/keys.js +0 -13
- package/dist/cjs/base/auth/authenticate/common/keys.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/basic.d.ts +0 -14
- package/dist/cjs/base/auth/authenticate/common/types/basic.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/basic.js +0 -3
- package/dist/cjs/base/auth/authenticate/common/types/basic.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/index.d.ts +0 -7
- package/dist/cjs/base/auth/authenticate/common/types/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/index.js +0 -23
- package/dist/cjs/base/auth/authenticate/common/types/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/jwt.d.ts +0 -136
- package/dist/cjs/base/auth/authenticate/common/types/jwt.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/jwt.js +0 -3
- package/dist/cjs/base/auth/authenticate/common/types/jwt.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/options.d.ts +0 -15
- package/dist/cjs/base/auth/authenticate/common/types/options.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/options.js +0 -3
- package/dist/cjs/base/auth/authenticate/common/types/options.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/rest.d.ts +0 -49
- package/dist/cjs/base/auth/authenticate/common/types/rest.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/rest.js +0 -3
- package/dist/cjs/base/auth/authenticate/common/types/rest.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/service.d.ts +0 -95
- package/dist/cjs/base/auth/authenticate/common/types/service.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/service.js +0 -3
- package/dist/cjs/base/auth/authenticate/common/types/service.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/strategy.d.ts +0 -26
- package/dist/cjs/base/auth/authenticate/common/types/strategy.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/common/types/strategy.js +0 -3
- package/dist/cjs/base/auth/authenticate/common/types/strategy.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/index.d.ts +0 -5
- package/dist/cjs/base/auth/authenticate/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/index.js +0 -21
- package/dist/cjs/base/auth/authenticate/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/middlewares/authenticate.middleware.d.ts +0 -7
- package/dist/cjs/base/auth/authenticate/middlewares/authenticate.middleware.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/middlewares/authenticate.middleware.js +0 -11
- package/dist/cjs/base/auth/authenticate/middlewares/authenticate.middleware.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/middlewares/index.d.ts +0 -2
- package/dist/cjs/base/auth/authenticate/middlewares/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/middlewares/index.js +0 -18
- package/dist/cjs/base/auth/authenticate/middlewares/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/providers/authentication.provider.d.ts +0 -13
- package/dist/cjs/base/auth/authenticate/providers/authentication.provider.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/providers/authentication.provider.js +0 -119
- package/dist/cjs/base/auth/authenticate/providers/authentication.provider.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/providers/index.d.ts +0 -2
- package/dist/cjs/base/auth/authenticate/providers/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/providers/index.js +0 -18
- package/dist/cjs/base/auth/authenticate/providers/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/strategies/index.d.ts +0 -2
- package/dist/cjs/base/auth/authenticate/strategies/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/strategies/index.js +0 -18
- package/dist/cjs/base/auth/authenticate/strategies/index.js.map +0 -1
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.d.ts +0 -58
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.d.ts.map +0 -1
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.js +0 -87
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.js.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/grant.builder.d.ts +0 -75
- package/dist/cjs/base/auth/authorize/builders/grant.builder.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/grant.builder.js +0 -229
- package/dist/cjs/base/auth/authorize/builders/grant.builder.js.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/index.d.ts +0 -4
- package/dist/cjs/base/auth/authorize/builders/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/index.js +0 -20
- package/dist/cjs/base/auth/authorize/builders/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/permission.builder.d.ts +0 -80
- package/dist/cjs/base/auth/authorize/builders/permission.builder.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/permission.builder.js +0 -95
- package/dist/cjs/base/auth/authorize/builders/permission.builder.js.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/policy.builder.d.ts +0 -201
- package/dist/cjs/base/auth/authorize/builders/policy.builder.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/builders/policy.builder.js +0 -130
- package/dist/cjs/base/auth/authorize/builders/policy.builder.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/authorization.d.ts +0 -134
- package/dist/cjs/base/auth/authorize/common/constants/authorization.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/authorization.js +0 -175
- package/dist/cjs/base/auth/authorize/common/constants/authorization.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/binding-keys.d.ts +0 -6
- package/dist/cjs/base/auth/authorize/common/constants/binding-keys.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/binding-keys.js +0 -12
- package/dist/cjs/base/auth/authorize/common/constants/binding-keys.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/enforcer.d.ts +0 -54
- package/dist/cjs/base/auth/authorize/common/constants/enforcer.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/enforcer.js +0 -70
- package/dist/cjs/base/auth/authorize/common/constants/enforcer.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/index.d.ts +0 -4
- package/dist/cjs/base/auth/authorize/common/constants/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/constants/index.js +0 -20
- package/dist/cjs/base/auth/authorize/common/constants/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/errors.d.ts +0 -60
- package/dist/cjs/base/auth/authorize/common/errors.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/errors.js +0 -53
- package/dist/cjs/base/auth/authorize/common/errors.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/index.d.ts +0 -4
- package/dist/cjs/base/auth/authorize/common/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/index.js +0 -20
- package/dist/cjs/base/auth/authorize/common/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/enforcer.d.ts +0 -113
- package/dist/cjs/base/auth/authorize/common/types/enforcer.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/enforcer.js +0 -3
- package/dist/cjs/base/auth/authorize/common/types/enforcer.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/grant.d.ts +0 -18
- package/dist/cjs/base/auth/authorize/common/types/grant.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/grant.js +0 -3
- package/dist/cjs/base/auth/authorize/common/types/grant.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/index.d.ts +0 -4
- package/dist/cjs/base/auth/authorize/common/types/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/index.js +0 -20
- package/dist/cjs/base/auth/authorize/common/types/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/request.d.ts +0 -37
- package/dist/cjs/base/auth/authorize/common/types/request.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/common/types/request.js +0 -3
- package/dist/cjs/base/auth/authorize/common/types/request.js.map +0 -1
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.d.ts +0 -68
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.js +0 -137
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.js.map +0 -1
- package/dist/cjs/base/auth/authorize/enforcers/index.d.ts +0 -2
- package/dist/cjs/base/auth/authorize/enforcers/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/enforcers/index.js +0 -18
- package/dist/cjs/base/auth/authorize/enforcers/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/index.d.ts +0 -7
- package/dist/cjs/base/auth/authorize/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/index.js +0 -23
- package/dist/cjs/base/auth/authorize/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/middlewares/authorize.middleware.d.ts +0 -6
- package/dist/cjs/base/auth/authorize/middlewares/authorize.middleware.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/middlewares/authorize.middleware.js +0 -11
- package/dist/cjs/base/auth/authorize/middlewares/authorize.middleware.js.map +0 -1
- package/dist/cjs/base/auth/authorize/middlewares/index.d.ts +0 -2
- package/dist/cjs/base/auth/authorize/middlewares/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/middlewares/index.js +0 -18
- package/dist/cjs/base/auth/authorize/middlewares/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/models/authorization-role.model.d.ts +0 -30
- package/dist/cjs/base/auth/authorize/models/authorization-role.model.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/models/authorization-role.model.js +0 -30
- package/dist/cjs/base/auth/authorize/models/authorization-role.model.js.map +0 -1
- package/dist/cjs/base/auth/authorize/models/index.d.ts +0 -2
- package/dist/cjs/base/auth/authorize/models/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/models/index.js +0 -18
- package/dist/cjs/base/auth/authorize/models/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.d.ts +0 -10
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.js +0 -163
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.js.map +0 -1
- package/dist/cjs/base/auth/authorize/providers/index.d.ts +0 -3
- package/dist/cjs/base/auth/authorize/providers/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/providers/index.js +0 -19
- package/dist/cjs/base/auth/authorize/providers/index.js.map +0 -1
- package/dist/cjs/base/auth/authorize/providers/request-domain.d.ts +0 -16
- package/dist/cjs/base/auth/authorize/providers/request-domain.d.ts.map +0 -1
- package/dist/cjs/base/auth/authorize/providers/request-domain.js +0 -51
- package/dist/cjs/base/auth/authorize/providers/request-domain.js.map +0 -1
- package/dist/cjs/base/auth/base/abstract-auth-registry.d.ts +0 -38
- package/dist/cjs/base/auth/base/abstract-auth-registry.d.ts.map +0 -1
- package/dist/cjs/base/auth/base/abstract-auth-registry.js +0 -71
- package/dist/cjs/base/auth/base/abstract-auth-registry.js.map +0 -1
- package/dist/cjs/base/auth/base/index.d.ts +0 -2
- package/dist/cjs/base/auth/base/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/base/index.js +0 -18
- package/dist/cjs/base/auth/base/index.js.map +0 -1
- package/dist/cjs/base/auth/context-variables.d.ts +0 -20
- package/dist/cjs/base/auth/context-variables.d.ts.map +0 -1
- package/dist/cjs/base/auth/context-variables.js +0 -3
- package/dist/cjs/base/auth/context-variables.js.map +0 -1
- package/dist/cjs/base/auth/index.d.ts +0 -6
- package/dist/cjs/base/auth/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/index.js +0 -22
- package/dist/cjs/base/auth/index.js.map +0 -1
- package/dist/cjs/base/auth/models/index.d.ts +0 -2
- package/dist/cjs/base/auth/models/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/models/index.js +0 -18
- package/dist/cjs/base/auth/models/index.js.map +0 -1
- package/dist/cjs/base/auth/models/requests/change-password.schema.d.ts +0 -9
- package/dist/cjs/base/auth/models/requests/change-password.schema.d.ts.map +0 -1
- package/dist/cjs/base/auth/models/requests/change-password.schema.js +0 -23
- package/dist/cjs/base/auth/models/requests/change-password.schema.js.map +0 -1
- package/dist/cjs/base/auth/models/requests/index.d.ts +0 -4
- package/dist/cjs/base/auth/models/requests/index.d.ts.map +0 -1
- package/dist/cjs/base/auth/models/requests/index.js +0 -20
- package/dist/cjs/base/auth/models/requests/index.js.map +0 -1
- package/dist/cjs/base/auth/models/requests/sign-in.schema.d.ts +0 -14
- package/dist/cjs/base/auth/models/requests/sign-in.schema.d.ts.map +0 -1
- package/dist/cjs/base/auth/models/requests/sign-in.schema.js +0 -44
- package/dist/cjs/base/auth/models/requests/sign-in.schema.js.map +0 -1
- package/dist/cjs/base/auth/models/requests/sign-up.schema.d.ts +0 -7
- package/dist/cjs/base/auth/models/requests/sign-up.schema.d.ts.map +0 -1
- package/dist/cjs/base/auth/models/requests/sign-up.schema.js +0 -19
- package/dist/cjs/base/auth/models/requests/sign-up.schema.js.map +0 -1
- package/dist/cjs/base/components/base.d.ts +0 -30
- package/dist/cjs/base/components/base.d.ts.map +0 -1
- package/dist/cjs/base/components/base.js +0 -48
- package/dist/cjs/base/components/base.js.map +0 -1
- package/dist/cjs/base/components/controller/index.d.ts +0 -2
- package/dist/cjs/base/components/controller/index.d.ts.map +0 -1
- package/dist/cjs/base/components/controller/index.js +0 -18
- package/dist/cjs/base/components/controller/index.js.map +0 -1
- package/dist/cjs/base/components/controller/rest/common/index.d.ts +0 -2
- package/dist/cjs/base/components/controller/rest/common/index.d.ts.map +0 -1
- package/dist/cjs/base/components/controller/rest/common/index.js +0 -18
- package/dist/cjs/base/components/controller/rest/common/index.js.map +0 -1
- package/dist/cjs/base/components/controller/rest/common/types.d.ts +0 -6
- package/dist/cjs/base/components/controller/rest/common/types.d.ts.map +0 -1
- package/dist/cjs/base/components/controller/rest/common/types.js +0 -8
- package/dist/cjs/base/components/controller/rest/common/types.js.map +0 -1
- package/dist/cjs/base/components/controller/rest/index.d.ts +0 -3
- package/dist/cjs/base/components/controller/rest/index.d.ts.map +0 -1
- package/dist/cjs/base/components/controller/rest/index.js +0 -19
- package/dist/cjs/base/components/controller/rest/index.js.map +0 -1
- package/dist/cjs/base/components/controller/rest/rest.component.d.ts +0 -16
- package/dist/cjs/base/components/controller/rest/rest.component.d.ts.map +0 -1
- package/dist/cjs/base/components/controller/rest/rest.component.js +0 -70
- package/dist/cjs/base/components/controller/rest/rest.component.js.map +0 -1
- package/dist/cjs/base/components/index.d.ts +0 -3
- package/dist/cjs/base/components/index.d.ts.map +0 -1
- package/dist/cjs/base/components/index.js +0 -19
- package/dist/cjs/base/components/index.js.map +0 -1
- package/dist/cjs/base/configurations/base.d.ts +0 -14
- package/dist/cjs/base/configurations/base.d.ts.map +0 -1
- package/dist/cjs/base/configurations/base.js +0 -21
- package/dist/cjs/base/configurations/base.js.map +0 -1
- package/dist/cjs/base/configurations/common/index.d.ts +0 -2
- package/dist/cjs/base/configurations/common/index.d.ts.map +0 -1
- package/dist/cjs/base/configurations/common/index.js +0 -18
- package/dist/cjs/base/configurations/common/index.js.map +0 -1
- package/dist/cjs/base/configurations/common/types.d.ts +0 -3
- package/dist/cjs/base/configurations/common/types.d.ts.map +0 -1
- package/dist/cjs/base/configurations/common/types.js +0 -3
- package/dist/cjs/base/configurations/common/types.js.map +0 -1
- package/dist/cjs/base/configurations/index.d.ts +0 -3
- package/dist/cjs/base/configurations/index.d.ts.map +0 -1
- package/dist/cjs/base/configurations/index.js +0 -19
- package/dist/cjs/base/configurations/index.js.map +0 -1
- package/dist/cjs/base/controllers/common/constants.d.ts +0 -40
- package/dist/cjs/base/controllers/common/constants.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/constants.js +0 -65
- package/dist/cjs/base/controllers/common/constants.js.map +0 -1
- package/dist/cjs/base/controllers/common/html-response.d.ts +0 -70
- package/dist/cjs/base/controllers/common/html-response.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/html-response.js +0 -35
- package/dist/cjs/base/controllers/common/html-response.js.map +0 -1
- package/dist/cjs/base/controllers/common/index.d.ts +0 -6
- package/dist/cjs/base/controllers/common/index.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/index.js +0 -23
- package/dist/cjs/base/controllers/common/index.js.map +0 -1
- package/dist/cjs/base/controllers/common/schema-builders.d.ts +0 -10
- package/dist/cjs/base/controllers/common/schema-builders.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/schema-builders.js +0 -23
- package/dist/cjs/base/controllers/common/schema-builders.js.map +0 -1
- package/dist/cjs/base/controllers/common/schemas.d.ts +0 -22
- package/dist/cjs/base/controllers/common/schemas.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/schemas.js +0 -41
- package/dist/cjs/base/controllers/common/schemas.js.map +0 -1
- package/dist/cjs/base/controllers/common/types/context.d.ts +0 -29
- package/dist/cjs/base/controllers/common/types/context.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/types/context.js +0 -3
- package/dist/cjs/base/controllers/common/types/context.js.map +0 -1
- package/dist/cjs/base/controllers/common/types/controller.d.ts +0 -67
- package/dist/cjs/base/controllers/common/types/controller.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/types/controller.js +0 -3
- package/dist/cjs/base/controllers/common/types/controller.js.map +0 -1
- package/dist/cjs/base/controllers/common/types/index.d.ts +0 -4
- package/dist/cjs/base/controllers/common/types/index.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/types/index.js +0 -20
- package/dist/cjs/base/controllers/common/types/index.js.map +0 -1
- package/dist/cjs/base/controllers/common/types/route.d.ts +0 -86
- package/dist/cjs/base/controllers/common/types/route.d.ts.map +0 -1
- package/dist/cjs/base/controllers/common/types/route.js +0 -3
- package/dist/cjs/base/controllers/common/types/route.js.map +0 -1
- package/dist/cjs/base/controllers/context.d.ts +0 -5
- package/dist/cjs/base/controllers/context.d.ts.map +0 -1
- package/dist/cjs/base/controllers/context.js +0 -9
- package/dist/cjs/base/controllers/context.js.map +0 -1
- package/dist/cjs/base/controllers/factory/authorize-guard.d.ts +0 -19
- package/dist/cjs/base/controllers/factory/authorize-guard.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/authorize-guard.js +0 -60
- package/dist/cjs/base/controllers/factory/authorize-guard.js.map +0 -1
- package/dist/cjs/base/controllers/factory/controller.d.ts +0 -210
- package/dist/cjs/base/controllers/factory/controller.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/controller.js +0 -137
- package/dist/cjs/base/controllers/factory/controller.js.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/abstract.d.ts +0 -40
- package/dist/cjs/base/controllers/factory/crud/abstract.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/abstract.js +0 -40
- package/dist/cjs/base/controllers/factory/crud/abstract.js.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/index.d.ts +0 -4
- package/dist/cjs/base/controllers/factory/crud/index.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/index.js +0 -20
- package/dist/cjs/base/controllers/factory/crud/index.js.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/persistable.d.ts +0 -37
- package/dist/cjs/base/controllers/factory/crud/persistable.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/persistable.js +0 -129
- package/dist/cjs/base/controllers/factory/crud/persistable.js.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/readable.d.ts +0 -30
- package/dist/cjs/base/controllers/factory/crud/readable.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/crud/readable.js +0 -118
- package/dist/cjs/base/controllers/factory/crud/readable.js.map +0 -1
- package/dist/cjs/base/controllers/factory/definition.d.ts +0 -1149
- package/dist/cjs/base/controllers/factory/definition.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/definition.js +0 -470
- package/dist/cjs/base/controllers/factory/definition.js.map +0 -1
- package/dist/cjs/base/controllers/factory/helper.d.ts +0 -2
- package/dist/cjs/base/controllers/factory/helper.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/helper.js +0 -3
- package/dist/cjs/base/controllers/factory/helper.js.map +0 -1
- package/dist/cjs/base/controllers/factory/index.d.ts +0 -5
- package/dist/cjs/base/controllers/factory/index.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/index.js +0 -21
- package/dist/cjs/base/controllers/factory/index.js.map +0 -1
- package/dist/cjs/base/controllers/factory/repository-injection.d.ts +0 -14
- package/dist/cjs/base/controllers/factory/repository-injection.d.ts.map +0 -1
- package/dist/cjs/base/controllers/factory/repository-injection.js +0 -31
- package/dist/cjs/base/controllers/factory/repository-injection.js.map +0 -1
- package/dist/cjs/base/controllers/index.d.ts +0 -5
- package/dist/cjs/base/controllers/index.d.ts.map +0 -1
- package/dist/cjs/base/controllers/index.js +0 -21
- package/dist/cjs/base/controllers/index.js.map +0 -1
- package/dist/cjs/base/controllers/rest/abstract.d.ts +0 -58
- package/dist/cjs/base/controllers/rest/abstract.d.ts.map +0 -1
- package/dist/cjs/base/controllers/rest/abstract.js +0 -159
- package/dist/cjs/base/controllers/rest/abstract.js.map +0 -1
- package/dist/cjs/base/controllers/rest/base.d.ts +0 -143
- package/dist/cjs/base/controllers/rest/base.d.ts.map +0 -1
- package/dist/cjs/base/controllers/rest/base.js +0 -121
- package/dist/cjs/base/controllers/rest/base.js.map +0 -1
- package/dist/cjs/base/controllers/rest/extras.d.ts +0 -49
- package/dist/cjs/base/controllers/rest/extras.d.ts.map +0 -1
- package/dist/cjs/base/controllers/rest/extras.js +0 -153
- package/dist/cjs/base/controllers/rest/extras.js.map +0 -1
- package/dist/cjs/base/controllers/rest/index.d.ts +0 -4
- package/dist/cjs/base/controllers/rest/index.d.ts.map +0 -1
- package/dist/cjs/base/controllers/rest/index.js +0 -20
- package/dist/cjs/base/controllers/rest/index.js.map +0 -1
- package/dist/cjs/base/datasources/abstract.d.ts +0 -41
- package/dist/cjs/base/datasources/abstract.d.ts.map +0 -1
- package/dist/cjs/base/datasources/abstract.js +0 -94
- package/dist/cjs/base/datasources/abstract.js.map +0 -1
- package/dist/cjs/base/datasources/common/index.d.ts +0 -2
- package/dist/cjs/base/datasources/common/index.d.ts.map +0 -1
- package/dist/cjs/base/datasources/common/index.js +0 -18
- package/dist/cjs/base/datasources/common/index.js.map +0 -1
- package/dist/cjs/base/datasources/common/types.d.ts +0 -60
- package/dist/cjs/base/datasources/common/types.d.ts.map +0 -1
- package/dist/cjs/base/datasources/common/types.js +0 -35
- package/dist/cjs/base/datasources/common/types.js.map +0 -1
- package/dist/cjs/base/datasources/index.d.ts +0 -3
- package/dist/cjs/base/datasources/index.d.ts.map +0 -1
- package/dist/cjs/base/datasources/index.js +0 -19
- package/dist/cjs/base/datasources/index.js.map +0 -1
- package/dist/cjs/base/events/common/constants.d.ts +0 -37
- package/dist/cjs/base/events/common/constants.d.ts.map +0 -1
- package/dist/cjs/base/events/common/constants.js +0 -42
- package/dist/cjs/base/events/common/constants.js.map +0 -1
- package/dist/cjs/base/events/common/index.d.ts +0 -3
- package/dist/cjs/base/events/common/index.d.ts.map +0 -1
- package/dist/cjs/base/events/common/index.js +0 -19
- package/dist/cjs/base/events/common/index.js.map +0 -1
- package/dist/cjs/base/events/common/types.d.ts +0 -64
- package/dist/cjs/base/events/common/types.d.ts.map +0 -1
- package/dist/cjs/base/events/common/types.js +0 -3
- package/dist/cjs/base/events/common/types.js.map +0 -1
- package/dist/cjs/base/events/event-bus.d.ts +0 -78
- package/dist/cjs/base/events/event-bus.d.ts.map +0 -1
- package/dist/cjs/base/events/event-bus.js +0 -217
- package/dist/cjs/base/events/event-bus.js.map +0 -1
- package/dist/cjs/base/events/index.d.ts +0 -3
- package/dist/cjs/base/events/index.d.ts.map +0 -1
- package/dist/cjs/base/events/index.js +0 -19
- package/dist/cjs/base/events/index.js.map +0 -1
- package/dist/cjs/base/index.d.ts +0 -16
- package/dist/cjs/base/index.d.ts.map +0 -1
- package/dist/cjs/base/index.js +0 -32
- package/dist/cjs/base/index.js.map +0 -1
- package/dist/cjs/base/metadata/artifact-keys.d.ts +0 -54
- package/dist/cjs/base/metadata/artifact-keys.d.ts.map +0 -1
- package/dist/cjs/base/metadata/artifact-keys.js +0 -60
- package/dist/cjs/base/metadata/artifact-keys.js.map +0 -1
- package/dist/cjs/base/metadata/index.d.ts +0 -5
- package/dist/cjs/base/metadata/index.d.ts.map +0 -1
- package/dist/cjs/base/metadata/index.js +0 -21
- package/dist/cjs/base/metadata/index.js.map +0 -1
- package/dist/cjs/base/metadata/injectable.d.ts +0 -16
- package/dist/cjs/base/metadata/injectable.d.ts.map +0 -1
- package/dist/cjs/base/metadata/injectable.js +0 -93
- package/dist/cjs/base/metadata/injectable.js.map +0 -1
- package/dist/cjs/base/metadata/injectors.d.ts +0 -16
- package/dist/cjs/base/metadata/injectors.d.ts.map +0 -1
- package/dist/cjs/base/metadata/injectors.js +0 -20
- package/dist/cjs/base/metadata/injectors.js.map +0 -1
- package/dist/cjs/base/metadata/model-metadata.d.ts +0 -17
- package/dist/cjs/base/metadata/model-metadata.d.ts.map +0 -1
- package/dist/cjs/base/metadata/model-metadata.js +0 -50
- package/dist/cjs/base/metadata/model-metadata.js.map +0 -1
- package/dist/cjs/base/metadata/model-settings.d.ts +0 -11
- package/dist/cjs/base/metadata/model-settings.d.ts.map +0 -1
- package/dist/cjs/base/metadata/model-settings.js +0 -34
- package/dist/cjs/base/metadata/model-settings.js.map +0 -1
- package/dist/cjs/base/metadata/persistents.d.ts +0 -9
- package/dist/cjs/base/metadata/persistents.d.ts.map +0 -1
- package/dist/cjs/base/metadata/persistents.js +0 -240
- package/dist/cjs/base/metadata/persistents.js.map +0 -1
- package/dist/cjs/base/metadata/routes/common.d.ts +0 -24
- package/dist/cjs/base/metadata/routes/common.d.ts.map +0 -1
- package/dist/cjs/base/metadata/routes/common.js +0 -35
- package/dist/cjs/base/metadata/routes/common.js.map +0 -1
- package/dist/cjs/base/metadata/routes/controller.d.ts +0 -3
- package/dist/cjs/base/metadata/routes/controller.d.ts.map +0 -1
- package/dist/cjs/base/metadata/routes/controller.js +0 -13
- package/dist/cjs/base/metadata/routes/controller.js.map +0 -1
- package/dist/cjs/base/metadata/routes/index.d.ts +0 -5
- package/dist/cjs/base/metadata/routes/index.d.ts.map +0 -1
- package/dist/cjs/base/metadata/routes/index.js +0 -27
- package/dist/cjs/base/metadata/routes/index.js.map +0 -1
- package/dist/cjs/base/metadata/routes/rest.d.ts +0 -26
- package/dist/cjs/base/metadata/routes/rest.d.ts.map +0 -1
- package/dist/cjs/base/metadata/routes/rest.js +0 -56
- package/dist/cjs/base/metadata/routes/rest.js.map +0 -1
- package/dist/cjs/base/metadata/routes/rpc.d.ts +0 -22
- package/dist/cjs/base/metadata/routes/rpc.d.ts.map +0 -1
- package/dist/cjs/base/metadata/routes/rpc.js +0 -49
- package/dist/cjs/base/metadata/routes/rpc.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/app-error.middleware.d.ts +0 -82
- package/dist/cjs/base/middlewares/app-error/app-error.middleware.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/app-error.middleware.js +0 -294
- package/dist/cjs/base/middlewares/app-error/app-error.middleware.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/common/index.d.ts +0 -2
- package/dist/cjs/base/middlewares/app-error/common/index.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/common/index.js +0 -18
- package/dist/cjs/base/middlewares/app-error/common/index.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/common/types.d.ts +0 -32
- package/dist/cjs/base/middlewares/app-error/common/types.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/common/types.js +0 -3
- package/dist/cjs/base/middlewares/app-error/common/types.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/database.handler.d.ts +0 -13
- package/dist/cjs/base/middlewares/app-error/database.handler.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/database.handler.js +0 -44
- package/dist/cjs/base/middlewares/app-error/database.handler.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/definition.d.ts +0 -48
- package/dist/cjs/base/middlewares/app-error/definition.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/definition.js +0 -89
- package/dist/cjs/base/middlewares/app-error/definition.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/index.d.ts +0 -2
- package/dist/cjs/base/middlewares/app-error/index.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/index.js +0 -18
- package/dist/cjs/base/middlewares/app-error/index.js.map +0 -1
- package/dist/cjs/base/middlewares/app-error/zod.handler.d.ts +0 -28
- package/dist/cjs/base/middlewares/app-error/zod.handler.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/app-error/zod.handler.js +0 -63
- package/dist/cjs/base/middlewares/app-error/zod.handler.js.map +0 -1
- package/dist/cjs/base/middlewares/common/constants.d.ts +0 -16
- package/dist/cjs/base/middlewares/common/constants.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/common/constants.js +0 -6
- package/dist/cjs/base/middlewares/common/constants.js.map +0 -1
- package/dist/cjs/base/middlewares/common/errors.d.ts +0 -34
- package/dist/cjs/base/middlewares/common/errors.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/common/errors.js +0 -21
- package/dist/cjs/base/middlewares/common/errors.js.map +0 -1
- package/dist/cjs/base/middlewares/common/index.d.ts +0 -3
- package/dist/cjs/base/middlewares/common/index.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/common/index.js +0 -19
- package/dist/cjs/base/middlewares/common/index.js.map +0 -1
- package/dist/cjs/base/middlewares/emoji-favicon/emoji-favicon.middleware.d.ts +0 -6
- package/dist/cjs/base/middlewares/emoji-favicon/emoji-favicon.middleware.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/emoji-favicon/emoji-favicon.middleware.js +0 -18
- package/dist/cjs/base/middlewares/emoji-favicon/emoji-favicon.middleware.js.map +0 -1
- package/dist/cjs/base/middlewares/emoji-favicon/index.d.ts +0 -2
- package/dist/cjs/base/middlewares/emoji-favicon/index.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/emoji-favicon/index.js +0 -18
- package/dist/cjs/base/middlewares/emoji-favicon/index.js.map +0 -1
- package/dist/cjs/base/middlewares/form-body/form-body.middleware.d.ts +0 -12
- package/dist/cjs/base/middlewares/form-body/form-body.middleware.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/form-body/form-body.middleware.js +0 -29
- package/dist/cjs/base/middlewares/form-body/form-body.middleware.js.map +0 -1
- package/dist/cjs/base/middlewares/index.d.ts +0 -5
- package/dist/cjs/base/middlewares/index.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/index.js +0 -21
- package/dist/cjs/base/middlewares/index.js.map +0 -1
- package/dist/cjs/base/middlewares/not-found/index.d.ts +0 -2
- package/dist/cjs/base/middlewares/not-found/index.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/not-found/index.js +0 -18
- package/dist/cjs/base/middlewares/not-found/index.js.map +0 -1
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.d.ts +0 -6
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.d.ts.map +0 -1
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.js +0 -25
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.js.map +0 -1
- package/dist/cjs/base/mixins/common/index.d.ts +0 -2
- package/dist/cjs/base/mixins/common/index.d.ts.map +0 -1
- package/dist/cjs/base/mixins/common/index.js +0 -18
- package/dist/cjs/base/mixins/common/index.js.map +0 -1
- package/dist/cjs/base/mixins/common/types.d.ts +0 -54
- package/dist/cjs/base/mixins/common/types.d.ts.map +0 -1
- package/dist/cjs/base/mixins/common/types.js +0 -3
- package/dist/cjs/base/mixins/common/types.js.map +0 -1
- package/dist/cjs/base/mixins/index.d.ts +0 -2
- package/dist/cjs/base/mixins/index.d.ts.map +0 -1
- package/dist/cjs/base/mixins/index.js +0 -18
- package/dist/cjs/base/mixins/index.js.map +0 -1
- package/dist/cjs/base/models/base.d.ts +0 -19
- package/dist/cjs/base/models/base.d.ts.map +0 -1
- package/dist/cjs/base/models/base.js +0 -27
- package/dist/cjs/base/models/base.js.map +0 -1
- package/dist/cjs/base/models/common/constants.d.ts +0 -28
- package/dist/cjs/base/models/common/constants.d.ts.map +0 -1
- package/dist/cjs/base/models/common/constants.js +0 -34
- package/dist/cjs/base/models/common/constants.js.map +0 -1
- package/dist/cjs/base/models/common/index.d.ts +0 -5
- package/dist/cjs/base/models/common/index.d.ts.map +0 -1
- package/dist/cjs/base/models/common/index.js +0 -21
- package/dist/cjs/base/models/common/index.js.map +0 -1
- package/dist/cjs/base/models/common/schemas.d.ts +0 -160
- package/dist/cjs/base/models/common/schemas.d.ts.map +0 -1
- package/dist/cjs/base/models/common/schemas.js +0 -103
- package/dist/cjs/base/models/common/schemas.js.map +0 -1
- package/dist/cjs/base/models/common/types/id.d.ts +0 -22
- package/dist/cjs/base/models/common/types/id.d.ts.map +0 -1
- package/dist/cjs/base/models/common/types/id.js +0 -3
- package/dist/cjs/base/models/common/types/id.js.map +0 -1
- package/dist/cjs/base/models/common/types/index.d.ts +0 -2
- package/dist/cjs/base/models/common/types/index.d.ts.map +0 -1
- package/dist/cjs/base/models/common/types/index.js +0 -18
- package/dist/cjs/base/models/common/types/index.js.map +0 -1
- package/dist/cjs/base/models/common/utilities.d.ts +0 -13
- package/dist/cjs/base/models/common/utilities.d.ts.map +0 -1
- package/dist/cjs/base/models/common/utilities.js +0 -24
- package/dist/cjs/base/models/common/utilities.js.map +0 -1
- package/dist/cjs/base/models/index.d.ts +0 -3
- package/dist/cjs/base/models/index.d.ts.map +0 -1
- package/dist/cjs/base/models/index.js +0 -19
- package/dist/cjs/base/models/index.js.map +0 -1
- package/dist/cjs/base/providers/base.d.ts +0 -7
- package/dist/cjs/base/providers/base.d.ts.map +0 -1
- package/dist/cjs/base/providers/base.js +0 -8
- package/dist/cjs/base/providers/base.js.map +0 -1
- package/dist/cjs/base/providers/index.d.ts +0 -2
- package/dist/cjs/base/providers/index.d.ts.map +0 -1
- package/dist/cjs/base/providers/index.js +0 -18
- package/dist/cjs/base/providers/index.js.map +0 -1
- package/dist/cjs/base/repositories/common/constants.d.ts +0 -105
- package/dist/cjs/base/repositories/common/constants.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/constants.js +0 -123
- package/dist/cjs/base/repositories/common/constants.js.map +0 -1
- package/dist/cjs/base/repositories/common/errors.d.ts +0 -18
- package/dist/cjs/base/repositories/common/errors.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/errors.js +0 -14
- package/dist/cjs/base/repositories/common/errors.js.map +0 -1
- package/dist/cjs/base/repositories/common/extra-request.d.ts +0 -26
- package/dist/cjs/base/repositories/common/extra-request.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/extra-request.js +0 -21
- package/dist/cjs/base/repositories/common/extra-request.js.map +0 -1
- package/dist/cjs/base/repositories/common/index.d.ts +0 -7
- package/dist/cjs/base/repositories/common/index.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/index.js +0 -23
- package/dist/cjs/base/repositories/common/index.js.map +0 -1
- package/dist/cjs/base/repositories/common/response-reader.d.ts +0 -68
- package/dist/cjs/base/repositories/common/response-reader.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/response-reader.js +0 -134
- package/dist/cjs/base/repositories/common/response-reader.js.map +0 -1
- package/dist/cjs/base/repositories/common/types/contracts.d.ts +0 -208
- package/dist/cjs/base/repositories/common/types/contracts.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/types/contracts.js +0 -3
- package/dist/cjs/base/repositories/common/types/contracts.js.map +0 -1
- package/dist/cjs/base/repositories/common/types/index.d.ts +0 -6
- package/dist/cjs/base/repositories/common/types/index.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/types/index.js +0 -23
- package/dist/cjs/base/repositories/common/types/index.js.map +0 -1
- package/dist/cjs/base/repositories/common/types/options.d.ts +0 -89
- package/dist/cjs/base/repositories/common/types/options.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/types/options.js +0 -3
- package/dist/cjs/base/repositories/common/types/options.js.map +0 -1
- package/dist/cjs/base/repositories/common/types/query.d.ts +0 -18
- package/dist/cjs/base/repositories/common/types/query.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/types/query.js +0 -3
- package/dist/cjs/base/repositories/common/types/query.js.map +0 -1
- package/dist/cjs/base/repositories/common/types/result-schemas.d.ts +0 -10
- package/dist/cjs/base/repositories/common/types/result-schemas.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/types/result-schemas.js +0 -14
- package/dist/cjs/base/repositories/common/types/result-schemas.js.map +0 -1
- package/dist/cjs/base/repositories/common/types/results.d.ts +0 -24
- package/dist/cjs/base/repositories/common/types/results.d.ts.map +0 -1
- package/dist/cjs/base/repositories/common/types/results.js +0 -12
- package/dist/cjs/base/repositories/common/types/results.js.map +0 -1
- package/dist/cjs/base/repositories/core/abstract.d.ts +0 -287
- package/dist/cjs/base/repositories/core/abstract.d.ts.map +0 -1
- package/dist/cjs/base/repositories/core/abstract.js +0 -269
- package/dist/cjs/base/repositories/core/abstract.js.map +0 -1
- package/dist/cjs/base/repositories/core/index.d.ts +0 -2
- package/dist/cjs/base/repositories/core/index.d.ts.map +0 -1
- package/dist/cjs/base/repositories/core/index.js +0 -18
- package/dist/cjs/base/repositories/core/index.js.map +0 -1
- package/dist/cjs/base/repositories/index.d.ts +0 -4
- package/dist/cjs/base/repositories/index.d.ts.map +0 -1
- package/dist/cjs/base/repositories/index.js +0 -20
- package/dist/cjs/base/repositories/index.js.map +0 -1
- package/dist/cjs/base/repositories/query-schemas/index.d.ts +0 -75
- package/dist/cjs/base/repositories/query-schemas/index.d.ts.map +0 -1
- package/dist/cjs/base/repositories/query-schemas/index.js +0 -37
- package/dist/cjs/base/repositories/query-schemas/index.js.map +0 -1
- package/dist/cjs/base/request-context/common/index.d.ts +0 -2
- package/dist/cjs/base/request-context/common/index.d.ts.map +0 -1
- package/dist/cjs/base/request-context/common/index.js +0 -18
- package/dist/cjs/base/request-context/common/index.js.map +0 -1
- package/dist/cjs/base/request-context/common/types.d.ts +0 -7
- package/dist/cjs/base/request-context/common/types.d.ts.map +0 -1
- package/dist/cjs/base/request-context/common/types.js +0 -3
- package/dist/cjs/base/request-context/common/types.js.map +0 -1
- package/dist/cjs/base/request-context/index.d.ts +0 -3
- package/dist/cjs/base/request-context/index.d.ts.map +0 -1
- package/dist/cjs/base/request-context/index.js +0 -19
- package/dist/cjs/base/request-context/index.js.map +0 -1
- package/dist/cjs/base/request-context/registry.d.ts +0 -13
- package/dist/cjs/base/request-context/registry.d.ts.map +0 -1
- package/dist/cjs/base/request-context/registry.js +0 -25
- package/dist/cjs/base/request-context/registry.js.map +0 -1
- package/dist/cjs/base/services/base.d.ts +0 -9
- package/dist/cjs/base/services/base.d.ts.map +0 -1
- package/dist/cjs/base/services/base.js +0 -11
- package/dist/cjs/base/services/base.js.map +0 -1
- package/dist/cjs/base/services/common/index.d.ts +0 -2
- package/dist/cjs/base/services/common/index.d.ts.map +0 -1
- package/dist/cjs/base/services/common/index.js +0 -18
- package/dist/cjs/base/services/common/index.js.map +0 -1
- package/dist/cjs/base/services/common/types.d.ts +0 -3
- package/dist/cjs/base/services/common/types.d.ts.map +0 -1
- package/dist/cjs/base/services/common/types.js +0 -3
- package/dist/cjs/base/services/common/types.js.map +0 -1
- package/dist/cjs/base/services/index.d.ts +0 -3
- package/dist/cjs/base/services/index.d.ts.map +0 -1
- package/dist/cjs/base/services/index.js +0 -19
- package/dist/cjs/base/services/index.js.map +0 -1
- package/dist/cjs/common/bindings.d.ts +0 -50
- package/dist/cjs/common/bindings.d.ts.map +0 -1
- package/dist/cjs/common/bindings.js +0 -81
- package/dist/cjs/common/bindings.js.map +0 -1
- package/dist/cjs/common/error-codes.d.ts +0 -16
- package/dist/cjs/common/error-codes.d.ts.map +0 -1
- package/dist/cjs/common/error-codes.js +0 -27
- package/dist/cjs/common/error-codes.js.map +0 -1
- package/dist/cjs/common/index.d.ts +0 -4
- package/dist/cjs/common/index.d.ts.map +0 -1
- package/dist/cjs/common/index.js +0 -20
- package/dist/cjs/common/index.js.map +0 -1
- package/dist/cjs/common/statuses/common.d.ts +0 -64
- package/dist/cjs/common/statuses/common.d.ts.map +0 -1
- package/dist/cjs/common/statuses/common.js +0 -143
- package/dist/cjs/common/statuses/common.js.map +0 -1
- package/dist/cjs/common/statuses/index.d.ts +0 -5
- package/dist/cjs/common/statuses/index.d.ts.map +0 -1
- package/dist/cjs/common/statuses/index.js +0 -21
- package/dist/cjs/common/statuses/index.js.map +0 -1
- package/dist/cjs/common/statuses/migration.d.ts +0 -9
- package/dist/cjs/common/statuses/migration.d.ts.map +0 -1
- package/dist/cjs/common/statuses/migration.js +0 -16
- package/dist/cjs/common/statuses/migration.js.map +0 -1
- package/dist/cjs/common/statuses/role.d.ts +0 -5
- package/dist/cjs/common/statuses/role.d.ts.map +0 -1
- package/dist/cjs/common/statuses/role.js +0 -9
- package/dist/cjs/common/statuses/role.js.map +0 -1
- package/dist/cjs/common/statuses/user.d.ts +0 -12
- package/dist/cjs/common/statuses/user.d.ts.map +0 -1
- package/dist/cjs/common/statuses/user.js +0 -19
- package/dist/cjs/common/statuses/user.js.map +0 -1
- package/dist/cjs/helpers/index.d.ts +0 -2
- package/dist/cjs/helpers/index.d.ts.map +0 -1
- package/dist/cjs/helpers/index.js +0 -18
- package/dist/cjs/helpers/index.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/constants.d.ts +0 -23
- package/dist/cjs/helpers/inversion/common/constants.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/constants.js +0 -37
- package/dist/cjs/helpers/inversion/common/constants.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/index.d.ts +0 -5
- package/dist/cjs/helpers/inversion/common/index.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/index.js +0 -21
- package/dist/cjs/helpers/inversion/common/index.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/keys.d.ts +0 -15
- package/dist/cjs/helpers/inversion/common/keys.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/keys.js +0 -15
- package/dist/cjs/helpers/inversion/common/keys.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/relation-builder.d.ts +0 -17
- package/dist/cjs/helpers/inversion/common/relation-builder.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/relation-builder.js +0 -22
- package/dist/cjs/helpers/inversion/common/relation-builder.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/artifact.d.ts +0 -34
- package/dist/cjs/helpers/inversion/common/types/artifact.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/artifact.js +0 -3
- package/dist/cjs/helpers/inversion/common/types/artifact.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/controller.d.ts +0 -33
- package/dist/cjs/helpers/inversion/common/types/controller.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/controller.js +0 -3
- package/dist/cjs/helpers/inversion/common/types/controller.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/index.d.ts +0 -6
- package/dist/cjs/helpers/inversion/common/types/index.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/index.js +0 -22
- package/dist/cjs/helpers/inversion/common/types/index.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/injection.d.ts +0 -6
- package/dist/cjs/helpers/inversion/common/types/injection.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/injection.js +0 -3
- package/dist/cjs/helpers/inversion/common/types/injection.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/model.d.ts +0 -142
- package/dist/cjs/helpers/inversion/common/types/model.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/model.js +0 -3
- package/dist/cjs/helpers/inversion/common/types/model.js.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/persistence.d.ts +0 -39
- package/dist/cjs/helpers/inversion/common/types/persistence.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/common/types/persistence.js +0 -3
- package/dist/cjs/helpers/inversion/common/types/persistence.js.map +0 -1
- package/dist/cjs/helpers/inversion/container.d.ts +0 -12
- package/dist/cjs/helpers/inversion/container.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/container.js +0 -18
- package/dist/cjs/helpers/inversion/container.js.map +0 -1
- package/dist/cjs/helpers/inversion/index.d.ts +0 -5
- package/dist/cjs/helpers/inversion/index.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/index.js +0 -30
- package/dist/cjs/helpers/inversion/index.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/artifact.mixin.d.ts +0 -86
- package/dist/cjs/helpers/inversion/mixins/artifact.mixin.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/artifact.mixin.js +0 -42
- package/dist/cjs/helpers/inversion/mixins/artifact.mixin.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/controller.d.ts +0 -77
- package/dist/cjs/helpers/inversion/mixins/controllers/controller.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/controller.js +0 -34
- package/dist/cjs/helpers/inversion/mixins/controllers/controller.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/grpc.d.ts +0 -79
- package/dist/cjs/helpers/inversion/mixins/controllers/grpc.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/grpc.js +0 -32
- package/dist/cjs/helpers/inversion/mixins/controllers/grpc.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/index.d.ts +0 -4
- package/dist/cjs/helpers/inversion/mixins/controllers/index.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/index.js +0 -20
- package/dist/cjs/helpers/inversion/mixins/controllers/index.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/rest.d.ts +0 -79
- package/dist/cjs/helpers/inversion/mixins/controllers/rest.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/controllers/rest.js +0 -32
- package/dist/cjs/helpers/inversion/mixins/controllers/rest.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/datasource.mixin.d.ts +0 -71
- package/dist/cjs/helpers/inversion/mixins/datasource.mixin.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/datasource.mixin.js +0 -18
- package/dist/cjs/helpers/inversion/mixins/datasource.mixin.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/index.d.ts +0 -6
- package/dist/cjs/helpers/inversion/mixins/index.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/index.js +0 -22
- package/dist/cjs/helpers/inversion/mixins/index.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/model.mixin.d.ts +0 -110
- package/dist/cjs/helpers/inversion/mixins/model.mixin.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/model.mixin.js +0 -129
- package/dist/cjs/helpers/inversion/mixins/model.mixin.js.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/repository.mixin.d.ts +0 -147
- package/dist/cjs/helpers/inversion/mixins/repository.mixin.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/mixins/repository.mixin.js +0 -154
- package/dist/cjs/helpers/inversion/mixins/repository.mixin.js.map +0 -1
- package/dist/cjs/helpers/inversion/registry.d.ts +0 -588
- package/dist/cjs/helpers/inversion/registry.d.ts.map +0 -1
- package/dist/cjs/helpers/inversion/registry.js +0 -34
- package/dist/cjs/helpers/inversion/registry.js.map +0 -1
- package/dist/cjs/helpers/singleton-realm.d.ts +0 -30
- package/dist/cjs/helpers/singleton-realm.d.ts.map +0 -1
- package/dist/cjs/helpers/singleton-realm.js +0 -52
- package/dist/cjs/helpers/singleton-realm.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -6
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -22
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/metadata.d.ts +0 -26
- package/dist/cjs/metadata.d.ts.map +0 -1
- package/dist/cjs/metadata.js +0 -44
- package/dist/cjs/metadata.js.map +0 -1
- package/dist/cjs/repository.d.ts +0 -32
- package/dist/cjs/repository.d.ts.map +0 -1
- package/dist/cjs/repository.js +0 -48
- package/dist/cjs/repository.js.map +0 -1
- package/dist/cjs/utilities/error.utility.d.ts +0 -8
- package/dist/cjs/utilities/error.utility.d.ts.map +0 -1
- package/dist/cjs/utilities/error.utility.js +0 -18
- package/dist/cjs/utilities/error.utility.js.map +0 -1
- package/dist/cjs/utilities/index.d.ts +0 -2
- package/dist/cjs/utilities/index.d.ts.map +0 -1
- package/dist/cjs/utilities/index.js +0 -20
- package/dist/cjs/utilities/index.js.map +0 -1
- package/dist/esm/base/applications/deprecations.d.ts +0 -10
- package/dist/esm/base/applications/deprecations.d.ts.map +0 -1
- package/dist/esm/base/applications/deprecations.js +0 -19
- package/dist/esm/base/applications/deprecations.js.map +0 -1
package/LICENSE.md
CHANGED
|
@@ -4,7 +4,7 @@ Ignis is a TypeScript Server Infrastructure framework built on [Hono](https://ho
|
|
|
4
4
|
|
|
5
5
|
## MIT License
|
|
6
6
|
|
|
7
|
-
Copyright (c) 2025
|
|
7
|
+
Copyright (c) 2025 Venizia Co., Ltd.
|
|
8
8
|
|
|
9
9
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
10
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -88,12 +88,9 @@ Ignis uses the following open-source libraries. We are grateful to the authors a
|
|
|
88
88
|
|
|
89
89
|
## Acknowledgments
|
|
90
90
|
|
|
91
|
-
Ignis Framework is
|
|
91
|
+
Ignis Framework is built on the work of open-source projects:
|
|
92
92
|
|
|
93
93
|
- **[Hono](https://hono.dev/)** by Yusuke Wada - The ultrafast web framework that powers Ignis
|
|
94
|
-
- **[LoopBack 4](https://loopback.io/)** by IBM/StrongLoop - Inspiration for the enterprise architecture patterns
|
|
95
|
-
- **[NestJS](https://nestjs.com/)** by Kamil Mysliwiec - Inspiration for decorator-based controllers
|
|
96
|
-
- **[InversifyJS](https://inversify.io/)** - Inspiration for the IoC container design
|
|
97
94
|
|
|
98
95
|
We thank all the maintainers and contributors of these projects for their excellent work.
|
|
99
96
|
|
package/README.md
CHANGED
|
@@ -102,3 +102,16 @@ Depends on `@venizia/ignis-inversion`, `@venizia/ignis-filter` and `@venizia/ign
|
|
|
102
102
|
- [All changelogs](https://ignis.venizia.ai/changelogs/)
|
|
103
103
|
|
|
104
104
|
MIT licensed - see [LICENSE.md](https://github.com/VENIZIA-AI/ignis/blob/main/packages/kernel/LICENSE.md).
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
<p align="center">
|
|
109
|
+
<a href="https://venizia.ai">
|
|
110
|
+
<picture>
|
|
111
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://venizia.ai/assets/logo-white.svg">
|
|
112
|
+
<img src="https://venizia.ai/assets/logo.svg" alt="VENIZIA" height="28">
|
|
113
|
+
</picture>
|
|
114
|
+
</a>
|
|
115
|
+
<br>
|
|
116
|
+
<sub>@venizia/ignis-kernel is part of IGNIS, built and maintained by <a href="https://venizia.ai">VENIZIA</a>.</sub>
|
|
117
|
+
</p>
|
|
@@ -52,7 +52,7 @@ export interface IApplicationConfigs {
|
|
|
52
52
|
debug?: {
|
|
53
53
|
shouldShowRoutes?: boolean;
|
|
54
54
|
};
|
|
55
|
-
/**
|
|
55
|
+
/** The framework installs `cors` (first) and `bodyLimit` (right after the request id). Every other key is typed only: wire it in `setupMiddlewares()`. */
|
|
56
56
|
middlewares?: IMiddlewareConfigs;
|
|
57
57
|
/** How long `stop()` waits for one datasource's `close()` before it logs and moves on. Default `10_000`; `0` waits without limit. */
|
|
58
58
|
dataSourceCloseTimeoutMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,qNAAqN;AACrN,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1C,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4PAA4P;IAC5P,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEnD,6GAA6G;IAC7G,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAEhC,8UAA8U;IAC9U,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,0HAA0H;IAC1H,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,WAAW,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,OAAO,CAAA;SAAE,CAAC;QAE9E;;;;;WAKG;QACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;KACpC,CAAC;IAEF,6DAA6D;IAC7D,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEpC,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IACnC,KAAK,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAEvC
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/application.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/application.ts"],"names":[],"mappings":"","sourcesContent":["import type { OpenAPIHono } from '@hono/zod-openapi';\nimport type { ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport type { Env, Schema } from 'hono';\nimport type { TControllerTransport } from '../../../controllers/common/constants';\nimport type {\n IComponentMixin,\n IControllerMixin,\n IRepositoryMixin,\n IServiceMixin,\n IStaticServeMixin,\n} from '../../../mixins/common';\nimport type { TArtifactIndexInput } from './artifacts';\nimport type { IMiddlewareConfigs } from './middlewares';\n\n/** No `host`/`port`: a browser Worker has neither, and carrying them here made one silently configured with `localhost:3000`. `@venizia/ignis` widens this shape with both - see its `IServerApplicationConfigs`. */\nexport interface IApplicationConfigs {\n /**\n * `isStrict` (default `true`) makes `/users` and `/users/` different routes; `false` answers both.\n * Under `false`, declare routes without a trailing slash: a route declared as `/users/` answers\n * neither `/users` nor `/users/`.\n */\n path: { base: string; isStrict: boolean };\n requestId?: { isStrict: boolean };\n favicon?: string;\n\n /** `environment` is the host's ambient environment name. Set it where there is none to read - a browser Worker - so the error middleware can tell \"no ambient environment\" from \"misconfigured\". Absent on a server, which reads `process.env.NODE_ENV`. */\n error?: { rootKey?: string; environment?: string };\n\n /** Generated indexes to register before `preConfigure` - one, or an array composed from several packages. */\n artifacts?: TArtifactIndexInput;\n\n /** Registers every class a stereotype decorated, so an application lists none of its own. Off by default: an absent `artifacts` keeps meaning \"register nothing\", never \"register everything\". Both together register the union, de-duplicated - which is how an application discovers its own classes and still composes a library index. */\n discoverArtifacts?: boolean;\n\n /** Boot-time checks. Without `binding`, nothing is verified, and hand registration and same-key override stay allowed. */\n bootChecks?: {\n binding?: { doVerify: boolean; allowManual: boolean; allowOverride: boolean };\n\n /**\n * Two different classes deriving one binding key from their class name fail registration: in a\n * minified build the second would silently replace the first. A development setup that\n * re-registers after a hot reload re-evaluates modules, which looks the same; `true` there turns\n * the failure into a warning.\n */\n allowDerivedKeyCollision?: boolean;\n };\n\n /** Controller transports to enable. Defaults to ['rest']. */\n transports?: TControllerTransport[];\n\n asyncContext?: { enable: boolean };\n debug?: { shouldShowRoutes?: boolean };\n\n /**
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/application.ts"],"names":[],"mappings":"","sourcesContent":["import type { OpenAPIHono } from '@hono/zod-openapi';\nimport type { ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport type { Env, Schema } from 'hono';\nimport type { TControllerTransport } from '../../../controllers/common/constants';\nimport type {\n IComponentMixin,\n IControllerMixin,\n IRepositoryMixin,\n IServiceMixin,\n IStaticServeMixin,\n} from '../../../mixins/common';\nimport type { TArtifactIndexInput } from './artifacts';\nimport type { IMiddlewareConfigs } from './middlewares';\n\n/** No `host`/`port`: a browser Worker has neither, and carrying them here made one silently configured with `localhost:3000`. `@venizia/ignis` widens this shape with both - see its `IServerApplicationConfigs`. */\nexport interface IApplicationConfigs {\n /**\n * `isStrict` (default `true`) makes `/users` and `/users/` different routes; `false` answers both.\n * Under `false`, declare routes without a trailing slash: a route declared as `/users/` answers\n * neither `/users` nor `/users/`.\n */\n path: { base: string; isStrict: boolean };\n requestId?: { isStrict: boolean };\n favicon?: string;\n\n /** `environment` is the host's ambient environment name. Set it where there is none to read - a browser Worker - so the error middleware can tell \"no ambient environment\" from \"misconfigured\". Absent on a server, which reads `process.env.NODE_ENV`. */\n error?: { rootKey?: string; environment?: string };\n\n /** Generated indexes to register before `preConfigure` - one, or an array composed from several packages. */\n artifacts?: TArtifactIndexInput;\n\n /** Registers every class a stereotype decorated, so an application lists none of its own. Off by default: an absent `artifacts` keeps meaning \"register nothing\", never \"register everything\". Both together register the union, de-duplicated - which is how an application discovers its own classes and still composes a library index. */\n discoverArtifacts?: boolean;\n\n /** Boot-time checks. Without `binding`, nothing is verified, and hand registration and same-key override stay allowed. */\n bootChecks?: {\n binding?: { doVerify: boolean; allowManual: boolean; allowOverride: boolean };\n\n /**\n * Two different classes deriving one binding key from their class name fail registration: in a\n * minified build the second would silently replace the first. A development setup that\n * re-registers after a hot reload re-evaluates modules, which looks the same; `true` there turns\n * the failure into a warning.\n */\n allowDerivedKeyCollision?: boolean;\n };\n\n /** Controller transports to enable. Defaults to ['rest']. */\n transports?: TControllerTransport[];\n\n asyncContext?: { enable: boolean };\n debug?: { shouldShowRoutes?: boolean };\n\n /** The framework installs `cors` (first) and `bodyLimit` (right after the request id). Every other key is typed only: wire it in `setupMiddlewares()`. */\n middlewares?: IMiddlewareConfigs;\n\n /** How long `stop()` waits for one datasource's `close()` before it logs and moves on. Default `10_000`; `0` waits without limit. */\n dataSourceCloseTimeoutMs?: number;\n [key: string]: any;\n}\n\nexport interface IApplicationInfo {\n name: string;\n version: string;\n description: string;\n author?: { name: string; email: string; url?: string };\n [extra: string | symbol]: any;\n}\n\n/** Exactly what EVERY host implements. `getServerHost`/`getServerPort`/`getServerAddress`/`start`/`stop` are not here on purpose - a browser Worker can implement none of them; they live on `@venizia/ignis`'s `IServerApplication`. */\nexport interface IApplication<\n AppEnv extends Env = Env,\n AppSchema extends Schema = Schema,\n BasePath extends string = '/',\n> {\n getProjectRoot(): string;\n getProjectConfigs(): IApplicationConfigs;\n getServer(): OpenAPIHono<AppEnv, AppSchema, BasePath>;\n getRootRouter(): OpenAPIHono<AppEnv, AppSchema, BasePath>;\n\n setupMiddlewares(): ValueOrPromise<void>;\n\n initialize(): ValueOrPromise<void>;\n}\n\nexport interface IRestApplication\n extends\n IApplication,\n IComponentMixin,\n IControllerMixin,\n IRepositoryMixin,\n IServiceMixin,\n IStaticServeMixin {}\n"]}
|
|
@@ -2,7 +2,8 @@ import type { Context } from 'hono';
|
|
|
2
2
|
import type { IPRestrictionRules as IIPRestrictionRules } from 'hono/ip-restriction';
|
|
3
3
|
import { type SecFetchSiteValues, type TCompressEncoding } from '../constants.js';
|
|
4
4
|
export interface IBaseMiddlewareOptions {
|
|
5
|
-
|
|
5
|
+
/** Default `true`: only `false` switches the middleware off. */
|
|
6
|
+
enable?: boolean;
|
|
6
7
|
path?: string;
|
|
7
8
|
[extra: string | symbol]: any;
|
|
8
9
|
}
|
|
@@ -34,10 +35,15 @@ export interface IRequestIdOptions extends IBaseMiddlewareOptions {
|
|
|
34
35
|
}
|
|
35
36
|
export interface IMiddlewareConfigs {
|
|
36
37
|
requestId?: IRequestIdOptions;
|
|
38
|
+
/** Typed only: the framework installs no compress middleware. Wire it in `setupMiddlewares()`. */
|
|
37
39
|
compress?: ICompressOptions;
|
|
40
|
+
/** Installed first, before the request id and the body limit, so early framework responses carry its headers. */
|
|
38
41
|
cors?: ICORSOptions;
|
|
42
|
+
/** Typed only: the framework installs no csrf middleware. Wire it in `setupMiddlewares()`. */
|
|
39
43
|
csrf?: ICSRFOptions;
|
|
44
|
+
/** Installed right after the request id, ahead of every other middleware, so none of them reads a body over it. */
|
|
40
45
|
bodyLimit?: IBodyLimitOptions;
|
|
46
|
+
/** Typed only: the framework installs no ip restriction. Wire it in `setupMiddlewares()`. */
|
|
41
47
|
ipRestriction?: IBaseMiddlewareOptions & IIPRestrictionRules;
|
|
42
48
|
[extra: string | symbol]: any;
|
|
43
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/middlewares.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/middlewares.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB;IAC9D,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,OAAO,GACf,MAAM,GACN,MAAM,EAAE,GACR,CAAC,CACC,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,OAAO,KACP,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AACzE,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;IACzF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AACpF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,6BAA6B,GAAG,CAC1C,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC;AAEb,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,uBAAuB,CAAC;IACrD,YAAY,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,6BAA6B,CAAC;CAChF;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;CAAG;AAEpE,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,iHAAiH;IACjH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,8FAA8F;IAC9F,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,mHAAmH;IACnH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,6FAA6F;IAC7F,aAAa,CAAC,EAAE,sBAAsB,GAAG,mBAAmB,CAAC;IAC7D,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;CAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/middlewares.ts"],"names":[],"mappings":"","sourcesContent":["import type { Context } from 'hono';\nimport type { IPRestrictionRules as IIPRestrictionRules } from 'hono/ip-restriction';\nimport { type SecFetchSiteValues, type TCompressEncoding } from '../constants';\n\nexport interface IBaseMiddlewareOptions {\n enable
|
|
1
|
+
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../../../../src/base/applications/common/types/middlewares.ts"],"names":[],"mappings":"","sourcesContent":["import type { Context } from 'hono';\nimport type { IPRestrictionRules as IIPRestrictionRules } from 'hono/ip-restriction';\nimport { type SecFetchSiteValues, type TCompressEncoding } from '../constants';\n\nexport interface IBaseMiddlewareOptions {\n /** Default `true`: only `false` switches the middleware off. */\n enable?: boolean;\n path?: string;\n [extra: string | symbol]: any;\n}\n\nexport interface ICompressOptions extends IBaseMiddlewareOptions {\n encoding: TCompressEncoding;\n threshold?: number;\n}\n\nexport type TOrigin =\n | string\n | string[]\n | ((\n origin: string,\n c: Context,\n ) => Promise<string | undefined | null> | string | undefined | null);\nexport interface ICORSOptions extends IBaseMiddlewareOptions {\n origin: TOrigin;\n allowMethods?: string[] | ((origin: string, c: Context) => Promise<string[]> | string[]);\n allowHeaders?: string[];\n maxAge?: number;\n credentials?: boolean;\n exposeHeaders?: string[];\n}\n\nexport type TIsAllowedOriginHandler = (origin: string, context: Context) => boolean;\nexport type TSecFetchSite = (typeof SecFetchSiteValues)[number];\nexport type TIsAllowedSecFetchSiteHandler = (\n secFetchSite: TSecFetchSite,\n context: Context,\n) => boolean;\n\nexport interface ICSRFOptions extends IBaseMiddlewareOptions {\n origin?: string | string[] | TIsAllowedOriginHandler;\n secFetchSite?: TSecFetchSite | TSecFetchSite[] | TIsAllowedSecFetchSiteHandler;\n}\n\nexport interface IBodyLimitOptions extends IBaseMiddlewareOptions {\n maxSize: number;\n onError?: (c: Context) => Response | Promise<Response>;\n}\n\nexport interface IRequestIdOptions extends IBaseMiddlewareOptions {}\n\nexport interface IMiddlewareConfigs {\n requestId?: IRequestIdOptions;\n /** Typed only: the framework installs no compress middleware. Wire it in `setupMiddlewares()`. */\n compress?: ICompressOptions;\n /** Installed first, before the request id and the body limit, so early framework responses carry its headers. */\n cors?: ICORSOptions;\n /** Typed only: the framework installs no csrf middleware. Wire it in `setupMiddlewares()`. */\n csrf?: ICSRFOptions;\n /** Installed right after the request id, ahead of every other middleware, so none of them reads a body over it. */\n bodyLimit?: IBodyLimitOptions;\n /** Typed only: the framework installs no ip restriction. Wire it in `setupMiddlewares()`. */\n ipRestriction?: IBaseMiddlewareOptions & IIPRestrictionRules;\n [extra: string | symbol]: any;\n}\n"]}
|
|
@@ -24,7 +24,7 @@ interface IRegisterDynamicBindingsOptions<T extends IConfigurable = IConfigurabl
|
|
|
24
24
|
instance: T;
|
|
25
25
|
}) => Promise<void>;
|
|
26
26
|
}
|
|
27
|
-
/** Adds the `OpenAPIHono` router surface on top of `AbstractApplication` - no listening server, so this is the layer a browser Worker or gRPC-only host can extend without pulling in `Bun.serve
|
|
27
|
+
/** Adds the `OpenAPIHono` router surface on top of `AbstractApplication` - no listening server, so this is the layer a browser Worker or gRPC-only host can extend without pulling in `Bun.serve`. */
|
|
28
28
|
export declare abstract class RestApplication<AppEnv extends Env = Env, AppSchema extends Schema = {}, BasePath extends string = '/'> extends AbstractApplication {
|
|
29
29
|
private registeredBindings;
|
|
30
30
|
private artifactOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../../../src/base/applications/rest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../../../src/base/applications/rest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ArtifactNamespaces, BindingNamespaces, CoreBindings } from '../../common/bindings.js';
|
|
2
2
|
import { BindingScopes, MetadataRegistry } from '../../helpers/inversion/index.js';
|
|
3
|
+
import { assertBindingsResolve } from '@venizia/ignis-inversion';
|
|
3
4
|
import { OpenAPIHono } from '@hono/zod-openapi';
|
|
4
5
|
import { executeWithPerformanceMeasure, getError, RequestIdGenerator, RetryHelper, } from '@venizia/ignis-helpers/core';
|
|
5
6
|
import { showRoutes as showApplicationRoutes } from 'hono/dev';
|
|
@@ -13,10 +14,9 @@ import { RequestErrors } from '../middlewares/common/errors.js';
|
|
|
13
14
|
import { notFoundHandler } from '../middlewares/not-found/not-found.middleware.js';
|
|
14
15
|
import { AbstractApplication } from './abstract.js';
|
|
15
16
|
import { registerCors } from './cors.js';
|
|
16
|
-
import { warnDeprecatedModelMetadata } from './deprecations.js';
|
|
17
17
|
import { ArtifactIndexHelper } from './artifact-index.js';
|
|
18
18
|
import { BootSteps } from './boot-sequence.js';
|
|
19
|
-
/** Adds the `OpenAPIHono` router surface on top of `AbstractApplication` - no listening server, so this is the layer a browser Worker or gRPC-only host can extend without pulling in `Bun.serve
|
|
19
|
+
/** Adds the `OpenAPIHono` router surface on top of `AbstractApplication` - no listening server, so this is the layer a browser Worker or gRPC-only host can extend without pulling in `Bun.serve`. */
|
|
20
20
|
export class RestApplication extends AbstractApplication {
|
|
21
21
|
constructor(opts) {
|
|
22
22
|
super(opts);
|
|
@@ -242,27 +242,12 @@ export class RestApplication extends AbstractApplication {
|
|
|
242
242
|
return;
|
|
243
243
|
}
|
|
244
244
|
const logger = this.logger.for(this.verifyBindings.name);
|
|
245
|
-
const
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
try {
|
|
252
|
-
this.get({ key: binding.key });
|
|
253
|
-
verified += 1;
|
|
254
|
-
}
|
|
255
|
-
catch (error) {
|
|
256
|
-
failures.push(`${binding.key}: ${error instanceof Error ? error.message : String(error)}`);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
if (failures.length > 0) {
|
|
261
|
-
throw getError({
|
|
262
|
-
message: `[${this.verifyBindings.name}] ${failures.length} binding(s) cannot be resolved | ${failures.join(' | ')}`,
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
logger.info('Every service and repository binding resolves | verified: %d', verified);
|
|
245
|
+
const { verified } = assertBindingsResolve({
|
|
246
|
+
container: this,
|
|
247
|
+
namespaces: [BindingNamespaces.SERVICE, BindingNamespaces.REPOSITORY],
|
|
248
|
+
scope: this.verifyBindings.name,
|
|
249
|
+
});
|
|
250
|
+
logger.info('Every service and repository binding resolves | verified: %d', verified.length);
|
|
266
251
|
}
|
|
267
252
|
/** One measured log line per step, and a failure names its step before rethrowing, so a hung or failed boot is attributable without reading the sequence. */
|
|
268
253
|
async runBootSequence(opts) {
|
|
@@ -284,7 +269,6 @@ export class RestApplication extends AbstractApplication {
|
|
|
284
269
|
throw error;
|
|
285
270
|
}
|
|
286
271
|
}
|
|
287
|
-
warnDeprecatedModelMetadata({ logger });
|
|
288
272
|
logger.info('Boot sequence complete | %d step(s) | Took: %s (ms) | %s', steps.length, performance.now() - t, steps.map((step) => step.name).join(' -> '));
|
|
289
273
|
}
|
|
290
274
|
inspectRoutes() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/base/applications/rest.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TBindingNamespace } from '@/common/bindings';\nimport { ArtifactNamespaces, BindingNamespaces, CoreBindings } from '@/common/bindings';\nimport type { Binding, TBindingScope } from '@/helpers/inversion';\nimport { BindingScopes, MetadataRegistry } from '@/helpers/inversion';\nimport { OpenAPIHono } from '@hono/zod-openapi';\nimport type { AnyType, IConfigurable, TClass, ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport {\n executeWithPerformanceMeasure,\n getError,\n RequestIdGenerator,\n RetryHelper,\n} from '@venizia/ignis-helpers/core';\nimport type { Env, Schema } from 'hono';\nimport { showRoutes as showApplicationRoutes } from 'hono/dev';\nimport { bodyLimit } from 'hono/body-limit';\nimport { requestId } from 'hono/request-id';\nimport type { BaseComponent } from '../components';\nimport { ArtifactBindingKeys } from '../metadata/artifact-keys';\nimport { RestComponent } from '../components/controller/rest/rest.component';\nimport type { BaseConfiguration } from '../configurations';\nimport { ControllerTransports } from '../controllers/common/constants';\nimport type { IDataSource } from '../datasources';\nimport { BaseAppErrorMiddleware } from '../middlewares/app-error/app-error.middleware';\nimport { RequestErrors } from '../middlewares/common/errors';\nimport { notFoundHandler } from '../middlewares/not-found/not-found.middleware';\nimport type { TMixinOpts } from '../mixins/common';\nimport type { IRepository } from '../repositories';\nimport type { IService } from '../services';\nimport { AbstractApplication } from './abstract';\nimport { registerCors } from './cors';\nimport { warnDeprecatedModelMetadata } from './deprecations';\nimport { ArtifactIndexHelper } from './artifact-index';\nimport type { IBootSequenceStep } from './boot-sequence';\nimport { BootSteps } from './boot-sequence';\nimport type { IApplicationConfigs, IBodyLimitOptions, TArtifactIndexInput } from './common';\n\ninterface IRegisterDynamicBindingsOptions<T extends IConfigurable = IConfigurable> {\n namespace: TBindingNamespace;\n\n onBeforeConfigure?: (opts: { binding: Binding<T> }) => Promise<void>;\n onAfterConfigure?: (opts: { binding: Binding<T>; instance: T }) => Promise<void>;\n}\n\n/** Adds the `OpenAPIHono` router surface on top of `AbstractApplication` - no listening server, so this is the layer a browser Worker or gRPC-only host can extend without pulling in `Bun.serve` / `@hono/node-server`. */\nexport abstract class RestApplication<\n AppEnv extends Env = Env,\n AppSchema extends Schema = {},\n BasePath extends string = '/',\n> extends AbstractApplication {\n private registeredBindings: Record<string, Set<string>> = {};\n private artifactOptions = new Map<string, object>();\n\n /** The router, and nothing else. What runtime is underneath and what socket is bound are `ServerApplication`'s to know - a browser Worker has neither, and carrying the union here made `RuntimeModules.detect()` answer `'node'` inside a Worker. */\n protected server: { hono: OpenAPIHono<AppEnv, AppSchema, BasePath> };\n\n protected rootRouter: OpenAPIHono<AppEnv, AppSchema, BasePath>;\n protected readonly requestIdGenerator: RequestIdGenerator;\n\n /** A copy of the `bodyLimit` the default stack installed, absent until `registerDefaultMiddlewares()` ran. */\n private installedBodyLimit?: { options?: IBodyLimitOptions };\n\n constructor(opts: { scope: string; config: IApplicationConfigs }) {\n super(opts);\n\n // A config built from the environment can lose `path.base` at run time; the router would only fail later, inside `route()`, with a message that names nothing.\n if (typeof this.configs.path?.base !== 'string') {\n throw getError({\n message: `[${opts.scope}] configs.path.base must be a string | value: ${String(this.configs.path?.base)} | an empty string mounts the application at the root`,\n });\n }\n\n // The index signature accepts any key, so a leftover `strictPath` would compile and be ignored.\n if (this.configs.strictPath !== undefined) {\n throw getError({\n message: `[${opts.scope}] configs.strictPath was removed | value: ${String(this.configs.strictPath)} | Use configs.path.isStrict`,\n });\n }\n\n this.requestIdGenerator = new RequestIdGenerator({ scope: opts.scope });\n\n const strict = this.configs.path.isStrict ?? true;\n const honoServer = new OpenAPIHono<AppEnv, AppSchema, BasePath>({ strict });\n this.rootRouter = new OpenAPIHono({ strict });\n\n this.server = { hono: honoServer };\n }\n\n getRootRouter(): OpenAPIHono<AppEnv, AppSchema, BasePath> {\n return this.rootRouter;\n }\n\n getServer(): OpenAPIHono<AppEnv, AppSchema, BasePath> {\n return this.server.hono;\n }\n\n protected override registerCoreBindings() {\n super.registerCoreBindings();\n\n this.bind<typeof this.server>({\n key: CoreBindings.APPLICATION_SERVER,\n }).toProvider((_) => this.server);\n this.bind<typeof this.rootRouter>({\n key: CoreBindings.APPLICATION_ROOT_ROUTER,\n }).toProvider((_) => this.rootRouter);\n }\n\n /** The correlation id every host stamps - see {@link RequestIdGenerator} for why `crypto.randomUUID` is refused. */\n protected generateRequestId(): string {\n return this.requestIdGenerator.nextId();\n }\n\n /** The error handler the default stack installs. `@venizia/ignis` overrides it to swap in the `ErrorPrettier`-backed formatter, which reaches `node:util` and so cannot live here. */\n protected buildErrorMiddleware(): BaseAppErrorMiddleware {\n const environment = this.configs.error?.environment;\n\n return new BaseAppErrorMiddleware({\n logger: this.logger,\n rootKey: this.configs.error?.rootKey ?? undefined,\n // Spread, not `environment: () => environment`: the option's PRESENCE is what claims this host\n // has an ambient environment at all, so an unset config must leave it absent.\n ...(environment === undefined ? {} : { environment: () => environment }),\n });\n }\n\n /**\n * The three registrations every host needs: request id, error envelope, JSON 404 - without them a\n * thrown `ApplicationError` is a generic 500, a 404 is `text/plain`, and no response carries a request id.\n * Registered before `initialize()`, so an application's own handlers still win.\n */\n protected registerDefaultMiddlewares(): ValueOrPromise<void> {\n const server = this.getServer();\n\n // First of all, so every response the framework produces on its own - a bodyLimit 413, a body the\n // request spy cannot parse, the error envelope - leaves with the headers a browser needs to read it.\n registerCors({ server, options: this.configs.middlewares?.cors });\n\n server.use(requestId({ generator: () => this.generateRequestId() }));\n\n // Ahead of every middleware a host adds after this one, so none of them buffers a body over it.\n const bodyLimitOptions = this.configs.middlewares?.bodyLimit;\n this.installedBodyLimit = { options: this.toInstalledBodyLimit({ options: bodyLimitOptions }) };\n\n if (bodyLimitOptions && bodyLimitOptions.enable !== false) {\n const { maxSize, path, onError } = bodyLimitOptions;\n\n if (typeof maxSize !== 'number' || !Number.isFinite(maxSize) || maxSize < 0) {\n throw getError({\n message: `[registerDefaultMiddlewares] configs.middlewares.bodyLimit.maxSize must be a non-negative number of bytes | value: ${String(maxSize)}`,\n });\n }\n\n const limiter = bodyLimit({\n maxSize,\n onError:\n onError ??\n (() => {\n throw getError({\n error: RequestErrors.BODY_TOO_LARGE,\n message: `Request body exceeds the maximum of ${maxSize} bytes`,\n });\n }),\n });\n\n if (path) {\n server.use(path, limiter);\n } else {\n server.use(limiter);\n }\n }\n\n server.onError(this.buildErrorMiddleware().value());\n server.notFound(notFoundHandler({ logger: this.logger }));\n }\n\n /** What a `bodyLimit` config installs: nothing when absent or disabled, else a copy, so a later in-place edit shows. */\n private toInstalledBodyLimit(opts: {\n options?: IBodyLimitOptions;\n }): IBodyLimitOptions | undefined {\n const { options } = opts;\n\n if (!options || options.enable === false) {\n return undefined;\n }\n\n return { ...options };\n }\n\n private isSameBodyLimit(opts: { left?: IBodyLimitOptions; right?: IBodyLimitOptions }): boolean {\n const { left, right } = opts;\n\n if (!left || !right) {\n return left === right;\n }\n\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n for (const key of keys) {\n if (!Object.is(left[key], right[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * `configs.middlewares` is read by `registerDefaultMiddlewares()`, which runs before `staticConfigure()`.\n * A limit assigned in a boot hook would read back as configured while every request ran unlimited.\n */\n private assertBodyLimitUnchanged(opts: { step: string }): void {\n if (!this.installedBodyLimit) {\n return;\n }\n\n const installed = this.installedBodyLimit.options;\n const current = this.toInstalledBodyLimit({ options: this.configs.middlewares?.bodyLimit });\n\n if (this.isSameBodyLimit({ left: installed, right: current })) {\n return;\n }\n\n throw getError({\n message: `[${opts.step}] configs.middlewares.bodyLimit changed after registerDefaultMiddlewares() installed it | installed maxSize: ${installed?.maxSize ?? 'none'} | now maxSize: ${current?.maxSize ?? 'none'} | Pass it through the constructor config: new Application({ config: { middlewares: { bodyLimit } } })`,\n });\n }\n\n /**\n * The artifact order, stated once: datasources before the repositories that auto-resolve them,\n * components before the controllers they may contribute. `BaseApplication` splices its server-only\n * steps around these by name instead of rewriting the list.\n */\n protected getBootSequence(): IBootSequenceStep[] {\n return [\n {\n name: BootSteps.STATIC_CONFIGURE,\n run: async () => {\n // Declared `void`, but an override may be async; the step has always waited on it.\n await Promise.resolve(this.staticConfigure());\n this.assertBodyLimitUnchanged({ step: BootSteps.STATIC_CONFIGURE });\n },\n },\n { name: BootSteps.REGISTER_ARTIFACTS, run: () => this.registerConfiguredArtifacts() },\n {\n name: BootSteps.PRE_CONFIGURE,\n run: async () => {\n await this.runApplicationHook({\n name: BootSteps.PRE_CONFIGURE,\n hook: () => this.preConfigure(),\n });\n this.assertBodyLimitUnchanged({ step: BootSteps.PRE_CONFIGURE });\n },\n },\n {\n name: BootSteps.REGISTER_CONFIGURATIONS,\n run: () => this.registerConfigurations(),\n },\n { name: BootSteps.REGISTER_DATA_SOURCES, run: () => this.registerDataSources() },\n { name: BootSteps.REGISTER_COMPONENTS, run: () => this.registerComponents() },\n {\n name: BootSteps.REGISTER_CONTRIBUTED_DATA_SOURCES,\n run: () => this.registerContributedDataSources(),\n },\n { name: BootSteps.REGISTER_CONTROLLERS, run: () => this.registerControllers() },\n {\n name: BootSteps.POST_CONFIGURE,\n run: () =>\n this.runApplicationHook({\n name: BootSteps.POST_CONFIGURE,\n hook: () => this.postConfigure(),\n }),\n },\n { name: BootSteps.VERIFY_BINDINGS, run: () => this.verifyBindings() },\n ];\n }\n\n async initialize(): Promise<void> {\n await this.runBootSequence({ steps: this.getBootSequence() });\n }\n\n /** The application hook currently running, so `registerArtifact` can tell a hand registration inside `preConfigure`/`postConfigure` from one the index step made. */\n private runningApplicationHook: string | undefined;\n\n private async runApplicationHook(opts: {\n name: string;\n hook: () => ValueOrPromise<void>;\n }): Promise<void> {\n this.runningApplicationHook = opts.name;\n try {\n await opts.hook();\n } finally {\n this.runningApplicationHook = undefined;\n }\n }\n\n /**\n * Bound keys carrying one of `tags` that nothing has resolved since the counts were last reset.\n * The counter answers \"who was read\", never \"who is dead\" - an unread binding may be an\n * allow-list entry or a technical floor, and only the application can tell those apart.\n *\n * Counting is off by default. Call `startResolutionCounting()` after `initialize()` and run the\n * traffic that exercises the application, then read this.\n */\n getUnresolvedBindings(opts?: { tags?: string[] }): string[] {\n if (!this.hasStartedResolutionCounting) {\n throw getError({\n message: `[${this.getUnresolvedBindings.name}] Resolution counting never started | Call startResolutionCounting() after initialize(), run the traffic that exercises the application, then read this - without it every binding would be reported unresolved`,\n });\n }\n\n const tags = opts?.tags ?? [BindingNamespaces.SERVICE, BindingNamespaces.REPOSITORY];\n const counts = this.getResolutionCounts();\n const unresolved: string[] = [];\n\n for (const tag of tags) {\n const bindings = this.findByTag({ tag });\n for (const binding of bindings) {\n if (counts.has(binding.key)) {\n continue;\n }\n\n unresolved.push(binding.key);\n }\n }\n\n return unresolved;\n }\n\n /** `bootChecks.binding.doVerify`: resolve every service and repository once, collect every failure, throw once with the whole list - a made-up `@inject` key or a dependency a `when` excluded then fails the boot, not the first request. */\n protected verifyBindings(): void {\n if (!this.configs.bootChecks?.binding?.doVerify) {\n return;\n }\n\n const logger = this.logger.for(this.verifyBindings.name);\n const tags = [BindingNamespaces.SERVICE, BindingNamespaces.REPOSITORY];\n const failures: string[] = [];\n let verified = 0;\n\n for (const tag of tags) {\n const bindings = this.findByTag({ tag });\n for (const binding of bindings) {\n try {\n this.get({ key: binding.key });\n verified += 1;\n } catch (error) {\n failures.push(\n `${binding.key}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n }\n\n if (failures.length > 0) {\n throw getError({\n message: `[${this.verifyBindings.name}] ${failures.length} binding(s) cannot be resolved | ${failures.join(' | ')}`,\n });\n }\n\n logger.info('Every service and repository binding resolves | verified: %d', verified);\n }\n\n /** One measured log line per step, and a failure names its step before rethrowing, so a hung or failed boot is attributable without reading the sequence. */\n protected async runBootSequence(opts: { steps: IBootSequenceStep[] }): Promise<void> {\n const { steps } = opts;\n const logger = this.logger.for(this.initialize.name);\n const t = performance.now();\n\n const stepsEntries = steps.entries();\n for (const [index, step] of stepsEntries) {\n try {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.initialize.name,\n description: `Boot step ${index + 1}/${steps.length} ${step.name}`,\n task: () => step.run(),\n });\n } catch (error) {\n logger.error(\n 'Boot step failed | step: %s (%d/%d) | error: %s',\n step.name,\n index + 1,\n steps.length,\n error,\n );\n throw error;\n }\n }\n\n warnDeprecatedModelMetadata({ logger });\n\n logger.info(\n 'Boot sequence complete | %d step(s) | Took: %s (ms) | %s',\n steps.length,\n performance.now() - t,\n steps.map((step) => step.name).join(' -> '),\n );\n }\n\n protected inspectRoutes() {\n const t = performance.now();\n const shouldShowRoutes = this.configs?.debug?.shouldShowRoutes ?? false;\n\n if (!shouldShowRoutes) {\n return;\n }\n\n this.logger.for(this.inspectRoutes.name).info('START | Inspect all application route(s)');\n showApplicationRoutes(this.getServer());\n this.logger\n .for(this.inspectRoutes.name)\n .info('DONE | Inspect all application route(s) | Took: %s (ms)', performance.now() - t);\n }\n\n /**\n * `configured` is the drain's state, mutated in place: a fresh `Set` gives a one-shot complete\n * drain (`RestComponent`); `registerDynamicBindings` passes its persistent per-namespace `Set`,\n * which is why a second sweep touches only what the first one missed.\n */\n async drainByTag<T>(opts: {\n tag: string;\n configured: Set<string>;\n onEach: (opts: { binding: Binding<T> }) => Promise<void>;\n }): Promise<void> {\n const { tag, configured, onEach } = opts;\n\n // A whole batch is drained before re-scanning: the re-scan exists only to pick up bindings a\n // `configure()` added, and asking after every single item makes boot N+1 full scans of the\n // binding map - 3.5ms at 200 controllers, against 0.04ms for this shape.\n let bindings = this.findByTag<T>({ tag, exclude: configured });\n\n while (bindings.length > 0) {\n for (const binding of bindings) {\n // Within a batch a nested `configure()` may already have taken this one.\n if (configured.has(binding.key)) {\n continue;\n }\n\n await onEach({ binding });\n configured.add(binding.key);\n }\n\n // Re-fetch excluding already configured - picks up dynamically added bindings\n bindings = this.findByTag<T>({ tag, exclude: configured });\n }\n }\n\n protected async registerDynamicBindings<T extends IConfigurable = IConfigurable>(\n opts: IRegisterDynamicBindingsOptions<T>,\n ): Promise<void> {\n const logger = this.logger.for(this.registerDynamicBindings.name);\n const { namespace, onBeforeConfigure, onAfterConfigure } = opts;\n\n if (!this.registeredBindings[namespace]) {\n this.registeredBindings[namespace] = new Set<string>();\n }\n const configured = this.registeredBindings[namespace];\n\n await this.drainByTag<T>({\n tag: namespace,\n configured,\n onEach: async ({ binding }) => {\n if (onBeforeConfigure) {\n await onBeforeConfigure({ binding });\n }\n\n const instance = this.get<T>({ key: binding.key, isOptional: false });\n if (!instance) {\n logger.debug('No binding instance | namespace: %s | key: %s', namespace, binding.key);\n return;\n }\n\n if (typeof (instance as Partial<IConfigurable>)?.configure === 'function') {\n const options = this.artifactOptions.get(binding.key);\n await (instance as IConfigurable).configure(options);\n }\n\n // Marked before the after-hook runs, so the hook sees its own binding as configured.\n configured.add(binding.key);\n\n if (onAfterConfigure) {\n await onAfterConfigure({ binding, instance });\n }\n },\n });\n }\n\n /** The same-key guard behind every artifact registration (`component`/`controller`/`service`/`repository`/`dataSource`). `allowOverride` defaults true to match `bind()`'s overwrite behavior; `allowOverride: false` on one registration, or `bootChecks.binding.allowOverride: false` for the whole application, opts into strict mode. */\n protected assertNoBindingCollision(opts: {\n key: string;\n allowOverride?: boolean;\n caller: string;\n }): void {\n const { key, caller } = opts;\n const allowOverride =\n opts.allowOverride ?? this.configs.bootChecks?.binding?.allowOverride ?? true;\n\n if (allowOverride || !this.isBound({ key })) {\n return;\n }\n\n const reason =\n opts.allowOverride === false\n ? `'allowOverride: false' was set and this key collides with an existing binding | Use a distinct 'opts.binding' key, or drop 'allowOverride: false' if overriding is intentional`\n : `'bootChecks.binding.allowOverride' is false and this key collides with an existing binding | Use a distinct 'opts.binding' key, or set 'allowOverride: true' on this registration if overriding is intentional`;\n\n throw getError({\n message: `[${caller}] Binding key already registered: '${key}' | ${reason}`,\n });\n }\n\n /** Resolution order for every registration: explicit `opts` > the class's `@injectable` defaults > the derived key and the kind's default scope. `order` and `when` are `registerArtifacts`' concern, not this one. */\n private registerArtifact<Base>(opts: {\n target: TClass<Base>;\n namespace: TBindingNamespace;\n defaultScope: TBindingScope;\n caller: string;\n opts?: TMixinOpts;\n }): Binding<Base> {\n const { target, namespace, defaultScope, caller } = opts;\n const declared = MetadataRegistry.getInstance().getArtifactMetadata({ target });\n\n if (\n this.runningApplicationHook &&\n this.configs.artifacts &&\n this.configs.bootChecks?.binding?.allowManual === false\n ) {\n throw getError({\n message: `[${caller}] '${target.name}' is registered by hand inside ${this.runningApplicationHook}() while 'configs.artifacts' is set and 'bootChecks.binding.allowManual' is false | Move the class into the generated index (or an explicit entry of 'configs.artifacts'), or allow manual registration`,\n });\n }\n\n const pinned = opts.opts?.binding ?? declared?.binding;\n BindingNamespaces.assertArtifactNamespace({\n namespace: pinned?.namespace ?? namespace,\n artifact: target.name,\n caller,\n });\n\n const { key } = ArtifactBindingKeys.resolve({ target, namespace, binding: pinned });\n\n // What `@inject({ target })` reads back. Only here knows the call site's `binding`, and a\n // class registered by hand has no stereotype metadata to derive one from.\n MetadataRegistry.getInstance().setBindingKey({ target, key });\n\n if (opts.opts?.options !== undefined) {\n this.artifactOptions.set(key, opts.opts.options);\n }\n\n this.assertNoBindingCollision({\n key,\n allowOverride: opts.opts?.allowOverride ?? declared?.allowOverride,\n caller,\n });\n\n return this.bind<Base>({ key })\n .toClass(target)\n .setScope(declared?.scope ?? defaultScope);\n }\n\n configuration<Base extends BaseConfiguration<Options>, Options extends object = {}>(\n target: TClass<Base>,\n opts?: TMixinOpts<Options>,\n ): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.CONFIGURATION,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.configuration.name,\n opts,\n });\n }\n\n async registerConfigurations(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerConfigurations.name,\n description: 'Register application configurations',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.CONFIGURATION });\n },\n });\n }\n\n component<Base extends BaseComponent<Options>, Options extends object = {}>(\n target: TClass<Base>,\n opts?: TMixinOpts<Options>,\n ): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.COMPONENT,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.component.name,\n opts,\n });\n }\n\n async registerComponents(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerComponents.name,\n description: 'Register application components',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.COMPONENT });\n },\n });\n }\n\n /**\n * Second DATASOURCE sweep, for datasources components contributed at any depth. Calls\n * `registerDynamicBindings` directly: `this.registerDataSources()` is polymorphic and an override\n * would run twice. Runs after every component, so a component a datasource registers is never configured.\n */\n async registerContributedDataSources(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerContributedDataSources.name,\n description: 'Register application contributed data sources',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.DATASOURCE });\n },\n });\n }\n\n /** REST only - the kernel has no gRPC (it reaches `node:module`). `BaseApplication` adds the gRPC branch on top. */\n async registerControllers(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n description: 'Register application REST controllers',\n scope: this.registerControllers.name,\n task: async () => {\n const transports = this.configs.transports ?? [ControllerTransports.REST];\n if (!transports.includes(ControllerTransports.REST)) {\n return;\n }\n\n const restComponent = new RestComponent(this);\n await restComponent.configure();\n },\n });\n }\n\n /** SINGLETON like `component()`: `RestComponent` mounts the one instance it resolves, so a second resolution must be that instance, not an unmounted twin. */\n controller<Base>(target: TClass<Base>, opts?: TMixinOpts): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.CONTROLLER,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.controller.name,\n opts,\n });\n }\n\n service<Base extends IService>(target: TClass<Base>, opts?: TMixinOpts): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.SERVICE,\n defaultScope: BindingScopes.TRANSIENT,\n caller: this.service.name,\n opts,\n });\n }\n\n repository<Base extends IRepository>(target: TClass<Base>, opts?: TMixinOpts): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.REPOSITORY,\n defaultScope: BindingScopes.TRANSIENT,\n caller: this.repository.name,\n opts,\n });\n }\n\n dataSource<Base extends IDataSource<Options>, Options extends object = {}>(\n target: TClass<Base>,\n opts?: TMixinOpts<Options>,\n ): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.DATASOURCE,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.dataSource.name,\n opts,\n });\n }\n\n /** The boot step body behind `configs.artifacts`, also callable by hand: registers every kind in dependency order across the given indexes. */\n async registerArtifacts(index: TArtifactIndexInput): Promise<void> {\n const resolved = await ArtifactIndexHelper.getInstance().resolve({\n input: index,\n application: this,\n });\n\n const registry = MetadataRegistry.getInstance();\n const kinds: Array<[ReadonlyArray<TClass<AnyType>>, TBindingNamespace]> = [\n [resolved.configurations, BindingNamespaces.CONFIGURATION],\n [resolved.dataSources, BindingNamespaces.DATASOURCE],\n [resolved.components, BindingNamespaces.COMPONENT],\n [resolved.repositories, BindingNamespaces.REPOSITORY],\n [resolved.services, BindingNamespaces.SERVICE],\n [resolved.controllers, BindingNamespaces.CONTROLLER],\n ];\n const collisions = ArtifactBindingKeys.findDerivedCollisions({\n entries: kinds.flatMap(([targets, namespace]) =>\n targets.map((target) => ({\n target,\n namespace,\n binding: registry.getArtifactMetadata({ target })?.binding,\n })),\n ),\n });\n\n for (const key of collisions) {\n const message = ArtifactBindingKeys.describeCollision({ key, caller: 'registerArtifacts' });\n\n if (!this.configs.bootChecks?.allowDerivedKeyCollision) {\n throw getError({ message });\n }\n\n this.logger.warn('%s', message);\n }\n\n for (const target of resolved.configurations) {\n this.configuration(target);\n this.bindProvidedKeys({ target });\n }\n\n for (const target of resolved.dataSources) {\n this.dataSource(target);\n }\n\n for (const target of resolved.components) {\n this.component(target);\n this.bindProvidedKeys({ target });\n }\n\n for (const target of resolved.repositories) {\n this.repository(target);\n }\n\n for (const target of resolved.services) {\n this.service(target);\n }\n\n for (const target of resolved.controllers) {\n this.controller(target);\n }\n }\n\n /** Registers every class a stereotype decorated, with no `configs.artifacts` entry anywhere. `when` and `order` apply exactly as they do to a declared index - which is how one process running several applications keeps them apart. */\n async registerDiscoveredArtifacts(): Promise<void> {\n await this.registerArtifacts(ArtifactIndexHelper.getInstance().buildDiscoveredIndex());\n }\n\n /**\n * The artifact boot step. `configs.discoverArtifacts` adds every decorated class in the import\n * graph; `configs.artifacts` adds exactly what it lists. Both together register the union.\n *\n * An absent `artifacts` still registers nothing. Reading it as \"register everything\" would change\n * what an existing application boots with, silently, and the failure would surface as ten times\n * the bindings rather than as an error.\n */\n protected async registerConfiguredArtifacts(): Promise<void> {\n const inputs: TArtifactIndexInput[] = [];\n\n if (this.configs.discoverArtifacts) {\n inputs.push(ArtifactIndexHelper.getInstance().buildDiscoveredIndex());\n }\n\n if (this.configs.artifacts) {\n inputs.push(this.configs.artifacts);\n }\n\n if (inputs.length === 0) {\n return;\n }\n\n await this.registerArtifacts(inputs);\n }\n\n /** Each `@provide` method becomes a lazy provider: the component is resolved (SINGLETON) and the method called on first `get`, so a provided value may depend on datasources or secrets that do not exist yet at registration time. */\n private bindProvidedKeys(opts: { target: TClass<any> }): void {\n const { target } = opts;\n const registry = MetadataRegistry.getInstance();\n const provides = registry.getProvideMetadata({ target });\n if (provides.length === 0) {\n return;\n }\n\n const declared = registry.getArtifactMetadata({ target });\n const defaultNamespace = declared?.type\n ? ArtifactNamespaces.resolve({ type: declared.type })\n : BindingNamespaces.COMPONENT;\n // The key the registration actually bound - a call-site override included.\n const componentKey =\n registry.getBindingKey({ target }) ??\n ArtifactBindingKeys.resolve({\n target,\n namespace: defaultNamespace,\n binding: declared?.binding,\n }).key;\n for (const entry of provides) {\n this.bind({ key: entry.key })\n .toProvider((container) => {\n const instance = container.get<Record<string | symbol, () => unknown>>({\n key: componentKey,\n });\n return instance[entry.methodName]();\n })\n .setScope(entry.scope ?? BindingScopes.SINGLETON);\n }\n }\n\n async registerDataSources(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerDataSources.name,\n description: 'Register application data sources',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.DATASOURCE });\n },\n });\n }\n\n /**\n * Closes every datasource the boot configured, so a stopped application holds no pool, socket or\n * WASM instance. A failure, or a `close()` still pending after `dataSourceCloseTimeoutMs`, is logged\n * and never stops the rest. A datasource configured by hand is closed by whoever configured it.\n */\n protected async closeDataSources(): Promise<void> {\n const keys = this.registeredBindings[BindingNamespaces.DATASOURCE] ?? new Set<string>();\n const timeoutMs = this.configs.dataSourceCloseTimeoutMs ?? 10_000;\n const logger = this.logger.for(this.closeDataSources.name);\n\n for (const key of keys) {\n try {\n const dataSource = this.get<IDataSource>({ key, isOptional: true });\n if (!dataSource?.close) {\n logger.debug('Nothing to close | key: %s', key);\n continue;\n }\n\n const closing = dataSource.close();\n await RetryHelper.runWithTimeout({ operation: key, timeoutMs, execution: () => closing });\n } catch (error) {\n if (RetryHelper.isRetryTimeoutError(error)) {\n logger.error('Close timed out | key: %s | timeoutMs: %d', key, timeoutMs);\n continue;\n }\n\n logger.error('Failed to close datasource | key: %s | error: %s', key, error);\n continue;\n }\n\n logger.info('Closed datasource | key: %s', key);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/base/applications/rest.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TBindingNamespace } from '@/common/bindings';\nimport { ArtifactNamespaces, BindingNamespaces, CoreBindings } from '@/common/bindings';\nimport type { Binding, TBindingScope } from '@/helpers/inversion';\nimport { BindingScopes, MetadataRegistry } from '@/helpers/inversion';\nimport { assertBindingsResolve } from '@venizia/ignis-inversion';\nimport { OpenAPIHono } from '@hono/zod-openapi';\nimport type { AnyType, IConfigurable, TClass, ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport {\n executeWithPerformanceMeasure,\n getError,\n RequestIdGenerator,\n RetryHelper,\n} from '@venizia/ignis-helpers/core';\nimport type { Env, Schema } from 'hono';\nimport { showRoutes as showApplicationRoutes } from 'hono/dev';\nimport { bodyLimit } from 'hono/body-limit';\nimport { requestId } from 'hono/request-id';\nimport type { BaseComponent } from '../components';\nimport { ArtifactBindingKeys } from '../metadata/artifact-keys';\nimport { RestComponent } from '../components/controller/rest/rest.component';\nimport type { BaseConfiguration } from '../configurations';\nimport { ControllerTransports } from '../controllers/common/constants';\nimport type { IDataSource } from '../datasources';\nimport { BaseAppErrorMiddleware } from '../middlewares/app-error/app-error.middleware';\nimport { RequestErrors } from '../middlewares/common/errors';\nimport { notFoundHandler } from '../middlewares/not-found/not-found.middleware';\nimport type { TMixinOpts } from '../mixins/common';\nimport type { IRepository } from '../repositories';\nimport type { IService } from '../services';\nimport { AbstractApplication } from './abstract';\nimport { registerCors } from './cors';\nimport { ArtifactIndexHelper } from './artifact-index';\nimport type { IBootSequenceStep } from './boot-sequence';\nimport { BootSteps } from './boot-sequence';\nimport type { IApplicationConfigs, IBodyLimitOptions, TArtifactIndexInput } from './common';\n\ninterface IRegisterDynamicBindingsOptions<T extends IConfigurable = IConfigurable> {\n namespace: TBindingNamespace;\n\n onBeforeConfigure?: (opts: { binding: Binding<T> }) => Promise<void>;\n onAfterConfigure?: (opts: { binding: Binding<T>; instance: T }) => Promise<void>;\n}\n\n/** Adds the `OpenAPIHono` router surface on top of `AbstractApplication` - no listening server, so this is the layer a browser Worker or gRPC-only host can extend without pulling in `Bun.serve`. */\nexport abstract class RestApplication<\n AppEnv extends Env = Env,\n AppSchema extends Schema = {},\n BasePath extends string = '/',\n> extends AbstractApplication {\n private registeredBindings: Record<string, Set<string>> = {};\n private artifactOptions = new Map<string, object>();\n\n /** The router, and nothing else. What runtime is underneath and what socket is bound are `ServerApplication`'s to know - a browser Worker has neither, and carrying the union here made `RuntimeModules.detect()` answer `'node'` inside a Worker. */\n protected server: { hono: OpenAPIHono<AppEnv, AppSchema, BasePath> };\n\n protected rootRouter: OpenAPIHono<AppEnv, AppSchema, BasePath>;\n protected readonly requestIdGenerator: RequestIdGenerator;\n\n /** A copy of the `bodyLimit` the default stack installed, absent until `registerDefaultMiddlewares()` ran. */\n private installedBodyLimit?: { options?: IBodyLimitOptions };\n\n constructor(opts: { scope: string; config: IApplicationConfigs }) {\n super(opts);\n\n // A config built from the environment can lose `path.base` at run time; the router would only fail later, inside `route()`, with a message that names nothing.\n if (typeof this.configs.path?.base !== 'string') {\n throw getError({\n message: `[${opts.scope}] configs.path.base must be a string | value: ${String(this.configs.path?.base)} | an empty string mounts the application at the root`,\n });\n }\n\n // The index signature accepts any key, so a leftover `strictPath` would compile and be ignored.\n if (this.configs.strictPath !== undefined) {\n throw getError({\n message: `[${opts.scope}] configs.strictPath was removed | value: ${String(this.configs.strictPath)} | Use configs.path.isStrict`,\n });\n }\n\n this.requestIdGenerator = new RequestIdGenerator({ scope: opts.scope });\n\n const strict = this.configs.path.isStrict ?? true;\n const honoServer = new OpenAPIHono<AppEnv, AppSchema, BasePath>({ strict });\n this.rootRouter = new OpenAPIHono({ strict });\n\n this.server = { hono: honoServer };\n }\n\n getRootRouter(): OpenAPIHono<AppEnv, AppSchema, BasePath> {\n return this.rootRouter;\n }\n\n getServer(): OpenAPIHono<AppEnv, AppSchema, BasePath> {\n return this.server.hono;\n }\n\n protected override registerCoreBindings() {\n super.registerCoreBindings();\n\n this.bind<typeof this.server>({\n key: CoreBindings.APPLICATION_SERVER,\n }).toProvider((_) => this.server);\n this.bind<typeof this.rootRouter>({\n key: CoreBindings.APPLICATION_ROOT_ROUTER,\n }).toProvider((_) => this.rootRouter);\n }\n\n /** The correlation id every host stamps - see {@link RequestIdGenerator} for why `crypto.randomUUID` is refused. */\n protected generateRequestId(): string {\n return this.requestIdGenerator.nextId();\n }\n\n /** The error handler the default stack installs. `@venizia/ignis` overrides it to swap in the `ErrorPrettier`-backed formatter, which reaches `node:util` and so cannot live here. */\n protected buildErrorMiddleware(): BaseAppErrorMiddleware {\n const environment = this.configs.error?.environment;\n\n return new BaseAppErrorMiddleware({\n logger: this.logger,\n rootKey: this.configs.error?.rootKey ?? undefined,\n // Spread, not `environment: () => environment`: the option's PRESENCE is what claims this host\n // has an ambient environment at all, so an unset config must leave it absent.\n ...(environment === undefined ? {} : { environment: () => environment }),\n });\n }\n\n /**\n * The three registrations every host needs: request id, error envelope, JSON 404 - without them a\n * thrown `ApplicationError` is a generic 500, a 404 is `text/plain`, and no response carries a request id.\n * Registered before `initialize()`, so an application's own handlers still win.\n */\n protected registerDefaultMiddlewares(): ValueOrPromise<void> {\n const server = this.getServer();\n\n // First of all, so every response the framework produces on its own - a bodyLimit 413, a body the\n // request spy cannot parse, the error envelope - leaves with the headers a browser needs to read it.\n registerCors({ server, options: this.configs.middlewares?.cors });\n\n server.use(requestId({ generator: () => this.generateRequestId() }));\n\n // Ahead of every middleware a host adds after this one, so none of them buffers a body over it.\n const bodyLimitOptions = this.configs.middlewares?.bodyLimit;\n this.installedBodyLimit = { options: this.toInstalledBodyLimit({ options: bodyLimitOptions }) };\n\n if (bodyLimitOptions && bodyLimitOptions.enable !== false) {\n const { maxSize, path, onError } = bodyLimitOptions;\n\n if (typeof maxSize !== 'number' || !Number.isFinite(maxSize) || maxSize < 0) {\n throw getError({\n message: `[registerDefaultMiddlewares] configs.middlewares.bodyLimit.maxSize must be a non-negative number of bytes | value: ${String(maxSize)}`,\n });\n }\n\n const limiter = bodyLimit({\n maxSize,\n onError:\n onError ??\n (() => {\n throw getError({\n error: RequestErrors.BODY_TOO_LARGE,\n message: `Request body exceeds the maximum of ${maxSize} bytes`,\n });\n }),\n });\n\n if (path) {\n server.use(path, limiter);\n } else {\n server.use(limiter);\n }\n }\n\n server.onError(this.buildErrorMiddleware().value());\n server.notFound(notFoundHandler({ logger: this.logger }));\n }\n\n /** What a `bodyLimit` config installs: nothing when absent or disabled, else a copy, so a later in-place edit shows. */\n private toInstalledBodyLimit(opts: {\n options?: IBodyLimitOptions;\n }): IBodyLimitOptions | undefined {\n const { options } = opts;\n\n if (!options || options.enable === false) {\n return undefined;\n }\n\n return { ...options };\n }\n\n private isSameBodyLimit(opts: { left?: IBodyLimitOptions; right?: IBodyLimitOptions }): boolean {\n const { left, right } = opts;\n\n if (!left || !right) {\n return left === right;\n }\n\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n for (const key of keys) {\n if (!Object.is(left[key], right[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * `configs.middlewares` is read by `registerDefaultMiddlewares()`, which runs before `staticConfigure()`.\n * A limit assigned in a boot hook would read back as configured while every request ran unlimited.\n */\n private assertBodyLimitUnchanged(opts: { step: string }): void {\n if (!this.installedBodyLimit) {\n return;\n }\n\n const installed = this.installedBodyLimit.options;\n const current = this.toInstalledBodyLimit({ options: this.configs.middlewares?.bodyLimit });\n\n if (this.isSameBodyLimit({ left: installed, right: current })) {\n return;\n }\n\n throw getError({\n message: `[${opts.step}] configs.middlewares.bodyLimit changed after registerDefaultMiddlewares() installed it | installed maxSize: ${installed?.maxSize ?? 'none'} | now maxSize: ${current?.maxSize ?? 'none'} | Pass it through the constructor config: new Application({ config: { middlewares: { bodyLimit } } })`,\n });\n }\n\n /**\n * The artifact order, stated once: datasources before the repositories that auto-resolve them,\n * components before the controllers they may contribute. `BaseApplication` splices its server-only\n * steps around these by name instead of rewriting the list.\n */\n protected getBootSequence(): IBootSequenceStep[] {\n return [\n {\n name: BootSteps.STATIC_CONFIGURE,\n run: async () => {\n // Declared `void`, but an override may be async; the step has always waited on it.\n await Promise.resolve(this.staticConfigure());\n this.assertBodyLimitUnchanged({ step: BootSteps.STATIC_CONFIGURE });\n },\n },\n { name: BootSteps.REGISTER_ARTIFACTS, run: () => this.registerConfiguredArtifacts() },\n {\n name: BootSteps.PRE_CONFIGURE,\n run: async () => {\n await this.runApplicationHook({\n name: BootSteps.PRE_CONFIGURE,\n hook: () => this.preConfigure(),\n });\n this.assertBodyLimitUnchanged({ step: BootSteps.PRE_CONFIGURE });\n },\n },\n {\n name: BootSteps.REGISTER_CONFIGURATIONS,\n run: () => this.registerConfigurations(),\n },\n { name: BootSteps.REGISTER_DATA_SOURCES, run: () => this.registerDataSources() },\n { name: BootSteps.REGISTER_COMPONENTS, run: () => this.registerComponents() },\n {\n name: BootSteps.REGISTER_CONTRIBUTED_DATA_SOURCES,\n run: () => this.registerContributedDataSources(),\n },\n { name: BootSteps.REGISTER_CONTROLLERS, run: () => this.registerControllers() },\n {\n name: BootSteps.POST_CONFIGURE,\n run: () =>\n this.runApplicationHook({\n name: BootSteps.POST_CONFIGURE,\n hook: () => this.postConfigure(),\n }),\n },\n { name: BootSteps.VERIFY_BINDINGS, run: () => this.verifyBindings() },\n ];\n }\n\n async initialize(): Promise<void> {\n await this.runBootSequence({ steps: this.getBootSequence() });\n }\n\n /** The application hook currently running, so `registerArtifact` can tell a hand registration inside `preConfigure`/`postConfigure` from one the index step made. */\n private runningApplicationHook: string | undefined;\n\n private async runApplicationHook(opts: {\n name: string;\n hook: () => ValueOrPromise<void>;\n }): Promise<void> {\n this.runningApplicationHook = opts.name;\n try {\n await opts.hook();\n } finally {\n this.runningApplicationHook = undefined;\n }\n }\n\n /**\n * Bound keys carrying one of `tags` that nothing has resolved since the counts were last reset.\n * The counter answers \"who was read\", never \"who is dead\" - an unread binding may be an\n * allow-list entry or a technical floor, and only the application can tell those apart.\n *\n * Counting is off by default. Call `startResolutionCounting()` after `initialize()` and run the\n * traffic that exercises the application, then read this.\n */\n getUnresolvedBindings(opts?: { tags?: string[] }): string[] {\n if (!this.hasStartedResolutionCounting) {\n throw getError({\n message: `[${this.getUnresolvedBindings.name}] Resolution counting never started | Call startResolutionCounting() after initialize(), run the traffic that exercises the application, then read this - without it every binding would be reported unresolved`,\n });\n }\n\n const tags = opts?.tags ?? [BindingNamespaces.SERVICE, BindingNamespaces.REPOSITORY];\n const counts = this.getResolutionCounts();\n const unresolved: string[] = [];\n\n for (const tag of tags) {\n const bindings = this.findByTag({ tag });\n for (const binding of bindings) {\n if (counts.has(binding.key)) {\n continue;\n }\n\n unresolved.push(binding.key);\n }\n }\n\n return unresolved;\n }\n\n /** `bootChecks.binding.doVerify`: resolve every service and repository once, collect every failure, throw once with the whole list - a made-up `@inject` key or a dependency a `when` excluded then fails the boot, not the first request. */\n protected verifyBindings(): void {\n if (!this.configs.bootChecks?.binding?.doVerify) {\n return;\n }\n\n const logger = this.logger.for(this.verifyBindings.name);\n const { verified } = assertBindingsResolve({\n container: this,\n namespaces: [BindingNamespaces.SERVICE, BindingNamespaces.REPOSITORY],\n scope: this.verifyBindings.name,\n });\n\n logger.info('Every service and repository binding resolves | verified: %d', verified.length);\n }\n\n /** One measured log line per step, and a failure names its step before rethrowing, so a hung or failed boot is attributable without reading the sequence. */\n protected async runBootSequence(opts: { steps: IBootSequenceStep[] }): Promise<void> {\n const { steps } = opts;\n const logger = this.logger.for(this.initialize.name);\n const t = performance.now();\n\n const stepsEntries = steps.entries();\n for (const [index, step] of stepsEntries) {\n try {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.initialize.name,\n description: `Boot step ${index + 1}/${steps.length} ${step.name}`,\n task: () => step.run(),\n });\n } catch (error) {\n logger.error(\n 'Boot step failed | step: %s (%d/%d) | error: %s',\n step.name,\n index + 1,\n steps.length,\n error,\n );\n throw error;\n }\n }\n\n logger.info(\n 'Boot sequence complete | %d step(s) | Took: %s (ms) | %s',\n steps.length,\n performance.now() - t,\n steps.map((step) => step.name).join(' -> '),\n );\n }\n\n protected inspectRoutes() {\n const t = performance.now();\n const shouldShowRoutes = this.configs?.debug?.shouldShowRoutes ?? false;\n\n if (!shouldShowRoutes) {\n return;\n }\n\n this.logger.for(this.inspectRoutes.name).info('START | Inspect all application route(s)');\n showApplicationRoutes(this.getServer());\n this.logger\n .for(this.inspectRoutes.name)\n .info('DONE | Inspect all application route(s) | Took: %s (ms)', performance.now() - t);\n }\n\n /**\n * `configured` is the drain's state, mutated in place: a fresh `Set` gives a one-shot complete\n * drain (`RestComponent`); `registerDynamicBindings` passes its persistent per-namespace `Set`,\n * which is why a second sweep touches only what the first one missed.\n */\n async drainByTag<T>(opts: {\n tag: string;\n configured: Set<string>;\n onEach: (opts: { binding: Binding<T> }) => Promise<void>;\n }): Promise<void> {\n const { tag, configured, onEach } = opts;\n\n // A whole batch is drained before re-scanning: the re-scan exists only to pick up bindings a\n // `configure()` added, and asking after every single item makes boot N+1 full scans of the\n // binding map - 3.5ms at 200 controllers, against 0.04ms for this shape.\n let bindings = this.findByTag<T>({ tag, exclude: configured });\n\n while (bindings.length > 0) {\n for (const binding of bindings) {\n // Within a batch a nested `configure()` may already have taken this one.\n if (configured.has(binding.key)) {\n continue;\n }\n\n await onEach({ binding });\n configured.add(binding.key);\n }\n\n // Re-fetch excluding already configured - picks up dynamically added bindings\n bindings = this.findByTag<T>({ tag, exclude: configured });\n }\n }\n\n protected async registerDynamicBindings<T extends IConfigurable = IConfigurable>(\n opts: IRegisterDynamicBindingsOptions<T>,\n ): Promise<void> {\n const logger = this.logger.for(this.registerDynamicBindings.name);\n const { namespace, onBeforeConfigure, onAfterConfigure } = opts;\n\n if (!this.registeredBindings[namespace]) {\n this.registeredBindings[namespace] = new Set<string>();\n }\n const configured = this.registeredBindings[namespace];\n\n await this.drainByTag<T>({\n tag: namespace,\n configured,\n onEach: async ({ binding }) => {\n if (onBeforeConfigure) {\n await onBeforeConfigure({ binding });\n }\n\n const instance = this.get<T>({ key: binding.key, isOptional: false });\n if (!instance) {\n logger.debug('No binding instance | namespace: %s | key: %s', namespace, binding.key);\n return;\n }\n\n if (typeof (instance as Partial<IConfigurable>)?.configure === 'function') {\n const options = this.artifactOptions.get(binding.key);\n await (instance as IConfigurable).configure(options);\n }\n\n // Marked before the after-hook runs, so the hook sees its own binding as configured.\n configured.add(binding.key);\n\n if (onAfterConfigure) {\n await onAfterConfigure({ binding, instance });\n }\n },\n });\n }\n\n /** The same-key guard behind every artifact registration (`component`/`controller`/`service`/`repository`/`dataSource`). `allowOverride` defaults true to match `bind()`'s overwrite behavior; `allowOverride: false` on one registration, or `bootChecks.binding.allowOverride: false` for the whole application, opts into strict mode. */\n protected assertNoBindingCollision(opts: {\n key: string;\n allowOverride?: boolean;\n caller: string;\n }): void {\n const { key, caller } = opts;\n const allowOverride =\n opts.allowOverride ?? this.configs.bootChecks?.binding?.allowOverride ?? true;\n\n if (allowOverride || !this.isBound({ key })) {\n return;\n }\n\n const reason =\n opts.allowOverride === false\n ? `'allowOverride: false' was set and this key collides with an existing binding | Use a distinct 'opts.binding' key, or drop 'allowOverride: false' if overriding is intentional`\n : `'bootChecks.binding.allowOverride' is false and this key collides with an existing binding | Use a distinct 'opts.binding' key, or set 'allowOverride: true' on this registration if overriding is intentional`;\n\n throw getError({\n message: `[${caller}] Binding key already registered: '${key}' | ${reason}`,\n });\n }\n\n /** Resolution order for every registration: explicit `opts` > the class's `@injectable` defaults > the derived key and the kind's default scope. `order` and `when` are `registerArtifacts`' concern, not this one. */\n private registerArtifact<Base>(opts: {\n target: TClass<Base>;\n namespace: TBindingNamespace;\n defaultScope: TBindingScope;\n caller: string;\n opts?: TMixinOpts;\n }): Binding<Base> {\n const { target, namespace, defaultScope, caller } = opts;\n const declared = MetadataRegistry.getInstance().getArtifactMetadata({ target });\n\n if (\n this.runningApplicationHook &&\n this.configs.artifacts &&\n this.configs.bootChecks?.binding?.allowManual === false\n ) {\n throw getError({\n message: `[${caller}] '${target.name}' is registered by hand inside ${this.runningApplicationHook}() while 'configs.artifacts' is set and 'bootChecks.binding.allowManual' is false | Move the class into the generated index (or an explicit entry of 'configs.artifacts'), or allow manual registration`,\n });\n }\n\n const pinned = opts.opts?.binding ?? declared?.binding;\n BindingNamespaces.assertArtifactNamespace({\n namespace: pinned?.namespace ?? namespace,\n artifact: target.name,\n caller,\n });\n\n const { key } = ArtifactBindingKeys.resolve({ target, namespace, binding: pinned });\n\n // What `@inject({ target })` reads back. Only here knows the call site's `binding`, and a\n // class registered by hand has no stereotype metadata to derive one from.\n MetadataRegistry.getInstance().setBindingKey({ target, key });\n\n if (opts.opts?.options !== undefined) {\n this.artifactOptions.set(key, opts.opts.options);\n }\n\n this.assertNoBindingCollision({\n key,\n allowOverride: opts.opts?.allowOverride ?? declared?.allowOverride,\n caller,\n });\n\n return this.bind<Base>({ key })\n .toClass(target)\n .setScope(declared?.scope ?? defaultScope);\n }\n\n configuration<Base extends BaseConfiguration<Options>, Options extends object = {}>(\n target: TClass<Base>,\n opts?: TMixinOpts<Options>,\n ): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.CONFIGURATION,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.configuration.name,\n opts,\n });\n }\n\n async registerConfigurations(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerConfigurations.name,\n description: 'Register application configurations',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.CONFIGURATION });\n },\n });\n }\n\n component<Base extends BaseComponent<Options>, Options extends object = {}>(\n target: TClass<Base>,\n opts?: TMixinOpts<Options>,\n ): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.COMPONENT,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.component.name,\n opts,\n });\n }\n\n async registerComponents(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerComponents.name,\n description: 'Register application components',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.COMPONENT });\n },\n });\n }\n\n /**\n * Second DATASOURCE sweep, for datasources components contributed at any depth. Calls\n * `registerDynamicBindings` directly: `this.registerDataSources()` is polymorphic and an override\n * would run twice. Runs after every component, so a component a datasource registers is never configured.\n */\n async registerContributedDataSources(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerContributedDataSources.name,\n description: 'Register application contributed data sources',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.DATASOURCE });\n },\n });\n }\n\n /** REST only - the kernel has no gRPC (it reaches `node:module`). `BaseApplication` adds the gRPC branch on top. */\n async registerControllers(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n description: 'Register application REST controllers',\n scope: this.registerControllers.name,\n task: async () => {\n const transports = this.configs.transports ?? [ControllerTransports.REST];\n if (!transports.includes(ControllerTransports.REST)) {\n return;\n }\n\n const restComponent = new RestComponent(this);\n await restComponent.configure();\n },\n });\n }\n\n /** SINGLETON like `component()`: `RestComponent` mounts the one instance it resolves, so a second resolution must be that instance, not an unmounted twin. */\n controller<Base>(target: TClass<Base>, opts?: TMixinOpts): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.CONTROLLER,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.controller.name,\n opts,\n });\n }\n\n service<Base extends IService>(target: TClass<Base>, opts?: TMixinOpts): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.SERVICE,\n defaultScope: BindingScopes.TRANSIENT,\n caller: this.service.name,\n opts,\n });\n }\n\n repository<Base extends IRepository>(target: TClass<Base>, opts?: TMixinOpts): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.REPOSITORY,\n defaultScope: BindingScopes.TRANSIENT,\n caller: this.repository.name,\n opts,\n });\n }\n\n dataSource<Base extends IDataSource<Options>, Options extends object = {}>(\n target: TClass<Base>,\n opts?: TMixinOpts<Options>,\n ): Binding<Base> {\n return this.registerArtifact({\n target,\n namespace: BindingNamespaces.DATASOURCE,\n defaultScope: BindingScopes.SINGLETON,\n caller: this.dataSource.name,\n opts,\n });\n }\n\n /** The boot step body behind `configs.artifacts`, also callable by hand: registers every kind in dependency order across the given indexes. */\n async registerArtifacts(index: TArtifactIndexInput): Promise<void> {\n const resolved = await ArtifactIndexHelper.getInstance().resolve({\n input: index,\n application: this,\n });\n\n const registry = MetadataRegistry.getInstance();\n const kinds: Array<[ReadonlyArray<TClass<AnyType>>, TBindingNamespace]> = [\n [resolved.configurations, BindingNamespaces.CONFIGURATION],\n [resolved.dataSources, BindingNamespaces.DATASOURCE],\n [resolved.components, BindingNamespaces.COMPONENT],\n [resolved.repositories, BindingNamespaces.REPOSITORY],\n [resolved.services, BindingNamespaces.SERVICE],\n [resolved.controllers, BindingNamespaces.CONTROLLER],\n ];\n const collisions = ArtifactBindingKeys.findDerivedCollisions({\n entries: kinds.flatMap(([targets, namespace]) =>\n targets.map((target) => ({\n target,\n namespace,\n binding: registry.getArtifactMetadata({ target })?.binding,\n })),\n ),\n });\n\n for (const key of collisions) {\n const message = ArtifactBindingKeys.describeCollision({ key, caller: 'registerArtifacts' });\n\n if (!this.configs.bootChecks?.allowDerivedKeyCollision) {\n throw getError({ message });\n }\n\n this.logger.warn('%s', message);\n }\n\n for (const target of resolved.configurations) {\n this.configuration(target);\n this.bindProvidedKeys({ target });\n }\n\n for (const target of resolved.dataSources) {\n this.dataSource(target);\n }\n\n for (const target of resolved.components) {\n this.component(target);\n this.bindProvidedKeys({ target });\n }\n\n for (const target of resolved.repositories) {\n this.repository(target);\n }\n\n for (const target of resolved.services) {\n this.service(target);\n }\n\n for (const target of resolved.controllers) {\n this.controller(target);\n }\n }\n\n /** Registers every class a stereotype decorated, with no `configs.artifacts` entry anywhere. `when` and `order` apply exactly as they do to a declared index - which is how one process running several applications keeps them apart. */\n async registerDiscoveredArtifacts(): Promise<void> {\n await this.registerArtifacts(ArtifactIndexHelper.getInstance().buildDiscoveredIndex());\n }\n\n /**\n * The artifact boot step. `configs.discoverArtifacts` adds every decorated class in the import\n * graph; `configs.artifacts` adds exactly what it lists. Both together register the union.\n *\n * An absent `artifacts` still registers nothing. Reading it as \"register everything\" would change\n * what an existing application boots with, silently, and the failure would surface as ten times\n * the bindings rather than as an error.\n */\n protected async registerConfiguredArtifacts(): Promise<void> {\n const inputs: TArtifactIndexInput[] = [];\n\n if (this.configs.discoverArtifacts) {\n inputs.push(ArtifactIndexHelper.getInstance().buildDiscoveredIndex());\n }\n\n if (this.configs.artifacts) {\n inputs.push(this.configs.artifacts);\n }\n\n if (inputs.length === 0) {\n return;\n }\n\n await this.registerArtifacts(inputs);\n }\n\n /** Each `@provide` method becomes a lazy provider: the component is resolved (SINGLETON) and the method called on first `get`, so a provided value may depend on datasources or secrets that do not exist yet at registration time. */\n private bindProvidedKeys(opts: { target: TClass<any> }): void {\n const { target } = opts;\n const registry = MetadataRegistry.getInstance();\n const provides = registry.getProvideMetadata({ target });\n if (provides.length === 0) {\n return;\n }\n\n const declared = registry.getArtifactMetadata({ target });\n const defaultNamespace = declared?.type\n ? ArtifactNamespaces.resolve({ type: declared.type })\n : BindingNamespaces.COMPONENT;\n // The key the registration actually bound - a call-site override included.\n const componentKey =\n registry.getBindingKey({ target }) ??\n ArtifactBindingKeys.resolve({\n target,\n namespace: defaultNamespace,\n binding: declared?.binding,\n }).key;\n for (const entry of provides) {\n this.bind({ key: entry.key })\n .toProvider((container) => {\n const instance = container.get<Record<string | symbol, () => unknown>>({\n key: componentKey,\n });\n return instance[entry.methodName]();\n })\n .setScope(entry.scope ?? BindingScopes.SINGLETON);\n }\n }\n\n async registerDataSources(): Promise<void> {\n await executeWithPerformanceMeasure({\n logger: this.logger,\n scope: this.registerDataSources.name,\n description: 'Register application data sources',\n task: async () => {\n await this.registerDynamicBindings({ namespace: BindingNamespaces.DATASOURCE });\n },\n });\n }\n\n /**\n * Closes every datasource the boot configured, so a stopped application holds no pool, socket or\n * WASM instance. A failure, or a `close()` still pending after `dataSourceCloseTimeoutMs`, is logged\n * and never stops the rest. A datasource configured by hand is closed by whoever configured it.\n */\n protected async closeDataSources(): Promise<void> {\n const keys = this.registeredBindings[BindingNamespaces.DATASOURCE] ?? new Set<string>();\n const timeoutMs = this.configs.dataSourceCloseTimeoutMs ?? 10_000;\n const logger = this.logger.for(this.closeDataSources.name);\n\n for (const key of keys) {\n try {\n const dataSource = this.get<IDataSource>({ key, isOptional: true });\n if (!dataSource?.close) {\n logger.debug('Nothing to close | key: %s', key);\n continue;\n }\n\n const closing = dataSource.close();\n await RetryHelper.runWithTimeout({ operation: key, timeoutMs, execution: () => closing });\n } catch (error) {\n if (RetryHelper.isRetryTimeoutError(error)) {\n logger.error('Close timed out | key: %s | timeoutMs: %d', key, timeoutMs);\n continue;\n }\n\n logger.error('Failed to close datasource | key: %s | error: %s', key, error);\n continue;\n }\n\n logger.info('Closed datasource | key: %s', key);\n }\n }\n}\n"]}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { IModelMetadata } from '../../helpers/inversion/index.js';
|
|
2
|
-
/** The release that drops the deprecated `skipMigrate` key. */
|
|
3
|
-
export declare const DEPRECATED_MODEL_METADATA_REMOVED_IN = "0.4.4";
|
|
4
2
|
/**
|
|
5
3
|
* The one place the `@model` metadata outside `settings` is checked and normalised.
|
|
6
4
|
*
|
|
7
5
|
* - `type` is optional; a value must be one of {@link ModelTypes}.
|
|
8
|
-
* - `skipMigrate` (
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
6
|
+
* - `skipMigrate` is gone (0.4.4): the decorator throws on it and names the replacement, the way it
|
|
7
|
+
* does for the flat settings keys removed in 0.4.3. The check reads the key by name because an
|
|
8
|
+
* untyped caller, or a model written before the removal, never meets the type error.
|
|
9
|
+
* - When the model declares `migration`, the registry entry carries it with `use` filled in.
|
|
12
10
|
*/
|
|
13
11
|
export declare const normalizeModelMetadata: (opts: {
|
|
14
12
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-metadata.d.ts","sourceRoot":"","sources":["../../../../src/base/metadata/model-metadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"model-metadata.d.ts","sourceRoot":"","sources":["../../../../src/base/metadata/model-metadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;CAC1B,KAAG,cA0BH,CAAC"}
|
|
@@ -1,46 +1,33 @@
|
|
|
1
1
|
import { getError } from '@venizia/ignis-helpers/core';
|
|
2
2
|
import { ModelTypes } from '../models/common/constants.js';
|
|
3
|
-
/** The release that drops the deprecated `skipMigrate` key. */
|
|
4
|
-
export const DEPRECATED_MODEL_METADATA_REMOVED_IN = '0.4.4';
|
|
5
3
|
/**
|
|
6
4
|
* The one place the `@model` metadata outside `settings` is checked and normalised.
|
|
7
5
|
*
|
|
8
6
|
* - `type` is optional; a value must be one of {@link ModelTypes}.
|
|
9
|
-
* - `skipMigrate` (
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
7
|
+
* - `skipMigrate` is gone (0.4.4): the decorator throws on it and names the replacement, the way it
|
|
8
|
+
* does for the flat settings keys removed in 0.4.3. The check reads the key by name because an
|
|
9
|
+
* untyped caller, or a model written before the removal, never meets the type error.
|
|
10
|
+
* - When the model declares `migration`, the registry entry carries it with `use` filled in.
|
|
13
11
|
*/
|
|
14
12
|
export const normalizeModelMetadata = (opts) => {
|
|
15
13
|
const { model, metadata } = opts;
|
|
16
|
-
const { type,
|
|
14
|
+
const { type, migration } = metadata;
|
|
17
15
|
if (type !== undefined && !ModelTypes.isValid(type)) {
|
|
18
16
|
throw getError({
|
|
19
17
|
message: `[model][${model}] Invalid 'type' | Expected one of: ${[...ModelTypes.SCHEME_SET].join(', ')} (or leave it out) | Got: ${String(type)}`,
|
|
20
18
|
});
|
|
21
19
|
}
|
|
22
|
-
if (skipMigrate
|
|
20
|
+
if ('skipMigrate' in metadata) {
|
|
21
|
+
const replacement = metadata.skipMigrate === false
|
|
22
|
+
? 'remove the key (migration.use is true by default)'
|
|
23
|
+
: 'write migration: { use: false }';
|
|
23
24
|
throw getError({
|
|
24
|
-
message: `[model][${model}] skipMigrate
|
|
25
|
+
message: `[model][${model}] skipMigrate was removed in 0.4.4 | ${replacement} | run \`bunx devz codemod model-settings --write\` to rewrite every model`,
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
|
-
if (
|
|
28
|
+
if (migration === undefined) {
|
|
28
29
|
return metadata;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
let use;
|
|
32
|
-
if (skipMigrate !== undefined) {
|
|
33
|
-
use = !skipMigrate;
|
|
34
|
-
deprecatedMetadata.push({ key: 'skipMigrate', use: 'migration: { use: false }' });
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
use = migration?.use !== false;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
...metadata,
|
|
41
|
-
migration: { ...migration, use },
|
|
42
|
-
skipMigrate: !use,
|
|
43
|
-
...(deprecatedMetadata.length > 0 ? { deprecatedMetadata } : {}),
|
|
44
|
-
};
|
|
31
|
+
return { ...metadata, migration: { ...migration, use: migration.use !== false } };
|
|
45
32
|
};
|
|
46
33
|
//# sourceMappingURL=model-metadata.js.map
|