zibri 2.4.1 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/application-options.model.d.ts +2 -2
- package/dist/cjs/application-options.model.d.ts.map +1 -1
- package/dist/cjs/application.d.ts.map +1 -1
- package/dist/cjs/application.js +0 -1
- package/dist/cjs/application.js.map +1 -1
- package/dist/cjs/assets/asset.service.d.ts.map +1 -1
- package/dist/cjs/assets/asset.service.js +3 -1
- package/dist/cjs/assets/asset.service.js.map +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp-credentials.model.d.ts +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp-credentials.model.d.ts.map +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp-credentials.model.js.map +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp.two-factor-method.js +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp.two-factor-method.js.map +1 -1
- package/dist/cjs/auth/strategies/cookie/cookie-auth.controller.js +1 -1
- package/dist/cjs/auth/strategies/cookie/cookie-auth.controller.js.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-auth.controller.js +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-auth.controller.js.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.js +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.js.map +1 -1
- package/dist/cjs/backup/backup-resource-entity.model.d.ts +1 -1
- package/dist/cjs/backup/backup-resource-entity.model.d.ts.map +1 -1
- package/dist/cjs/backup/backup-resource-entity.model.js.map +1 -1
- package/dist/cjs/change-sets/models/change-set.model.d.ts +1 -1
- package/dist/cjs/change-sets/models/change-set.model.d.ts.map +1 -1
- package/dist/cjs/change-sets/models/change-set.model.js +1 -1
- package/dist/cjs/change-sets/models/change-set.model.js.map +1 -1
- package/dist/cjs/change-sets/models/change.model.d.ts +2 -2
- package/dist/cjs/change-sets/models/change.model.d.ts.map +1 -1
- package/dist/cjs/change-sets/models/change.model.js.map +1 -1
- package/dist/cjs/context/cache/cache.context.d.ts +2 -2
- package/dist/cjs/context/cache/cache.context.d.ts.map +1 -1
- package/dist/cjs/context/cache/cache.context.js +2 -2
- package/dist/cjs/context/cache/cache.context.js.map +1 -1
- package/dist/cjs/context/request/request-context-token.model.js +1 -1
- package/dist/cjs/context/request/request-context-token.model.js.map +1 -1
- package/dist/cjs/cron/cron-job-entity.model.d.ts +2 -2
- package/dist/cjs/cron/cron-job-entity.model.d.ts.map +1 -1
- package/dist/cjs/cron/cron-job-entity.model.js.map +1 -1
- package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.d.ts +1 -0
- package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.d.ts.map +1 -1
- package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.js +9 -0
- package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.js.map +1 -1
- package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.d.ts.map +1 -1
- package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.js +3 -3
- package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.js.map +1 -1
- package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.d.ts +2 -1
- package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.d.ts.map +1 -1
- package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js +20 -0
- package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js.map +1 -1
- package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.d.ts +4 -0
- package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.d.ts.map +1 -1
- package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.js +3 -1
- package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.js.map +1 -1
- package/dist/cjs/data-source/migration/migration-entity.model.d.ts +2 -2
- package/dist/cjs/data-source/migration/migration-entity.model.d.ts.map +1 -1
- package/dist/cjs/data-source/migration/migration-entity.model.js.map +1 -1
- package/dist/cjs/data-source/migration/migration.model.d.ts +2 -2
- package/dist/cjs/data-source/migration/migration.model.d.ts.map +1 -1
- package/dist/cjs/data-source/models/where/date-where-filter.model.d.ts +10 -2
- package/dist/cjs/data-source/models/where/date-where-filter.model.d.ts.map +1 -1
- package/dist/cjs/data-source/models/where/string-where-filter.model.d.ts +17 -0
- package/dist/cjs/data-source/models/where/string-where-filter.model.d.ts.map +1 -1
- package/dist/cjs/data-source/models/where/where-filter-keys.model.d.ts.map +1 -1
- package/dist/cjs/data-source/models/where/where-filter-keys.model.js +3 -0
- package/dist/cjs/data-source/models/where/where-filter-keys.model.js.map +1 -1
- package/dist/cjs/di/default/zibri-di-providers.default.d.ts.map +1 -1
- package/dist/cjs/di/default/zibri-di-providers.default.js +4 -0
- package/dist/cjs/di/default/zibri-di-providers.default.js.map +1 -1
- package/dist/cjs/di/default/zibri-di-tokens.default.d.ts +3 -0
- package/dist/cjs/di/default/zibri-di-tokens.default.d.ts.map +1 -1
- package/dist/cjs/di/default/zibri-di-tokens.default.js +2 -0
- package/dist/cjs/di/default/zibri-di-tokens.default.js.map +1 -1
- package/dist/cjs/email/email.service.d.ts +1 -1
- package/dist/cjs/email/email.service.d.ts.map +1 -1
- package/dist/cjs/email/email.service.js +4 -4
- package/dist/cjs/email/email.service.js.map +1 -1
- package/dist/cjs/email/models/email.model.d.ts +4 -4
- package/dist/cjs/email/models/email.model.d.ts.map +1 -1
- package/dist/cjs/email/models/email.model.js +4 -4
- package/dist/cjs/email/models/email.model.js.map +1 -1
- package/dist/cjs/entity/generation/generate-entity-file.function.js +1 -1
- package/dist/cjs/entity/generation/generate-entity-file.function.js.map +1 -1
- package/dist/cjs/event/event-subscriber-run.model.d.ts +1 -1
- package/dist/cjs/event/event-subscriber-run.model.d.ts.map +1 -1
- package/dist/cjs/event/event-subscriber-run.model.js +1 -1
- package/dist/cjs/event/event-subscriber-run.model.js.map +1 -1
- package/dist/cjs/global/global-registry.d.ts +2 -2
- package/dist/cjs/global/global-registry.d.ts.map +1 -1
- package/dist/cjs/http/http-request.model.d.ts +2 -2
- package/dist/cjs/http/http-request.model.d.ts.map +1 -1
- package/dist/cjs/http/known-header.enum.d.ts +1 -0
- package/dist/cjs/http/known-header.enum.d.ts.map +1 -1
- package/dist/cjs/http/known-header.enum.js +1 -0
- package/dist/cjs/http/known-header.enum.js.map +1 -1
- package/dist/cjs/http-client/http-client.d.ts.map +1 -1
- package/dist/cjs/http-client/http-client.js.map +1 -1
- package/dist/cjs/index.d.ts +7 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/localization/formatting/format-price.function.d.ts.map +1 -1
- package/dist/cjs/localization/formatting/format-price.function.js.map +1 -1
- package/dist/cjs/logging/log-context.model.d.ts +6 -6
- package/dist/cjs/logging/log-context.model.d.ts.map +1 -1
- package/dist/cjs/logging/log-context.model.js +6 -6
- package/dist/cjs/logging/log-context.model.js.map +1 -1
- package/dist/cjs/logging/logger.js +1 -1
- package/dist/cjs/logging/logger.js.map +1 -1
- package/dist/cjs/multithreading/models/thread-job-entity.model.d.ts +5 -5
- package/dist/cjs/multithreading/models/thread-job-entity.model.d.ts.map +1 -1
- package/dist/cjs/multithreading/models/thread-job-entity.model.js +4 -4
- package/dist/cjs/multithreading/models/thread-job-entity.model.js.map +1 -1
- package/dist/cjs/multithreading/services/thread-job.d.ts +4 -4
- package/dist/cjs/multithreading/services/thread-job.d.ts.map +1 -1
- package/dist/cjs/multithreading/services/thread-job.js.map +1 -1
- package/dist/cjs/open-api/open-api-service.interface.d.ts +2 -1
- package/dist/cjs/open-api/open-api-service.interface.d.ts.map +1 -1
- package/dist/cjs/open-api/open-api.service.d.ts +5 -2
- package/dist/cjs/open-api/open-api.service.d.ts.map +1 -1
- package/dist/cjs/open-api/open-api.service.js +256 -139
- package/dist/cjs/open-api/open-api.service.js.map +1 -1
- package/dist/cjs/parsing/html/csp-options.model.d.ts +1 -1
- package/dist/cjs/parsing/html/csp-options.model.d.ts.map +1 -1
- package/dist/cjs/parsing/html/csp-options.model.js.map +1 -1
- package/dist/cjs/parsing/parser.js +3 -3
- package/dist/cjs/parsing/parser.js.map +1 -1
- package/dist/cjs/plugin/invoicing/models/invoice-address.model.d.ts +2 -2
- package/dist/cjs/plugin/invoicing/models/invoice-address.model.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/models/invoice-address.model.js +2 -2
- package/dist/cjs/plugin/invoicing/models/invoice-address.model.js.map +1 -1
- package/dist/cjs/plugin/invoicing/models/vat.model.d.ts +1 -1
- package/dist/cjs/plugin/invoicing/models/vat.model.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/models/vat.model.js +1 -1
- package/dist/cjs/plugin/invoicing/models/vat.model.js.map +1 -1
- package/dist/cjs/plugin/mailing-list/mailing-list.controller.js +1 -1
- package/dist/cjs/plugin/mailing-list/mailing-list.controller.js.map +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscriber.model.d.ts +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscriber.model.d.ts.map +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscriber.model.js +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscriber.model.js.map +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.d.ts +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.d.ts.map +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.js +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.js.map +1 -1
- package/dist/cjs/plugin/payment/models/payment.model.d.ts +2 -2
- package/dist/cjs/plugin/payment/models/payment.model.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/models/payment.model.js +1 -1
- package/dist/cjs/plugin/payment/models/payment.model.js.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.d.ts +17 -17
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.js +17 -17
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.js.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js.map +1 -1
- package/dist/cjs/preact/preact.utilities.js +1 -1
- package/dist/cjs/preact/preact.utilities.js.map +1 -1
- package/dist/cjs/preact/validate-email-templates.function.js +1 -1
- package/dist/cjs/preact/validate-email-templates.function.js.map +1 -1
- package/dist/cjs/rate-limiting/rate-limiter.d.ts +10 -5
- package/dist/cjs/rate-limiting/rate-limiter.d.ts.map +1 -1
- package/dist/cjs/rate-limiting/rate-limiter.js +22 -12
- package/dist/cjs/rate-limiting/rate-limiter.js.map +1 -1
- package/dist/cjs/routing/controller-route-configuration.model.d.ts +5 -0
- package/dist/cjs/routing/controller-route-configuration.model.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/controller.decorator.d.ts +5 -0
- package/dist/cjs/routing/decorators/controller.decorator.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/controller.decorator.js +3 -2
- package/dist/cjs/routing/decorators/controller.decorator.js.map +1 -1
- package/dist/cjs/routing/decorators/create-http-decorator.function.d.ts +2 -1
- package/dist/cjs/routing/decorators/create-http-decorator.function.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/create-http-decorator.function.js +2 -2
- package/dist/cjs/routing/decorators/create-http-decorator.function.js.map +1 -1
- package/dist/cjs/routing/decorators/delete.decorator.d.ts +3 -1
- package/dist/cjs/routing/decorators/delete.decorator.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/delete.decorator.js +3 -2
- package/dist/cjs/routing/decorators/delete.decorator.js.map +1 -1
- package/dist/cjs/routing/decorators/get.decorator.d.ts +3 -1
- package/dist/cjs/routing/decorators/get.decorator.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/get.decorator.js +3 -2
- package/dist/cjs/routing/decorators/get.decorator.js.map +1 -1
- package/dist/cjs/routing/decorators/http-decorator-option-input.model.d.ts +11 -0
- package/dist/cjs/routing/decorators/http-decorator-option-input.model.d.ts.map +1 -0
- package/dist/cjs/routing/decorators/http-decorator-option-input.model.js +3 -0
- package/dist/cjs/routing/decorators/http-decorator-option-input.model.js.map +1 -0
- package/dist/cjs/routing/decorators/patch.decorator.d.ts +3 -1
- package/dist/cjs/routing/decorators/patch.decorator.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/patch.decorator.js +3 -2
- package/dist/cjs/routing/decorators/patch.decorator.js.map +1 -1
- package/dist/cjs/routing/decorators/post.decorator.d.ts +3 -1
- package/dist/cjs/routing/decorators/post.decorator.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/post.decorator.js +3 -2
- package/dist/cjs/routing/decorators/post.decorator.js.map +1 -1
- package/dist/cjs/routing/resolve-route-params.function.js +1 -0
- package/dist/cjs/routing/resolve-route-params.function.js.map +1 -1
- package/dist/cjs/routing/route-configuration.model.d.ts +11 -1
- package/dist/cjs/routing/route-configuration.model.d.ts.map +1 -1
- package/dist/cjs/routing/router.d.ts +6 -2
- package/dist/cjs/routing/router.d.ts.map +1 -1
- package/dist/cjs/routing/router.js +173 -88
- package/dist/cjs/routing/router.js.map +1 -1
- package/dist/cjs/utilities/fs.utilities.d.ts +1 -1
- package/dist/cjs/utilities/fs.utilities.js +1 -1
- package/dist/cjs/utilities/sem-ver.utilities.d.ts +46 -0
- package/dist/cjs/utilities/sem-ver.utilities.d.ts.map +1 -0
- package/dist/cjs/utilities/sem-ver.utilities.js +204 -0
- package/dist/cjs/utilities/sem-ver.utilities.js.map +1 -0
- package/dist/cjs/utilities/uuid.utilities.js +2 -2
- package/dist/cjs/utilities/uuid.utilities.js.map +1 -1
- package/dist/cjs/versioning/route-with-version-data.model.d.ts +15 -0
- package/dist/cjs/versioning/route-with-version-data.model.d.ts.map +1 -0
- package/dist/cjs/versioning/route-with-version-data.model.js +3 -0
- package/dist/cjs/versioning/route-with-version-data.model.js.map +1 -0
- package/dist/cjs/versioning/supported-versions-options.model.d.ts +17 -0
- package/dist/cjs/versioning/supported-versions-options.model.d.ts.map +1 -0
- package/dist/cjs/versioning/supported-versions-options.model.js +3 -0
- package/dist/cjs/versioning/supported-versions-options.model.js.map +1 -0
- package/dist/cjs/versioning/version.model.d.ts +29 -0
- package/dist/cjs/versioning/version.model.d.ts.map +1 -0
- package/dist/{esm/types/version.type.js → cjs/versioning/version.model.js} +1 -1
- package/dist/cjs/versioning/version.model.js.map +1 -0
- package/dist/cjs/versioning/versioning-service.interface.d.ts +31 -0
- package/dist/cjs/versioning/versioning-service.interface.d.ts.map +1 -0
- package/dist/cjs/versioning/versioning-service.interface.js +3 -0
- package/dist/cjs/versioning/versioning-service.interface.js.map +1 -0
- package/dist/cjs/versioning/versioning.service.d.ts +41 -0
- package/dist/cjs/versioning/versioning.service.d.ts.map +1 -0
- package/dist/cjs/versioning/versioning.service.js +366 -0
- package/dist/cjs/versioning/versioning.service.js.map +1 -0
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.d.ts +10 -0
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.d.ts.map +1 -1
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.js +2 -2
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.js.map +1 -1
- package/dist/cjs/websocket/decorators/websocket-route.decorator.d.ts +13 -1
- package/dist/cjs/websocket/decorators/websocket-route.decorator.d.ts.map +1 -1
- package/dist/cjs/websocket/decorators/websocket-route.decorator.js +3 -2
- package/dist/cjs/websocket/decorators/websocket-route.decorator.js.map +1 -1
- package/dist/cjs/websocket/models/connection/base-websocket-connection.model.d.ts +5 -0
- package/dist/cjs/websocket/models/connection/base-websocket-connection.model.d.ts.map +1 -1
- package/dist/cjs/websocket/models/connection/socket-io-websocket-connection.model.d.ts +3 -1
- package/dist/cjs/websocket/models/connection/socket-io-websocket-connection.model.d.ts.map +1 -1
- package/dist/cjs/websocket/models/connection/socket-io-websocket-connection.model.js +3 -1
- package/dist/cjs/websocket/models/connection/socket-io-websocket-connection.model.js.map +1 -1
- package/dist/cjs/websocket/models/websocket-controller-route-configuration.model.d.ts +6 -0
- package/dist/cjs/websocket/models/websocket-controller-route-configuration.model.d.ts.map +1 -1
- package/dist/cjs/websocket/models/websocket-message.model.d.ts +2 -2
- package/dist/cjs/websocket/models/websocket-message.model.d.ts.map +1 -1
- package/dist/cjs/websocket/models/websocket-message.model.js.map +1 -1
- package/dist/cjs/websocket/models/websocket-request.model.d.ts +3 -3
- package/dist/cjs/websocket/models/websocket-request.model.d.ts.map +1 -1
- package/dist/cjs/websocket/models/websocket-request.model.js +1 -1
- package/dist/cjs/websocket/models/websocket-request.model.js.map +1 -1
- package/dist/cjs/websocket/services/websocket.service.d.ts +6 -4
- package/dist/cjs/websocket/services/websocket.service.d.ts.map +1 -1
- package/dist/cjs/websocket/services/websocket.service.js +121 -33
- package/dist/cjs/websocket/services/websocket.service.js.map +1 -1
- package/dist/esm/application.js +0 -1
- package/dist/esm/application.js.map +1 -1
- package/dist/esm/assets/asset.service.js +3 -1
- package/dist/esm/assets/asset.service.js.map +1 -1
- package/dist/esm/auth/2fa/methods/otp/otp-credentials.model.js.map +1 -1
- package/dist/esm/auth/2fa/methods/otp/otp.two-factor-method.js +1 -1
- package/dist/esm/auth/2fa/methods/otp/otp.two-factor-method.js.map +1 -1
- package/dist/esm/auth/strategies/cookie/cookie-auth.controller.js +1 -1
- package/dist/esm/auth/strategies/cookie/cookie-auth.controller.js.map +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-auth.controller.js +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-auth.controller.js.map +1 -1
- package/dist/esm/auth/strategies/jwt/jwt.auth-strategy.js +1 -1
- package/dist/esm/auth/strategies/jwt/jwt.auth-strategy.js.map +1 -1
- package/dist/esm/backup/backup-resource-entity.model.js.map +1 -1
- package/dist/esm/change-sets/models/change-set.model.js +1 -1
- package/dist/esm/change-sets/models/change-set.model.js.map +1 -1
- package/dist/esm/change-sets/models/change.model.js.map +1 -1
- package/dist/esm/context/cache/cache.context.js +2 -2
- package/dist/esm/context/cache/cache.context.js.map +1 -1
- package/dist/esm/context/request/request-context-token.model.js +1 -1
- package/dist/esm/context/request/request-context-token.model.js.map +1 -1
- package/dist/esm/cron/cron-job-entity.model.js.map +1 -1
- package/dist/esm/data-source/data-sources/postgres-typeorm-data-source.model.js +9 -0
- package/dist/esm/data-source/data-sources/postgres-typeorm-data-source.model.js.map +1 -1
- package/dist/esm/data-source/data-sources/typeorm-base-data-source.model.js +3 -3
- package/dist/esm/data-source/data-sources/typeorm-base-data-source.model.js.map +1 -1
- package/dist/esm/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js +20 -0
- package/dist/esm/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js.map +1 -1
- package/dist/esm/data-source/data-sources/where-converter/typeorm-where-filter.converter.js +3 -1
- package/dist/esm/data-source/data-sources/where-converter/typeorm-where-filter.converter.js.map +1 -1
- package/dist/esm/data-source/migration/migration-entity.model.js.map +1 -1
- package/dist/esm/data-source/models/where/where-filter-keys.model.js +3 -0
- package/dist/esm/data-source/models/where/where-filter-keys.model.js.map +1 -1
- package/dist/esm/di/default/zibri-di-providers.default.js +4 -0
- package/dist/esm/di/default/zibri-di-providers.default.js.map +1 -1
- package/dist/esm/di/default/zibri-di-tokens.default.js +2 -0
- package/dist/esm/di/default/zibri-di-tokens.default.js.map +1 -1
- package/dist/esm/email/email.service.js +4 -4
- package/dist/esm/email/email.service.js.map +1 -1
- package/dist/esm/email/models/email.model.js +4 -4
- package/dist/esm/email/models/email.model.js.map +1 -1
- package/dist/esm/entity/generation/generate-entity-file.function.js +1 -1
- package/dist/esm/entity/generation/generate-entity-file.function.js.map +1 -1
- package/dist/esm/event/event-subscriber-run.model.js +1 -1
- package/dist/esm/event/event-subscriber-run.model.js.map +1 -1
- package/dist/esm/http/known-header.enum.js +1 -0
- package/dist/esm/http/known-header.enum.js.map +1 -1
- package/dist/esm/http-client/http-client.js.map +1 -1
- package/dist/esm/index.js +8 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/localization/formatting/format-price.function.js.map +1 -1
- package/dist/esm/logging/log-context.model.js +6 -6
- package/dist/esm/logging/log-context.model.js.map +1 -1
- package/dist/esm/logging/logger.js +1 -1
- package/dist/esm/logging/logger.js.map +1 -1
- package/dist/esm/multithreading/models/thread-job-entity.model.js +4 -4
- package/dist/esm/multithreading/models/thread-job-entity.model.js.map +1 -1
- package/dist/esm/multithreading/services/thread-job.js.map +1 -1
- package/dist/esm/open-api/open-api.service.js +256 -139
- package/dist/esm/open-api/open-api.service.js.map +1 -1
- package/dist/esm/parsing/html/csp-options.model.js.map +1 -1
- package/dist/esm/parsing/parser.js +3 -3
- package/dist/esm/parsing/parser.js.map +1 -1
- package/dist/esm/plugin/invoicing/models/invoice-address.model.js +2 -2
- package/dist/esm/plugin/invoicing/models/invoice-address.model.js.map +1 -1
- package/dist/esm/plugin/invoicing/models/vat.model.js +1 -1
- package/dist/esm/plugin/invoicing/models/vat.model.js.map +1 -1
- package/dist/esm/plugin/mailing-list/mailing-list.controller.js +1 -1
- package/dist/esm/plugin/mailing-list/mailing-list.controller.js.map +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscriber.model.js +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscriber.model.js.map +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.js +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.js.map +1 -1
- package/dist/esm/plugin/payment/models/payment.model.js +1 -1
- package/dist/esm/plugin/payment/models/payment.model.js.map +1 -1
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal-client.js +17 -17
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal-client.js.map +1 -1
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js +1 -1
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js.map +1 -1
- package/dist/esm/preact/preact.utilities.js +1 -1
- package/dist/esm/preact/preact.utilities.js.map +1 -1
- package/dist/esm/preact/validate-email-templates.function.js +1 -1
- package/dist/esm/preact/validate-email-templates.function.js.map +1 -1
- package/dist/esm/rate-limiting/rate-limiter.js +22 -12
- package/dist/esm/rate-limiting/rate-limiter.js.map +1 -1
- package/dist/esm/routing/decorators/controller.decorator.js +3 -2
- package/dist/esm/routing/decorators/controller.decorator.js.map +1 -1
- package/dist/esm/routing/decorators/create-http-decorator.function.js +2 -2
- package/dist/esm/routing/decorators/create-http-decorator.function.js.map +1 -1
- package/dist/esm/routing/decorators/delete.decorator.js +3 -2
- package/dist/esm/routing/decorators/delete.decorator.js.map +1 -1
- package/dist/esm/routing/decorators/get.decorator.js +3 -2
- package/dist/esm/routing/decorators/get.decorator.js.map +1 -1
- package/dist/esm/routing/decorators/http-decorator-option-input.model.js +3 -0
- package/dist/esm/routing/decorators/http-decorator-option-input.model.js.map +1 -0
- package/dist/esm/routing/decorators/patch.decorator.js +3 -2
- package/dist/esm/routing/decorators/patch.decorator.js.map +1 -1
- package/dist/esm/routing/decorators/post.decorator.js +3 -2
- package/dist/esm/routing/decorators/post.decorator.js.map +1 -1
- package/dist/esm/routing/resolve-route-params.function.js +1 -0
- package/dist/esm/routing/resolve-route-params.function.js.map +1 -1
- package/dist/esm/routing/router.js +173 -88
- package/dist/esm/routing/router.js.map +1 -1
- package/dist/esm/utilities/fs.utilities.js +1 -1
- package/dist/esm/utilities/sem-ver.utilities.js +204 -0
- package/dist/esm/utilities/sem-ver.utilities.js.map +1 -0
- package/dist/esm/utilities/uuid.utilities.js +2 -2
- package/dist/esm/utilities/uuid.utilities.js.map +1 -1
- package/dist/esm/versioning/route-with-version-data.model.js +3 -0
- package/dist/esm/versioning/route-with-version-data.model.js.map +1 -0
- package/dist/esm/versioning/supported-versions-options.model.js +3 -0
- package/dist/esm/versioning/supported-versions-options.model.js.map +1 -0
- package/dist/{cjs/types/version.type.js → esm/versioning/version.model.js} +1 -1
- package/dist/esm/versioning/version.model.js.map +1 -0
- package/dist/esm/versioning/versioning-service.interface.js +3 -0
- package/dist/esm/versioning/versioning-service.interface.js.map +1 -0
- package/dist/esm/versioning/versioning.service.js +366 -0
- package/dist/esm/versioning/versioning.service.js.map +1 -0
- package/dist/esm/websocket/decorators/websocket-controller.decorator.js +2 -2
- package/dist/esm/websocket/decorators/websocket-controller.decorator.js.map +1 -1
- package/dist/esm/websocket/decorators/websocket-route.decorator.js +3 -2
- package/dist/esm/websocket/decorators/websocket-route.decorator.js.map +1 -1
- package/dist/esm/websocket/models/connection/socket-io-websocket-connection.model.js +3 -1
- package/dist/esm/websocket/models/connection/socket-io-websocket-connection.model.js.map +1 -1
- package/dist/esm/websocket/models/websocket-message.model.js.map +1 -1
- package/dist/esm/websocket/models/websocket-request.model.js +1 -1
- package/dist/esm/websocket/models/websocket-request.model.js.map +1 -1
- package/dist/esm/websocket/services/websocket.service.js +121 -33
- package/dist/esm/websocket/services/websocket.service.js.map +1 -1
- package/package.json +17 -19
- package/src/__testing__/test-server/providers.ts +25 -1
- package/src/__testing__/test-server/start-test-server.function.ts +76 -8
- package/src/application-options.model.ts +2 -2
- package/src/application.ts +0 -1
- package/src/assets/asset.service.ts +3 -1
- package/src/auth/2fa/methods/otp/otp-credentials.model.ts +1 -1
- package/src/auth/2fa/methods/otp/otp.two-factor-method.ts +1 -1
- package/src/auth/strategies/cookie/cookie-auth.controller.ts +1 -1
- package/src/auth/strategies/jwt/jwt-auth.controller.ts +1 -1
- package/src/auth/strategies/jwt/jwt.auth-strategy.ts +1 -1
- package/src/backup/backup-resource-entity.model.ts +1 -1
- package/src/backup/backup-service.test.ts +2 -1
- package/src/change-sets/models/change-set.model.ts +1 -1
- package/src/change-sets/models/change.model.ts +2 -2
- package/src/context/cache/cache.context.ts +2 -2
- package/src/context/request/request-context-token.model.ts +1 -1
- package/src/cron/cron-job-entity.model.ts +2 -2
- package/src/data-source/data-sources/postgres-typeorm-data-source.model.ts +10 -0
- package/src/data-source/data-sources/typeorm-base-data-source.model.ts +4 -5
- package/src/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.ts +35 -2
- package/src/data-source/data-sources/where-converter/typeorm-where-filter.converter.ts +14 -1
- package/src/data-source/hooks/hooks.test.ts +1 -1
- package/src/data-source/migration/migration-entity.model.ts +2 -2
- package/src/data-source/migration/migration.model.ts +2 -2
- package/src/data-source/migration/migration.test.ts +2 -2
- package/src/data-source/models/where/date-where-filter.model.ts +11 -3
- package/src/data-source/models/where/string-where-filter.model.ts +18 -1
- package/src/data-source/models/where/where-filter-keys.model.ts +3 -0
- package/src/data-source/nested-where-filter.test.ts +8 -3
- package/src/data-source/repository.test.ts +2 -2
- package/src/data-source/where-filter.test.ts +17 -7
- package/src/di/default/zibri-di-providers.default.ts +4 -0
- package/src/di/default/zibri-di-tokens.default.ts +3 -0
- package/src/email/email.service.ts +5 -5
- package/src/email/models/email.model.ts +4 -4
- package/src/entity/generation/generate-entity-file.function.ts +1 -1
- package/src/event/event-subscriber-run.model.ts +1 -1
- package/src/global/global-registry.ts +2 -2
- package/src/http/http-request.model.ts +2 -2
- package/src/http/known-header.enum.ts +1 -0
- package/src/http-client/http-client.ts +0 -1
- package/src/index.ts +9 -3
- package/src/localization/formatting/format-price.function.ts +2 -3
- package/src/logging/log-context.model.ts +6 -6
- package/src/logging/logger.ts +1 -1
- package/src/multithreading/models/thread-job-entity.model.ts +5 -5
- package/src/multithreading/services/thread-job.ts +4 -4
- package/src/open-api/open-api-service.interface.ts +2 -1
- package/src/open-api/open-api.service.ts +263 -141
- package/src/parsing/html/csp-options.model.ts +3 -0
- package/src/parsing/parser.ts +3 -3
- package/src/plugin/invoicing/models/invoice-address.model.ts +2 -2
- package/src/plugin/invoicing/models/vat.model.ts +1 -1
- package/src/plugin/mailing-list/mailing-list.controller.ts +1 -1
- package/src/plugin/mailing-list/models/mailing-list-subscriber.model.ts +1 -1
- package/src/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.ts +1 -1
- package/src/plugin/payment/models/payment.model.ts +2 -2
- package/src/plugin/payment/providers/pay-pal/pay-pal-client.ts +17 -17
- package/src/plugin/payment/providers/pay-pal/pay-pal.payment-provider.test.ts +1 -1
- package/src/plugin/payment/providers/pay-pal/pay-pal.payment-provider.ts +1 -1
- package/src/preact/preact.utilities.ts +1 -1
- package/src/preact/validate-email-templates.function.ts +1 -1
- package/src/rate-limiting/rate-limiter.ts +23 -12
- package/src/routing/controller-route-configuration.model.ts +6 -1
- package/src/routing/decorators/controller.decorator.ts +8 -2
- package/src/routing/decorators/create-http-decorator.function.ts +3 -2
- package/src/routing/decorators/delete.decorator.ts +4 -2
- package/src/routing/decorators/get.decorator.ts +4 -2
- package/src/routing/decorators/http-decorator-option-input.model.ts +11 -0
- package/src/routing/decorators/patch.decorator.ts +4 -2
- package/src/routing/decorators/post.decorator.ts +4 -2
- package/src/routing/resolve-route-params.function.ts +1 -0
- package/src/routing/route-configuration.model.ts +13 -3
- package/src/routing/router.ts +265 -134
- package/src/utilities/fs.utilities.ts +1 -1
- package/src/utilities/sem-ver.utilities.ts +270 -0
- package/src/utilities/uuid.utilities.ts +2 -2
- package/src/versioning/route-with-version-data.model.ts +15 -0
- package/src/versioning/supported-versions-options.model.ts +25 -0
- package/src/versioning/version.model.ts +30 -0
- package/src/versioning/versioning-service.interface.ts +39 -0
- package/src/versioning/versioning-websocket.test.ts +351 -0
- package/src/versioning/versioning.service.test.ts +582 -0
- package/src/versioning/versioning.service.ts +496 -0
- package/src/websocket/decorators/websocket-controller.decorator.ts +13 -3
- package/src/websocket/decorators/websocket-route.decorator.ts +15 -2
- package/src/websocket/models/connection/base-websocket-connection.model.ts +6 -0
- package/src/websocket/models/connection/socket-io-websocket-connection.model.ts +8 -1
- package/src/websocket/models/websocket-controller-route-configuration.model.ts +8 -1
- package/src/websocket/models/websocket-message.model.ts +2 -2
- package/src/websocket/models/websocket-request.model.ts +4 -3
- package/src/websocket/services/websocket.service.ts +143 -38
- package/dist/cjs/types/version.type.d.ts +0 -5
- package/dist/cjs/types/version.type.d.ts.map +0 -1
- package/dist/cjs/types/version.type.js.map +0 -1
- package/dist/cjs/utilities/compare-versions.function.d.ts +0 -9
- package/dist/cjs/utilities/compare-versions.function.d.ts.map +0 -1
- package/dist/cjs/utilities/compare-versions.function.js +0 -33
- package/dist/cjs/utilities/compare-versions.function.js.map +0 -1
- package/dist/cjs/utilities/is-version.function.d.ts +0 -7
- package/dist/cjs/utilities/is-version.function.d.ts.map +0 -1
- package/dist/cjs/utilities/is-version.function.js +0 -18
- package/dist/cjs/utilities/is-version.function.js.map +0 -1
- package/dist/esm/types/version.type.js.map +0 -1
- package/dist/esm/utilities/compare-versions.function.js +0 -33
- package/dist/esm/utilities/compare-versions.function.js.map +0 -1
- package/dist/esm/utilities/is-version.function.js +0 -18
- package/dist/esm/utilities/is-version.function.js.map +0 -1
- package/src/types/version.type.ts +0 -4
- package/src/utilities/compare-versions.function.ts +0 -33
- package/src/utilities/is-version.function.ts +0 -16
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
|
|
1
3
|
import { Server, Socket } from 'socket.io';
|
|
2
4
|
|
|
3
5
|
import { WebsocketSendData, WebsocketSendDataMessage, WebsocketSendToAllData, WebsocketSendToChannelData, WebsocketServiceInterface } from './websocket-service.interface';
|
|
@@ -17,6 +19,7 @@ import { toHttpError } from '../../error-handling/error-handler';
|
|
|
17
19
|
import { BadRequestError } from '../../error-handling/errors/bad-request.error';
|
|
18
20
|
import { HttpError, isHttpError } from '../../error-handling/errors/http.error';
|
|
19
21
|
import { NotFoundError } from '../../error-handling/errors/not-found.error';
|
|
22
|
+
import { UnauthorizedError } from '../../error-handling/errors/unauthorized.error';
|
|
20
23
|
import { isError } from '../../error-handling/is-error.function';
|
|
21
24
|
import { BeforeAppShutdown } from '../../global/before-app-shutdown.interface';
|
|
22
25
|
import { GlobalRegistry } from '../../global/global-registry';
|
|
@@ -24,13 +27,17 @@ import { OnAppInit } from '../../global/on-app-init.interface';
|
|
|
24
27
|
import { HttpStatus } from '../../http/http-status.enum';
|
|
25
28
|
import { KnownHeader } from '../../http/known-header.enum';
|
|
26
29
|
import { type LoggerInterface } from '../../logging/logger.interface';
|
|
27
|
-
import { type ParserInterface } from '../../parsing/parser.interface';
|
|
28
30
|
import { resolveRouteParams } from '../../routing/resolve-route-params.function';
|
|
29
31
|
import { Newable } from '../../types/newable.type';
|
|
30
32
|
import { JsonUtilities } from '../../utilities/json.utilities';
|
|
31
33
|
import { MetadataUtilities } from '../../utilities/metadata.utilities';
|
|
34
|
+
import { SemVerVersion } from '../../utilities/sem-ver.utilities';
|
|
32
35
|
import { UUIDUtilities } from '../../utilities/uuid.utilities';
|
|
33
36
|
import { type ValidationServiceInterface } from '../../validation/validation-service.interface';
|
|
37
|
+
import { RouteWithVersionData } from '../../versioning/route-with-version-data.model';
|
|
38
|
+
import { SupportedVersionsOptions } from '../../versioning/supported-versions-options.model';
|
|
39
|
+
import { Version } from '../../versioning/version.model';
|
|
40
|
+
import { type VersioningServiceInterface } from '../../versioning/versioning-service.interface';
|
|
34
41
|
import { WebsocketControllerData } from '../decorators/websocket-controller.decorator';
|
|
35
42
|
import { SocketIOWebsocketConnection } from '../models/connection/socket-io-websocket-connection.model';
|
|
36
43
|
import { WebsocketChannel } from '../models/websocket-channel.model';
|
|
@@ -57,17 +64,25 @@ type SocketIOWebsocketHandler = (
|
|
|
57
64
|
@Injectable({ register: 'onUse' })
|
|
58
65
|
export class WebsocketService implements WebsocketServiceInterface<SocketIOWebsocketConnection>, OnAppInit, BeforeAppShutdown {
|
|
59
66
|
private socketServer!: Server;
|
|
67
|
+
private readonly allEventRoutes: RouteWithVersionData[] = [];
|
|
60
68
|
private readonly websocketHandlers: Record<string, SocketIOWebsocketHandler | undefined> = {};
|
|
61
69
|
private readonly websocketChannels: Record<string, SocketIOWebsocketConnection[] | undefined> = {};
|
|
62
70
|
private readonly connections: SocketIOWebsocketConnection[] = [];
|
|
63
71
|
|
|
72
|
+
private readonly pendingRouteGroups: Map<string, {
|
|
73
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
74
|
+
entries: { versions: SupportedVersionsOptions, innerHandler: SocketIOWebsocketHandler }[]
|
|
75
|
+
}> = new Map();
|
|
76
|
+
|
|
77
|
+
private get versioningService(): VersioningServiceInterface {
|
|
78
|
+
return inject(ZIBRI_DI_TOKENS.VERSIONING_SERVICE);
|
|
79
|
+
}
|
|
80
|
+
|
|
64
81
|
constructor(
|
|
65
82
|
@Inject(ZIBRI_DI_TOKENS.LOGGER)
|
|
66
83
|
private readonly logger: LoggerInterface,
|
|
67
84
|
@Inject(ZIBRI_DI_TOKENS.AUTH_SERVICE)
|
|
68
85
|
private readonly authService: AuthServiceInterface,
|
|
69
|
-
@Inject(ZIBRI_DI_TOKENS.PARSER)
|
|
70
|
-
private readonly parser: ParserInterface,
|
|
71
86
|
@Inject(ZIBRI_DI_TOKENS.VALIDATION_SERVICE)
|
|
72
87
|
private readonly validationService: ValidationServiceInterface,
|
|
73
88
|
@InjectRepository(WebsocketChannel)
|
|
@@ -92,7 +107,44 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
92
107
|
}
|
|
93
108
|
this.checkForOrphanedControllers(app.options.websocketControllers);
|
|
94
109
|
|
|
95
|
-
|
|
110
|
+
for (const [event, group] of this.pendingRouteGroups.entries()) {
|
|
111
|
+
this.websocketHandlers[event] = this.createDispatchHandler(group.entries);
|
|
112
|
+
await this.logger.debug(`- mounting websocket event "${event}"`);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// eslint-disable-next-line typescript/no-misused-promises
|
|
116
|
+
this.socketServer.use(async (socket, next) => {
|
|
117
|
+
const request: WebsocketRequest = {
|
|
118
|
+
headers: socket.handshake.headers as Partial<Record<KnownHeader, string | undefined>>,
|
|
119
|
+
body: undefined,
|
|
120
|
+
query: socket.handshake.query as Partial<Record<string, string | undefined>>,
|
|
121
|
+
params: {}
|
|
122
|
+
};
|
|
123
|
+
const context: WebsocketRequestContext = new WebsocketRequestContext(request, undefined, undefined, undefined);
|
|
124
|
+
|
|
125
|
+
const currentUser: BaseUser<string> | undefined = await this.authService.getCurrentUser(
|
|
126
|
+
context,
|
|
127
|
+
this.authService.strategies,
|
|
128
|
+
false
|
|
129
|
+
);
|
|
130
|
+
if (!await this.options.isAllowedToConnect(currentUser)) {
|
|
131
|
+
next(new UnauthorizedError('Not allowed to connect'));
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
try {
|
|
136
|
+
const version: Version = await this.versioningService.resolveVersion(context);
|
|
137
|
+
// eslint-disable-next-line typescript/no-unsafe-member-access
|
|
138
|
+
socket.data.resolvedVersion = version;
|
|
139
|
+
// eslint-disable-next-line typescript/no-unsafe-member-access
|
|
140
|
+
socket.data.currentUser = currentUser;
|
|
141
|
+
next();
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
next(error instanceof Error ? error : new Error('Could not resolve version', { cause: error }));
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
this.socketServer.on('connection', async socket => await this.onConnect(socket));
|
|
96
148
|
}
|
|
97
149
|
|
|
98
150
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
@@ -101,26 +153,12 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
101
153
|
}
|
|
102
154
|
|
|
103
155
|
private async onConnect(socket: Socket): Promise<void> {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
params: {}
|
|
109
|
-
};
|
|
110
|
-
let connection: SocketIOWebsocketConnection | undefined = this.connections.find(c => c.id === socket.id);
|
|
111
|
-
|
|
112
|
-
const context: WebsocketRequestContext = new WebsocketRequestContext(request, connection, undefined, undefined);
|
|
113
|
-
const currentUser: BaseUser<string> | undefined = await this.authService.getCurrentUser(
|
|
114
|
-
context,
|
|
115
|
-
this.authService.strategies,
|
|
116
|
-
false
|
|
117
|
-
);
|
|
156
|
+
// eslint-disable-next-line typescript/no-unsafe-member-access
|
|
157
|
+
const currentUser: BaseUser<string> | undefined = socket.data.currentUser as BaseUser<string> | undefined;
|
|
158
|
+
// eslint-disable-next-line typescript/no-unsafe-member-access
|
|
159
|
+
const resolvedVersion: Version = socket.data.resolvedVersion as Version;
|
|
118
160
|
|
|
119
|
-
|
|
120
|
-
if (!isAllowedToConnect) {
|
|
121
|
-
socket.disconnect(true);
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
161
|
+
let connection: SocketIOWebsocketConnection | undefined = this.connections.find(c => c.id === socket.id);
|
|
124
162
|
|
|
125
163
|
if (connection) {
|
|
126
164
|
connection.offset = socket.handshake.auth.offset as number;
|
|
@@ -128,7 +166,7 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
128
166
|
return;
|
|
129
167
|
}
|
|
130
168
|
|
|
131
|
-
connection = new SocketIOWebsocketConnection(socket, currentUser?.id);
|
|
169
|
+
connection = new SocketIOWebsocketConnection(socket, currentUser?.id, resolvedVersion);
|
|
132
170
|
this.connections.push(connection);
|
|
133
171
|
await this.logger.debug('a user connected');
|
|
134
172
|
|
|
@@ -284,6 +322,8 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
284
322
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
285
323
|
async registerController(controllerClass: Newable<unknown>): Promise<void> {
|
|
286
324
|
const controllerData: WebsocketControllerData | undefined = MetadataUtilities.getWebsocketControllerData(controllerClass);
|
|
325
|
+
const currentLatest: SemVerVersion | undefined = GlobalRegistry.getAppData('version');
|
|
326
|
+
assert(currentLatest);
|
|
287
327
|
if (controllerData == undefined) {
|
|
288
328
|
// eslint-disable-next-line stylistic/max-len
|
|
289
329
|
throw new Error(`Could not find websocket controller data on class ${controllerClass.name}. Did you forget to decorate it with @WebsocketController?`);
|
|
@@ -291,19 +331,44 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
291
331
|
const routes: WebsocketControllerRouteConfiguration[] = MetadataUtilities.getWebsocketControllerRoutes(controllerClass);
|
|
292
332
|
|
|
293
333
|
for (const route of routes) {
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
|
|
334
|
+
const fullEvent: string = `${controllerData.eventPrefix}${route.event}`;
|
|
335
|
+
const versions: SupportedVersionsOptions = route.versions ?? controllerData.versions;
|
|
336
|
+
|
|
337
|
+
const overlappingRoute: RouteWithVersionData | undefined = this.allEventRoutes.find(
|
|
338
|
+
r => r.key === fullEvent && this.versioningService.hasOverlappingVersions(r.versions, versions, currentLatest)
|
|
297
339
|
);
|
|
298
|
-
if (
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
340
|
+
if (overlappingRoute) {
|
|
341
|
+
const overlappingVersions: SupportedVersionsOptions = this.versioningService.findOverlappingVersions(
|
|
342
|
+
overlappingRoute.versions,
|
|
343
|
+
versions,
|
|
344
|
+
currentLatest
|
|
302
345
|
);
|
|
346
|
+
if (overlappingVersions === 'all') {
|
|
347
|
+
throw new Error([
|
|
348
|
+
`The websocket event "${fullEvent}"`,
|
|
349
|
+
'has been defined more than once.',
|
|
350
|
+
'(versions: \'all\' has been used)'
|
|
351
|
+
].join(' '), { cause: controllerClass });
|
|
352
|
+
}
|
|
353
|
+
throw new Error([
|
|
354
|
+
`The websocket event "${fullEvent}"`,
|
|
355
|
+
`for the ${overlappingVersions.length > 1 ? 'versions' : 'version'} "${overlappingVersions.join(', ')}"`,
|
|
356
|
+
'has been defined more than once.'
|
|
357
|
+
].join(' '), { cause: controllerClass });
|
|
303
358
|
}
|
|
304
|
-
await this.logger.debug(`- mounting websocket event "${route.event}"`);
|
|
305
359
|
|
|
306
|
-
this.
|
|
360
|
+
this.allEventRoutes.push({ key: fullEvent, versions });
|
|
361
|
+
|
|
362
|
+
const innerHandler: SocketIOWebsocketHandler = this.controllerRouteToWebsocketHandler(controllerClass, route);
|
|
363
|
+
// eslint-disable-next-line typescript/typedef
|
|
364
|
+
const existing = this.pendingRouteGroups.get(fullEvent);
|
|
365
|
+
if (existing) {
|
|
366
|
+
existing.entries.push({ versions, innerHandler });
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
this.pendingRouteGroups.set(fullEvent, { entries: [{ versions, innerHandler }] });
|
|
370
|
+
}
|
|
371
|
+
await this.logger.debug(`- registering websocket event "${fullEvent}"`);
|
|
307
372
|
}
|
|
308
373
|
}
|
|
309
374
|
|
|
@@ -358,7 +423,7 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
358
423
|
async sendToChannel<B extends boolean>(
|
|
359
424
|
data: WebsocketSendToChannelData<B>
|
|
360
425
|
): Promise<B extends false ? void : WebsocketRequestWithConnection<SocketIOWebsocketConnection>[]> {
|
|
361
|
-
data.expectResponse ??=
|
|
426
|
+
data.expectResponse ??= false as B;
|
|
362
427
|
const channel: WebsocketChannel = await this.channelRepository.findById(data.channelId);
|
|
363
428
|
|
|
364
429
|
const message: WebsocketMessage = await this.createWebsocketMessage(
|
|
@@ -422,9 +487,9 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
422
487
|
|
|
423
488
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
424
489
|
async sendToAll<B extends boolean>(
|
|
425
|
-
data: WebsocketSendToAllData<B
|
|
426
|
-
expectResponse: B = true as B
|
|
490
|
+
data: WebsocketSendToAllData<B>
|
|
427
491
|
): Promise<B extends false ? void : WebsocketRequestWithConnection<SocketIOWebsocketConnection>[]> {
|
|
492
|
+
data.expectResponse ??= false as B;
|
|
428
493
|
const message: WebsocketMessage = await this.createWebsocketMessage(
|
|
429
494
|
data.persist ?? true,
|
|
430
495
|
data.message.ok
|
|
@@ -450,7 +515,7 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
450
515
|
return undefined as B extends false ? void : WebsocketRequestWithConnection<SocketIOWebsocketConnection>[];
|
|
451
516
|
}
|
|
452
517
|
|
|
453
|
-
if (!expectResponse) {
|
|
518
|
+
if (!data.expectResponse) {
|
|
454
519
|
this.socketServer.emit(data.event, JsonUtilities.parse(JsonUtilities.stringify(message)));
|
|
455
520
|
return undefined as B extends false ? void : WebsocketRequestWithConnection<SocketIOWebsocketConnection>[];
|
|
456
521
|
}
|
|
@@ -514,7 +579,9 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
514
579
|
}
|
|
515
580
|
await connection.leave(channel.name);
|
|
516
581
|
|
|
517
|
-
const foundChannel: SocketIOWebsocketConnection | undefined = this.websocketChannels[channel.name]?.find(
|
|
582
|
+
const foundChannel: SocketIOWebsocketConnection | undefined = this.websocketChannels[channel.name]?.find(
|
|
583
|
+
c => c.id === connection.id
|
|
584
|
+
);
|
|
518
585
|
if (foundChannel) {
|
|
519
586
|
// eslint-disable-next-line typescript/no-non-null-assertion
|
|
520
587
|
this.websocketChannels[channel.name]!.splice(this.websocketChannels[channel.name]!.indexOf(foundChannel), 1);
|
|
@@ -544,6 +611,44 @@ export class WebsocketService implements WebsocketServiceInterface<SocketIOWebso
|
|
|
544
611
|
return foundConnection;
|
|
545
612
|
}
|
|
546
613
|
|
|
614
|
+
private createDispatchHandler(
|
|
615
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
616
|
+
entries: { versions: SupportedVersionsOptions, innerHandler: SocketIOWebsocketHandler }[]
|
|
617
|
+
): SocketIOWebsocketHandler {
|
|
618
|
+
return async (connection, req, responseHandler) => {
|
|
619
|
+
try {
|
|
620
|
+
// eslint-disable-next-line typescript/typedef
|
|
621
|
+
const match = entries.find(e => this.versioningService.matchesVersion(e.versions, connection.resolvedVersion));
|
|
622
|
+
if (!match) {
|
|
623
|
+
const error: NotFoundError = new NotFoundError(
|
|
624
|
+
`Could not find handler for websocket event for version "${connection.resolvedVersion.value}"`
|
|
625
|
+
);
|
|
626
|
+
await this.send({
|
|
627
|
+
connection,
|
|
628
|
+
event: WebsocketEvent.RESPONSE,
|
|
629
|
+
message: { ok: false, error, status: error.status, senderUserId: undefined, senderConnectionId: undefined },
|
|
630
|
+
responseHandler,
|
|
631
|
+
expectResponse: true,
|
|
632
|
+
persist: false
|
|
633
|
+
});
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
await match.innerHandler(connection, req, responseHandler);
|
|
637
|
+
}
|
|
638
|
+
catch (error) {
|
|
639
|
+
const err: HttpError = toHttpError(error);
|
|
640
|
+
await this.send({
|
|
641
|
+
connection,
|
|
642
|
+
event: WebsocketEvent.RESPONSE,
|
|
643
|
+
message: { ok: false, error: err, status: err.status, senderUserId: undefined, senderConnectionId: undefined },
|
|
644
|
+
responseHandler,
|
|
645
|
+
expectResponse: true,
|
|
646
|
+
persist: false
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
|
|
547
652
|
private async createWebsocketMessage(
|
|
548
653
|
persist: boolean,
|
|
549
654
|
messageData: CreateWebsocketMessageData | WebsocketMessage
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.type.d.ts","sourceRoot":"","sources":["../../../src/types/version.type.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.type.js","sourceRoot":"","sources":["../../../src/types/version.type.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Version } from '../types/version.type';
|
|
2
|
-
/**
|
|
3
|
-
* Compares the given versions and check if the first one is bigger, equal or smaller than the second one.
|
|
4
|
-
* @param v1 - The first version.
|
|
5
|
-
* @param v2 - The second version to compare against.
|
|
6
|
-
* @returns 'bigger', 'equal' or 'smaller'.
|
|
7
|
-
*/
|
|
8
|
-
export declare function compareVersion(v1: Version, v2: Version): 'bigger' | 'equal' | 'smaller';
|
|
9
|
-
//# sourceMappingURL=compare-versions.function.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compare-versions.function.d.ts","sourceRoot":"","sources":["../../../src/utilities/compare-versions.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAwBvF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compareVersion = compareVersion;
|
|
4
|
-
/**
|
|
5
|
-
* Compares the given versions and check if the first one is bigger, equal or smaller than the second one.
|
|
6
|
-
* @param v1 - The first version.
|
|
7
|
-
* @param v2 - The second version to compare against.
|
|
8
|
-
* @returns 'bigger', 'equal' or 'smaller'.
|
|
9
|
-
*/
|
|
10
|
-
function compareVersion(v1, v2) {
|
|
11
|
-
const [v1One, v1Two, v1Three] = v1;
|
|
12
|
-
const [v2One, v2Two, v2Three] = v2;
|
|
13
|
-
if (v1One > v2One) {
|
|
14
|
-
return 'bigger';
|
|
15
|
-
}
|
|
16
|
-
if (v1Two > v2Two) {
|
|
17
|
-
return 'bigger';
|
|
18
|
-
}
|
|
19
|
-
if (v1Three > v2Three) {
|
|
20
|
-
return 'bigger';
|
|
21
|
-
}
|
|
22
|
-
if (v2One > v1One) {
|
|
23
|
-
return 'smaller';
|
|
24
|
-
}
|
|
25
|
-
if (v2Two > v1Two) {
|
|
26
|
-
return 'smaller';
|
|
27
|
-
}
|
|
28
|
-
if (v2Three > v1Three) {
|
|
29
|
-
return 'smaller';
|
|
30
|
-
}
|
|
31
|
-
return 'equal';
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=compare-versions.function.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compare-versions.function.js","sourceRoot":"","sources":["../../../src/utilities/compare-versions.function.ts"],"names":[],"mappings":";;AAQA,wCAwBC;AA9BD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,EAAW,EAAE,EAAW;IACnD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACnC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Version } from '../types/version.type';
|
|
2
|
-
/**
|
|
3
|
-
* Checks whether the given value is a valid SemVer Version.
|
|
4
|
-
* @param value - The value to check.
|
|
5
|
-
*/
|
|
6
|
-
export declare function isVersion(value: string): value is Version;
|
|
7
|
-
//# sourceMappingURL=is-version.function.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-version.function.d.ts","sourceRoot":"","sources":["../../../src/utilities/is-version.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,OAAO,CAOzD"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isVersion = isVersion;
|
|
4
|
-
const is_numeric_function_1 = require("./is-numeric.function");
|
|
5
|
-
// eslint-disable-next-line jsdoc/require-returns
|
|
6
|
-
/**
|
|
7
|
-
* Checks whether the given value is a valid SemVer Version.
|
|
8
|
-
* @param value - The value to check.
|
|
9
|
-
*/
|
|
10
|
-
function isVersion(value) {
|
|
11
|
-
const parts = value.split('.');
|
|
12
|
-
if (parts.length !== 3) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
const [one, two, three] = parts;
|
|
16
|
-
return (0, is_numeric_function_1.isNumeric)(one) && (0, is_numeric_function_1.isNumeric)(two) && (0, is_numeric_function_1.isNumeric)(three);
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=is-version.function.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-version.function.js","sourceRoot":"","sources":["../../../src/utilities/is-version.function.ts"],"names":[],"mappings":";;AAQA,8BAOC;AAfD,+DAAkD;AAGlD,iDAAiD;AACjD;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAa;IACnC,MAAM,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAChC,OAAO,IAAA,+BAAS,EAAC,GAAG,CAAC,IAAI,IAAA,+BAAS,EAAC,GAAG,CAAC,IAAI,IAAA,+BAAS,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.type.js","sourceRoot":"","sources":["../../../src/types/version.type.ts"],"names":[],"mappings":""}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compareVersion = compareVersion;
|
|
4
|
-
/**
|
|
5
|
-
* Compares the given versions and check if the first one is bigger, equal or smaller than the second one.
|
|
6
|
-
* @param v1 - The first version.
|
|
7
|
-
* @param v2 - The second version to compare against.
|
|
8
|
-
* @returns 'bigger', 'equal' or 'smaller'.
|
|
9
|
-
*/
|
|
10
|
-
function compareVersion(v1, v2) {
|
|
11
|
-
const [v1One, v1Two, v1Three] = v1;
|
|
12
|
-
const [v2One, v2Two, v2Three] = v2;
|
|
13
|
-
if (v1One > v2One) {
|
|
14
|
-
return 'bigger';
|
|
15
|
-
}
|
|
16
|
-
if (v1Two > v2Two) {
|
|
17
|
-
return 'bigger';
|
|
18
|
-
}
|
|
19
|
-
if (v1Three > v2Three) {
|
|
20
|
-
return 'bigger';
|
|
21
|
-
}
|
|
22
|
-
if (v2One > v1One) {
|
|
23
|
-
return 'smaller';
|
|
24
|
-
}
|
|
25
|
-
if (v2Two > v1Two) {
|
|
26
|
-
return 'smaller';
|
|
27
|
-
}
|
|
28
|
-
if (v2Three > v1Three) {
|
|
29
|
-
return 'smaller';
|
|
30
|
-
}
|
|
31
|
-
return 'equal';
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=compare-versions.function.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compare-versions.function.js","sourceRoot":"","sources":["../../../src/utilities/compare-versions.function.ts"],"names":[],"mappings":";;AAQA,wCAwBC;AA9BD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,EAAW,EAAE,EAAW;IACnD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACnC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isVersion = isVersion;
|
|
4
|
-
const is_numeric_function_1 = require("./is-numeric.function");
|
|
5
|
-
// eslint-disable-next-line jsdoc/require-returns
|
|
6
|
-
/**
|
|
7
|
-
* Checks whether the given value is a valid SemVer Version.
|
|
8
|
-
* @param value - The value to check.
|
|
9
|
-
*/
|
|
10
|
-
function isVersion(value) {
|
|
11
|
-
const parts = value.split('.');
|
|
12
|
-
if (parts.length !== 3) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
const [one, two, three] = parts;
|
|
16
|
-
return (0, is_numeric_function_1.isNumeric)(one) && (0, is_numeric_function_1.isNumeric)(two) && (0, is_numeric_function_1.isNumeric)(three);
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=is-version.function.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-version.function.js","sourceRoot":"","sources":["../../../src/utilities/is-version.function.ts"],"names":[],"mappings":";;AAQA,8BAOC;AAfD,+DAAkD;AAGlD,iDAAiD;AACjD;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAa;IACnC,MAAM,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAChC,OAAO,IAAA,+BAAS,EAAC,GAAG,CAAC,IAAI,IAAA,+BAAS,EAAC,GAAG,CAAC,IAAI,IAAA,+BAAS,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Version } from '../types/version.type';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Compares the given versions and check if the first one is bigger, equal or smaller than the second one.
|
|
5
|
-
* @param v1 - The first version.
|
|
6
|
-
* @param v2 - The second version to compare against.
|
|
7
|
-
* @returns 'bigger', 'equal' or 'smaller'.
|
|
8
|
-
*/
|
|
9
|
-
export function compareVersion(v1: Version, v2: Version): 'bigger' | 'equal' | 'smaller' {
|
|
10
|
-
const [v1One, v1Two, v1Three] = v1;
|
|
11
|
-
const [v2One, v2Two, v2Three] = v2;
|
|
12
|
-
if (v1One > v2One) {
|
|
13
|
-
return 'bigger';
|
|
14
|
-
}
|
|
15
|
-
if (v1Two > v2Two) {
|
|
16
|
-
return 'bigger';
|
|
17
|
-
}
|
|
18
|
-
if (v1Three > v2Three) {
|
|
19
|
-
return 'bigger';
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (v2One > v1One) {
|
|
23
|
-
return 'smaller';
|
|
24
|
-
}
|
|
25
|
-
if (v2Two > v1Two) {
|
|
26
|
-
return 'smaller';
|
|
27
|
-
}
|
|
28
|
-
if (v2Three > v1Three) {
|
|
29
|
-
return 'smaller';
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return 'equal';
|
|
33
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isNumeric } from './is-numeric.function';
|
|
2
|
-
import { Version } from '../types/version.type';
|
|
3
|
-
|
|
4
|
-
// eslint-disable-next-line jsdoc/require-returns
|
|
5
|
-
/**
|
|
6
|
-
* Checks whether the given value is a valid SemVer Version.
|
|
7
|
-
* @param value - The value to check.
|
|
8
|
-
*/
|
|
9
|
-
export function isVersion(value: string): value is Version {
|
|
10
|
-
const parts: string[] = value.split('.');
|
|
11
|
-
if (parts.length !== 3) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const [one, two, three] = parts;
|
|
15
|
-
return isNumeric(one) && isNumeric(two) && isNumeric(three);
|
|
16
|
-
}
|