@forklaunch/core 0.2.3 → 0.2.6
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 +21 -0
- package/lib/dist/cache/index.d.ts +4 -0
- package/lib/dist/cache/index.d.ts.map +1 -0
- package/lib/dist/cache/interfaces/ttlCache.interface.d.ts +2 -0
- package/lib/dist/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
- package/lib/dist/cache/redisTtlCache.d.ts +353 -0
- package/lib/dist/cache/redisTtlCache.d.ts.map +1 -0
- package/{dist → lib/dist}/cache/redisTtlCache.js +1 -4
- package/lib/dist/cache/types/ttlCacheRecord.types.d.ts +2 -0
- package/lib/dist/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
- package/lib/dist/controllers/index.d.ts +2 -0
- package/lib/dist/controllers/index.d.ts.map +1 -0
- package/lib/dist/controllers/interfaces/controller.interface.d.ts +2 -0
- package/lib/dist/controllers/interfaces/controller.interface.d.ts.map +1 -0
- package/lib/dist/database/index.d.ts +2 -0
- package/lib/dist/database/index.d.ts.map +1 -0
- package/lib/dist/database/mikro/models/entities/base.entity.d.ts +26 -0
- package/lib/dist/database/mikro/models/entities/base.entity.d.ts.map +1 -0
- package/lib/dist/database/mikro/models/entities/base.entity.js +46 -0
- package/lib/dist/entityMapper/index.d.ts +3 -0
- package/lib/dist/entityMapper/index.d.ts.map +1 -0
- package/lib/dist/entityMapper/interfaces/entityMapper.interface.d.ts +2 -0
- package/lib/dist/entityMapper/interfaces/entityMapper.interface.d.ts.map +1 -0
- package/lib/dist/entityMapper/models/baseEntityMapper.model.d.ts +63 -0
- package/lib/dist/entityMapper/models/baseEntityMapper.model.d.ts.map +1 -0
- package/lib/dist/entityMapper/models/requestEntityMapper.model.d.ts +58 -0
- package/lib/dist/entityMapper/models/requestEntityMapper.model.d.ts.map +1 -0
- package/lib/dist/entityMapper/models/responseEntityMapper.model.d.ts +56 -0
- package/lib/dist/entityMapper/models/responseEntityMapper.model.d.ts.map +1 -0
- package/lib/dist/entityMapper/types/entityMapper.types.d.ts +2 -0
- package/lib/dist/entityMapper/types/entityMapper.types.d.ts.map +1 -0
- package/lib/dist/http/guards/isHttpContractDetails.d.ts +5 -0
- package/lib/dist/http/guards/isHttpContractDetails.d.ts.map +1 -0
- package/lib/dist/http/guards/isHttpContractDetails.js +6 -0
- package/lib/dist/http/guards/isResponseShape.d.ts +2 -0
- package/lib/dist/http/guards/isResponseShape.d.ts.map +1 -0
- package/lib/dist/http/guards/isResponseShape.js +7 -0
- package/lib/dist/http/index.d.ts +6 -0
- package/lib/dist/http/index.d.ts.map +1 -0
- package/{dist → lib/dist}/http/index.js +1 -2
- package/lib/dist/http/interfaces/expressLikeApplication.interface.d.ts +12 -0
- package/lib/dist/http/interfaces/expressLikeApplication.interface.d.ts.map +1 -0
- package/lib/dist/http/interfaces/expressLikeRouter.interface.d.ts +103 -0
- package/lib/dist/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
- package/lib/dist/http/interfaces/expressLikeRouter.interface.js +336 -0
- package/lib/dist/http/interfaces/index.d.ts +3 -0
- package/lib/dist/http/interfaces/index.d.ts.map +1 -0
- package/lib/dist/http/interfaces/index.js +2 -0
- package/lib/dist/http/middleware/index.d.ts +3 -0
- package/lib/dist/http/middleware/index.d.ts.map +1 -0
- package/lib/dist/http/middleware/request.middleware.d.ts +69 -0
- package/lib/dist/http/middleware/request.middleware.d.ts.map +1 -0
- package/{dist → lib/dist}/http/middleware/request.middleware.js +55 -117
- package/lib/dist/http/middleware/response.middleware.d.ts +27 -0
- package/lib/dist/http/middleware/response.middleware.d.ts.map +1 -0
- package/lib/dist/http/middleware/response.middleware.js +52 -0
- package/lib/dist/http/openApiV3Generator/index.d.ts +2 -0
- package/lib/dist/http/openApiV3Generator/index.d.ts.map +1 -0
- package/lib/dist/http/openApiV3Generator/index.js +1 -0
- package/lib/dist/http/openApiV3Generator/openApiV3Generator.d.ts +11 -0
- package/lib/dist/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
- package/{dist/http → lib/dist/http/openApiV3Generator}/openApiV3Generator.js +2 -24
- package/lib/dist/http/types/apiDefinition.types.d.ts +2 -0
- package/lib/dist/http/types/apiDefinition.types.d.ts.map +1 -0
- package/lib/dist/http/types/contractDetails.types.d.ts +2 -0
- package/lib/dist/http/types/contractDetails.types.d.ts.map +1 -0
- package/lib/dist/http/types/index.d.ts +4 -0
- package/lib/dist/http/types/index.d.ts.map +1 -0
- package/lib/dist/http/types/index.js +3 -0
- package/lib/dist/http/types/router.types.d.ts +2 -0
- package/lib/dist/http/types/router.types.d.ts.map +1 -0
- package/lib/dist/http/utils/enrichExpressLikeSend.d.ts +28 -0
- package/lib/dist/http/utils/enrichExpressLikeSend.d.ts.map +1 -0
- package/lib/dist/http/utils/enrichExpressLikeSend.js +50 -0
- package/lib/dist/http/utils/httpStatusCodes.d.ts +986 -0
- package/lib/dist/http/utils/httpStatusCodes.d.ts.map +1 -0
- package/lib/dist/http/utils/index.d.ts +3 -0
- package/lib/dist/http/utils/index.d.ts.map +1 -0
- package/lib/dist/http/utils/index.js +2 -0
- package/lib/dist/index.d.ts +7 -0
- package/lib/dist/index.d.ts.map +1 -0
- package/lib/dist/jest.config.d.ts +15 -0
- package/lib/dist/jest.config.d.ts.map +1 -0
- package/lib/dist/jest.config.js +21 -0
- package/lib/dist/lib/index.d.ts +7 -0
- package/lib/dist/lib/index.d.ts.map +1 -0
- package/lib/dist/lib/index.js +6 -0
- package/lib/dist/lib/jest.config.d.ts +15 -0
- package/lib/dist/lib/jest.config.d.ts.map +1 -0
- package/lib/dist/lib/jest.config.js +21 -0
- package/lib/dist/lib/src/cache/index.d.ts +4 -0
- package/lib/dist/lib/src/cache/index.d.ts.map +1 -0
- package/lib/dist/lib/src/cache/index.js +3 -0
- package/lib/dist/lib/src/cache/interfaces/ttlCache.interface.d.ts +2 -0
- package/lib/dist/lib/src/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
- package/lib/dist/lib/src/cache/redisTtlCache.d.ts +353 -0
- package/lib/dist/lib/src/cache/redisTtlCache.d.ts.map +1 -0
- package/lib/dist/lib/src/cache/redisTtlCache.js +98 -0
- package/lib/dist/lib/src/cache/types/ttlCacheRecord.types.d.ts +2 -0
- package/lib/dist/lib/src/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
- package/lib/dist/lib/src/cache/types/ttlCacheRecord.types.js +1 -0
- package/lib/dist/lib/src/controllers/index.d.ts +2 -0
- package/lib/dist/lib/src/controllers/index.d.ts.map +1 -0
- package/lib/dist/lib/src/controllers/index.js +1 -0
- package/lib/dist/lib/src/controllers/interfaces/controller.interface.d.ts +2 -0
- package/lib/dist/lib/src/controllers/interfaces/controller.interface.d.ts.map +1 -0
- package/lib/dist/lib/src/controllers/interfaces/controller.interface.js +1 -0
- package/lib/dist/lib/src/database/index.d.ts +2 -0
- package/lib/dist/lib/src/database/index.d.ts.map +1 -0
- package/lib/dist/lib/src/database/index.js +1 -0
- package/lib/dist/lib/src/database/mikro/models/entities/base.entity.d.ts +26 -0
- package/lib/dist/lib/src/database/mikro/models/entities/base.entity.d.ts.map +1 -0
- package/lib/dist/lib/src/database/mikro/models/entities/base.entity.js +46 -0
- package/lib/dist/lib/src/domainMapper/index.d.ts +3 -0
- package/lib/dist/lib/src/domainMapper/index.d.ts.map +1 -0
- package/lib/dist/lib/src/domainMapper/index.js +2 -0
- package/lib/dist/lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts +2 -0
- package/lib/dist/lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
- package/lib/dist/lib/src/domainMapper/interfaces/dtoMapper.interface.js +1 -0
- package/lib/dist/lib/src/domainMapper/models/baseDtoMapper.model.d.ts +63 -0
- package/lib/dist/lib/src/domainMapper/models/baseDtoMapper.model.d.ts.map +1 -0
- package/lib/dist/lib/src/domainMapper/models/baseDtoMapper.model.js +75 -0
- package/lib/dist/lib/src/domainMapper/models/requestDtoMapper.model.d.ts +58 -0
- package/lib/dist/lib/src/domainMapper/models/requestDtoMapper.model.d.ts.map +1 -0
- package/lib/dist/lib/src/domainMapper/models/requestDtoMapper.model.js +70 -0
- package/lib/dist/lib/src/domainMapper/models/responseDtoMapper.model.d.ts +56 -0
- package/lib/dist/lib/src/domainMapper/models/responseDtoMapper.model.d.ts.map +1 -0
- package/lib/dist/lib/src/domainMapper/models/responseDtoMapper.model.js +65 -0
- package/lib/dist/lib/src/domainMapper/types/dtoMapper.types.d.ts +2 -0
- package/lib/dist/lib/src/domainMapper/types/dtoMapper.types.d.ts.map +1 -0
- package/lib/dist/lib/src/domainMapper/types/dtoMapper.types.js +1 -0
- package/lib/dist/lib/src/dtoMapper/index.d.ts +3 -0
- package/lib/dist/lib/src/dtoMapper/index.d.ts.map +1 -0
- package/lib/dist/lib/src/dtoMapper/index.js +2 -0
- package/lib/dist/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts +2 -0
- package/lib/dist/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
- package/lib/dist/lib/src/dtoMapper/interfaces/dtoMapper.interface.js +1 -0
- package/lib/dist/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts +63 -0
- package/lib/dist/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts.map +1 -0
- package/lib/dist/lib/src/dtoMapper/models/baseDtoMapper.model.js +75 -0
- package/lib/dist/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts +58 -0
- package/lib/dist/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts.map +1 -0
- package/lib/dist/lib/src/dtoMapper/models/requestDtoMapper.model.js +70 -0
- package/lib/dist/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts +56 -0
- package/lib/dist/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts.map +1 -0
- package/lib/dist/lib/src/dtoMapper/models/responseDtoMapper.model.js +65 -0
- package/lib/dist/lib/src/dtoMapper/types/dtoMapper.types.d.ts +2 -0
- package/lib/dist/lib/src/dtoMapper/types/dtoMapper.types.d.ts.map +1 -0
- package/lib/dist/lib/src/dtoMapper/types/dtoMapper.types.js +1 -0
- package/lib/dist/lib/src/http/application/expressLikeApplication.d.ts +18 -0
- package/lib/dist/lib/src/http/application/expressLikeApplication.d.ts.map +1 -0
- package/lib/dist/lib/src/http/application/expressLikeApplication.js +20 -0
- package/lib/dist/lib/src/http/guards/isHttpContractDetails.d.ts +5 -0
- package/lib/dist/lib/src/http/guards/isHttpContractDetails.d.ts.map +1 -0
- package/lib/dist/lib/src/http/guards/isHttpContractDetails.js +6 -0
- package/lib/dist/lib/src/http/guards/isResponseShape.d.ts +2 -0
- package/lib/dist/lib/src/http/guards/isResponseShape.d.ts.map +1 -0
- package/lib/dist/lib/src/http/guards/isResponseShape.js +7 -0
- package/lib/dist/lib/src/http/handler/typedHandler.d.ts +21 -0
- package/lib/dist/lib/src/http/handler/typedHandler.d.ts.map +1 -0
- package/lib/dist/lib/src/http/handler/typedHandler.js +25 -0
- package/lib/dist/lib/src/http/index.d.ts +11 -0
- package/lib/dist/lib/src/http/index.d.ts.map +1 -0
- package/lib/dist/lib/src/http/index.js +10 -0
- package/lib/dist/lib/src/http/interfaces/expressLikeApplication.interface.d.ts +12 -0
- package/lib/dist/lib/src/http/interfaces/expressLikeApplication.interface.d.ts.map +1 -0
- package/lib/dist/lib/src/http/interfaces/expressLikeApplication.interface.js +14 -0
- package/lib/dist/lib/src/http/interfaces/expressLikeRouter.interface.d.ts +2 -0
- package/lib/dist/lib/src/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
- package/lib/dist/lib/src/http/interfaces/expressLikeRouter.interface.js +1 -0
- package/lib/dist/lib/src/http/interfaces/index.d.ts +3 -0
- package/lib/dist/lib/src/http/interfaces/index.d.ts.map +1 -0
- package/lib/dist/lib/src/http/interfaces/index.js +2 -0
- package/lib/dist/lib/src/http/middleware/index.d.ts +3 -0
- package/lib/dist/lib/src/http/middleware/index.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/index.js +2 -0
- package/lib/dist/lib/src/http/middleware/request/auth.middleware.d.ts +27 -0
- package/lib/dist/lib/src/http/middleware/request/auth.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/request/auth.middleware.js +107 -0
- package/lib/dist/lib/src/http/middleware/request/cors.middleware.d.ts +9 -0
- package/lib/dist/lib/src/http/middleware/request/cors.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/request/cors.middleware.js +15 -0
- package/lib/dist/lib/src/http/middleware/request/createContext.middleware.d.ts +12 -0
- package/lib/dist/lib/src/http/middleware/request/createContext.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/request/createContext.middleware.js +26 -0
- package/lib/dist/lib/src/http/middleware/request/enrichDetails.middleware.d.ts +12 -0
- package/lib/dist/lib/src/http/middleware/request/enrichDetails.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/request/enrichDetails.middleware.js +19 -0
- package/lib/dist/lib/src/http/middleware/request/parse.middleware.d.ts +13 -0
- package/lib/dist/lib/src/http/middleware/request/parse.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/request/parse.middleware.js +43 -0
- package/lib/dist/lib/src/http/middleware/request.middleware.d.ts +69 -0
- package/lib/dist/lib/src/http/middleware/request.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/request.middleware.js +210 -0
- package/lib/dist/lib/src/http/middleware/response/parse.middleware.d.ts +27 -0
- package/lib/dist/lib/src/http/middleware/response/parse.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/response/parse.middleware.js +52 -0
- package/lib/dist/lib/src/http/middleware/response.middleware.d.ts +27 -0
- package/lib/dist/lib/src/http/middleware/response.middleware.d.ts.map +1 -0
- package/lib/dist/lib/src/http/middleware/response.middleware.js +52 -0
- package/lib/dist/lib/src/http/openApiV3Generator/index.d.ts +2 -0
- package/lib/dist/lib/src/http/openApiV3Generator/index.d.ts.map +1 -0
- package/lib/dist/lib/src/http/openApiV3Generator/index.js +1 -0
- package/lib/dist/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts +11 -0
- package/lib/dist/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
- package/lib/dist/lib/src/http/openApiV3Generator/openApiV3Generator.js +167 -0
- package/lib/dist/lib/src/http/router/expressLikeRouter.d.ts +89 -0
- package/lib/dist/lib/src/http/router/expressLikeRouter.d.ts.map +1 -0
- package/{dist/http/interfaces/forklaunchExpress.router.interface.js → lib/dist/lib/src/http/router/expressLikeRouter.js} +85 -91
- package/lib/dist/lib/src/http/types/apiDefinition.types.d.ts +2 -0
- package/lib/dist/lib/src/http/types/apiDefinition.types.d.ts.map +1 -0
- package/lib/dist/lib/src/http/types/apiDefinition.types.js +1 -0
- package/lib/dist/lib/src/http/types/contractDetails.types.d.ts +2 -0
- package/lib/dist/lib/src/http/types/contractDetails.types.d.ts.map +1 -0
- package/lib/dist/lib/src/http/types/contractDetails.types.js +1 -0
- package/lib/dist/lib/src/http/types/index.d.ts +4 -0
- package/lib/dist/lib/src/http/types/index.d.ts.map +1 -0
- package/lib/dist/lib/src/http/types/index.js +3 -0
- package/lib/dist/lib/src/http/types/router.types.d.ts +2 -0
- package/lib/dist/lib/src/http/types/router.types.d.ts.map +1 -0
- package/lib/dist/lib/src/http/types/router.types.js +1 -0
- package/lib/dist/lib/src/http/utils/enrichExpressLikeSend.d.ts +28 -0
- package/lib/dist/lib/src/http/utils/enrichExpressLikeSend.d.ts.map +1 -0
- package/lib/dist/lib/src/http/utils/enrichExpressLikeSend.js +50 -0
- package/lib/dist/lib/src/http/utils/httpStatusCodes.d.ts +986 -0
- package/lib/dist/lib/src/http/utils/httpStatusCodes.d.ts.map +1 -0
- package/lib/dist/lib/src/http/utils/httpStatusCodes.js +1039 -0
- package/lib/dist/lib/src/http/utils/index.d.ts +3 -0
- package/lib/dist/lib/src/http/utils/index.d.ts.map +1 -0
- package/lib/dist/lib/src/http/utils/index.js +2 -0
- package/lib/dist/lib/src/services/index.d.ts +2 -0
- package/lib/dist/lib/src/services/index.d.ts.map +1 -0
- package/lib/dist/lib/src/services/interfaces/baseService.d.ts +2 -0
- package/lib/dist/lib/src/services/interfaces/baseService.d.ts.map +1 -0
- package/lib/dist/lib/src/services/interfaces/baseService.js +1 -0
- package/lib/dist/lib/tests/dtoMapper.test.d.ts +2 -0
- package/lib/dist/lib/tests/dtoMapper.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/dtoMapper.test.js +172 -0
- package/lib/dist/lib/tests/entityMapper.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/entityMapper.test.js +172 -0
- package/lib/dist/lib/tests/expressLikeRouter.test.d.ts +2 -0
- package/lib/dist/lib/tests/expressLikeRouter.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/expressLikeRouter.test.js +3 -0
- package/lib/dist/lib/tests/http.middleware.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/http.middleware.test.js +95 -0
- package/lib/dist/lib/tests/openApiV3Generator.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/openApiV3Generator.test.js +66 -0
- package/lib/dist/lib/tests/redisTtlCache.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/redisTtlCache.test.js +49 -0
- package/lib/dist/lib/tests/typedHandler.test.d.ts +2 -0
- package/lib/dist/lib/tests/typedHandler.test.d.ts.map +1 -0
- package/lib/dist/lib/tests/typedHandler.test.js +3 -0
- package/lib/dist/lib/vitest.config.d.ts +3 -0
- package/lib/dist/lib/vitest.config.d.ts.map +1 -0
- package/lib/dist/lib/vitest.config.js +7 -0
- package/lib/dist/services/index.d.ts +2 -0
- package/lib/dist/services/index.d.ts.map +1 -0
- package/lib/dist/services/index.js +1 -0
- package/lib/dist/services/interfaces/baseService.d.ts +2 -0
- package/lib/dist/services/interfaces/baseService.d.ts.map +1 -0
- package/lib/dist/services/interfaces/baseService.js +1 -0
- package/lib/dist/tests/entityMapper.test.d.ts +2 -0
- package/lib/dist/tests/entityMapper.test.d.ts.map +1 -0
- package/{dist → lib/dist}/tests/entityMapper.test.js +6 -2
- package/lib/dist/tests/http.middleware.test.d.ts +2 -0
- package/lib/dist/tests/http.middleware.test.d.ts.map +1 -0
- package/{dist → lib/dist}/tests/http.middleware.test.js +39 -21
- package/lib/dist/tests/openApiV3Generator.test.d.ts +2 -0
- package/lib/dist/tests/openApiV3Generator.test.d.ts.map +1 -0
- package/{dist → lib/dist}/tests/openApiV3Generator.test.js +1 -1
- package/lib/dist/tests/redisTtlCache.test.d.ts +2 -0
- package/lib/dist/tests/redisTtlCache.test.d.ts.map +1 -0
- package/lib/eslint.config.mjs +10 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/jest.config.d.ts +4 -0
- package/lib/jest.config.d.ts.map +1 -0
- package/lib/jest.config.js +21 -0
- package/lib/src/cache/index.d.ts.map +1 -0
- package/lib/src/cache/index.js +3 -0
- package/lib/src/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
- package/lib/src/cache/interfaces/ttlCache.interface.js +1 -0
- package/lib/src/cache/redisTtlCache.d.ts.map +1 -0
- package/lib/src/cache/redisTtlCache.js +98 -0
- package/lib/src/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
- package/lib/src/cache/types/ttlCacheRecord.types.js +1 -0
- package/lib/src/controllers/index.d.ts.map +1 -0
- package/lib/src/controllers/index.js +1 -0
- package/lib/src/controllers/interfaces/controller.interface.d.ts.map +1 -0
- package/lib/src/controllers/interfaces/controller.interface.js +1 -0
- package/lib/src/database/index.d.ts.map +1 -0
- package/lib/src/database/index.js +1 -0
- package/lib/src/database/mikro/models/entities/base.entity.d.ts.map +1 -0
- package/lib/src/domainMapper/index.d.ts +3 -0
- package/lib/src/domainMapper/index.d.ts.map +1 -0
- package/lib/src/domainMapper/index.js +2 -0
- package/{dist/entityMapper/interfaces/entityMapper.interface.d.ts → lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts} +3 -3
- package/lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
- package/lib/src/domainMapper/interfaces/dtoMapper.interface.js +1 -0
- package/{dist/entityMapper/models/baseEntityMapper.model.d.ts → lib/src/domainMapper/models/baseDtoMapper.model.d.ts} +13 -13
- package/lib/src/domainMapper/models/baseDtoMapper.model.d.ts.map +1 -0
- package/lib/src/domainMapper/models/baseDtoMapper.model.js +75 -0
- package/{dist/entityMapper/models/requestEntityMapper.model.d.ts → lib/src/domainMapper/models/requestDtoMapper.model.d.ts} +13 -13
- package/lib/src/domainMapper/models/requestDtoMapper.model.d.ts.map +1 -0
- package/lib/src/domainMapper/models/requestDtoMapper.model.js +70 -0
- package/{dist/entityMapper/models/responseEntityMapper.model.d.ts → lib/src/domainMapper/models/responseDtoMapper.model.d.ts} +12 -12
- package/lib/src/domainMapper/models/responseDtoMapper.model.d.ts.map +1 -0
- package/lib/src/domainMapper/models/responseDtoMapper.model.js +65 -0
- package/lib/src/domainMapper/types/dtoMapper.types.d.ts +9 -0
- package/lib/src/domainMapper/types/dtoMapper.types.d.ts.map +1 -0
- package/lib/src/domainMapper/types/dtoMapper.types.js +1 -0
- package/lib/src/dtoMapper/index.d.ts +3 -0
- package/lib/src/dtoMapper/index.d.ts.map +1 -0
- package/lib/src/dtoMapper/index.js +2 -0
- package/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts +18 -0
- package/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
- package/lib/src/dtoMapper/interfaces/dtoMapper.interface.js +1 -0
- package/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts +72 -0
- package/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts.map +1 -0
- package/lib/src/dtoMapper/models/baseDtoMapper.model.js +75 -0
- package/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts +68 -0
- package/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts.map +1 -0
- package/lib/src/dtoMapper/models/requestDtoMapper.model.js +70 -0
- package/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts +67 -0
- package/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts.map +1 -0
- package/lib/src/dtoMapper/models/responseDtoMapper.model.js +65 -0
- package/lib/src/dtoMapper/types/dtoMapper.types.d.ts +9 -0
- package/lib/src/dtoMapper/types/dtoMapper.types.d.ts.map +1 -0
- package/lib/src/dtoMapper/types/dtoMapper.types.js +1 -0
- package/lib/src/http/application/expressLikeApplication.d.ts +22 -0
- package/lib/src/http/application/expressLikeApplication.d.ts.map +1 -0
- package/lib/src/http/application/expressLikeApplication.js +20 -0
- package/lib/src/http/guards/isExpressLikeSchemaHandler.d.ts +5 -0
- package/lib/src/http/guards/isExpressLikeSchemaHandler.d.ts.map +1 -0
- package/lib/src/http/guards/isExpressLikeSchemaHandler.js +9 -0
- package/lib/src/http/guards/isHttpContractDetails.d.ts +7 -0
- package/lib/src/http/guards/isHttpContractDetails.d.ts.map +1 -0
- package/lib/src/http/guards/isHttpContractDetails.js +9 -0
- package/lib/src/http/guards/isPathParamContractDetails.d.ts +4 -0
- package/lib/src/http/guards/isPathParamContractDetails.d.ts.map +1 -0
- package/lib/src/http/guards/isPathParamContractDetails.js +10 -0
- package/lib/src/http/guards/isResponseShape.d.ts +3 -0
- package/lib/src/http/guards/isResponseShape.d.ts.map +1 -0
- package/lib/src/http/guards/isResponseShape.js +7 -0
- package/lib/src/http/guards/isTypedHandler.d.ts +5 -0
- package/lib/src/http/guards/isTypedHandler.d.ts.map +1 -0
- package/lib/src/http/guards/isTypedHandler.js +6 -0
- package/lib/src/http/handler/typedHandler.d.ts +24 -0
- package/lib/src/http/handler/typedHandler.d.ts.map +1 -0
- package/lib/src/http/handler/typedHandler.js +25 -0
- package/lib/src/http/handlers/typedHandler.d.ts +27 -0
- package/lib/src/http/handlers/typedHandler.d.ts.map +1 -0
- package/lib/src/http/handlers/typedHandler.js +30 -0
- package/lib/src/http/index.d.ts +12 -0
- package/lib/src/http/index.d.ts.map +1 -0
- package/lib/src/http/index.js +11 -0
- package/{dist/http/interfaces/forklaunchExpress.application.interface.d.ts → lib/src/http/interfaces/expressLikeApplication.interface.d.ts} +1 -1
- package/lib/src/http/interfaces/expressLikeApplication.interface.d.ts.map +1 -0
- package/lib/src/http/interfaces/expressLikeApplication.interface.js +14 -0
- package/lib/src/http/interfaces/expressLikeRouter.interface.d.ts +24 -0
- package/lib/src/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
- package/lib/src/http/interfaces/expressLikeRouter.interface.js +1 -0
- package/lib/src/http/interfaces/index.d.ts +3 -0
- package/lib/src/http/interfaces/index.d.ts.map +1 -0
- package/lib/src/http/interfaces/index.js +2 -0
- package/lib/src/http/middleware/index.d.ts.map +1 -0
- package/lib/src/http/middleware/index.js +2 -0
- package/lib/src/http/middleware/request/auth.middleware.d.ts +31 -0
- package/lib/src/http/middleware/request/auth.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/request/auth.middleware.js +107 -0
- package/lib/src/http/middleware/request/cors.middleware.d.ts +13 -0
- package/lib/src/http/middleware/request/cors.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/request/cors.middleware.js +15 -0
- package/lib/src/http/middleware/request/createContext.middleware.d.ts +15 -0
- package/lib/src/http/middleware/request/createContext.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/request/createContext.middleware.js +26 -0
- package/lib/src/http/middleware/request/enrichDetails.middleware.d.ts +15 -0
- package/lib/src/http/middleware/request/enrichDetails.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/request/enrichDetails.middleware.js +19 -0
- package/lib/src/http/middleware/request/parse.middleware.d.ts +17 -0
- package/lib/src/http/middleware/request/parse.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/request/parse.middleware.js +43 -0
- package/lib/src/http/middleware/request.middleware.d.ts +73 -0
- package/lib/src/http/middleware/request.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/request.middleware.js +210 -0
- package/lib/src/http/middleware/response/parse.middleware.d.ts +31 -0
- package/lib/src/http/middleware/response/parse.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/response/parse.middleware.js +52 -0
- package/lib/src/http/middleware/response.middleware.d.ts +31 -0
- package/lib/src/http/middleware/response.middleware.d.ts.map +1 -0
- package/lib/src/http/middleware/response.middleware.js +52 -0
- package/lib/src/http/openApiV3Generator/index.d.ts +2 -0
- package/lib/src/http/openApiV3Generator/index.d.ts.map +1 -0
- package/lib/src/http/openApiV3Generator/index.js +1 -0
- package/{dist/http → lib/src/http/openApiV3Generator}/openApiV3Generator.d.ts +1 -1
- package/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
- package/lib/src/http/openApiV3Generator/openApiV3Generator.js +169 -0
- package/lib/src/http/router/expressLikeRouter.d.ts +135 -0
- package/lib/src/http/router/expressLikeRouter.d.ts.map +1 -0
- package/lib/src/http/router/expressLikeRouter.js +438 -0
- package/{dist/http/types/api.types.d.ts → lib/src/http/types/apiDefinition.types.d.ts} +49 -24
- package/lib/src/http/types/apiDefinition.types.d.ts.map +1 -0
- package/lib/src/http/types/apiDefinition.types.js +1 -0
- package/lib/src/http/types/contractDetails.types.d.ts +169 -0
- package/lib/src/http/types/contractDetails.types.d.ts.map +1 -0
- package/lib/src/http/types/contractDetails.types.js +1 -0
- package/lib/src/http/types/expressLikeRouter.types.d.ts +35 -0
- package/lib/src/http/types/expressLikeRouter.types.d.ts.map +1 -0
- package/lib/src/http/types/expressLikeRouter.types.js +1 -0
- package/lib/src/http/types/index.d.ts +4 -0
- package/lib/src/http/types/index.d.ts.map +1 -0
- package/lib/src/http/types/index.js +3 -0
- package/{dist/http/types/forklaunch.types.d.ts → lib/src/http/types/router.types.d.ts} +3 -3
- package/lib/src/http/types/router.types.d.ts.map +1 -0
- package/lib/src/http/types/router.types.js +1 -0
- package/lib/src/http/utils/enrichExpressLikeSend.d.ts +32 -0
- package/lib/src/http/utils/enrichExpressLikeSend.d.ts.map +1 -0
- package/lib/src/http/utils/enrichExpressLikeSend.js +50 -0
- package/lib/src/http/utils/httpStatusCodes.d.ts.map +1 -0
- package/lib/src/http/utils/httpStatusCodes.js +1039 -0
- package/lib/src/http/utils/index.d.ts +3 -0
- package/lib/src/http/utils/index.d.ts.map +1 -0
- package/lib/src/http/utils/index.js +2 -0
- package/lib/src/services/index.d.ts.map +1 -0
- package/lib/src/services/index.js +1 -0
- package/lib/src/services/interfaces/baseService.d.ts.map +1 -0
- package/lib/src/services/interfaces/baseService.js +1 -0
- package/lib/tests/dtoMapper.test.d.ts +2 -0
- package/lib/tests/dtoMapper.test.d.ts.map +1 -0
- package/lib/tests/dtoMapper.test.js +168 -0
- package/lib/tests/entityMapper.test.d.ts +2 -0
- package/lib/tests/entityMapper.test.js +168 -0
- package/lib/tests/expressLikeRouter.test.d.ts +2 -0
- package/lib/tests/expressLikeRouter.test.d.ts.map +1 -0
- package/lib/tests/expressLikeRouter.test.js +3 -0
- package/lib/tests/expressLikeRouterInstantiation.test.d.ts +2 -0
- package/lib/tests/expressLikeRouterInstantiation.test.d.ts.map +1 -0
- package/lib/tests/expressLikeRouterInstantiation.test.js +60 -0
- package/lib/tests/http.middleware.test.d.ts +2 -0
- package/lib/tests/http.middleware.test.js +102 -0
- package/lib/tests/openApiV3Generator.test.d.ts +2 -0
- package/lib/tests/openApiV3Generator.test.js +66 -0
- package/lib/tests/redisTtlCache.test.d.ts +2 -0
- package/lib/tests/redisTtlCache.test.js +49 -0
- package/lib/tests/typedHandler.test.d.ts +2 -0
- package/lib/tests/typedHandler.test.d.ts.map +1 -0
- package/lib/tests/typedHandler.test.js +3 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/vitest.config.d.ts +3 -0
- package/lib/vitest.config.d.ts.map +1 -0
- package/lib/vitest.config.js +7 -0
- package/package.json +52 -30
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/interfaces/ttlCache.interface.d.ts.map +0 -1
- package/dist/cache/redisTtlCache.d.ts.map +0 -1
- package/dist/cache/types/ttlCacheRecord.types.d.ts.map +0 -1
- package/dist/controllers/index.d.ts.map +0 -1
- package/dist/controllers/interfaces/controller.interface.d.ts.map +0 -1
- package/dist/database/index.d.ts.map +0 -1
- package/dist/database/mikro/models/entities/base.entity.d.ts.map +0 -1
- package/dist/entityMapper/index.d.ts +0 -3
- package/dist/entityMapper/index.d.ts.map +0 -1
- package/dist/entityMapper/interfaces/entityMapper.interface.d.ts.map +0 -1
- package/dist/entityMapper/models/baseEntityMapper.model.d.ts.map +0 -1
- package/dist/entityMapper/models/requestEntityMapper.model.d.ts.map +0 -1
- package/dist/entityMapper/models/responseEntityMapper.model.d.ts.map +0 -1
- package/dist/entityMapper/types/entityMapper.types.d.ts +0 -10
- package/dist/entityMapper/types/entityMapper.types.d.ts.map +0 -1
- package/dist/eslint.config.mjs +0 -10
- package/dist/http/httpStatusCodes.d.ts.map +0 -1
- package/dist/http/index.d.ts +0 -7
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/interfaces/forklaunchExpress.application.interface.d.ts.map +0 -1
- package/dist/http/interfaces/forklaunchExpress.router.interface.d.ts +0 -118
- package/dist/http/interfaces/forklaunchExpress.router.interface.d.ts.map +0 -1
- package/dist/http/interfaces/index.d.ts +0 -3
- package/dist/http/interfaces/index.d.ts.map +0 -1
- package/dist/http/interfaces/index.js +0 -2
- package/dist/http/middleware/index.d.ts.map +0 -1
- package/dist/http/middleware/request.middleware.d.ts +0 -111
- package/dist/http/middleware/request.middleware.d.ts.map +0 -1
- package/dist/http/middleware/response.middleware.d.ts +0 -17
- package/dist/http/middleware/response.middleware.d.ts.map +0 -1
- package/dist/http/middleware/response.middleware.js +0 -49
- package/dist/http/openApiV3Generator.d.ts.map +0 -1
- package/dist/http/regex.d.ts +0 -9
- package/dist/http/regex.d.ts.map +0 -1
- package/dist/http/regex.js +0 -111
- package/dist/http/types/api.types.d.ts.map +0 -1
- package/dist/http/types/forklaunch.types.d.ts.map +0 -1
- package/dist/http/types/index.d.ts +0 -4
- package/dist/http/types/index.d.ts.map +0 -1
- package/dist/http/types/index.js +0 -3
- package/dist/http/types/primitive.types.d.ts +0 -110
- package/dist/http/types/primitive.types.d.ts.map +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +0 -1
- package/dist/jest.config.d.ts +0 -4
- package/dist/jest.config.d.ts.map +0 -1
- package/dist/jest.config.js +0 -7
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/interfaces/baseService.d.ts.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/{dist → lib/dist}/cache/index.js +0 -0
- /package/{dist → lib/dist}/cache/interfaces/ttlCache.interface.js +0 -0
- /package/{dist → lib/dist}/cache/types/ttlCacheRecord.types.js +0 -0
- /package/{dist → lib/dist}/controllers/index.js +0 -0
- /package/{dist → lib/dist}/controllers/interfaces/controller.interface.js +0 -0
- /package/{dist → lib/dist}/database/index.js +0 -0
- /package/{dist → lib/dist}/entityMapper/index.js +0 -0
- /package/{dist → lib/dist}/entityMapper/interfaces/entityMapper.interface.js +0 -0
- /package/{dist → lib/dist}/entityMapper/models/baseEntityMapper.model.js +0 -0
- /package/{dist → lib/dist}/entityMapper/models/requestEntityMapper.model.js +0 -0
- /package/{dist → lib/dist}/entityMapper/models/responseEntityMapper.model.js +0 -0
- /package/{dist → lib/dist}/entityMapper/types/entityMapper.types.js +0 -0
- /package/{dist/http/interfaces/forklaunchExpress.application.interface.js → lib/dist/http/interfaces/expressLikeApplication.interface.js} +0 -0
- /package/{dist → lib/dist}/http/middleware/index.js +0 -0
- /package/{dist/http/types/api.types.js → lib/dist/http/types/apiDefinition.types.js} +0 -0
- /package/{dist/http/types/forklaunch.types.js → lib/dist/http/types/contractDetails.types.js} +0 -0
- /package/{dist/http/types/primitive.types.js → lib/dist/http/types/router.types.js} +0 -0
- /package/{dist/http → lib/dist/http/utils}/httpStatusCodes.js +0 -0
- /package/{dist → lib/dist}/index.js +0 -0
- /package/{dist/services/interfaces/baseService.js → lib/dist/lib/src/cache/interfaces/ttlCache.interface.js} +0 -0
- /package/{dist → lib/dist/lib/src}/services/index.js +0 -0
- /package/{dist → lib/dist/lib}/tests/entityMapper.test.d.ts +0 -0
- /package/{dist → lib/dist/lib}/tests/http.middleware.test.d.ts +0 -0
- /package/{dist → lib/dist/lib}/tests/openApiV3Generator.test.d.ts +0 -0
- /package/{dist → lib/dist/lib}/tests/redisTtlCache.test.d.ts +0 -0
- /package/{dist → lib/dist}/tests/redisTtlCache.test.js +0 -0
- /package/{dist → lib}/eslint.config.d.mts +0 -0
- /package/{dist → lib}/eslint.config.d.mts.map +0 -0
- /package/{dist → lib/src}/cache/index.d.ts +0 -0
- /package/{dist → lib/src}/cache/interfaces/ttlCache.interface.d.ts +0 -0
- /package/{dist → lib/src}/cache/redisTtlCache.d.ts +0 -0
- /package/{dist → lib/src}/cache/types/ttlCacheRecord.types.d.ts +0 -0
- /package/{dist → lib/src}/controllers/index.d.ts +0 -0
- /package/{dist → lib/src}/controllers/interfaces/controller.interface.d.ts +0 -0
- /package/{dist → lib/src}/database/index.d.ts +0 -0
- /package/{dist → lib/src}/database/mikro/models/entities/base.entity.d.ts +0 -0
- /package/{dist → lib/src}/database/mikro/models/entities/base.entity.js +0 -0
- /package/{dist → lib/src}/http/middleware/index.d.ts +0 -0
- /package/{dist/http → lib/src/http/utils}/httpStatusCodes.d.ts +0 -0
- /package/{dist → lib/src}/services/index.d.ts +0 -0
- /package/{dist → lib/src}/services/interfaces/baseService.d.ts +0 -0
- /package/{dist → lib}/tests/entityMapper.test.d.ts.map +0 -0
- /package/{dist → lib}/tests/http.middleware.test.d.ts.map +0 -0
- /package/{dist → lib}/tests/openApiV3Generator.test.d.ts.map +0 -0
- /package/{dist → lib}/tests/redisTtlCache.test.d.ts.map +0 -0
@@ -1,11 +1,23 @@
|
|
1
|
-
import {
|
1
|
+
import { isHttpContractDetails } from '../guards/isHttpContractDetails';
|
2
|
+
import { TypedHandler } from '../handler/typedHandler';
|
3
|
+
import { cors } from '../middleware/request/cors.middleware';
|
4
|
+
import { createContext } from '../middleware/request/createContext.middleware';
|
5
|
+
import { enrichDetails } from '../middleware/request/enrichDetails.middleware';
|
6
|
+
import { parse } from '../middleware/request/parse.middleware';
|
7
|
+
/**
|
8
|
+
* A class that represents an Express-like router.
|
9
|
+
*/
|
2
10
|
export class ForklaunchExpressLikeRouter {
|
11
|
+
schemaValidator;
|
3
12
|
internal;
|
4
13
|
routes = [];
|
5
14
|
basePath;
|
6
|
-
constructor(basePath, internal) {
|
15
|
+
constructor(basePath, schemaValidator, internal) {
|
16
|
+
this.schemaValidator = schemaValidator;
|
7
17
|
this.internal = internal;
|
8
18
|
this.basePath = basePath;
|
19
|
+
this.internal.use(createContext(this.schemaValidator));
|
20
|
+
this.internal.use(cors);
|
9
21
|
}
|
10
22
|
/**
|
11
23
|
* Resolves middlewares based on the contract details.
|
@@ -13,26 +25,11 @@ export class ForklaunchExpressLikeRouter {
|
|
13
25
|
* @param {PathParamHttpContractDetails<SV> | HttpContractDetails<SV>} contractDetails - The contract details.
|
14
26
|
* @returns {MiddlewareHandler<SV>[]} - The resolved middlewares.
|
15
27
|
*/
|
16
|
-
#resolveMiddlewares(contractDetails) {
|
17
|
-
|
18
|
-
|
28
|
+
#resolveMiddlewares(contractDetails, requestSchema, responseSchemas) {
|
29
|
+
return [
|
30
|
+
enrichDetails(contractDetails, requestSchema, responseSchemas),
|
31
|
+
parse
|
19
32
|
];
|
20
|
-
if (contractDetails.params) {
|
21
|
-
middlewares.push(parseRequestParams);
|
22
|
-
}
|
23
|
-
if (contractDetails.body) {
|
24
|
-
middlewares.push(parseRequestBody);
|
25
|
-
}
|
26
|
-
if (contractDetails.requestHeaders) {
|
27
|
-
middlewares.push(parseReqHeaders);
|
28
|
-
}
|
29
|
-
if (contractDetails.query) {
|
30
|
-
middlewares.push(parseRequestQuery);
|
31
|
-
}
|
32
|
-
if (contractDetails.auth) {
|
33
|
-
middlewares.push(parseRequestAuth);
|
34
|
-
}
|
35
|
-
return middlewares;
|
36
33
|
}
|
37
34
|
/**
|
38
35
|
* Parses and runs the controller function with error handling.
|
@@ -47,7 +44,7 @@ export class ForklaunchExpressLikeRouter {
|
|
47
44
|
* @returns {ExpressMiddlewareHandler} - The Express request handler.
|
48
45
|
*/
|
49
46
|
#parseAndRunControllerFunction(requestHandler) {
|
50
|
-
return
|
47
|
+
return async (req, res, next) => {
|
51
48
|
if (!requestHandler) {
|
52
49
|
throw new Error('Controller function is not defined');
|
53
50
|
}
|
@@ -55,15 +52,13 @@ export class ForklaunchExpressLikeRouter {
|
|
55
52
|
await requestHandler(req, res, next);
|
56
53
|
}
|
57
54
|
catch (error) {
|
58
|
-
|
59
|
-
next(error);
|
60
|
-
}
|
55
|
+
next?.(error);
|
61
56
|
console.error(error);
|
62
57
|
if (!res.headersSent) {
|
63
58
|
res.status(500).send('Internal Server Error');
|
64
59
|
}
|
65
60
|
}
|
66
|
-
}
|
61
|
+
};
|
67
62
|
}
|
68
63
|
/**
|
69
64
|
* Extracts the controller function from the provided functions.
|
@@ -115,6 +110,42 @@ export class ForklaunchExpressLikeRouter {
|
|
115
110
|
this.internal.use(...args);
|
116
111
|
return this;
|
117
112
|
}
|
113
|
+
#compile(contractDetails) {
|
114
|
+
const schemaValidator = this.schemaValidator;
|
115
|
+
const requestSchema = schemaValidator.compile(schemaValidator.schemify({
|
116
|
+
...(contractDetails.params ? { params: contractDetails.params } : {}),
|
117
|
+
...(contractDetails.requestHeaders
|
118
|
+
? { headers: contractDetails.requestHeaders }
|
119
|
+
: {}),
|
120
|
+
...(contractDetails.query ? { query: contractDetails.query } : {}),
|
121
|
+
...(isHttpContractDetails(contractDetails) && contractDetails.body
|
122
|
+
? { body: contractDetails.body }
|
123
|
+
: {})
|
124
|
+
}));
|
125
|
+
const responseEntries = {
|
126
|
+
400: schemaValidator.string,
|
127
|
+
401: schemaValidator.string,
|
128
|
+
403: schemaValidator.string,
|
129
|
+
404: schemaValidator.string,
|
130
|
+
500: schemaValidator.string,
|
131
|
+
...contractDetails.responses
|
132
|
+
};
|
133
|
+
const responseSchemas = {
|
134
|
+
responses: {},
|
135
|
+
...(contractDetails.responseHeaders
|
136
|
+
? {
|
137
|
+
headers: schemaValidator.compile(schemaValidator.schemify(contractDetails.responseHeaders))
|
138
|
+
}
|
139
|
+
: {})
|
140
|
+
};
|
141
|
+
Object.entries(responseEntries).forEach(([code, responseShape]) => {
|
142
|
+
responseSchemas.responses[Number(code)] = schemaValidator.compile(schemaValidator.schemify(responseShape));
|
143
|
+
});
|
144
|
+
return {
|
145
|
+
requestSchema,
|
146
|
+
responseSchemas
|
147
|
+
};
|
148
|
+
}
|
118
149
|
/**
|
119
150
|
* Executes request locally, applying parameters
|
120
151
|
*
|
@@ -123,7 +154,7 @@ export class ForklaunchExpressLikeRouter {
|
|
123
154
|
* @returns
|
124
155
|
*/
|
125
156
|
#localParamRequest(functions, controllerFunction) {
|
126
|
-
return
|
157
|
+
return async (route, request) => {
|
127
158
|
let statusCode;
|
128
159
|
let responseMessage;
|
129
160
|
const responseHeaders = {};
|
@@ -152,7 +183,6 @@ export class ForklaunchExpressLikeRouter {
|
|
152
183
|
responseHeaders[key] = value;
|
153
184
|
}
|
154
185
|
};
|
155
|
-
// let cursor = functions.shift() as unknown as (req_: typeof req, resp_: typeof res, next: MiddlewareNext) => void;
|
156
186
|
let cursor = functions.shift();
|
157
187
|
if (cursor) {
|
158
188
|
for (const fn of functions) {
|
@@ -180,7 +210,24 @@ export class ForklaunchExpressLikeRouter {
|
|
180
210
|
response: responseMessage,
|
181
211
|
headers: responseHeaders
|
182
212
|
};
|
213
|
+
};
|
214
|
+
}
|
215
|
+
#registerRoute(method, path, registrationFunction, contractDetailsOrTypedHandler, ...functions) {
|
216
|
+
if (contractDetailsOrTypedHandler instanceof TypedHandler) {
|
217
|
+
const typedHandler = contractDetailsOrTypedHandler;
|
218
|
+
return this.#registerRoute(method, path, registrationFunction, typedHandler.contractDetails, ...typedHandler.functions.concat(functions));
|
219
|
+
}
|
220
|
+
const contractDetails = contractDetailsOrTypedHandler;
|
221
|
+
this.routes.push({
|
222
|
+
basePath: this.basePath,
|
223
|
+
path,
|
224
|
+
method,
|
225
|
+
contractDetails
|
183
226
|
});
|
227
|
+
const { requestSchema, responseSchemas } = this.#compile(contractDetails);
|
228
|
+
const controllerFunction = this.#extractControllerFunction(functions);
|
229
|
+
registrationFunction.bind(this.internal)(path, ...this.#resolveMiddlewares(contractDetails, requestSchema, responseSchemas).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
|
230
|
+
return this.#localParamRequest(functions, controllerFunction);
|
184
231
|
}
|
185
232
|
/**
|
186
233
|
* Registers a GET route with the specified contract details and handler functions.
|
@@ -195,17 +242,9 @@ export class ForklaunchExpressLikeRouter {
|
|
195
242
|
* @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
|
196
243
|
* @returns {ExpressRouter} - The Express router.
|
197
244
|
*/
|
198
|
-
get(path,
|
199
|
-
const controllerFunction = this.#extractControllerFunction(functions);
|
200
|
-
this.routes.push({
|
201
|
-
basePath: this.basePath,
|
202
|
-
path,
|
203
|
-
method: 'GET',
|
204
|
-
contractDetails
|
205
|
-
});
|
206
|
-
this.internal.get(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
|
245
|
+
get(path, contractDetailsOrTypedHandler, ...functions) {
|
207
246
|
return {
|
208
|
-
get: this.#
|
247
|
+
get: this.#registerRoute('get', path, this.internal.get, contractDetailsOrTypedHandler, ...functions)
|
209
248
|
};
|
210
249
|
}
|
211
250
|
/**
|
@@ -221,17 +260,9 @@ export class ForklaunchExpressLikeRouter {
|
|
221
260
|
* @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
|
222
261
|
* @returns {ExpressRouter} - The Express router.
|
223
262
|
*/
|
224
|
-
post(path,
|
225
|
-
const controllerFunction = this.#extractControllerFunction(functions);
|
226
|
-
this.routes.push({
|
227
|
-
basePath: this.basePath,
|
228
|
-
path,
|
229
|
-
method: 'POST',
|
230
|
-
contractDetails
|
231
|
-
});
|
232
|
-
this.internal.post(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
|
263
|
+
post(path, contractDetailsOrTypedHandler, ...functions) {
|
233
264
|
return {
|
234
|
-
post: this.#
|
265
|
+
post: this.#registerRoute('post', path, this.internal.post, contractDetailsOrTypedHandler, ...functions)
|
235
266
|
};
|
236
267
|
}
|
237
268
|
/**
|
@@ -247,17 +278,9 @@ export class ForklaunchExpressLikeRouter {
|
|
247
278
|
* @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
|
248
279
|
* @returns {ExpressRouter} - The Express router.
|
249
280
|
*/
|
250
|
-
put(path,
|
251
|
-
const controllerFunction = this.#extractControllerFunction(functions);
|
252
|
-
this.routes.push({
|
253
|
-
basePath: this.basePath,
|
254
|
-
path,
|
255
|
-
method: 'PUT',
|
256
|
-
contractDetails
|
257
|
-
});
|
258
|
-
this.internal.put(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
|
281
|
+
put(path, contractDetailsOrTypedHandler, ...functions) {
|
259
282
|
return {
|
260
|
-
put: this.#
|
283
|
+
put: this.#registerRoute('put', path, this.internal.put, contractDetailsOrTypedHandler, ...functions)
|
261
284
|
};
|
262
285
|
}
|
263
286
|
/**
|
@@ -273,17 +296,9 @@ export class ForklaunchExpressLikeRouter {
|
|
273
296
|
* @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
|
274
297
|
* @returns {ExpressRouter} - The Express router.
|
275
298
|
*/
|
276
|
-
patch(path,
|
277
|
-
const controllerFunction = this.#extractControllerFunction(functions);
|
278
|
-
this.routes.push({
|
279
|
-
basePath: this.basePath,
|
280
|
-
path,
|
281
|
-
method: 'PATCH',
|
282
|
-
contractDetails
|
283
|
-
});
|
284
|
-
this.internal.patch(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
|
299
|
+
patch(path, contractDetailsOrTypedHandler, ...functions) {
|
285
300
|
return {
|
286
|
-
patch: this.#
|
301
|
+
patch: this.#registerRoute('patch', path, this.internal.patch, contractDetailsOrTypedHandler, ...functions)
|
287
302
|
};
|
288
303
|
}
|
289
304
|
/**
|
@@ -299,30 +314,9 @@ export class ForklaunchExpressLikeRouter {
|
|
299
314
|
* @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
|
300
315
|
* @returns {ExpressRouter} - The Express router.
|
301
316
|
*/
|
302
|
-
delete(path,
|
303
|
-
const controllerFunction = this.#extractControllerFunction(functions);
|
304
|
-
this.routes.push({
|
305
|
-
basePath: this.basePath,
|
306
|
-
path,
|
307
|
-
method: 'DELETE',
|
308
|
-
contractDetails
|
309
|
-
});
|
310
|
-
this.internal.delete(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
|
317
|
+
delete(path, contractDetailsOrTypedHandler, ...functions) {
|
311
318
|
return {
|
312
|
-
delete: this.#
|
319
|
+
delete: this.#registerRoute('delete', path, this.internal.delete, contractDetailsOrTypedHandler, ...functions)
|
313
320
|
};
|
314
321
|
}
|
315
322
|
}
|
316
|
-
/**
|
317
|
-
* Router class that sets up routes and middleware for an Express router, for use with controller/routes pattern.
|
318
|
-
*
|
319
|
-
* @template SV - A type that extends AnySchemaValidator.
|
320
|
-
* @template contractDetails - The contract details.
|
321
|
-
* @template functions - The handler middlware and function.
|
322
|
-
*/
|
323
|
-
export function typedHandler(_schemaValidator, contractDetails, ...functions) {
|
324
|
-
return {
|
325
|
-
contractDetails,
|
326
|
-
functions
|
327
|
-
};
|
328
|
-
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"apiDefinition.types.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/apiDefinition.types.js"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"contractDetails.types.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/contractDetails.types.js"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/index.js"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"router.types.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/router.types.js"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/**
|
2
|
+
* Enhances the Express-like `send` method with additional logic for response handling and validation.
|
3
|
+
*
|
4
|
+
* This function intercepts the `send` method to provide custom behavior, including response validation
|
5
|
+
* through the `parseResponse` middleware. If the response status is 404, it sends a "Not Found" message.
|
6
|
+
* If the response validation fails, it sends a parsing error message. Otherwise, it calls the original `send`
|
7
|
+
* method with the provided data.
|
8
|
+
*
|
9
|
+
* @template SV - The type of the schema validator used in the request.
|
10
|
+
* @template P - The type of the parameters dictionary used in the request.
|
11
|
+
* @template ResBodyMap - A record type mapping status codes to response body types.
|
12
|
+
* @template ReqBody - The type of the request body.
|
13
|
+
* @template ReqQuery - The type of the parsed query string.
|
14
|
+
* @template ReqHeaders - The type of the request headers.
|
15
|
+
* @template ResHeaders - The type of the response headers, extended from `ForklaunchResHeaders`.
|
16
|
+
* @template LocalsObj - The type of the locals object in the response.
|
17
|
+
*
|
18
|
+
* @param {unknown} instance - The context (typically `this`) in which the original `send` method is called.
|
19
|
+
* @param {ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>} req - The request object, containing the schema validator and other request data.
|
20
|
+
* @param {ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>} res - The response object, including headers and body data.
|
21
|
+
* @param {Function} originalSend - The original `send` method from the response object, to be called after custom logic.
|
22
|
+
* @param {string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined} data - The data to be sent as the response body.
|
23
|
+
* @param {boolean} shouldEnrich - A flag indicating whether the response should be sent immediately.
|
24
|
+
*
|
25
|
+
* @returns {unknown} The return value of the original `send` method, typically the response itself.
|
26
|
+
*/
|
27
|
+
export function enrichExpressLikeSend<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj>(instance: unknown, req: ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>, res: ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>, originalSend: Function, data: string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined, shouldEnrich: boolean): unknown;
|
28
|
+
//# sourceMappingURL=enrichExpressLikeSend.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"enrichExpressLikeSend.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/utils/enrichExpressLikeSend.js"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,sCAlBa,EAAE,EACF,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,YAEX,OAAO,OACP,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,OACvD,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,UAAU,EAAE,SAAS,CAAC,gCAE5E,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,GAAG,SAAS,gBACjF,OAAO,GAEL,OAAO,CAwBnB"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { parse } from '../middleware/response/parse.middleware';
|
2
|
+
/**
|
3
|
+
* Enhances the Express-like `send` method with additional logic for response handling and validation.
|
4
|
+
*
|
5
|
+
* This function intercepts the `send` method to provide custom behavior, including response validation
|
6
|
+
* through the `parseResponse` middleware. If the response status is 404, it sends a "Not Found" message.
|
7
|
+
* If the response validation fails, it sends a parsing error message. Otherwise, it calls the original `send`
|
8
|
+
* method with the provided data.
|
9
|
+
*
|
10
|
+
* @template SV - The type of the schema validator used in the request.
|
11
|
+
* @template P - The type of the parameters dictionary used in the request.
|
12
|
+
* @template ResBodyMap - A record type mapping status codes to response body types.
|
13
|
+
* @template ReqBody - The type of the request body.
|
14
|
+
* @template ReqQuery - The type of the parsed query string.
|
15
|
+
* @template ReqHeaders - The type of the request headers.
|
16
|
+
* @template ResHeaders - The type of the response headers, extended from `ForklaunchResHeaders`.
|
17
|
+
* @template LocalsObj - The type of the locals object in the response.
|
18
|
+
*
|
19
|
+
* @param {unknown} instance - The context (typically `this`) in which the original `send` method is called.
|
20
|
+
* @param {ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>} req - The request object, containing the schema validator and other request data.
|
21
|
+
* @param {ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>} res - The response object, including headers and body data.
|
22
|
+
* @param {Function} originalSend - The original `send` method from the response object, to be called after custom logic.
|
23
|
+
* @param {string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined} data - The data to be sent as the response body.
|
24
|
+
* @param {boolean} shouldEnrich - A flag indicating whether the response should be sent immediately.
|
25
|
+
*
|
26
|
+
* @returns {unknown} The return value of the original `send` method, typically the response itself.
|
27
|
+
*/
|
28
|
+
export function enrichExpressLikeSend(instance, req, res, originalSend, data, shouldEnrich) {
|
29
|
+
let parseErrorSent;
|
30
|
+
if (shouldEnrich) {
|
31
|
+
if (res.statusCode === 404) {
|
32
|
+
res.status(404);
|
33
|
+
originalSend.call(instance, 'Not Found');
|
34
|
+
}
|
35
|
+
parse(req, res, (err) => {
|
36
|
+
if (err) {
|
37
|
+
let errorString = err.message;
|
38
|
+
if (res.locals.errorMessage) {
|
39
|
+
errorString += `\n------------------\n${res.locals.errorMessage}`;
|
40
|
+
}
|
41
|
+
res.status(500);
|
42
|
+
originalSend.call(instance, errorString);
|
43
|
+
parseErrorSent = true;
|
44
|
+
}
|
45
|
+
});
|
46
|
+
}
|
47
|
+
if (!parseErrorSent) {
|
48
|
+
originalSend.call(instance, data);
|
49
|
+
}
|
50
|
+
}
|