@gennext/lb-infra 0.1.5 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +264 -135
- package/dist/base/applications/base.application.d.ts +62 -0
- package/dist/base/applications/base.application.d.ts.map +1 -0
- package/dist/base/applications/base.application.js +54 -0
- package/dist/base/applications/base.application.js.map +1 -0
- package/dist/base/applications/index.d.ts +2 -0
- package/dist/base/applications/index.d.ts.map +1 -0
- package/dist/base/{migration → applications}/index.js +1 -2
- package/dist/base/applications/index.js.map +1 -0
- package/dist/base/controllers/base.controller.d.ts +23 -0
- package/dist/base/controllers/base.controller.d.ts.map +1 -0
- package/dist/base/controllers/base.controller.js +24 -0
- package/dist/base/controllers/base.controller.js.map +1 -0
- package/dist/base/controllers/decorators.d.ts +4 -0
- package/dist/base/controllers/decorators.d.ts.map +1 -0
- package/dist/base/controllers/decorators.js +9 -0
- package/dist/base/controllers/decorators.js.map +1 -0
- package/dist/base/controllers/index.d.ts +3 -0
- package/dist/base/controllers/index.d.ts.map +1 -0
- package/dist/{helpers/migrate → base/controllers}/index.js +2 -3
- package/dist/base/controllers/index.js.map +1 -0
- package/dist/base/datasources/base.datasource.d.ts +23 -9
- package/dist/base/datasources/base.datasource.d.ts.map +1 -1
- package/dist/base/datasources/base.datasource.js +10 -14
- package/dist/base/datasources/base.datasource.js.map +1 -1
- package/dist/base/drizzle/index.d.ts +3 -0
- package/dist/base/drizzle/index.d.ts.map +1 -0
- package/dist/{helpers/logger/transports → base/drizzle}/index.js +1 -1
- package/dist/base/drizzle/index.js.map +1 -0
- package/dist/base/drizzle/pg.d.ts +5 -0
- package/dist/base/drizzle/pg.d.ts.map +1 -0
- package/dist/base/drizzle/pg.js +19 -0
- package/dist/base/drizzle/pg.js.map +1 -0
- package/dist/base/hono/index.d.ts +3 -0
- package/dist/base/hono/index.d.ts.map +1 -0
- package/dist/{helpers/logger/common → base/hono}/index.js +1 -1
- package/dist/base/hono/index.js.map +1 -0
- package/dist/base/hono/zod-openapi.d.ts +3 -0
- package/dist/base/hono/zod-openapi.d.ts.map +1 -0
- package/dist/base/hono/zod-openapi.js +18 -0
- package/dist/base/hono/zod-openapi.js.map +1 -0
- package/dist/base/http/index.d.ts +4 -0
- package/dist/base/http/index.d.ts.map +1 -0
- package/dist/base/http/index.js +20 -0
- package/dist/base/http/index.js.map +1 -0
- package/dist/base/http/openapi.helpers.d.ts +30 -0
- package/dist/base/http/openapi.helpers.d.ts.map +1 -0
- package/dist/base/http/openapi.helpers.js +22 -0
- package/dist/base/http/openapi.helpers.js.map +1 -0
- package/dist/base/http/server.d.ts +14 -0
- package/dist/base/http/server.d.ts.map +1 -0
- package/dist/base/http/server.js +27 -0
- package/dist/base/http/server.js.map +1 -0
- package/dist/base/http/types.d.ts +27 -0
- package/dist/base/http/types.d.ts.map +1 -0
- package/dist/base/http/types.js.map +1 -0
- package/dist/base/index.d.ts +6 -2
- package/dist/base/index.d.ts.map +1 -1
- package/dist/base/index.js +33 -2
- package/dist/base/index.js.map +1 -1
- package/dist/base/models/base.model.d.ts +8 -29
- package/dist/base/models/base.model.d.ts.map +1 -1
- package/dist/base/models/base.model.js +6 -50
- package/dist/base/models/base.model.js.map +1 -1
- package/dist/base/models/column-defs.d.ts +37 -0
- package/dist/base/models/column-defs.d.ts.map +1 -0
- package/dist/base/models/column-defs.js +52 -0
- package/dist/base/models/column-defs.js.map +1 -0
- package/dist/base/models/drizzle.types.d.ts +6 -0
- package/dist/base/models/drizzle.types.d.ts.map +1 -0
- package/dist/{helpers/migrate/type.js → base/models/drizzle.types.js} +1 -1
- package/dist/base/models/drizzle.types.js.map +1 -0
- package/dist/base/models/index.d.ts +3 -1
- package/dist/base/models/index.d.ts.map +1 -1
- package/dist/base/models/index.js +2 -1
- package/dist/base/models/index.js.map +1 -1
- package/dist/base/pg/index.d.ts +3 -0
- package/dist/base/pg/index.d.ts.map +1 -0
- package/dist/base/pg/index.js +12 -0
- package/dist/base/pg/index.js.map +1 -0
- package/dist/base/repository/default-crud.repository.d.ts +12 -0
- package/dist/base/repository/default-crud.repository.d.ts.map +1 -0
- package/dist/base/repository/default-crud.repository.js +61 -0
- package/dist/base/repository/default-crud.repository.js.map +1 -0
- package/dist/base/repository/index.d.ts +3 -2
- package/dist/base/repository/index.d.ts.map +1 -1
- package/dist/base/repository/index.js +3 -2
- package/dist/base/repository/index.js.map +1 -1
- package/dist/base/repository/readable.repository.d.ts +23 -0
- package/dist/base/repository/readable.repository.d.ts.map +1 -0
- package/dist/base/repository/readable.repository.js +55 -0
- package/dist/base/repository/readable.repository.js.map +1 -0
- package/dist/base/repository/soft-deletable.repository.d.ts +27 -0
- package/dist/base/repository/soft-deletable.repository.d.ts.map +1 -0
- package/dist/base/repository/soft-deletable.repository.js +79 -0
- package/dist/base/repository/soft-deletable.repository.js.map +1 -0
- package/dist/base/repository/soft-delete.repository.d.ts +8 -0
- package/dist/base/repository/soft-delete.repository.d.ts.map +1 -1
- package/dist/base/repository/soft-delete.repository.js +13 -0
- package/dist/base/repository/soft-delete.repository.js.map +1 -1
- package/dist/base/services/base.service.d.ts +8 -0
- package/dist/base/services/base.service.d.ts.map +1 -0
- package/dist/base/services/base.service.js +11 -0
- package/dist/base/services/base.service.js.map +1 -0
- package/dist/base/services/index.d.ts +2 -0
- package/dist/base/services/index.d.ts.map +1 -0
- package/dist/base/services/index.js +18 -0
- package/dist/base/services/index.js.map +1 -0
- package/dist/boot/base/base-artifact-booter.d.ts +9 -0
- package/dist/boot/base/base-artifact-booter.d.ts.map +1 -0
- package/dist/boot/base/base-artifact-booter.js +11 -0
- package/dist/boot/base/base-artifact-booter.js.map +1 -0
- package/dist/boot/boot.mixin.d.ts +7 -0
- package/dist/boot/boot.mixin.d.ts.map +1 -0
- package/dist/boot/boot.mixin.js +14 -0
- package/dist/boot/boot.mixin.js.map +1 -0
- package/dist/boot/booters/controller.booter.d.ts +8 -0
- package/dist/boot/booters/controller.booter.d.ts.map +1 -0
- package/dist/boot/booters/controller.booter.js +15 -0
- package/dist/boot/booters/controller.booter.js.map +1 -0
- package/dist/boot/booters/datasource.booter.d.ts +8 -0
- package/dist/boot/booters/datasource.booter.d.ts.map +1 -0
- package/dist/boot/booters/datasource.booter.js +15 -0
- package/dist/boot/booters/datasource.booter.js.map +1 -0
- package/dist/boot/booters/index.d.ts +5 -0
- package/dist/boot/booters/index.d.ts.map +1 -0
- package/dist/boot/booters/index.js +21 -0
- package/dist/boot/booters/index.js.map +1 -0
- package/dist/boot/booters/repository.booter.d.ts +8 -0
- package/dist/boot/booters/repository.booter.d.ts.map +1 -0
- package/dist/boot/booters/repository.booter.js +15 -0
- package/dist/boot/booters/repository.booter.js.map +1 -0
- package/dist/boot/booters/service.booter.d.ts +8 -0
- package/dist/boot/booters/service.booter.d.ts.map +1 -0
- package/dist/boot/booters/service.booter.js +15 -0
- package/dist/boot/booters/service.booter.js.map +1 -0
- package/dist/boot/boots-trapper.d.ts +3 -0
- package/dist/boot/boots-trapper.d.ts.map +1 -0
- package/dist/boot/boots-trapper.js +9 -0
- package/dist/boot/boots-trapper.js.map +1 -0
- package/dist/boot/index.d.ts +5 -0
- package/dist/boot/index.d.ts.map +1 -0
- package/dist/boot/index.js +21 -0
- package/dist/boot/index.js.map +1 -0
- package/dist/common/bindings.d.ts +17 -0
- package/dist/common/bindings.d.ts.map +1 -0
- package/dist/common/bindings.js +22 -0
- package/dist/common/bindings.js.map +1 -0
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/types.d.ts +10 -13
- package/dist/common/types.d.ts.map +1 -1
- package/dist/components/auth/authenticate/common/constants.d.ts +12 -0
- package/dist/components/auth/authenticate/common/constants.d.ts.map +1 -0
- package/dist/components/auth/authenticate/common/constants.js +17 -0
- package/dist/components/auth/authenticate/common/constants.js.map +1 -0
- package/dist/components/auth/authenticate/component.d.ts +3 -0
- package/dist/components/auth/authenticate/component.d.ts.map +1 -0
- package/dist/components/auth/authenticate/component.js +7 -0
- package/dist/components/auth/authenticate/component.js.map +1 -0
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.d.ts +3 -0
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.d.ts.map +1 -0
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.js +8 -0
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/base.strategy.d.ts +10 -0
- package/dist/components/auth/authenticate/strategies/base.strategy.d.ts.map +1 -0
- package/dist/{base/migration/migration.interface.js → components/auth/authenticate/strategies/base.strategy.js} +1 -1
- package/dist/components/auth/authenticate/strategies/base.strategy.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.d.ts +7 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.js +14 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/jwt.strategy.d.ts +7 -0
- package/dist/components/auth/authenticate/strategies/jwt.strategy.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/jwt.strategy.js +14 -0
- package/dist/components/auth/authenticate/strategies/jwt.strategy.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/strategy-registry.d.ts +8 -0
- package/dist/components/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/strategy-registry.js +17 -0
- package/dist/components/auth/authenticate/strategies/strategy-registry.js.map +1 -0
- package/dist/components/auth/authorize/adapters/drizzle-casbin.d.ts +7 -0
- package/dist/components/auth/authorize/adapters/drizzle-casbin.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/drizzle-casbin.js +11 -0
- package/dist/components/auth/authorize/adapters/drizzle-casbin.js.map +1 -0
- package/dist/components/auth/authorize/component.d.ts +8 -0
- package/dist/components/auth/authorize/component.d.ts.map +1 -0
- package/dist/components/auth/authorize/component.js +13 -0
- package/dist/components/auth/authorize/component.js.map +1 -0
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts +8 -0
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -0
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +22 -0
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -0
- package/dist/components/auth/authorize/index.d.ts +5 -0
- package/dist/components/auth/authorize/index.d.ts.map +1 -0
- package/dist/components/auth/authorize/index.js +21 -0
- package/dist/components/auth/authorize/index.js.map +1 -0
- package/dist/components/auth/authorize/middlewares/authorize.middleware.d.ts +3 -0
- package/dist/components/auth/authorize/middlewares/authorize.middleware.d.ts.map +1 -0
- package/dist/components/auth/authorize/middlewares/authorize.middleware.js +8 -0
- package/dist/components/auth/authorize/middlewares/authorize.middleware.js.map +1 -0
- package/dist/components/auth/index.d.ts +9 -0
- package/dist/components/auth/index.d.ts.map +1 -0
- package/dist/{helpers/logger/http → components/auth}/index.js +8 -5
- package/dist/components/auth/index.js.map +1 -0
- package/dist/components/grpc/base/abstract.d.ts +10 -0
- package/dist/components/grpc/base/abstract.d.ts.map +1 -0
- package/dist/components/grpc/base/abstract.js +11 -0
- package/dist/components/grpc/base/abstract.js.map +1 -0
- package/dist/components/grpc/component.d.ts +3 -0
- package/dist/components/grpc/component.d.ts.map +1 -0
- package/dist/components/grpc/component.js +7 -0
- package/dist/components/grpc/component.js.map +1 -0
- package/dist/components/grpc/decorators.d.ts +4 -0
- package/dist/components/grpc/decorators.d.ts.map +1 -0
- package/dist/components/grpc/decorators.js +9 -0
- package/dist/components/grpc/decorators.js.map +1 -0
- package/dist/components/grpc/index.d.ts +4 -0
- package/dist/components/grpc/index.d.ts.map +1 -0
- package/dist/components/grpc/index.js +20 -0
- package/dist/components/grpc/index.js.map +1 -0
- package/dist/components/health-check/index.d.ts +9 -0
- package/dist/components/health-check/index.d.ts.map +1 -0
- package/dist/components/health-check/index.js +8 -0
- package/dist/components/health-check/index.js.map +1 -0
- package/dist/components/socket-io/component.d.ts +7 -0
- package/dist/components/socket-io/component.d.ts.map +1 -0
- package/dist/components/socket-io/component.js +12 -0
- package/dist/components/socket-io/component.js.map +1 -0
- package/dist/components/socket-io/helpers/server.helper.d.ts +33 -0
- package/dist/components/socket-io/helpers/server.helper.d.ts.map +1 -0
- package/dist/components/socket-io/helpers/server.helper.js +22 -0
- package/dist/components/socket-io/helpers/server.helper.js.map +1 -0
- package/dist/components/socket-io/index.d.ts +3 -0
- package/dist/components/socket-io/index.d.ts.map +1 -0
- package/dist/components/socket-io/index.js +19 -0
- package/dist/components/socket-io/index.js.map +1 -0
- package/dist/components/swagger/index.d.ts +26 -0
- package/dist/components/swagger/index.d.ts.map +1 -0
- package/dist/components/swagger/index.js +8 -0
- package/dist/components/swagger/index.js.map +1 -0
- package/dist/datasources/postgres/datasource.d.ts +7 -3
- package/dist/datasources/postgres/datasource.d.ts.map +1 -1
- package/dist/datasources/postgres/datasource.js +27 -18
- package/dist/datasources/postgres/datasource.js.map +1 -1
- package/dist/datasources/postgres/types.d.ts +1 -1
- package/dist/datasources/postgres/types.d.ts.map +1 -1
- package/dist/datasources/redis/connector.d.ts +2 -2
- package/dist/datasources/redis/connector.d.ts.map +1 -1
- package/dist/datasources/redis/connector.js +20 -14
- package/dist/datasources/redis/connector.js.map +1 -1
- package/dist/datasources/redis/datasource.d.ts +4 -2
- package/dist/datasources/redis/datasource.d.ts.map +1 -1
- package/dist/datasources/redis/datasource.js +6 -2
- package/dist/datasources/redis/datasource.js.map +1 -1
- package/dist/datasources/redis/index.d.ts +1 -1
- package/dist/datasources/redis/index.d.ts.map +1 -1
- package/dist/datasources/redis/index.js +1 -1
- package/dist/datasources/redis/index.js.map +1 -1
- package/dist/datasources/redis/types.d.ts +2 -2
- package/dist/datasources/redis/types.d.ts.map +1 -1
- package/dist/helpers/index.d.ts +0 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +0 -1
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/logger/config.d.ts +28 -11
- package/dist/helpers/logger/config.d.ts.map +1 -1
- package/dist/helpers/logger/config.js +140 -28
- package/dist/helpers/logger/config.js.map +1 -1
- package/dist/helpers/logger/factory.d.ts +14 -7
- package/dist/helpers/logger/factory.d.ts.map +1 -1
- package/dist/helpers/logger/factory.js +36 -16
- package/dist/helpers/logger/factory.js.map +1 -1
- package/dist/helpers/logger/http.d.ts +38 -0
- package/dist/helpers/logger/http.d.ts.map +1 -0
- package/dist/helpers/logger/http.js +217 -0
- package/dist/helpers/logger/http.js.map +1 -0
- package/dist/helpers/logger/index.d.ts +3 -5
- package/dist/helpers/logger/index.d.ts.map +1 -1
- package/dist/helpers/logger/index.js +3 -5
- package/dist/helpers/logger/index.js.map +1 -1
- package/dist/helpers/logger/logger.d.ts +28 -0
- package/dist/helpers/logger/logger.d.ts.map +1 -0
- package/dist/helpers/logger/logger.js +84 -0
- package/dist/helpers/logger/logger.js.map +1 -0
- package/dist/helpers/logger/{transports/dgram.transport.d.ts → transport.d.ts} +3 -3
- package/dist/helpers/logger/transport.d.ts.map +1 -0
- package/dist/helpers/logger/{transports/dgram.transport.js → transport.js} +20 -21
- package/dist/helpers/logger/transport.js.map +1 -0
- package/dist/helpers/logger/{http/types.d.ts → types.d.ts} +32 -21
- package/dist/helpers/logger/types.d.ts.map +1 -0
- package/dist/helpers/logger/{common/types.js → types.js} +4 -10
- package/dist/helpers/logger/types.js.map +1 -0
- package/dist/helpers/redis/default.helper.d.ts +1 -1
- package/dist/helpers/redis/default.helper.d.ts.map +1 -1
- package/dist/helpers/redis/default.helper.js +4 -5
- package/dist/helpers/redis/default.helper.js.map +1 -1
- package/dist/helpers/redis/index.d.ts +1 -1
- package/dist/helpers/redis/index.d.ts.map +1 -1
- package/dist/helpers/redis/index.js +1 -1
- package/dist/helpers/redis/index.js.map +1 -1
- package/dist/helpers/redis/redis-cluster.helper.d.ts +1 -1
- package/dist/helpers/redis/redis-cluster.helper.d.ts.map +1 -1
- package/dist/helpers/redis/redis.helper.d.ts +1 -1
- package/dist/helpers/redis/redis.helper.d.ts.map +1 -1
- package/dist/helpers/redis/types.d.ts +1 -1
- package/dist/helpers/redis/types.d.ts.map +1 -1
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/utilities/axios.utility.d.ts +1 -0
- package/dist/utilities/axios.utility.d.ts.map +1 -1
- package/dist/utilities/index.d.ts +6 -3
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +33 -3
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/lodash.utility.d.ts +34 -1
- package/dist/utilities/lodash.utility.d.ts.map +1 -1
- package/dist/utilities/lodash.utility.js +69 -3
- package/dist/utilities/lodash.utility.js.map +1 -1
- package/dist/utilities/migration.utility.js +2 -2
- package/dist/utilities/migration.utility.js.map +1 -1
- package/dist/utilities/model.utility.d.ts +1 -1
- package/dist/utilities/model.utility.d.ts.map +1 -1
- package/dist/utilities/model.utility.js.map +1 -1
- package/dist/utilities/parse.utility.d.ts.map +1 -1
- package/dist/utilities/parse.utility.js +3 -7
- package/dist/utilities/parse.utility.js.map +1 -1
- package/dist/utilities/query.utility.d.ts +4 -5
- package/dist/utilities/query.utility.d.ts.map +1 -1
- package/dist/utilities/query.utility.js +11 -15
- package/dist/utilities/query.utility.js.map +1 -1
- package/dist/utilities/request.utility.d.ts +2 -2
- package/dist/utilities/request.utility.d.ts.map +1 -1
- package/dist/utilities/request.utility.js.map +1 -1
- package/package.json +47 -7
- package/dist/base/migration/index.d.ts +0 -3
- package/dist/base/migration/index.d.ts.map +0 -1
- package/dist/base/migration/index.js.map +0 -1
- package/dist/base/migration/migration.interface.d.ts +0 -5
- package/dist/base/migration/migration.interface.d.ts.map +0 -1
- package/dist/base/migration/migration.interface.js.map +0 -1
- package/dist/base/migration/migration.service.d.ts +0 -9
- package/dist/base/migration/migration.service.d.ts.map +0 -1
- package/dist/base/migration/migration.service.js +0 -146
- package/dist/base/migration/migration.service.js.map +0 -1
- package/dist/base/models/migration.model.d.ts +0 -11
- package/dist/base/models/migration.model.d.ts.map +0 -1
- package/dist/base/models/migration.model.js +0 -38
- package/dist/base/models/migration.model.js.map +0 -1
- package/dist/base/repository/migration.repository.d.ts +0 -6
- package/dist/base/repository/migration.repository.d.ts.map +0 -1
- package/dist/base/repository/migration.repository.js +0 -29
- package/dist/base/repository/migration.repository.js.map +0 -1
- package/dist/helpers/logger/application-logger.d.ts +0 -19
- package/dist/helpers/logger/application-logger.d.ts.map +0 -1
- package/dist/helpers/logger/application-logger.js +0 -69
- package/dist/helpers/logger/application-logger.js.map +0 -1
- package/dist/helpers/logger/common/index.d.ts +0 -2
- package/dist/helpers/logger/common/index.d.ts.map +0 -1
- package/dist/helpers/logger/common/index.js.map +0 -1
- package/dist/helpers/logger/common/types.d.ts +0 -24
- package/dist/helpers/logger/common/types.d.ts.map +0 -1
- package/dist/helpers/logger/common/types.js.map +0 -1
- package/dist/helpers/logger/config-merger.d.ts +0 -27
- package/dist/helpers/logger/config-merger.d.ts.map +0 -1
- package/dist/helpers/logger/config-merger.js +0 -55
- package/dist/helpers/logger/config-merger.js.map +0 -1
- package/dist/helpers/logger/default-logger.d.ts +0 -34
- package/dist/helpers/logger/default-logger.d.ts.map +0 -1
- package/dist/helpers/logger/default-logger.js +0 -120
- package/dist/helpers/logger/default-logger.js.map +0 -1
- package/dist/helpers/logger/enhanced-factory.d.ts +0 -14
- package/dist/helpers/logger/enhanced-factory.d.ts.map +0 -1
- package/dist/helpers/logger/enhanced-factory.js +0 -43
- package/dist/helpers/logger/enhanced-factory.js.map +0 -1
- package/dist/helpers/logger/http/access-logger.d.ts +0 -44
- package/dist/helpers/logger/http/access-logger.d.ts.map +0 -1
- package/dist/helpers/logger/http/access-logger.js +0 -298
- package/dist/helpers/logger/http/access-logger.js.map +0 -1
- package/dist/helpers/logger/http/client-ip.d.ts +0 -8
- package/dist/helpers/logger/http/client-ip.d.ts.map +0 -1
- package/dist/helpers/logger/http/client-ip.js +0 -55
- package/dist/helpers/logger/http/client-ip.js.map +0 -1
- package/dist/helpers/logger/http/index.d.ts +0 -6
- package/dist/helpers/logger/http/index.d.ts.map +0 -1
- package/dist/helpers/logger/http/index.js.map +0 -1
- package/dist/helpers/logger/http/request-context.d.ts +0 -19
- package/dist/helpers/logger/http/request-context.d.ts.map +0 -1
- package/dist/helpers/logger/http/request-context.js +0 -55
- package/dist/helpers/logger/http/request-context.js.map +0 -1
- package/dist/helpers/logger/http/request-id-manager.d.ts +0 -22
- package/dist/helpers/logger/http/request-id-manager.d.ts.map +0 -1
- package/dist/helpers/logger/http/request-id-manager.js +0 -52
- package/dist/helpers/logger/http/request-id-manager.js.map +0 -1
- package/dist/helpers/logger/http/types.d.ts.map +0 -1
- package/dist/helpers/logger/http/types.js.map +0 -1
- package/dist/helpers/logger/transports/dgram.transport.d.ts.map +0 -1
- package/dist/helpers/logger/transports/dgram.transport.js.map +0 -1
- package/dist/helpers/logger/transports/index.d.ts +0 -2
- package/dist/helpers/logger/transports/index.d.ts.map +0 -1
- package/dist/helpers/logger/transports/index.js.map +0 -1
- package/dist/helpers/migrate/index.d.ts +0 -4
- package/dist/helpers/migrate/index.d.ts.map +0 -1
- package/dist/helpers/migrate/index.js.map +0 -1
- package/dist/helpers/migrate/migrate-helper.d.ts +0 -10
- package/dist/helpers/migrate/migrate-helper.d.ts.map +0 -1
- package/dist/helpers/migrate/migrate-helper.js +0 -40
- package/dist/helpers/migrate/migrate-helper.js.map +0 -1
- package/dist/helpers/migrate/migration-engine.d.ts +0 -8
- package/dist/helpers/migrate/migration-engine.d.ts.map +0 -1
- package/dist/helpers/migrate/migration-engine.js +0 -40
- package/dist/helpers/migrate/migration-engine.js.map +0 -1
- package/dist/helpers/migrate/type.d.ts +0 -10
- package/dist/helpers/migrate/type.d.ts.map +0 -1
- package/dist/helpers/migrate/type.js.map +0 -1
- package/dist/validators/base.schema.d.ts +0 -56
- package/dist/validators/base.schema.d.ts.map +0 -1
- package/dist/validators/base.schema.js +0 -84
- package/dist/validators/base.schema.js.map +0 -1
- package/dist/validators/common.schema.d.ts +0 -50
- package/dist/validators/common.schema.d.ts.map +0 -1
- package/dist/validators/common.schema.js +0 -51
- package/dist/validators/common.schema.js.map +0 -1
- package/dist/validators/index.d.ts +0 -15
- package/dist/validators/index.d.ts.map +0 -1
- package/dist/validators/index.js +0 -36
- package/dist/validators/index.js.map +0 -1
- package/dist/validators/with-zod.d.ts +0 -66
- package/dist/validators/with-zod.d.ts.map +0 -1
- package/dist/validators/with-zod.js +0 -117
- package/dist/validators/with-zod.js.map +0 -1
- /package/dist/{helpers/logger → base}/http/types.js +0 -0
package/README.md
CHANGED
|
@@ -1,211 +1,340 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @gennext/lb-infra
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Hệ thống thư viện hạ tầng (infrastructure) backend dựa trên TypeScript, tối ưu cho hiệu năng và tính chuẩn hóa.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 1. Giới thiệu
|
|
6
|
+
`@gennext/lb-infra` là nền tảng xây dựng backend hiện đại tại Gennex, kết hợp các công nghệ:
|
|
7
|
+
- **Hono**: Web framework siêu nhẹ, hỗ trợ TypeScript và OpenAPI native.
|
|
8
|
+
- **Drizzle ORM**: ORM thế hệ mới, type-safe tuyệt đối cho PostgreSQL.
|
|
9
|
+
- **Zod**: Thư viện validation và định nghĩa schema mạnh mẽ.
|
|
10
|
+
- **Winston**: Hệ thống logging đa kênh (Console, File, UDP).
|
|
11
|
+
|
|
12
|
+
**Khi nào nên dùng:** Phù hợp cho các dự án yêu cầu tốc độ phản hồi cao, cấu trúc mã nguồn tường minh (Controller-Service-Repository) và tự động hóa tài liệu API (Swagger/OpenAPI).
|
|
6
13
|
|
|
7
14
|
---
|
|
8
15
|
|
|
9
|
-
##
|
|
10
|
-
Hệ thống logger được thiết kế sẵn để ghi log ra console và tự động xoay vòng file log (Daily Rotate File).
|
|
16
|
+
## 2. Cài đặt
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
Cài đặt package chính:
|
|
19
|
+
```bash
|
|
20
|
+
bun add @gennext/lb-infra
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Các peer dependency cần thiết:
|
|
24
|
+
```bash
|
|
25
|
+
bun add hono @hono/zod-openapi zod drizzle-orm pg winston
|
|
26
|
+
# Nếu dùng Auth/Authorization
|
|
27
|
+
bun add jose casbin
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 3. Khởi tạo ứng dụng
|
|
33
|
+
Sử dụng `BaseApplication` kết hợp với `bootMixin` để tự động quét và đăng ký các thành phần.
|
|
14
34
|
|
|
15
35
|
```typescript
|
|
16
|
-
import {
|
|
36
|
+
import { BaseApplication, bootMixin, bootStrapApplication, IApplicationConfigs } from '@gennext/lb-infra';
|
|
37
|
+
|
|
38
|
+
class OrderApplication extends bootMixin(BaseApplication) {
|
|
39
|
+
getAppInfo() {
|
|
40
|
+
return {
|
|
41
|
+
name: 'Order Service',
|
|
42
|
+
version: '1.0.0',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
17
46
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
47
|
+
const configs: IApplicationConfigs = {
|
|
48
|
+
port: Number(process.env.PORT) || 3000,
|
|
49
|
+
path: { base: '/api' }
|
|
50
|
+
};
|
|
21
51
|
|
|
22
|
-
|
|
23
|
-
logger.info('User login successful', { userId: 123 });
|
|
24
|
-
logger.debug('Debugging details: %j', someObject);
|
|
25
|
-
logger.warn('Rate limit warning for IP: %s', ipAddress);
|
|
26
|
-
logger.error('Database connection failed | Error: %s', error.message);
|
|
52
|
+
bootStrapApplication(OrderApplication, configs);
|
|
27
53
|
```
|
|
28
54
|
|
|
29
55
|
---
|
|
30
56
|
|
|
31
|
-
##
|
|
32
|
-
|
|
57
|
+
## 4. Data layer
|
|
58
|
+
Sử dụng Drizzle để định nghĩa schema và các Repository để thao tác dữ liệu.
|
|
33
59
|
|
|
34
|
-
###
|
|
35
|
-
|
|
60
|
+
### Khai báo Drizzle Schema
|
|
61
|
+
Sử dụng các helper trong `column-defs.ts` để chuẩn hóa cấu trúc bảng.
|
|
36
62
|
|
|
37
63
|
```typescript
|
|
38
|
-
import {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}),
|
|
48
|
-
onConnected: () => console.log('Redis connected!'),
|
|
64
|
+
import { pgTable, text, integer } from 'drizzle-orm/pg-core';
|
|
65
|
+
import { generateIdColumnDefs, generateSoftDeleteColumnDefs, generateTzColumnDefs } from '@gennext/lb-infra';
|
|
66
|
+
|
|
67
|
+
export const orders = pgTable('orders', {
|
|
68
|
+
...generateIdColumnDefs({ id: { dataType: 'string' } }),
|
|
69
|
+
orderNumber: text('order_number').notNull(),
|
|
70
|
+
amount: integer('amount'),
|
|
71
|
+
...generateTzColumnDefs(),
|
|
72
|
+
...generateSoftDeleteColumnDefs(),
|
|
49
73
|
});
|
|
50
74
|
```
|
|
51
75
|
|
|
52
|
-
###
|
|
53
|
-
|
|
54
|
-
const redis = RedisManager.getInstance('default'); // Lấy instance tên 'default'
|
|
55
|
-
|
|
56
|
-
// 1. Thao tác chuỗi (String)
|
|
57
|
-
await redis.set({ key: 'user:1', value: { name: 'John' }, options: { log: true } });
|
|
58
|
-
const user = await redis.getObject({ key: 'user:1' });
|
|
59
|
-
|
|
60
|
-
// 2. Thao tác hàng loạt (MGET, MSET) cực nhanh (O(N))
|
|
61
|
-
await redis.mset({
|
|
62
|
-
payload: [
|
|
63
|
-
{ key: 'user:1', value: { name: 'A' } },
|
|
64
|
-
{ key: 'user:2', value: { name: 'B' } }
|
|
65
|
-
]
|
|
66
|
-
});
|
|
67
|
-
const users = await redis.getObjects({ keys: ['user:1', 'user:2'] });
|
|
76
|
+
### Repositories
|
|
77
|
+
Sử dụng `DefaultCrudRepository` hoặc `SoftDeletableRepository` để có sẵn các hàm CRUD.
|
|
68
78
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
payload: { action: 'RELOAD_CONFIG' },
|
|
73
|
-
useCompress: true // Tự động nén zlib để tối ưu băng thông
|
|
74
|
-
});
|
|
79
|
+
```typescript
|
|
80
|
+
import { SoftDeletableRepository } from '@gennext/lb-infra';
|
|
81
|
+
import { orders } from '../models/order.schema';
|
|
75
82
|
|
|
76
|
-
|
|
83
|
+
export class OrderRepository extends SoftDeletableRepository<typeof orders> {
|
|
84
|
+
constructor() {
|
|
85
|
+
super(orders);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
77
88
|
```
|
|
78
89
|
|
|
79
90
|
---
|
|
80
91
|
|
|
81
|
-
##
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### Cấu hình & Sử dụng
|
|
85
|
-
Trong file `migrate.ts` của project:
|
|
92
|
+
## 5. Service layer
|
|
93
|
+
Các service kế thừa `BaseService` và sử dụng `this.logger` (HFLogger pattern) để ghi log theo phương thức.
|
|
86
94
|
|
|
87
95
|
```typescript
|
|
88
|
-
import {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// Logic
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
fn: async (app) => {
|
|
101
|
-
// Logic migration chính
|
|
102
|
-
const repo = await app.getRepository(UserRepository);
|
|
103
|
-
await repo.create({ username: 'admin', role: 'ADMIN' });
|
|
96
|
+
import { BaseService } from '@gennext/lb-infra';
|
|
97
|
+
|
|
98
|
+
export class OrderService extends BaseService {
|
|
99
|
+
async processOrder(orderId: string) {
|
|
100
|
+
const logger = this.logger.for('processOrder');
|
|
101
|
+
logger.info('Starting process', { orderId });
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
// Logic xử lý đơn hàng...
|
|
105
|
+
} catch (error) {
|
|
106
|
+
logger.error('Failed to process', error);
|
|
107
|
+
throw error;
|
|
104
108
|
}
|
|
105
109
|
}
|
|
106
|
-
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
107
114
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
## 6. Controller & Routing
|
|
116
|
+
Controller quản lý các route và tích hợp Zod để tự động tạo tài liệu OpenAPI qua `defineRoute` hoặc `bindRoute`.
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import { BaseController, controller } from '@gennext/lb-infra';
|
|
120
|
+
import { z } from 'zod';
|
|
121
|
+
|
|
122
|
+
const OrderSchema = z.object({
|
|
123
|
+
id: z.string().uuid(),
|
|
124
|
+
amount: z.number().min(1)
|
|
112
125
|
});
|
|
126
|
+
|
|
127
|
+
@controller({ path: '/orders' })
|
|
128
|
+
export class OrderController extends BaseController {
|
|
129
|
+
async binding() {
|
|
130
|
+
this.bindRoute({
|
|
131
|
+
configs: {
|
|
132
|
+
path: '/',
|
|
133
|
+
method: 'post',
|
|
134
|
+
request: {
|
|
135
|
+
body: { content: { 'application/json': { schema: OrderSchema } } }
|
|
136
|
+
},
|
|
137
|
+
responses: {
|
|
138
|
+
200: {
|
|
139
|
+
description: 'Order created',
|
|
140
|
+
content: { 'application/json': { schema: OrderSchema } }
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}).to({
|
|
145
|
+
handler: async (c) => {
|
|
146
|
+
const body = await c.req.json();
|
|
147
|
+
return c.json(body);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
113
152
|
```
|
|
114
153
|
|
|
115
154
|
---
|
|
116
155
|
|
|
117
|
-
##
|
|
118
|
-
|
|
156
|
+
## 7. DataSources
|
|
157
|
+
Cấu hình kết nối cơ sở dữ liệu qua các class kế thừa.
|
|
119
158
|
|
|
120
|
-
### Sử dụng
|
|
121
159
|
```typescript
|
|
122
|
-
import {
|
|
123
|
-
import axios from 'axios';
|
|
160
|
+
import { PostgresDataSource, RedisDataSource } from '@gennext/lb-infra/datasources';
|
|
124
161
|
|
|
125
|
-
|
|
162
|
+
export class DbDataSource extends PostgresDataSource {
|
|
163
|
+
static dataSourceName = 'db';
|
|
164
|
+
}
|
|
126
165
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const response = await post(client, '/users', { name: 'John' });
|
|
130
|
-
console.log(response.data);
|
|
131
|
-
} catch (error) {
|
|
132
|
-
// error ở đây đã được trích xuất (error.response.data.error)
|
|
166
|
+
export class CacheDataSource extends RedisDataSource {
|
|
167
|
+
static dataSourceName = 'redis';
|
|
133
168
|
}
|
|
134
169
|
```
|
|
135
170
|
|
|
136
171
|
---
|
|
137
172
|
|
|
138
|
-
##
|
|
139
|
-
|
|
173
|
+
## 8. Logger helper
|
|
174
|
+
Hệ thống log mạnh mẽ hỗ trợ `RequestContext` để theo vết Request ID xuyên suốt các layer.
|
|
140
175
|
|
|
141
|
-
### 5.1. Xử lý Lỗi (`error.utility`)
|
|
142
|
-
Chuẩn hóa lỗi bắn ra cho client.
|
|
143
176
|
```typescript
|
|
144
|
-
import {
|
|
177
|
+
import { LoggerFactory, RequestContext } from '@gennext/lb-infra';
|
|
178
|
+
|
|
179
|
+
const logger = LoggerFactory.getLogger(['OrderModule']);
|
|
145
180
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
name: 'ValidationError'
|
|
181
|
+
// Sử dụng RequestContext để gắn ID tự động
|
|
182
|
+
RequestContext.run({ requestId: 'req-123' }, () => {
|
|
183
|
+
logger.info('User action log'); // Log sẽ có prefix [req-123]
|
|
150
184
|
});
|
|
151
185
|
```
|
|
152
186
|
|
|
153
|
-
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 9. Redis helper
|
|
190
|
+
Bộ công cụ hỗ trợ Redis String, Hash, JSON và Pub/Sub.
|
|
191
|
+
|
|
154
192
|
```typescript
|
|
155
|
-
import {
|
|
193
|
+
import { RedisHelper } from '@gennext/lb-infra/helpers/redis';
|
|
156
194
|
|
|
157
|
-
|
|
158
|
-
const signature = hash('my-text', { algorithm: 'SHA256', outputType: 'hex' });
|
|
195
|
+
const redis = new RedisHelper({ host: 'localhost', port: 6379 });
|
|
159
196
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
197
|
+
await redis.set({ key: 'config', value: { theme: 'dark' } });
|
|
198
|
+
|
|
199
|
+
// Thao tác với RedisJSON
|
|
200
|
+
await redis.jSet({
|
|
201
|
+
key: 'user:data',
|
|
202
|
+
path: '$',
|
|
203
|
+
value: { settings: { lang: 'vi' } }
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
const lang = await redis.jGet({ key: 'user:data', path: '$.settings.lang' });
|
|
163
207
|
```
|
|
164
208
|
|
|
165
|
-
|
|
166
|
-
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 10. Authentication
|
|
212
|
+
Tích hợp sẵn các chiến lược xác thực phổ biến.
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
import { AuthenticateComponent, JwtStrategy } from '@gennext/lb-infra';
|
|
216
|
+
|
|
217
|
+
// Trong BaseApplication
|
|
218
|
+
this.component(AuthenticateComponent);
|
|
219
|
+
this.bind('authentication.strategies.jwt').toClass(JwtStrategy);
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## 11. Authorization
|
|
225
|
+
Phân quyền dựa trên thuộc tính (RBAC/ABAC) sử dụng Casbin.
|
|
226
|
+
|
|
167
227
|
```typescript
|
|
168
|
-
import {
|
|
228
|
+
import { AuthorizeComponent, DrizzleCasbinAdapter } from '@gennext/lb-infra';
|
|
169
229
|
|
|
170
|
-
|
|
171
|
-
|
|
230
|
+
this.component(AuthorizeComponent);
|
|
231
|
+
// Dùng DrizzleCasbinAdapter để lưu policy vào PostgreSQL
|
|
172
232
|
```
|
|
173
233
|
|
|
174
|
-
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 12. Components tùy chọn
|
|
237
|
+
|
|
238
|
+
### gRPC
|
|
175
239
|
```typescript
|
|
176
|
-
import {
|
|
240
|
+
import { BaseGrpcController } from '@gennext/lb-infra/components/grpc';
|
|
177
241
|
|
|
178
|
-
|
|
242
|
+
export class UserGrpcController extends BaseGrpcController {
|
|
243
|
+
// Implement gRPC methods defined in proto
|
|
244
|
+
}
|
|
179
245
|
```
|
|
180
246
|
|
|
247
|
+
### Socket.IO
|
|
248
|
+
Sử dụng `SocketIOServerHelper` để quản lý kết nối thời gian thực.
|
|
249
|
+
|
|
250
|
+
### Health Check
|
|
251
|
+
Tích hợp sẵn endpoint `/health` để monitor trạng thái hệ thống.
|
|
252
|
+
|
|
181
253
|
---
|
|
182
254
|
|
|
183
|
-
##
|
|
184
|
-
|
|
255
|
+
## 13. Utilities
|
|
256
|
+
Các hàm tiện ích tối ưu trong `src/utilities`:
|
|
257
|
+
|
|
258
|
+
- `getError(opts)`: Tạo error object chuẩn kèm `statusCode`.
|
|
259
|
+
- `hash(text, opts)`: Hỗ trợ MD5, SHA256...
|
|
260
|
+
- `safeParseJson(str)`: Parse JSON không lo crash.
|
|
261
|
+
- `executePromiseWithLimit({ tasks, limit })`: Chạy batch tasks có giới hạn số lượng chạy song song.
|
|
262
|
+
- `getDateTz()`: Lấy thời gian hiện tại theo múi giờ cấu hình.
|
|
263
|
+
- `buildBatchUpdateQuery(table, data)`: Helper tạo câu lệnh cập nhật hàng loạt cho Drizzle.
|
|
264
|
+
|
|
265
|
+
---
|
|
185
266
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
267
|
+
## 14. Base classes
|
|
268
|
+
|
|
269
|
+
| Class | Thuộc tính/Phương thức có sẵn |
|
|
270
|
+
| :--- | :--- |
|
|
271
|
+
| `BaseHelper` | `this.logger` |
|
|
272
|
+
| `BaseService` | `this.logger` (HFLogger), `this.get(key)` (DI) |
|
|
273
|
+
| `BaseController` | `this.logger`, `this.bindRoute()`, `this.defineRoute()` |
|
|
274
|
+
| `BaseDataSource` | `this.name`, `this.connector` |
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 15. Biến môi trường
|
|
279
|
+
|
|
280
|
+
| Tên biến | Mô tả | Giá trị mặc định |
|
|
281
|
+
| :--- | :--- | :--- |
|
|
282
|
+
| `APP_ENV_APPLICATION_NAME` | Tên ứng dụng xuất hiện trong log | `APP` |
|
|
283
|
+
| `APP_ENV_POSTGRES_HOST` | Địa chỉ PostgreSQL | `localhost` |
|
|
284
|
+
| `APP_ENV_POSTGRES_PORT` | Cổng PostgreSQL | `5432` |
|
|
285
|
+
| `APP_ENV_POSTGRES_USERNAME` | Username DB | `postgres` |
|
|
286
|
+
| `APP_ENV_POSTGRES_PASSWORD` | Password DB | `password` |
|
|
287
|
+
| `APP_ENV_POSTGRES_DATABASE` | Tên Database | `postgres` |
|
|
288
|
+
| `APP_ENV_REDIS_DATASOURCE_HOST` | Địa chỉ Redis | `0.0.0.0` |
|
|
289
|
+
| `APP_ENV_REDIS_DATASOURCE_PORT` | Cổng Redis | `6379` |
|
|
290
|
+
| `APP_ENV_LOGGER_FOLDER_PATH` | Đường dẫn lưu file log | `./logs` |
|
|
291
|
+
| `DEBUG` | Kích hoạt log debug | `false` |
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## 16. Ví dụ end-to-end: Order Service
|
|
189
296
|
|
|
190
297
|
```typescript
|
|
191
|
-
|
|
298
|
+
// --- 1. Model (order.schema.ts) ---
|
|
299
|
+
export const orders = pgTable('orders', {
|
|
300
|
+
...generateIdColumnDefs({ id: { dataType: 'string' } }),
|
|
301
|
+
item: text('item').notNull(),
|
|
302
|
+
...generateTzColumnDefs()
|
|
303
|
+
});
|
|
192
304
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
305
|
+
// --- 2. Repository (order.repository.ts) ---
|
|
306
|
+
export class OrderRepository extends DefaultCrudRepository<typeof orders> {
|
|
307
|
+
constructor() { super(orders); }
|
|
308
|
+
}
|
|
197
309
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
310
|
+
// --- 3. Service (order.service.ts) ---
|
|
311
|
+
export class OrderService extends BaseService {
|
|
312
|
+
async create(item: string) {
|
|
313
|
+
const repo = this.get<OrderRepository>('repositories.OrderRepository');
|
|
314
|
+
return repo.create({ item });
|
|
201
315
|
}
|
|
202
316
|
}
|
|
203
|
-
```
|
|
204
317
|
|
|
205
|
-
---
|
|
318
|
+
// --- 4. Controller (order.controller.ts) ---
|
|
319
|
+
@controller({ path: '/orders' })
|
|
320
|
+
export class OrderController extends BaseController {
|
|
321
|
+
async binding() {
|
|
322
|
+
this.bindRoute({
|
|
323
|
+
path: '/', method: 'post',
|
|
324
|
+
responses: { 200: { description: 'Success' } }
|
|
325
|
+
}).to({
|
|
326
|
+
handler: async (c) => {
|
|
327
|
+
const service = this.get<OrderService>('services.OrderService');
|
|
328
|
+
return c.json(await service.create('Product A'));
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
206
333
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
334
|
+
// --- 5. Application (main.ts) ---
|
|
335
|
+
class OrderApp extends bootMixin(BaseApplication) {
|
|
336
|
+
getAppInfo() { return { name: 'OrderAPI', version: '1.0' }; }
|
|
337
|
+
}
|
|
210
338
|
|
|
211
|
-
|
|
339
|
+
bootStrapApplication(OrderApp, { port: 8080 });
|
|
340
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { OpenAPIHono } from '@hono/zod-openapi';
|
|
2
|
+
import type { Logger } from '../../helpers';
|
|
3
|
+
import type { ValueOrPromise } from '../../common';
|
|
4
|
+
import type { ClassType } from '../../common/types';
|
|
5
|
+
export interface IApplicationConfigs {
|
|
6
|
+
host?: string;
|
|
7
|
+
port: number;
|
|
8
|
+
path?: {
|
|
9
|
+
base: string;
|
|
10
|
+
isStrict?: boolean;
|
|
11
|
+
};
|
|
12
|
+
debug?: {
|
|
13
|
+
shouldShowRoutes?: boolean;
|
|
14
|
+
};
|
|
15
|
+
error?: {
|
|
16
|
+
rootKey?: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface IApplicationInfo {
|
|
20
|
+
name: string;
|
|
21
|
+
version: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface IMiddlewareConfigs {
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
}
|
|
27
|
+
export declare abstract class BaseApplication {
|
|
28
|
+
protected logger: Logger;
|
|
29
|
+
protected server: OpenAPIHono;
|
|
30
|
+
protected bindings: Map<string, any>;
|
|
31
|
+
protected configs: IApplicationConfigs;
|
|
32
|
+
constructor(configs: IApplicationConfigs);
|
|
33
|
+
abstract getAppInfo(): ValueOrPromise<IApplicationInfo>;
|
|
34
|
+
staticConfigure(): void;
|
|
35
|
+
preConfigure(): ValueOrPromise<void>;
|
|
36
|
+
setupMiddlewares(): Promise<void>;
|
|
37
|
+
postConfigure(): ValueOrPromise<void>;
|
|
38
|
+
controller(_ControllerClass: new (...args: any[]) => any): void;
|
|
39
|
+
repository(_RepositoryClass: new (...args: any[]) => any): void;
|
|
40
|
+
dataSource(_DataSourceClass: new (...args: any[]) => any): void;
|
|
41
|
+
service(_ServiceClass: new (...args: any[]) => any): void;
|
|
42
|
+
component(_ComponentClass: new (...args: any[]) => any): void;
|
|
43
|
+
bind<T>(opts: {
|
|
44
|
+
key: string;
|
|
45
|
+
}): {
|
|
46
|
+
toValue: (v: T) => void;
|
|
47
|
+
toClass: (c: ClassType<T>) => void;
|
|
48
|
+
};
|
|
49
|
+
get<T>(opts: {
|
|
50
|
+
key: string;
|
|
51
|
+
isOptional?: boolean;
|
|
52
|
+
}): T;
|
|
53
|
+
getServer(): OpenAPIHono;
|
|
54
|
+
start(): Promise<void>;
|
|
55
|
+
stop(): Promise<void>;
|
|
56
|
+
static(_opts: {
|
|
57
|
+
folderPath: string;
|
|
58
|
+
mountPath?: string;
|
|
59
|
+
}): void;
|
|
60
|
+
protected applyMiddlewares(_configs: IMiddlewareConfigs): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=base.application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.application.d.ts","sourceRoot":"","sources":["../../../src/base/applications/base.application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,KAAK,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,eAAe;IACnC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE3B,OAAO,EAAE,mBAAmB;IAQxC,QAAQ,CAAC,UAAU,IAAI,cAAc,CAAC,gBAAgB,CAAC;IAEvD,eAAe,IAAI,IAAI;IACvB,YAAY,IAAI,cAAc,CAAC,IAAI,CAAC;IAC9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IACvC,aAAa,IAAI,cAAc,CAAC,IAAI,CAAC;IAErC,UAAU,CAAC,gBAAgB,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IAC/D,UAAU,CAAC,gBAAgB,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IAC/D,UAAU,CAAC,gBAAgB,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IAC/D,OAAO,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IACzD,SAAS,CAAC,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI;IAE7D,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;qBAEZ,CAAC;qBAGD,SAAS,CAAC,CAAC,CAAC;;IAM7B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,CAAC;IAOtD,SAAS,IAAI,WAAW;IAIlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,MAAM,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;cAE/C,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC9E"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseApplication = void 0;
|
|
4
|
+
const helpers_1 = require("../../helpers");
|
|
5
|
+
class BaseApplication {
|
|
6
|
+
constructor(configs) {
|
|
7
|
+
this.configs = configs;
|
|
8
|
+
this.logger = helpers_1.LoggerFactory.getLogger(['Application']);
|
|
9
|
+
this.bindings = new Map();
|
|
10
|
+
const { OpenAPIHono } = require('@hono/zod-openapi');
|
|
11
|
+
this.server = new OpenAPIHono();
|
|
12
|
+
}
|
|
13
|
+
staticConfigure() { }
|
|
14
|
+
preConfigure() { }
|
|
15
|
+
async setupMiddlewares() { }
|
|
16
|
+
postConfigure() { }
|
|
17
|
+
controller(_ControllerClass) { }
|
|
18
|
+
repository(_RepositoryClass) { }
|
|
19
|
+
dataSource(_DataSourceClass) { }
|
|
20
|
+
service(_ServiceClass) { }
|
|
21
|
+
component(_ComponentClass) { }
|
|
22
|
+
bind(opts) {
|
|
23
|
+
return {
|
|
24
|
+
toValue: (v) => {
|
|
25
|
+
this.bindings.set(opts.key, v);
|
|
26
|
+
},
|
|
27
|
+
toClass: (c) => {
|
|
28
|
+
this.bindings.set(opts.key, new c());
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
get(opts) {
|
|
33
|
+
if (!this.bindings.has(opts.key) && !opts.isOptional) {
|
|
34
|
+
throw new Error(`Binding not found: ${opts.key}`);
|
|
35
|
+
}
|
|
36
|
+
return this.bindings.get(opts.key);
|
|
37
|
+
}
|
|
38
|
+
getServer() {
|
|
39
|
+
return this.server;
|
|
40
|
+
}
|
|
41
|
+
async start() {
|
|
42
|
+
await this.preConfigure();
|
|
43
|
+
await this.setupMiddlewares();
|
|
44
|
+
if (typeof this.boot === 'function') {
|
|
45
|
+
await this.boot();
|
|
46
|
+
}
|
|
47
|
+
await this.postConfigure();
|
|
48
|
+
}
|
|
49
|
+
async stop() { }
|
|
50
|
+
static(_opts) { }
|
|
51
|
+
async applyMiddlewares(_configs) { }
|
|
52
|
+
}
|
|
53
|
+
exports.BaseApplication = BaseApplication;
|
|
54
|
+
//# sourceMappingURL=base.application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.application.js","sourceRoot":"","sources":["../../../src/base/applications/base.application.ts"],"names":[],"mappings":";;;AAEA,2CAA8C;AAsB9C,MAAsB,eAAe;IAMnC,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,CAAC;IAID,eAAe,KAAU,CAAC;IAC1B,YAAY,KAA0B,CAAC;IACvC,KAAK,CAAC,gBAAgB,KAAmB,CAAC;IAC1C,aAAa,KAA0B,CAAC;IAExC,UAAU,CAAC,gBAA6C,IAAS,CAAC;IAClE,UAAU,CAAC,gBAA6C,IAAS,CAAC;IAClE,UAAU,CAAC,gBAA6C,IAAS,CAAC;IAClE,OAAO,CAAC,aAA0C,IAAS,CAAC;IAC5D,SAAS,CAAC,eAA4C,IAAS,CAAC;IAEhE,IAAI,CAAI,IAAqB;QAC3B,OAAO;YACL,OAAO,EAAE,CAAC,CAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,EAAE,CAAC,CAAe,EAAE,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,GAAG,CAAI,IAA2C;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAM,CAAC;IAC1C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,OAAQ,IAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7C,MAAO,IAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,KAAmB,CAAC;IAE9B,MAAM,CAAC,KAAiD,IAAS,CAAC;IAExD,KAAK,CAAC,gBAAgB,CAAC,QAA4B,IAAkB,CAAC;CACjF;AA/DD,0CA+DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./migration.service"), exports);
|
|
17
|
+
__exportStar(require("./base.application"), exports);
|
|
19
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/applications/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ValueOrPromise } from '../../common';
|
|
2
|
+
import type { Logger } from '../../helpers';
|
|
3
|
+
import type { IRouteDefinition, IRouteHandler } from '../http';
|
|
4
|
+
export interface IControllerOptions {
|
|
5
|
+
scope?: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class BaseController {
|
|
9
|
+
protected logger: Logger;
|
|
10
|
+
protected definitions: Record<string, IRouteDefinition>;
|
|
11
|
+
constructor(opts: IControllerOptions);
|
|
12
|
+
abstract binding(): ValueOrPromise<void>;
|
|
13
|
+
protected defineRoute(_handler: IRouteHandler): void;
|
|
14
|
+
protected defineJSXRoute(_handler: IRouteHandler): void;
|
|
15
|
+
protected bindRoute(opts: {
|
|
16
|
+
configs: IRouteDefinition;
|
|
17
|
+
}): {
|
|
18
|
+
to: (h: {
|
|
19
|
+
handler: any;
|
|
20
|
+
}) => void;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=base.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.controller.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/base.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,8BAAsB,cAAc;IAClC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAE5C,IAAI,EAAE,kBAAkB;IAKpC,QAAQ,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC;IAExC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAEpD,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAEvD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,gBAAgB,CAAA;KAAE;gBAE3C;YAAE,OAAO,EAAE,GAAG,CAAA;SAAE;;CAQ7B"}
|