@minimaltech/node-infra 0.2.27
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 +26 -0
- package/README.md +8 -0
- package/dist/base/applications/base.application.d.ts +306 -0
- package/dist/base/applications/base.application.js +147 -0
- package/dist/base/applications/base.application.js.map +1 -0
- package/dist/base/applications/default.application.d.ts +19 -0
- package/dist/base/applications/default.application.js +78 -0
- package/dist/base/applications/default.application.js.map +1 -0
- package/dist/base/applications/index.d.ts +2 -0
- package/dist/base/applications/index.js +19 -0
- package/dist/base/applications/index.js.map +1 -0
- package/dist/base/base.component.d.ts +8 -0
- package/dist/base/base.component.js +12 -0
- package/dist/base/base.component.js.map +1 -0
- package/dist/base/base.datasource.d.ts +9 -0
- package/dist/base/base.datasource.js +13 -0
- package/dist/base/base.datasource.js.map +1 -0
- package/dist/base/base.model.d.ts +107 -0
- package/dist/base/base.model.js +79 -0
- package/dist/base/base.model.js.map +1 -0
- package/dist/base/base.provider.d.ts +7 -0
- package/dist/base/base.provider.js +12 -0
- package/dist/base/base.provider.js.map +1 -0
- package/dist/base/base.sequence.d.ts +8 -0
- package/dist/base/base.sequence.js +62 -0
- package/dist/base/base.sequence.js.map +1 -0
- package/dist/base/base.service.d.ts +8 -0
- package/dist/base/base.service.js +12 -0
- package/dist/base/base.service.js.map +1 -0
- package/dist/base/controllers/common.d.ts +17 -0
- package/dist/base/controllers/common.js +33 -0
- package/dist/base/controllers/common.js.map +1 -0
- package/dist/base/controllers/crud.controller.d.ts +39 -0
- package/dist/base/controllers/crud.controller.js +297 -0
- package/dist/base/controllers/crud.controller.js.map +1 -0
- package/dist/base/controllers/index.d.ts +4 -0
- package/dist/base/controllers/index.js +21 -0
- package/dist/base/controllers/index.js.map +1 -0
- package/dist/base/controllers/kv.controller.d.ts +20 -0
- package/dist/base/controllers/kv.controller.js +139 -0
- package/dist/base/controllers/kv.controller.js.map +1 -0
- package/dist/base/controllers/relational.controller.d.ts +40 -0
- package/dist/base/controllers/relational.controller.js +393 -0
- package/dist/base/controllers/relational.controller.js.map +1 -0
- package/dist/base/index.d.ts +9 -0
- package/dist/base/index.js +26 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/repositories/base.repository.d.ts +54 -0
- package/dist/base/repositories/base.repository.js +156 -0
- package/dist/base/repositories/base.repository.js.map +1 -0
- package/dist/base/repositories/index.d.ts +3 -0
- package/dist/base/repositories/index.js +20 -0
- package/dist/base/repositories/index.js.map +1 -0
- package/dist/base/repositories/searchable-tz-crud.repository.d.ts +42 -0
- package/dist/base/repositories/searchable-tz-crud.repository.js +241 -0
- package/dist/base/repositories/searchable-tz-crud.repository.js.map +1 -0
- package/dist/base/repositories/tz-crud.repository.d.ts +64 -0
- package/dist/base/repositories/tz-crud.repository.js +244 -0
- package/dist/base/repositories/tz-crud.repository.js.map +1 -0
- package/dist/common/constants.d.ts +62 -0
- package/dist/common/constants.js +87 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/environments.d.ts +20 -0
- package/dist/common/environments.js +25 -0
- package/dist/common/environments.js.map +1 -0
- package/dist/common/index.d.ts +5 -0
- package/dist/common/index.js +22 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/keys.d.ts +4 -0
- package/dist/common/keys.js +9 -0
- package/dist/common/keys.js.map +1 -0
- package/dist/common/statuses.d.ts +36 -0
- package/dist/common/statuses.js +53 -0
- package/dist/common/statuses.js.map +1 -0
- package/dist/common/types.d.ts +96 -0
- package/dist/common/types.js +3 -0
- package/dist/common/types.js.map +1 -0
- package/dist/components/authenticate/common/constants.d.ts +15 -0
- package/dist/components/authenticate/common/constants.js +23 -0
- package/dist/components/authenticate/common/constants.js.map +1 -0
- package/dist/components/authenticate/common/index.d.ts +3 -0
- package/dist/components/authenticate/common/index.js +20 -0
- package/dist/components/authenticate/common/index.js.map +1 -0
- package/dist/components/authenticate/common/keys.d.ts +8 -0
- package/dist/components/authenticate/common/keys.js +13 -0
- package/dist/components/authenticate/common/keys.js.map +1 -0
- package/dist/components/authenticate/common/types.d.ts +80 -0
- package/dist/components/authenticate/common/types.js +146 -0
- package/dist/components/authenticate/common/types.js.map +1 -0
- package/dist/components/authenticate/component.d.ts +14 -0
- package/dist/components/authenticate/component.js +143 -0
- package/dist/components/authenticate/component.js.map +1 -0
- package/dist/components/authenticate/controllers/auth.controller.d.ts +21 -0
- package/dist/components/authenticate/controllers/auth.controller.js +125 -0
- package/dist/components/authenticate/controllers/auth.controller.js.map +1 -0
- package/dist/components/authenticate/controllers/index.d.ts +2 -0
- package/dist/components/authenticate/controllers/index.js +19 -0
- package/dist/components/authenticate/controllers/index.js.map +1 -0
- package/dist/components/authenticate/controllers/oauth2.controller.d.ts +46 -0
- package/dist/components/authenticate/controllers/oauth2.controller.js +227 -0
- package/dist/components/authenticate/controllers/oauth2.controller.js.map +1 -0
- package/dist/components/authenticate/index.d.ts +7 -0
- package/dist/components/authenticate/index.js +24 -0
- package/dist/components/authenticate/index.js.map +1 -0
- package/dist/components/authenticate/middleware.d.ts +11 -0
- package/dist/components/authenticate/middleware.js +89 -0
- package/dist/components/authenticate/middleware.js.map +1 -0
- package/dist/components/authenticate/models/index.d.ts +3 -0
- package/dist/components/authenticate/models/index.js +20 -0
- package/dist/components/authenticate/models/index.js.map +1 -0
- package/dist/components/authenticate/models/oauth2-client.model.d.ts +19 -0
- package/dist/components/authenticate/models/oauth2-client.model.js +100 -0
- package/dist/components/authenticate/models/oauth2-client.model.js.map +1 -0
- package/dist/components/authenticate/models/oauth2-scope.model.d.ts +8 -0
- package/dist/components/authenticate/models/oauth2-scope.model.js +61 -0
- package/dist/components/authenticate/models/oauth2-scope.model.js.map +1 -0
- package/dist/components/authenticate/models/oauth2-token.model.d.ts +12 -0
- package/dist/components/authenticate/models/oauth2-token.model.js +87 -0
- package/dist/components/authenticate/models/oauth2-token.model.js.map +1 -0
- package/dist/components/authenticate/oauth2-handlers/authorization-code.handler.d.ts +13 -0
- package/dist/components/authenticate/oauth2-handlers/authorization-code.handler.js +56 -0
- package/dist/components/authenticate/oauth2-handlers/authorization-code.handler.js.map +1 -0
- package/dist/components/authenticate/oauth2-handlers/base.d.ts +37 -0
- package/dist/components/authenticate/oauth2-handlers/base.js +192 -0
- package/dist/components/authenticate/oauth2-handlers/base.js.map +1 -0
- package/dist/components/authenticate/oauth2-handlers/client-credential.handler.d.ts +12 -0
- package/dist/components/authenticate/oauth2-handlers/client-credential.handler.js +28 -0
- package/dist/components/authenticate/oauth2-handlers/client-credential.handler.js.map +1 -0
- package/dist/components/authenticate/oauth2-handlers/index.d.ts +5 -0
- package/dist/components/authenticate/oauth2-handlers/index.js +22 -0
- package/dist/components/authenticate/oauth2-handlers/index.js.map +1 -0
- package/dist/components/authenticate/oauth2-handlers/oauth2.d.ts +15 -0
- package/dist/components/authenticate/oauth2-handlers/oauth2.js +36 -0
- package/dist/components/authenticate/oauth2-handlers/oauth2.js.map +1 -0
- package/dist/components/authenticate/oauth2-handlers/password.handler.d.ts +12 -0
- package/dist/components/authenticate/oauth2-handlers/password.handler.js +22 -0
- package/dist/components/authenticate/oauth2-handlers/password.handler.js.map +1 -0
- package/dist/components/authenticate/repositories/index.d.ts +1 -0
- package/dist/components/authenticate/repositories/index.js +18 -0
- package/dist/components/authenticate/repositories/index.js.map +1 -0
- package/dist/components/authenticate/repositories/oauth2.repository.d.ts +17 -0
- package/dist/components/authenticate/repositories/oauth2.repository.js +78 -0
- package/dist/components/authenticate/repositories/oauth2.repository.js.map +1 -0
- package/dist/components/authenticate/services/basic-token.service.d.ts +8 -0
- package/dist/components/authenticate/services/basic-token.service.js +42 -0
- package/dist/components/authenticate/services/basic-token.service.js.map +1 -0
- package/dist/components/authenticate/services/basic.strategy.d.ts +13 -0
- package/dist/components/authenticate/services/basic.strategy.js +64 -0
- package/dist/components/authenticate/services/basic.strategy.js.map +1 -0
- package/dist/components/authenticate/services/index.d.ts +6 -0
- package/dist/components/authenticate/services/index.js +23 -0
- package/dist/components/authenticate/services/index.js.map +1 -0
- package/dist/components/authenticate/services/jwt-token.service.d.ts +23 -0
- package/dist/components/authenticate/services/jwt-token.service.js +154 -0
- package/dist/components/authenticate/services/jwt-token.service.js.map +1 -0
- package/dist/components/authenticate/services/jwt.strategy.d.ts +9 -0
- package/dist/components/authenticate/services/jwt.strategy.js +34 -0
- package/dist/components/authenticate/services/jwt.strategy.js.map +1 -0
- package/dist/components/authenticate/services/oauth2.service.d.ts +51 -0
- package/dist/components/authenticate/services/oauth2.service.js +208 -0
- package/dist/components/authenticate/services/oauth2.service.js.map +1 -0
- package/dist/components/authenticate/services/oauth2.strategy.d.ts +23 -0
- package/dist/components/authenticate/services/oauth2.strategy.js +69 -0
- package/dist/components/authenticate/services/oauth2.strategy.js.map +1 -0
- package/dist/components/authenticate/views/fragments/footer.ejs +0 -0
- package/dist/components/authenticate/views/fragments/head.ejs +26 -0
- package/dist/components/authenticate/views/fragments/header.ejs +0 -0
- package/dist/components/authenticate/views/pages/auth.ejs +61 -0
- package/dist/components/authenticate/views/pages/error.ejs +21 -0
- package/dist/components/authorize/adapters/adapter-builder.d.ts +12 -0
- package/dist/components/authorize/adapters/adapter-builder.js +34 -0
- package/dist/components/authorize/adapters/adapter-builder.js.map +1 -0
- package/dist/components/authorize/adapters/base.adapter.d.ts +18 -0
- package/dist/components/authorize/adapters/base.adapter.js +67 -0
- package/dist/components/authorize/adapters/base.adapter.js.map +1 -0
- package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.d.ts +12 -0
- package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.js +91 -0
- package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.js.map +1 -0
- package/dist/components/authorize/adapters/casbin-redis-adapter.helper.d.ts +7 -0
- package/dist/components/authorize/adapters/casbin-redis-adapter.helper.js +15 -0
- package/dist/components/authorize/adapters/casbin-redis-adapter.helper.js.map +1 -0
- package/dist/components/authorize/adapters/index.d.ts +4 -0
- package/dist/components/authorize/adapters/index.js +21 -0
- package/dist/components/authorize/adapters/index.js.map +1 -0
- package/dist/components/authorize/common/constants.d.ts +14 -0
- package/dist/components/authorize/common/constants.js +22 -0
- package/dist/components/authorize/common/constants.js.map +1 -0
- package/dist/components/authorize/common/index.d.ts +3 -0
- package/dist/components/authorize/common/index.js +20 -0
- package/dist/components/authorize/common/index.js.map +1 -0
- package/dist/components/authorize/common/keys.d.ts +17 -0
- package/dist/components/authorize/common/keys.js +22 -0
- package/dist/components/authorize/common/keys.js.map +1 -0
- package/dist/components/authorize/common/types.d.ts +16 -0
- package/dist/components/authorize/common/types.js +9 -0
- package/dist/components/authorize/common/types.js.map +1 -0
- package/dist/components/authorize/component.d.ts +12 -0
- package/dist/components/authorize/component.js +158 -0
- package/dist/components/authorize/component.js.map +1 -0
- package/dist/components/authorize/decorators/index.d.ts +8 -0
- package/dist/components/authorize/decorators/index.js +19 -0
- package/dist/components/authorize/decorators/index.js.map +1 -0
- package/dist/components/authorize/index.d.ts +9 -0
- package/dist/components/authorize/index.js +26 -0
- package/dist/components/authorize/index.js.map +1 -0
- package/dist/components/authorize/interceptor.d.ts +9 -0
- package/dist/components/authorize/interceptor.js +121 -0
- package/dist/components/authorize/interceptor.js.map +1 -0
- package/dist/components/authorize/migrations/0000-create-view-policy.d.ts +7 -0
- package/dist/components/authorize/migrations/0000-create-view-policy.js +83 -0
- package/dist/components/authorize/migrations/0000-create-view-policy.js.map +1 -0
- package/dist/components/authorize/migrations/index.d.ts +1 -0
- package/dist/components/authorize/migrations/index.js +18 -0
- package/dist/components/authorize/migrations/index.js.map +1 -0
- package/dist/components/authorize/models/defs.d.ts +173 -0
- package/dist/components/authorize/models/defs.js +243 -0
- package/dist/components/authorize/models/defs.js.map +1 -0
- package/dist/components/authorize/models/index.d.ts +6 -0
- package/dist/components/authorize/models/index.js +23 -0
- package/dist/components/authorize/models/index.js.map +1 -0
- package/dist/components/authorize/models/permission-mapping.model.d.ts +36 -0
- package/dist/components/authorize/models/permission-mapping.model.js +40 -0
- package/dist/components/authorize/models/permission-mapping.model.js.map +1 -0
- package/dist/components/authorize/models/permission.model.d.ts +44 -0
- package/dist/components/authorize/models/permission.model.js +34 -0
- package/dist/components/authorize/models/permission.model.js.map +1 -0
- package/dist/components/authorize/models/role.model.d.ts +40 -0
- package/dist/components/authorize/models/role.model.js +46 -0
- package/dist/components/authorize/models/role.model.js.map +1 -0
- package/dist/components/authorize/models/user-role.model.d.ts +34 -0
- package/dist/components/authorize/models/user-role.model.js +35 -0
- package/dist/components/authorize/models/user-role.model.js.map +1 -0
- package/dist/components/authorize/models/view-authorize-policy.model.d.ts +9 -0
- package/dist/components/authorize/models/view-authorize-policy.model.js +70 -0
- package/dist/components/authorize/models/view-authorize-policy.model.js.map +1 -0
- package/dist/components/authorize/provider.d.ts +30 -0
- package/dist/components/authorize/provider.js +157 -0
- package/dist/components/authorize/provider.js.map +1 -0
- package/dist/components/authorize/repositories/authorize.repository.d.ts +33 -0
- package/dist/components/authorize/repositories/authorize.repository.js +105 -0
- package/dist/components/authorize/repositories/authorize.repository.js.map +1 -0
- package/dist/components/authorize/repositories/index.d.ts +1 -0
- package/dist/components/authorize/repositories/index.js +18 -0
- package/dist/components/authorize/repositories/index.js.map +1 -0
- package/dist/components/authorize/services/enforcer.service.d.ts +13 -0
- package/dist/components/authorize/services/enforcer.service.js +99 -0
- package/dist/components/authorize/services/enforcer.service.js.map +1 -0
- package/dist/components/authorize/services/generator.service.d.ts +54 -0
- package/dist/components/authorize/services/generator.service.js +161 -0
- package/dist/components/authorize/services/generator.service.js.map +1 -0
- package/dist/components/authorize/services/index.d.ts +2 -0
- package/dist/components/authorize/services/index.js +19 -0
- package/dist/components/authorize/services/index.js.map +1 -0
- package/dist/components/grpc/common/constants.d.ts +2 -0
- package/dist/components/grpc/common/constants.js +6 -0
- package/dist/components/grpc/common/constants.js.map +1 -0
- package/dist/components/grpc/common/index.d.ts +3 -0
- package/dist/components/grpc/common/index.js +20 -0
- package/dist/components/grpc/common/index.js.map +1 -0
- package/dist/components/grpc/common/keys.d.ts +10 -0
- package/dist/components/grpc/common/keys.js +17 -0
- package/dist/components/grpc/common/keys.js.map +1 -0
- package/dist/components/grpc/common/types.d.ts +31 -0
- package/dist/components/grpc/common/types.js +3 -0
- package/dist/components/grpc/common/types.js.map +1 -0
- package/dist/components/grpc/components/index.d.ts +1 -0
- package/dist/components/grpc/components/index.js +18 -0
- package/dist/components/grpc/components/index.js.map +1 -0
- package/dist/components/grpc/components/server.component.d.ts +10 -0
- package/dist/components/grpc/components/server.component.js +65 -0
- package/dist/components/grpc/components/server.component.js.map +1 -0
- package/dist/components/grpc/controllers/base.d.ts +14 -0
- package/dist/components/grpc/controllers/base.js +31 -0
- package/dist/components/grpc/controllers/base.js.map +1 -0
- package/dist/components/grpc/controllers/index.d.ts +1 -0
- package/dist/components/grpc/controllers/index.js +18 -0
- package/dist/components/grpc/controllers/index.js.map +1 -0
- package/dist/components/grpc/decorators/index.d.ts +3 -0
- package/dist/components/grpc/decorators/index.js +14 -0
- package/dist/components/grpc/decorators/index.js.map +1 -0
- package/dist/components/grpc/helpers/grpc-client.d.ts +15 -0
- package/dist/components/grpc/helpers/grpc-client.js +58 -0
- package/dist/components/grpc/helpers/grpc-client.js.map +1 -0
- package/dist/components/grpc/helpers/grpc-server.d.ts +21 -0
- package/dist/components/grpc/helpers/grpc-server.js +152 -0
- package/dist/components/grpc/helpers/grpc-server.js.map +1 -0
- package/dist/components/grpc/helpers/index.d.ts +2 -0
- package/dist/components/grpc/helpers/index.js +19 -0
- package/dist/components/grpc/helpers/index.js.map +1 -0
- package/dist/components/grpc/index.d.ts +6 -0
- package/dist/components/grpc/index.js +23 -0
- package/dist/components/grpc/index.js.map +1 -0
- package/dist/components/grpc/persistents/grpc.connector.d.ts +27 -0
- package/dist/components/grpc/persistents/grpc.connector.js +39 -0
- package/dist/components/grpc/persistents/grpc.connector.js.map +1 -0
- package/dist/components/grpc/persistents/grpc.datasource.d.ts +21 -0
- package/dist/components/grpc/persistents/grpc.datasource.js +43 -0
- package/dist/components/grpc/persistents/grpc.datasource.js.map +1 -0
- package/dist/components/grpc/persistents/grpc.repository.d.ts +13 -0
- package/dist/components/grpc/persistents/grpc.repository.js +28 -0
- package/dist/components/grpc/persistents/grpc.repository.js.map +1 -0
- package/dist/components/grpc/persistents/index.d.ts +3 -0
- package/dist/components/grpc/persistents/index.js +20 -0
- package/dist/components/grpc/persistents/index.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.js +23 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/migration/common/index.d.ts +2 -0
- package/dist/components/migration/common/index.js +19 -0
- package/dist/components/migration/common/index.js.map +1 -0
- package/dist/components/migration/common/keys.d.ts +5 -0
- package/dist/components/migration/common/keys.js +10 -0
- package/dist/components/migration/common/keys.js.map +1 -0
- package/dist/components/migration/common/types.d.ts +9 -0
- package/dist/components/migration/common/types.js +3 -0
- package/dist/components/migration/common/types.js.map +1 -0
- package/dist/components/migration/component.d.ts +11 -0
- package/dist/components/migration/component.js +55 -0
- package/dist/components/migration/component.js.map +1 -0
- package/dist/components/migration/index.d.ts +4 -0
- package/dist/components/migration/index.js +21 -0
- package/dist/components/migration/index.js.map +1 -0
- package/dist/components/migration/models/index.d.ts +1 -0
- package/dist/components/migration/models/index.js +18 -0
- package/dist/components/migration/models/index.js.map +1 -0
- package/dist/components/migration/models/migration.model.d.ts +6 -0
- package/dist/components/migration/models/migration.model.js +54 -0
- package/dist/components/migration/models/migration.model.js.map +1 -0
- package/dist/components/migration/repositories/index.d.ts +1 -0
- package/dist/components/migration/repositories/index.js +18 -0
- package/dist/components/migration/repositories/index.js.map +1 -0
- package/dist/components/migration/repositories/migration.repository.d.ts +13 -0
- package/dist/components/migration/repositories/migration.repository.js +53 -0
- package/dist/components/migration/repositories/migration.repository.js.map +1 -0
- package/dist/components/socket-io/common/constants.d.ts +12 -0
- package/dist/components/socket-io/common/constants.js +17 -0
- package/dist/components/socket-io/common/constants.js.map +1 -0
- package/dist/components/socket-io/common/index.d.ts +2 -0
- package/dist/components/socket-io/common/index.js +19 -0
- package/dist/components/socket-io/common/index.js.map +1 -0
- package/dist/components/socket-io/common/keys.d.ts +8 -0
- package/dist/components/socket-io/common/keys.js +13 -0
- package/dist/components/socket-io/common/keys.js.map +1 -0
- package/dist/components/socket-io/component.d.ts +9 -0
- package/dist/components/socket-io/component.js +73 -0
- package/dist/components/socket-io/component.js.map +1 -0
- package/dist/components/socket-io/helpers/index.d.ts +2 -0
- package/dist/components/socket-io/helpers/index.js +19 -0
- package/dist/components/socket-io/helpers/index.js.map +1 -0
- package/dist/components/socket-io/helpers/socket-io-client.helper.d.ts +34 -0
- package/dist/components/socket-io/helpers/socket-io-client.helper.js +89 -0
- package/dist/components/socket-io/helpers/socket-io-client.helper.js.map +1 -0
- package/dist/components/socket-io/helpers/socket-io-server.helper.d.ts +74 -0
- package/dist/components/socket-io/helpers/socket-io-server.helper.js +325 -0
- package/dist/components/socket-io/helpers/socket-io-server.helper.js.map +1 -0
- package/dist/components/socket-io/helpers/types.d.ts +15 -0
- package/dist/components/socket-io/helpers/types.js +3 -0
- package/dist/components/socket-io/helpers/types.js.map +1 -0
- package/dist/components/socket-io/index.d.ts +3 -0
- package/dist/components/socket-io/index.js +20 -0
- package/dist/components/socket-io/index.js.map +1 -0
- package/dist/components/static-asset/common/index.d.ts +1 -0
- package/dist/components/static-asset/common/index.js +18 -0
- package/dist/components/static-asset/common/index.js.map +1 -0
- package/dist/components/static-asset/common/keys.d.ts +6 -0
- package/dist/components/static-asset/common/keys.js +11 -0
- package/dist/components/static-asset/common/keys.js.map +1 -0
- package/dist/components/static-asset/component.d.ts +13 -0
- package/dist/components/static-asset/component.js +73 -0
- package/dist/components/static-asset/component.js.map +1 -0
- package/dist/components/static-asset/controllers/asset.controller.d.ts +18 -0
- package/dist/components/static-asset/controllers/asset.controller.js +239 -0
- package/dist/components/static-asset/controllers/asset.controller.js.map +1 -0
- package/dist/components/static-asset/controllers/index.d.ts +2 -0
- package/dist/components/static-asset/controllers/index.js +19 -0
- package/dist/components/static-asset/controllers/index.js.map +1 -0
- package/dist/components/static-asset/controllers/resource.controller.d.ts +14 -0
- package/dist/components/static-asset/controllers/resource.controller.js +140 -0
- package/dist/components/static-asset/controllers/resource.controller.js.map +1 -0
- package/dist/components/static-asset/index.d.ts +3 -0
- package/dist/components/static-asset/index.js +20 -0
- package/dist/components/static-asset/index.js.map +1 -0
- package/dist/datasources/index.d.ts +2 -0
- package/dist/datasources/index.js +19 -0
- package/dist/datasources/index.js.map +1 -0
- package/dist/datasources/kvmem.datasource.d.ts +9 -0
- package/dist/datasources/kvmem.datasource.js +36 -0
- package/dist/datasources/kvmem.datasource.js.map +1 -0
- package/dist/datasources/postgres.datasource.d.ts +14 -0
- package/dist/datasources/postgres.datasource.js +71 -0
- package/dist/datasources/postgres.datasource.js.map +1 -0
- package/dist/helpers/application-environment.helper.d.ts +13 -0
- package/dist/helpers/application-environment.helper.js +31 -0
- package/dist/helpers/application-environment.helper.js.map +1 -0
- package/dist/helpers/cron.helper.d.ts +21 -0
- package/dist/helpers/cron.helper.js +59 -0
- package/dist/helpers/cron.helper.js.map +1 -0
- package/dist/helpers/database/index.d.ts +1 -0
- package/dist/helpers/database/index.js +18 -0
- package/dist/helpers/database/index.js.map +1 -0
- package/dist/helpers/database/query-builder.helper.d.ts +43 -0
- package/dist/helpers/database/query-builder.helper.js +72 -0
- package/dist/helpers/database/query-builder.helper.js.map +1 -0
- package/dist/helpers/index.d.ts +9 -0
- package/dist/helpers/index.js +26 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/logger/application-logger.d.ts +13 -0
- package/dist/helpers/logger/application-logger.js +66 -0
- package/dist/helpers/logger/application-logger.js.map +1 -0
- package/dist/helpers/logger/default-logger.d.ts +4 -0
- package/dist/helpers/logger/default-logger.js +40 -0
- package/dist/helpers/logger/default-logger.js.map +1 -0
- package/dist/helpers/logger/factory.d.ts +4 -0
- package/dist/helpers/logger/factory.js +13 -0
- package/dist/helpers/logger/factory.js.map +1 -0
- package/dist/helpers/logger/index.d.ts +3 -0
- package/dist/helpers/logger/index.js +20 -0
- package/dist/helpers/logger/index.js.map +1 -0
- package/dist/helpers/network/base-network-request.d.ts +16 -0
- package/dist/helpers/network/base-network-request.js +65 -0
- package/dist/helpers/network/base-network-request.js.map +1 -0
- package/dist/helpers/network/index.d.ts +4 -0
- package/dist/helpers/network/index.js +21 -0
- package/dist/helpers/network/index.js.map +1 -0
- package/dist/helpers/network/network-tcp-client.helper.d.ts +45 -0
- package/dist/helpers/network/network-tcp-client.helper.js +136 -0
- package/dist/helpers/network/network-tcp-client.helper.js.map +1 -0
- package/dist/helpers/network/network-udp-client.helper.d.ts +43 -0
- package/dist/helpers/network/network-udp-client.helper.js +82 -0
- package/dist/helpers/network/network-udp-client.helper.js.map +1 -0
- package/dist/helpers/network/network.helper.d.ts +26 -0
- package/dist/helpers/network/network.helper.js +121 -0
- package/dist/helpers/network/network.helper.js.map +1 -0
- package/dist/helpers/queue/bullmq.helper.d.ts +32 -0
- package/dist/helpers/queue/bullmq.helper.js +94 -0
- package/dist/helpers/queue/bullmq.helper.js.map +1 -0
- package/dist/helpers/queue/index.d.ts +3 -0
- package/dist/helpers/queue/index.js +20 -0
- package/dist/helpers/queue/index.js.map +1 -0
- package/dist/helpers/queue/mqtt.helper.d.ts +35 -0
- package/dist/helpers/queue/mqtt.helper.js +99 -0
- package/dist/helpers/queue/mqtt.helper.js.map +1 -0
- package/dist/helpers/queue/queue.helper.d.ts +31 -0
- package/dist/helpers/queue/queue.helper.js +90 -0
- package/dist/helpers/queue/queue.helper.js.map +1 -0
- package/dist/helpers/redis.helper.d.ts +82 -0
- package/dist/helpers/redis.helper.js +238 -0
- package/dist/helpers/redis.helper.js.map +1 -0
- package/dist/helpers/storage/di-container.helper.d.ts +11 -0
- package/dist/helpers/storage/di-container.helper.js +28 -0
- package/dist/helpers/storage/di-container.helper.js.map +1 -0
- package/dist/helpers/storage/index.d.ts +2 -0
- package/dist/helpers/storage/index.js +19 -0
- package/dist/helpers/storage/index.js.map +1 -0
- package/dist/helpers/storage/minio.helper.d.ts +58 -0
- package/dist/helpers/storage/minio.helper.js +171 -0
- package/dist/helpers/storage/minio.helper.js.map +1 -0
- package/dist/helpers/testing/common.d.ts +6 -0
- package/dist/helpers/testing/common.js +10 -0
- package/dist/helpers/testing/common.js.map +1 -0
- package/dist/helpers/testing/describe.d.ts +15 -0
- package/dist/helpers/testing/describe.js +55 -0
- package/dist/helpers/testing/describe.js.map +1 -0
- package/dist/helpers/testing/index.d.ts +6 -0
- package/dist/helpers/testing/index.js +23 -0
- package/dist/helpers/testing/index.js.map +1 -0
- package/dist/helpers/testing/test-case.d.ts +20 -0
- package/dist/helpers/testing/test-case.js +18 -0
- package/dist/helpers/testing/test-case.js.map +1 -0
- package/dist/helpers/testing/test-handler.d.ts +23 -0
- package/dist/helpers/testing/test-handler.js +54 -0
- package/dist/helpers/testing/test-handler.js.map +1 -0
- package/dist/helpers/testing/test-plan/base.d.ts +28 -0
- package/dist/helpers/testing/test-plan/base.js +70 -0
- package/dist/helpers/testing/test-plan/base.js.map +1 -0
- package/dist/helpers/testing/test-plan/default.d.ts +5 -0
- package/dist/helpers/testing/test-plan/default.js +11 -0
- package/dist/helpers/testing/test-plan/default.js.map +1 -0
- package/dist/helpers/testing/test-plan/index.d.ts +2 -0
- package/dist/helpers/testing/test-plan/index.js +19 -0
- package/dist/helpers/testing/test-plan/index.js.map +1 -0
- package/dist/helpers/testing/types.d.ts +51 -0
- package/dist/helpers/testing/types.js +3 -0
- package/dist/helpers/testing/types.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/content-range.interceptor.d.ts +26 -0
- package/dist/interceptors/content-range.interceptor.js +188 -0
- package/dist/interceptors/content-range.interceptor.js.map +1 -0
- package/dist/interceptors/index.d.ts +1 -0
- package/dist/interceptors/index.js +18 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/middlewares/index.d.ts +2 -0
- package/dist/middlewares/index.js +19 -0
- package/dist/middlewares/index.js.map +1 -0
- package/dist/middlewares/request-body-parser.middleware.d.ts +9 -0
- package/dist/middlewares/request-body-parser.middleware.js +80 -0
- package/dist/middlewares/request-body-parser.middleware.js.map +1 -0
- package/dist/middlewares/request-spy.middleware.d.ts +8 -0
- package/dist/middlewares/request-spy.middleware.js +64 -0
- package/dist/middlewares/request-spy.middleware.js.map +1 -0
- package/dist/migrations/base-path.d.ts +1 -0
- package/dist/migrations/base-path.js +6 -0
- package/dist/migrations/base-path.js.map +1 -0
- package/dist/migrations/handler.d.ts +9 -0
- package/dist/migrations/handler.js +80 -0
- package/dist/migrations/handler.js.map +1 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.js +18 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/mixins/data-type.mixin.d.ts +15 -0
- package/dist/mixins/data-type.mixin.js +68 -0
- package/dist/mixins/data-type.mixin.js.map +1 -0
- package/dist/mixins/index.d.ts +8 -0
- package/dist/mixins/index.js +25 -0
- package/dist/mixins/index.js.map +1 -0
- package/dist/mixins/object-search.mixin.d.ts +12 -0
- package/dist/mixins/object-search.mixin.js +31 -0
- package/dist/mixins/object-search.mixin.js.map +1 -0
- package/dist/mixins/principal.mixin.d.ts +13 -0
- package/dist/mixins/principal.mixin.js +41 -0
- package/dist/mixins/principal.mixin.js.map +1 -0
- package/dist/mixins/soft-delete.mixin.d.ts +11 -0
- package/dist/mixins/soft-delete.mixin.js +31 -0
- package/dist/mixins/soft-delete.mixin.js.map +1 -0
- package/dist/mixins/soft-persistent.mixin.d.ts +11 -0
- package/dist/mixins/soft-persistent.mixin.js +30 -0
- package/dist/mixins/soft-persistent.mixin.js.map +1 -0
- package/dist/mixins/text-search.mixin.d.ts +11 -0
- package/dist/mixins/text-search.mixin.js +31 -0
- package/dist/mixins/text-search.mixin.js.map +1 -0
- package/dist/mixins/tz.mixin.d.ts +12 -0
- package/dist/mixins/tz.mixin.js +42 -0
- package/dist/mixins/tz.mixin.js.map +1 -0
- package/dist/mixins/user-audit.mixin.d.ts +13 -0
- package/dist/mixins/user-audit.mixin.js +42 -0
- package/dist/mixins/user-audit.mixin.js.map +1 -0
- package/dist/static/security/authorize_model.conf +14 -0
- package/dist/static/security/authorize_model_match_subject.conf +14 -0
- package/dist/utilities/crypto.utility.d.ts +22 -0
- package/dist/utilities/crypto.utility.js +131 -0
- package/dist/utilities/crypto.utility.js.map +1 -0
- package/dist/utilities/date.utility.d.ts +13 -0
- package/dist/utilities/date.utility.js +59 -0
- package/dist/utilities/date.utility.js.map +1 -0
- package/dist/utilities/error.utility.d.ts +14 -0
- package/dist/utilities/error.utility.js +18 -0
- package/dist/utilities/error.utility.js.map +1 -0
- package/dist/utilities/index.d.ts +7 -0
- package/dist/utilities/index.js +24 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/parse.utility.d.ts +12 -0
- package/dist/utilities/parse.utility.js +160 -0
- package/dist/utilities/parse.utility.js.map +1 -0
- package/dist/utilities/performance.utility.d.ts +4 -0
- package/dist/utilities/performance.utility.js +11 -0
- package/dist/utilities/performance.utility.js.map +1 -0
- package/dist/utilities/request.utility.d.ts +17 -0
- package/dist/utilities/request.utility.js +41 -0
- package/dist/utilities/request.utility.js.map +1 -0
- package/dist/utilities/url.utility.d.ts +2 -0
- package/dist/utilities/url.utility.js +32 -0
- package/dist/utilities/url.utility.js.map +1 -0
- package/package.json +128 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
import mqtt from 'mqtt';
|
2
|
+
export interface IMQTTClientOptions {
|
3
|
+
identifier: string;
|
4
|
+
url: string;
|
5
|
+
options: mqtt.IClientOptions;
|
6
|
+
onConnect?: () => void;
|
7
|
+
onDisconnect?: () => void;
|
8
|
+
onError?: (error: Error) => void;
|
9
|
+
onClose?: (error?: Error) => void;
|
10
|
+
onMessage: (opts: {
|
11
|
+
topic: string;
|
12
|
+
message: Buffer;
|
13
|
+
}) => void;
|
14
|
+
}
|
15
|
+
export declare class MQTTClientHelper {
|
16
|
+
private logger;
|
17
|
+
private identifier;
|
18
|
+
private url;
|
19
|
+
private options;
|
20
|
+
private client;
|
21
|
+
private onConnect?;
|
22
|
+
private onDisconnect?;
|
23
|
+
private onError?;
|
24
|
+
private onClose?;
|
25
|
+
private onMessage;
|
26
|
+
constructor(opts: IMQTTClientOptions);
|
27
|
+
configure(): void;
|
28
|
+
subscribe(opts: {
|
29
|
+
topics: Array<string>;
|
30
|
+
}): Promise<unknown>;
|
31
|
+
publish(opts: {
|
32
|
+
topic: string;
|
33
|
+
message: string | Buffer;
|
34
|
+
}): Promise<unknown>;
|
35
|
+
}
|
@@ -0,0 +1,99 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.MQTTClientHelper = void 0;
|
7
|
+
const utilities_1 = require("../../utilities");
|
8
|
+
const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
9
|
+
const mqtt_1 = __importDefault(require("mqtt"));
|
10
|
+
const logger_1 = require("../logger");
|
11
|
+
class MQTTClientHelper {
|
12
|
+
constructor(opts) {
|
13
|
+
this.logger = logger_1.LoggerFactory.getLogger([MQTTClientHelper.name]);
|
14
|
+
this.identifier = opts.identifier;
|
15
|
+
this.url = opts.url;
|
16
|
+
this.options = opts.options;
|
17
|
+
this.onConnect = opts.onConnect;
|
18
|
+
this.onClose = opts.onClose;
|
19
|
+
this.onError = opts.onError;
|
20
|
+
this.onDisconnect = opts.onDisconnect;
|
21
|
+
this.onMessage = opts.onMessage;
|
22
|
+
this.configure();
|
23
|
+
}
|
24
|
+
// -------------------------------------------------------------------------------
|
25
|
+
configure() {
|
26
|
+
if (this.client) {
|
27
|
+
this.logger.info('[configure][%s] MQTT Client already established! Client: %j', this.identifier, this.client);
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
if ((0, isEmpty_1.default)(this.url)) {
|
31
|
+
throw (0, utilities_1.getError)({
|
32
|
+
statusCode: 500,
|
33
|
+
message: '[configure] Invalid url to configure mqtt client!',
|
34
|
+
});
|
35
|
+
}
|
36
|
+
this.logger.info('[configure][%s] Start configuring mqtt client | Url: %s | Options: %j', this.identifier, this.url, this.options);
|
37
|
+
this.client = mqtt_1.default.connect(this.url, this.options);
|
38
|
+
this.client.on('connect', () => {
|
39
|
+
var _a;
|
40
|
+
(_a = this.onConnect) === null || _a === void 0 ? void 0 : _a.call(this);
|
41
|
+
});
|
42
|
+
this.client.on('disconnect', () => {
|
43
|
+
var _a;
|
44
|
+
(_a = this.onDisconnect) === null || _a === void 0 ? void 0 : _a.call(this);
|
45
|
+
});
|
46
|
+
this.client.on('message', (topic, message) => {
|
47
|
+
var _a;
|
48
|
+
(_a = this.onMessage) === null || _a === void 0 ? void 0 : _a.call(this, { topic, message });
|
49
|
+
});
|
50
|
+
this.client.on('error', error => {
|
51
|
+
var _a;
|
52
|
+
(_a = this.onError) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
53
|
+
});
|
54
|
+
this.client.on('close', (error) => {
|
55
|
+
var _a;
|
56
|
+
(_a = this.onClose) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
57
|
+
});
|
58
|
+
}
|
59
|
+
// -------------------------------------------------------------------------------
|
60
|
+
subscribe(opts) {
|
61
|
+
return new Promise((resolve, reject) => {
|
62
|
+
var _a;
|
63
|
+
if (!((_a = this.client) === null || _a === void 0 ? void 0 : _a.connected)) {
|
64
|
+
reject((0, utilities_1.getError)({
|
65
|
+
statusCode: 400,
|
66
|
+
message: `[subscribe][${this.identifier}] MQTT Client is not available to subscribe topic!`,
|
67
|
+
}));
|
68
|
+
}
|
69
|
+
const { topics } = opts;
|
70
|
+
this.client.subscribe(topics, error => {
|
71
|
+
if (error) {
|
72
|
+
reject(error);
|
73
|
+
}
|
74
|
+
resolve(topics);
|
75
|
+
});
|
76
|
+
});
|
77
|
+
}
|
78
|
+
// -------------------------------------------------------------------------------
|
79
|
+
publish(opts) {
|
80
|
+
return new Promise((resolve, reject) => {
|
81
|
+
var _a;
|
82
|
+
if (!((_a = this.client) === null || _a === void 0 ? void 0 : _a.connected)) {
|
83
|
+
reject((0, utilities_1.getError)({
|
84
|
+
statusCode: 400,
|
85
|
+
message: `[publish][${this.identifier}] MQTT Client is not available to subscribe topic!`,
|
86
|
+
}));
|
87
|
+
}
|
88
|
+
const { topic, message } = opts;
|
89
|
+
this.client.publish(topic, message, error => {
|
90
|
+
if (error) {
|
91
|
+
reject(error);
|
92
|
+
}
|
93
|
+
resolve({ topic, message });
|
94
|
+
});
|
95
|
+
});
|
96
|
+
}
|
97
|
+
}
|
98
|
+
exports.MQTTClientHelper = MQTTClientHelper;
|
99
|
+
//# sourceMappingURL=mqtt.helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mqtt.helper.js","sourceRoot":"","sources":["../../../src/helpers/queue/mqtt.helper.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
interface IQueueCallback<ElementType> {
|
2
|
+
onDataEnqueue?: (identifier: string, payload: ElementType) => void;
|
3
|
+
onDataDequeue?: (identifier: string, payload: ElementType) => void;
|
4
|
+
onTriggerRetry?: (identifier: string) => void;
|
5
|
+
}
|
6
|
+
export declare class QueueHelper<ElementType> {
|
7
|
+
identifier: string;
|
8
|
+
storage: Array<ElementType>;
|
9
|
+
private onDataEnqueue?;
|
10
|
+
private onDataDequeue?;
|
11
|
+
constructor(opts: IQueueCallback<ElementType> & {
|
12
|
+
identifier: string;
|
13
|
+
});
|
14
|
+
enqueue(value: ElementType): void;
|
15
|
+
dequeue(): ElementType | undefined;
|
16
|
+
getElementAt(position?: number): ElementType | undefined;
|
17
|
+
}
|
18
|
+
export declare class MultiQueueHelper<ElementType> {
|
19
|
+
storage: Record<string, QueueHelper<ElementType>>;
|
20
|
+
private onDataEnqueue?;
|
21
|
+
private onDataDequeue?;
|
22
|
+
constructor(opts: IQueueCallback<ElementType>);
|
23
|
+
enqueue(identifier: string, value: ElementType): void;
|
24
|
+
dequeue(identifier: string): ElementType | undefined;
|
25
|
+
getElementAt(identifier: string, position?: number): ElementType | undefined;
|
26
|
+
getCurrentData(identifier: string): ElementType | undefined;
|
27
|
+
getQueue(identifier: string): QueueHelper<ElementType>;
|
28
|
+
removeQueue(queue: string): void;
|
29
|
+
mapData(): Record<string, QueueHelper<ElementType>>;
|
30
|
+
}
|
31
|
+
export {};
|
@@ -0,0 +1,90 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.MultiQueueHelper = exports.QueueHelper = void 0;
|
7
|
+
const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
8
|
+
const omit_1 = __importDefault(require("lodash/omit"));
|
9
|
+
// --------------------------------------------------------
|
10
|
+
class QueueHelper {
|
11
|
+
constructor(opts) {
|
12
|
+
const { identifier, onDataEnqueue, onDataDequeue } = opts;
|
13
|
+
this.identifier = identifier;
|
14
|
+
this.onDataEnqueue = onDataEnqueue;
|
15
|
+
this.onDataDequeue = onDataDequeue;
|
16
|
+
this.storage = [];
|
17
|
+
}
|
18
|
+
enqueue(value) {
|
19
|
+
var _a;
|
20
|
+
if (!this.storage) {
|
21
|
+
this.storage = [];
|
22
|
+
}
|
23
|
+
this.storage.push(value);
|
24
|
+
if (value && !(0, isEmpty_1.default)(value)) {
|
25
|
+
(_a = this.onDataEnqueue) === null || _a === void 0 ? void 0 : _a.call(this, this.identifier, value);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
dequeue() {
|
29
|
+
var _a, _b;
|
30
|
+
const value = (_a = this.storage) === null || _a === void 0 ? void 0 : _a.shift();
|
31
|
+
if (value && !(0, isEmpty_1.default)(value)) {
|
32
|
+
(_b = this.onDataDequeue) === null || _b === void 0 ? void 0 : _b.call(this, this.identifier, value);
|
33
|
+
}
|
34
|
+
return value;
|
35
|
+
}
|
36
|
+
getElementAt(position = 0) {
|
37
|
+
var _a;
|
38
|
+
return (_a = this.storage) === null || _a === void 0 ? void 0 : _a[position];
|
39
|
+
}
|
40
|
+
}
|
41
|
+
exports.QueueHelper = QueueHelper;
|
42
|
+
// --------------------------------------------------------
|
43
|
+
class MultiQueueHelper {
|
44
|
+
// private onTriggerRetry?: (identifier: string) => void;
|
45
|
+
constructor(opts) {
|
46
|
+
const { onDataEnqueue, onDataDequeue,
|
47
|
+
// onTriggerRetry
|
48
|
+
} = opts;
|
49
|
+
this.onDataEnqueue = onDataEnqueue;
|
50
|
+
this.onDataDequeue = onDataDequeue;
|
51
|
+
// this.onTriggerRetry = onTriggerRetry;
|
52
|
+
this.storage = {};
|
53
|
+
}
|
54
|
+
enqueue(identifier, value) {
|
55
|
+
var _a;
|
56
|
+
if (!this.storage[identifier]) {
|
57
|
+
this.storage[identifier] = new QueueHelper({ identifier });
|
58
|
+
}
|
59
|
+
this.storage[identifier].enqueue(value);
|
60
|
+
if (value && !(0, isEmpty_1.default)(value)) {
|
61
|
+
(_a = this.onDataEnqueue) === null || _a === void 0 ? void 0 : _a.call(this, identifier, value);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
dequeue(identifier) {
|
65
|
+
var _a, _b;
|
66
|
+
const value = (_a = this.storage[identifier]) === null || _a === void 0 ? void 0 : _a.dequeue();
|
67
|
+
if (value && !(0, isEmpty_1.default)(value)) {
|
68
|
+
(_b = this.onDataDequeue) === null || _b === void 0 ? void 0 : _b.call(this, identifier, value);
|
69
|
+
}
|
70
|
+
return value;
|
71
|
+
}
|
72
|
+
getElementAt(identifier, position = 0) {
|
73
|
+
return this.storage[identifier].getElementAt(position);
|
74
|
+
}
|
75
|
+
getCurrentData(identifier) {
|
76
|
+
var _a;
|
77
|
+
return (_a = this.storage[identifier]) === null || _a === void 0 ? void 0 : _a.getElementAt(0);
|
78
|
+
}
|
79
|
+
getQueue(identifier) {
|
80
|
+
return this.storage[identifier];
|
81
|
+
}
|
82
|
+
removeQueue(queue) {
|
83
|
+
this.storage = (0, omit_1.default)(this.storage, [queue]);
|
84
|
+
}
|
85
|
+
mapData() {
|
86
|
+
return this.storage;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
exports.MultiQueueHelper = MultiQueueHelper;
|
90
|
+
//# sourceMappingURL=queue.helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"queue.helper.js","sourceRoot":"","sources":["../../../src/helpers/queue/queue.helper.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
import Redis from 'ioredis';
|
2
|
+
export declare class RedisHelper {
|
3
|
+
client: Redis;
|
4
|
+
private logger;
|
5
|
+
constructor(options: {
|
6
|
+
name: string;
|
7
|
+
host: string;
|
8
|
+
port: number;
|
9
|
+
password: string;
|
10
|
+
onConnected?: (opts: {
|
11
|
+
name: string;
|
12
|
+
helper: RedisHelper;
|
13
|
+
}) => void;
|
14
|
+
onReady?: (opts: {
|
15
|
+
name: string;
|
16
|
+
helper: RedisHelper;
|
17
|
+
}) => void;
|
18
|
+
onError?: (opts: {
|
19
|
+
name: string;
|
20
|
+
helper: RedisHelper;
|
21
|
+
error: any;
|
22
|
+
}) => void;
|
23
|
+
});
|
24
|
+
set(opts: {
|
25
|
+
key: string;
|
26
|
+
value: any;
|
27
|
+
options?: {
|
28
|
+
log: boolean;
|
29
|
+
};
|
30
|
+
}): Promise<void>;
|
31
|
+
mset(opts: {
|
32
|
+
payload: Array<{
|
33
|
+
key: string;
|
34
|
+
value: any;
|
35
|
+
}>;
|
36
|
+
options?: {
|
37
|
+
log: boolean;
|
38
|
+
};
|
39
|
+
}): Promise<void>;
|
40
|
+
hset(opts: {
|
41
|
+
key: string;
|
42
|
+
value: any;
|
43
|
+
options?: {
|
44
|
+
log: boolean;
|
45
|
+
};
|
46
|
+
}): Promise<number | undefined>;
|
47
|
+
get(opts: {
|
48
|
+
key: string;
|
49
|
+
transform?: (input: string) => any;
|
50
|
+
}): Promise<any>;
|
51
|
+
mget(opts: {
|
52
|
+
keys: Array<string>;
|
53
|
+
transform?: (input: string) => any;
|
54
|
+
}): Promise<any[] | null>;
|
55
|
+
hgetall(opts: {
|
56
|
+
key: string;
|
57
|
+
transform?: <T, R>(input: T) => R;
|
58
|
+
}): Promise<unknown>;
|
59
|
+
getString(opts: {
|
60
|
+
key: string;
|
61
|
+
}): Promise<any>;
|
62
|
+
getStrings(opts: {
|
63
|
+
keys: Array<string>;
|
64
|
+
}): Promise<any[] | null>;
|
65
|
+
getObject(opts: {
|
66
|
+
key: string;
|
67
|
+
}): Promise<any>;
|
68
|
+
getObjects(opts: {
|
69
|
+
keys: Array<string>;
|
70
|
+
}): Promise<any[] | null>;
|
71
|
+
keys(opts: {
|
72
|
+
key: string;
|
73
|
+
}): Promise<string[]>;
|
74
|
+
publish(opts: {
|
75
|
+
topics: Array<string>;
|
76
|
+
payload: any;
|
77
|
+
useCompress?: boolean;
|
78
|
+
}): Promise<void>;
|
79
|
+
subscribe(opts: {
|
80
|
+
topic: string;
|
81
|
+
}): void;
|
82
|
+
}
|
@@ -0,0 +1,238 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.RedisHelper = void 0;
|
16
|
+
const helpers_1 = require("../helpers");
|
17
|
+
const utilities_1 = require("../utilities");
|
18
|
+
const ioredis_1 = __importDefault(require("ioredis"));
|
19
|
+
const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
20
|
+
const zlib_1 = __importDefault(require("zlib"));
|
21
|
+
class RedisHelper {
|
22
|
+
// ---------------------------------------------------------------------------------
|
23
|
+
constructor(options) {
|
24
|
+
this.logger = helpers_1.LoggerFactory.getLogger([RedisHelper.name]);
|
25
|
+
const { name, host, port, password, onConnected, onReady, onError } = options;
|
26
|
+
this.client = new ioredis_1.default({
|
27
|
+
name,
|
28
|
+
host,
|
29
|
+
port,
|
30
|
+
password,
|
31
|
+
retryStrategy: (times) => {
|
32
|
+
return Math.max(Math.min(Math.exp(times), 20000), 1000);
|
33
|
+
},
|
34
|
+
maxRetriesPerRequest: null,
|
35
|
+
});
|
36
|
+
this.logger.info('[configure] Redis client options: %j', options);
|
37
|
+
this.client.on('connect', () => {
|
38
|
+
this.logger.info(` ${name} CONNECTED`);
|
39
|
+
onConnected === null || onConnected === void 0 ? void 0 : onConnected({ name, helper: this });
|
40
|
+
});
|
41
|
+
this.client.on('ready', () => {
|
42
|
+
this.logger.info(` ${name} READY`);
|
43
|
+
onReady === null || onReady === void 0 ? void 0 : onReady({ name, helper: this });
|
44
|
+
});
|
45
|
+
this.client.on('error', error => {
|
46
|
+
this.logger.error(` ${name} ERROR: %j`, error);
|
47
|
+
onError === null || onError === void 0 ? void 0 : onError({ name, helper: this, error });
|
48
|
+
});
|
49
|
+
this.client.on('reconnecting', () => {
|
50
|
+
this.logger.error(` ${name} RECONNECTING...`);
|
51
|
+
});
|
52
|
+
}
|
53
|
+
// ---------------------------------------------------------------------------------
|
54
|
+
set(opts) {
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
56
|
+
const { key, value, options = { log: false } } = opts;
|
57
|
+
if (!this.client) {
|
58
|
+
this.logger.info('[set] No valid Redis connection!');
|
59
|
+
return;
|
60
|
+
}
|
61
|
+
const serialized = JSON.stringify(value);
|
62
|
+
yield this.client.set(key, serialized);
|
63
|
+
if (!(options === null || options === void 0 ? void 0 : options.log)) {
|
64
|
+
return;
|
65
|
+
}
|
66
|
+
this.logger.info(`[set] Set key: ${key} | value: ${serialized}`);
|
67
|
+
});
|
68
|
+
}
|
69
|
+
// ---------------------------------------------------------------------------------
|
70
|
+
mset(opts) {
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
72
|
+
if (!this.client) {
|
73
|
+
this.logger.info('[set] No valid Redis connection!');
|
74
|
+
return;
|
75
|
+
}
|
76
|
+
const { payload, options } = opts;
|
77
|
+
const serialized = payload === null || payload === void 0 ? void 0 : payload.reduce((current, el) => {
|
78
|
+
const { key, value } = el;
|
79
|
+
return Object.assign(Object.assign({}, current), { [key]: JSON.stringify(value) });
|
80
|
+
}, {});
|
81
|
+
yield this.client.mset(serialized);
|
82
|
+
if (!(options === null || options === void 0 ? void 0 : options.log)) {
|
83
|
+
return;
|
84
|
+
}
|
85
|
+
this.logger.info('[mset] Payload: %j', serialized);
|
86
|
+
});
|
87
|
+
}
|
88
|
+
// ---------------------------------------------------------------------------------
|
89
|
+
hset(opts) {
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
91
|
+
if (!this.client) {
|
92
|
+
this.logger.info('[hset] No valid Redis connection!');
|
93
|
+
return;
|
94
|
+
}
|
95
|
+
const { key, value, options } = opts;
|
96
|
+
const rs = yield this.client.hset(key, value);
|
97
|
+
if (!(options === null || options === void 0 ? void 0 : options.log)) {
|
98
|
+
return rs;
|
99
|
+
}
|
100
|
+
this.logger.info('[hset] Result: %j', rs);
|
101
|
+
return rs;
|
102
|
+
});
|
103
|
+
}
|
104
|
+
// ---------------------------------------------------------------------------------
|
105
|
+
get(opts) {
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
107
|
+
const { key, transform } = opts;
|
108
|
+
if (!this.client) {
|
109
|
+
this.logger.info('[get] No valid Redis connection!');
|
110
|
+
return null;
|
111
|
+
}
|
112
|
+
const value = yield this.client.get(key);
|
113
|
+
if (!transform || !value) {
|
114
|
+
return null;
|
115
|
+
}
|
116
|
+
return transform(value);
|
117
|
+
});
|
118
|
+
}
|
119
|
+
// ---------------------------------------------------------------------------------
|
120
|
+
mget(opts) {
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
122
|
+
const { keys, transform } = opts;
|
123
|
+
if (!this.client) {
|
124
|
+
this.logger.info('[get] No valid Redis connection!');
|
125
|
+
return null;
|
126
|
+
}
|
127
|
+
const values = yield this.client.mget(keys);
|
128
|
+
if (!transform || !(values === null || values === void 0 ? void 0 : values.length)) {
|
129
|
+
return null;
|
130
|
+
}
|
131
|
+
return values === null || values === void 0 ? void 0 : values.map(el => (el ? transform(el) : el));
|
132
|
+
});
|
133
|
+
}
|
134
|
+
// ---------------------------------------------------------------------------------
|
135
|
+
hgetall(opts) {
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
137
|
+
const { key, transform } = opts;
|
138
|
+
if (!this.client) {
|
139
|
+
this.logger.info('[get] No valid Redis connection!');
|
140
|
+
return null;
|
141
|
+
}
|
142
|
+
const value = yield this.client.hgetall(key);
|
143
|
+
if (!transform || !value) {
|
144
|
+
return value;
|
145
|
+
}
|
146
|
+
return transform(value);
|
147
|
+
});
|
148
|
+
}
|
149
|
+
// ---------------------------------------------------------------------------------
|
150
|
+
getString(opts) {
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
152
|
+
const rs = yield this.get(opts);
|
153
|
+
return rs;
|
154
|
+
});
|
155
|
+
}
|
156
|
+
// ---------------------------------------------------------------------------------
|
157
|
+
getStrings(opts) {
|
158
|
+
return __awaiter(this, void 0, void 0, function* () {
|
159
|
+
const rs = yield this.mget(opts);
|
160
|
+
return rs;
|
161
|
+
});
|
162
|
+
}
|
163
|
+
// ---------------------------------------------------------------------------------
|
164
|
+
getObject(opts) {
|
165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
166
|
+
const rs = yield this.get(Object.assign(Object.assign({}, opts), { transform: (cached) => JSON.parse(cached) }));
|
167
|
+
return rs;
|
168
|
+
});
|
169
|
+
}
|
170
|
+
// ---------------------------------------------------------------------------------
|
171
|
+
getObjects(opts) {
|
172
|
+
return __awaiter(this, void 0, void 0, function* () {
|
173
|
+
const rs = yield this.mget(Object.assign(Object.assign({}, opts), { transform: (cached) => JSON.parse(cached) }));
|
174
|
+
return rs;
|
175
|
+
});
|
176
|
+
}
|
177
|
+
// ---------------------------------------------------------------------------------
|
178
|
+
keys(opts) {
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
180
|
+
const { key } = opts;
|
181
|
+
if (!this.client) {
|
182
|
+
this.logger.info('[keys] No valid Redis connection!');
|
183
|
+
return [];
|
184
|
+
}
|
185
|
+
const existedKeys = yield this.client.keys(key);
|
186
|
+
return existedKeys;
|
187
|
+
});
|
188
|
+
}
|
189
|
+
// ---------------------------------------------------------------------------------
|
190
|
+
publish(opts) {
|
191
|
+
return __awaiter(this, void 0, void 0, function* () {
|
192
|
+
const { topics, payload, useCompress = false } = opts;
|
193
|
+
const validTopics = topics === null || topics === void 0 ? void 0 : topics.filter(topic => !(0, isEmpty_1.default)(topic));
|
194
|
+
if (!(validTopics === null || validTopics === void 0 ? void 0 : validTopics.length)) {
|
195
|
+
this.logger.error('[publish] No topic(s) to publish!');
|
196
|
+
return;
|
197
|
+
}
|
198
|
+
if (!payload) {
|
199
|
+
this.logger.error('[publish] Invalid payload to publish!');
|
200
|
+
return;
|
201
|
+
}
|
202
|
+
if (!this.client) {
|
203
|
+
this.logger.error('[publish] No valid Redis connection!');
|
204
|
+
return;
|
205
|
+
}
|
206
|
+
yield Promise.all(validTopics.map(topic => {
|
207
|
+
let packet = Buffer.from(JSON.stringify(payload));
|
208
|
+
if (useCompress) {
|
209
|
+
packet = zlib_1.default.deflateSync(Buffer.from(packet));
|
210
|
+
}
|
211
|
+
return this.client.publish(topic, packet);
|
212
|
+
}));
|
213
|
+
});
|
214
|
+
}
|
215
|
+
// ---------------------------------------------------------------------------------
|
216
|
+
subscribe(opts) {
|
217
|
+
const { topic } = opts;
|
218
|
+
if (!topic || (0, isEmpty_1.default)(topic)) {
|
219
|
+
this.logger.error('[subscribe] No topic to subscribe!');
|
220
|
+
return;
|
221
|
+
}
|
222
|
+
if (!this.client) {
|
223
|
+
this.logger.error('[subscribe] No valid Redis connection!');
|
224
|
+
return;
|
225
|
+
}
|
226
|
+
this.client.subscribe(topic, (error, count) => {
|
227
|
+
if (error) {
|
228
|
+
throw (0, utilities_1.getError)({
|
229
|
+
statusCode: 500,
|
230
|
+
message: `[subscribe] Failed to subscribe to topic: ${topic}`,
|
231
|
+
});
|
232
|
+
}
|
233
|
+
this.logger.info('[subscribe] Subscribed to %s channel(s). Listening to channel: %s', count, topic);
|
234
|
+
});
|
235
|
+
}
|
236
|
+
}
|
237
|
+
exports.RedisHelper = RedisHelper;
|
238
|
+
//# sourceMappingURL=redis.helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"redis.helper.js","sourceRoot":"","sources":["../../src/helpers/redis.helper.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { AnyObject } from '../../common';
|
2
|
+
export declare class DIContainerHelper<T extends object = AnyObject> {
|
3
|
+
private static instance;
|
4
|
+
private container;
|
5
|
+
constructor();
|
6
|
+
static getInstance<T extends object = AnyObject>(): DIContainerHelper<AnyObject>;
|
7
|
+
static newInstance<T extends object = AnyObject>(): DIContainerHelper<T>;
|
8
|
+
get<R>(key: keyof T): R;
|
9
|
+
set<R>(key: string, value: R): void;
|
10
|
+
keys(): string[];
|
11
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DIContainerHelper = void 0;
|
4
|
+
class DIContainerHelper {
|
5
|
+
constructor() {
|
6
|
+
this.container = Object.assign({});
|
7
|
+
}
|
8
|
+
static getInstance() {
|
9
|
+
if (!this.instance) {
|
10
|
+
this.instance = new DIContainerHelper();
|
11
|
+
}
|
12
|
+
return this.instance;
|
13
|
+
}
|
14
|
+
static newInstance() {
|
15
|
+
return new DIContainerHelper();
|
16
|
+
}
|
17
|
+
get(key) {
|
18
|
+
return this.container[key];
|
19
|
+
}
|
20
|
+
set(key, value) {
|
21
|
+
this.container = Object.assign(this.container, { [key]: value });
|
22
|
+
}
|
23
|
+
keys() {
|
24
|
+
return Object.keys(this.container);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
exports.DIContainerHelper = DIContainerHelper;
|
28
|
+
//# sourceMappingURL=di-container.helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"di-container.helper.js","sourceRoot":"","sources":["../../../src/helpers/storage/di-container.helper.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAI5B;QACE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAK,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,iBAAiB,EAAK,CAAC;IACpC,CAAC;IAED,GAAG,CAAI,GAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAM,CAAC;IAClC,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,KAAQ;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF;AA/BD,8CA+BC"}
|