@dooboostore/simple-boot-http-server 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/SimpleBootHttpServer.js +51 -673
- package/dist/cjs/SimpleBootHttpServer.js.map +4 -4
- package/dist/cjs/bundle-entry.js +44 -0
- package/dist/cjs/bundle-entry.js.map +7 -0
- package/dist/cjs/codes/HttpHeaders.js +42 -44
- package/dist/cjs/codes/HttpHeaders.js.map +3 -3
- package/dist/cjs/codes/HttpMethod.js +0 -2
- package/dist/cjs/codes/HttpMethod.js.map +1 -1
- package/dist/cjs/codes/HttpStatus.js +0 -2
- package/dist/cjs/codes/HttpStatus.js.map +1 -1
- package/dist/cjs/codes/Mimes.js +0 -2
- package/dist/cjs/codes/Mimes.js.map +1 -1
- package/dist/cjs/codes/index.js +9 -126
- package/dist/cjs/codes/index.js.map +4 -4
- package/dist/cjs/decorators/MethodMapping.js +51 -53
- package/dist/cjs/decorators/MethodMapping.js.map +2 -2
- package/dist/cjs/decorators/index.js +3 -248
- package/dist/cjs/decorators/index.js.map +4 -4
- package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js +7 -8
- package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js.map +1 -1
- package/dist/cjs/endpoints/EndPoint.js +0 -2
- package/dist/cjs/endpoints/EndPoint.js.map +1 -1
- package/dist/cjs/endpoints/HeaderEndPoint.js +2 -4
- package/dist/cjs/endpoints/HeaderEndPoint.js.map +1 -1
- package/dist/cjs/endpoints/index.js +7 -54
- package/dist/cjs/endpoints/index.js.map +3 -3
- package/dist/cjs/errors/BadRequestError.js +5 -16
- package/dist/cjs/errors/BadRequestError.js.map +3 -3
- package/dist/cjs/errors/ForbiddenError.js +5 -16
- package/dist/cjs/errors/ForbiddenError.js.map +3 -3
- package/dist/cjs/errors/HttpError.js +2 -4
- package/dist/cjs/errors/HttpError.js.map +1 -1
- package/dist/cjs/errors/InternalServerError.js +5 -16
- package/dist/cjs/errors/InternalServerError.js.map +3 -3
- package/dist/cjs/errors/NotFoundError.js +5 -16
- package/dist/cjs/errors/NotFoundError.js.map +3 -3
- package/dist/cjs/errors/UnauthorizedError.js +5 -16
- package/dist/cjs/errors/UnauthorizedError.js.map +3 -3
- package/dist/cjs/errors/index.js +13 -64
- package/dist/cjs/errors/index.js.map +3 -3
- package/dist/cjs/filters/CacheFilter.js +11 -13
- package/dist/cjs/filters/CacheFilter.js.map +2 -2
- package/dist/cjs/filters/Filter.js +0 -2
- package/dist/cjs/filters/Filter.js.map +1 -1
- package/dist/cjs/filters/HttpStatusFilter.js +2 -4
- package/dist/cjs/filters/HttpStatusFilter.js.map +1 -1
- package/dist/cjs/filters/OpenApi3Filter.js +7 -20
- package/dist/cjs/filters/OpenApi3Filter.js.map +3 -3
- package/dist/cjs/filters/ResourceFilter.js +7 -7
- package/dist/cjs/filters/ResourceFilter.js.map +1 -1
- package/dist/cjs/filters/ThrowFilter.js +2 -4
- package/dist/cjs/filters/ThrowFilter.js.map +1 -1
- package/dist/cjs/filters/index.js +13 -299
- package/dist/cjs/filters/index.js.map +4 -4
- package/dist/cjs/index.js +2 -1734
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/inject/InjectSituationType.js +0 -2
- package/dist/cjs/inject/InjectSituationType.js.map +1 -1
- package/dist/cjs/inject/index.js +3 -16
- package/dist/cjs/inject/index.js.map +4 -4
- package/dist/cjs/lifecycle/OnInit.js +0 -2
- package/dist/cjs/lifecycle/OnInit.js.map +1 -1
- package/dist/cjs/lifecycle/index.js +6 -2
- package/dist/cjs/lifecycle/index.js.map +1 -1
- package/dist/cjs/models/RequestResponse.js +21 -33
- package/dist/cjs/models/RequestResponse.js.map +3 -3
- package/dist/cjs/models/datas/HeaderData.js +2 -4
- package/dist/cjs/models/datas/HeaderData.js.map +1 -1
- package/dist/cjs/models/datas/MultipartData.js +0 -2
- package/dist/cjs/models/datas/MultipartData.js.map +1 -1
- package/dist/cjs/models/datas/ReqHeader.js +2 -4
- package/dist/cjs/models/datas/ReqHeader.js.map +1 -1
- package/dist/cjs/models/datas/Resource.js +8 -480
- package/dist/cjs/models/datas/Resource.js.map +4 -4
- package/dist/cjs/models/datas/body/ReqFormUrlBody.js +2 -4
- package/dist/cjs/models/datas/body/ReqFormUrlBody.js.map +1 -1
- package/dist/cjs/models/datas/body/ReqJsonBody.js +2 -4
- package/dist/cjs/models/datas/body/ReqJsonBody.js.map +1 -1
- package/dist/cjs/models/datas/body/ReqMultipartFormBody.js +2 -4
- package/dist/cjs/models/datas/body/ReqMultipartFormBody.js.map +1 -1
- package/dist/cjs/models/index.js +19 -574
- package/dist/cjs/models/index.js.map +4 -4
- package/dist/cjs/models/method/patch/PatchJson.js +2 -4
- package/dist/cjs/models/method/patch/PatchJson.js.map +1 -1
- package/dist/cjs/option/HttpServerOption.js +3 -5
- package/dist/cjs/option/HttpServerOption.js.map +1 -1
- package/dist/cjs/option/index.js +3 -50
- package/dist/cjs/option/index.js.map +3 -3
- package/dist/cjs/resolvers/Resolver.js +0 -2
- package/dist/cjs/resolvers/Resolver.js.map +1 -1
- package/dist/cjs/resolvers/ResourceResolver.js +10 -538
- package/dist/cjs/resolvers/ResourceResolver.js.map +4 -4
- package/dist/cjs/resolvers/index.js +5 -552
- package/dist/cjs/resolvers/index.js.map +4 -4
- package/dist/cjs/session/SessionManager.js +4 -478
- package/dist/cjs/session/SessionManager.js.map +4 -4
- package/dist/cjs/session/index.js +3 -560
- package/dist/cjs/session/index.js.map +4 -4
- package/dist/esm/SimpleBootHttpServer.js +35 -656
- package/dist/esm/SimpleBootHttpServer.js.map +4 -4
- package/dist/esm/bundle-entry.js +13 -0
- package/dist/esm/bundle-entry.js.map +7 -0
- package/dist/esm/codes/HttpHeaders.js +42 -43
- package/dist/esm/codes/HttpHeaders.js.map +3 -3
- package/dist/esm/codes/HttpMethod.js +0 -1
- package/dist/esm/codes/HttpMethod.js.map +1 -1
- package/dist/esm/codes/HttpStatus.js +0 -1
- package/dist/esm/codes/HttpStatus.js.map +1 -1
- package/dist/esm/codes/Mimes.js +0 -1
- package/dist/esm/codes/Mimes.js.map +1 -1
- package/dist/esm/codes/index.js +4 -115
- package/dist/esm/codes/index.js.map +4 -4
- package/dist/esm/decorators/MethodMapping.js +51 -52
- package/dist/esm/decorators/MethodMapping.js.map +2 -2
- package/dist/esm/decorators/index.js +1 -210
- package/dist/esm/decorators/index.js.map +4 -4
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js +7 -7
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js.map +1 -1
- package/dist/esm/endpoints/HeaderEndPoint.js +2 -3
- package/dist/esm/endpoints/HeaderEndPoint.js.map +1 -1
- package/dist/esm/endpoints/index.js +3 -45
- package/dist/esm/endpoints/index.js.map +3 -3
- package/dist/esm/errors/BadRequestError.js +5 -13
- package/dist/esm/errors/BadRequestError.js.map +3 -3
- package/dist/esm/errors/ForbiddenError.js +5 -13
- package/dist/esm/errors/ForbiddenError.js.map +3 -3
- package/dist/esm/errors/HttpError.js +2 -3
- package/dist/esm/errors/HttpError.js.map +1 -1
- package/dist/esm/errors/InternalServerError.js +5 -13
- package/dist/esm/errors/InternalServerError.js.map +3 -3
- package/dist/esm/errors/NotFoundError.js +5 -13
- package/dist/esm/errors/NotFoundError.js.map +3 -3
- package/dist/esm/errors/UnauthorizedError.js +5 -13
- package/dist/esm/errors/UnauthorizedError.js.map +3 -3
- package/dist/esm/errors/index.js +6 -51
- package/dist/esm/errors/index.js.map +3 -3
- package/dist/esm/filters/CacheFilter.js +11 -12
- package/dist/esm/filters/CacheFilter.js.map +2 -2
- package/dist/esm/filters/HttpStatusFilter.js +2 -3
- package/dist/esm/filters/HttpStatusFilter.js.map +1 -1
- package/dist/esm/filters/OpenApi3Filter.js +6 -16
- package/dist/esm/filters/OpenApi3Filter.js.map +3 -3
- package/dist/esm/filters/ResourceFilter.js +7 -6
- package/dist/esm/filters/ResourceFilter.js.map +1 -1
- package/dist/esm/filters/ThrowFilter.js +2 -3
- package/dist/esm/filters/ThrowFilter.js.map +1 -1
- package/dist/esm/filters/index.js +6 -277
- package/dist/esm/filters/index.js.map +4 -4
- package/dist/esm/index.js +2 -1659
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/inject/InjectSituationType.js +0 -1
- package/dist/esm/inject/InjectSituationType.js.map +1 -1
- package/dist/esm/inject/index.js +1 -8
- package/dist/esm/inject/index.js.map +4 -4
- package/dist/esm/lifecycle/index.js +1 -0
- package/dist/esm/lifecycle/index.js.map +3 -3
- package/dist/esm/models/RequestResponse.js +18 -29
- package/dist/esm/models/RequestResponse.js.map +3 -3
- package/dist/esm/models/datas/HeaderData.js +2 -3
- package/dist/esm/models/datas/HeaderData.js.map +1 -1
- package/dist/esm/models/datas/ReqHeader.js +2 -3
- package/dist/esm/models/datas/ReqHeader.js.map +1 -1
- package/dist/esm/models/datas/Resource.js +7 -478
- package/dist/esm/models/datas/Resource.js.map +4 -4
- package/dist/esm/models/datas/body/ReqFormUrlBody.js +2 -3
- package/dist/esm/models/datas/body/ReqFormUrlBody.js.map +1 -1
- package/dist/esm/models/datas/body/ReqJsonBody.js +2 -3
- package/dist/esm/models/datas/body/ReqJsonBody.js.map +1 -1
- package/dist/esm/models/datas/body/ReqMultipartFormBody.js +2 -3
- package/dist/esm/models/datas/body/ReqMultipartFormBody.js.map +1 -1
- package/dist/esm/models/index.js +9 -548
- package/dist/esm/models/index.js.map +4 -4
- package/dist/esm/models/method/patch/PatchJson.js +2 -3
- package/dist/esm/models/method/patch/PatchJson.js.map +1 -1
- package/dist/esm/option/HttpServerOption.js +3 -4
- package/dist/esm/option/HttpServerOption.js.map +1 -1
- package/dist/esm/option/index.js +1 -42
- package/dist/esm/option/index.js.map +3 -3
- package/dist/esm/resolvers/ResourceResolver.js +8 -526
- package/dist/esm/resolvers/ResourceResolver.js.map +4 -4
- package/dist/esm/resolvers/index.js +2 -537
- package/dist/esm/resolvers/index.js.map +4 -4
- package/dist/esm/session/SessionManager.js +3 -476
- package/dist/esm/session/SessionManager.js.map +3 -3
- package/dist/esm/session/index.js +1 -552
- package/dist/esm/session/index.js.map +3 -3
- package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +14976 -1243
- package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
- package/dist/{cjs → types}/SimpleBootHttpServer.d.ts +2 -1
- package/dist/types/SimpleBootHttpServer.d.ts.map +1 -0
- package/dist/{cjs/index.d.ts → types/bundle-entry.d.ts} +2 -2
- package/dist/types/bundle-entry.d.ts.map +1 -0
- package/dist/types/codes/HttpHeaders.d.ts +43 -0
- package/dist/types/codes/HttpHeaders.d.ts.map +1 -0
- package/dist/{cjs → types}/decorators/MethodMapping.d.ts +0 -1
- package/dist/types/decorators/MethodMapping.d.ts.map +1 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{esm → types}/models/RequestResponse.d.ts +7 -7
- package/dist/types/models/RequestResponse.d.ts.map +1 -0
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +15140 -1433
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
- package/package.json +36 -22
- package/src/SimpleBootHttpServer.ts +330 -0
- package/{dist/esm/index.d.ts → src/bundle-entry.ts} +1 -2
- package/src/codes/HttpHeaders.ts +43 -0
- package/src/codes/HttpMethod.ts +11 -0
- package/{dist/esm/codes/HttpStatus.d.ts → src/codes/HttpStatus.ts} +2 -2
- package/src/codes/Mimes.ts +27 -0
- package/{dist/esm/codes/index.d.ts → src/codes/index.ts} +0 -1
- package/src/decorators/MethodMapping.ts +233 -0
- package/src/decorators/index.ts +1 -0
- package/src/endpoints/CrossDomainHeaderEndPoint.ts +38 -0
- package/src/endpoints/EndPoint.ts +7 -0
- package/src/endpoints/HeaderEndPoint.ts +17 -0
- package/{dist/esm/endpoints/index.d.ts → src/endpoints/index.ts} +0 -1
- package/src/errors/BadRequestError.ts +8 -0
- package/src/errors/ForbiddenError.ts +8 -0
- package/src/errors/HttpError.ts +14 -0
- package/src/errors/InternalServerError.ts +8 -0
- package/src/errors/NotFoundError.ts +8 -0
- package/src/errors/UnauthorizedError.ts +8 -0
- package/{dist/esm/errors/index.d.ts → src/errors/index.ts} +0 -1
- package/src/filters/CacheFilter.ts +169 -0
- package/src/filters/Filter.ts +10 -0
- package/src/filters/HttpStatusFilter.ts +24 -0
- package/src/filters/OpenApi3Filter.ts +158 -0
- package/src/filters/ResourceFilter.ts +72 -0
- package/src/filters/ThrowFilter.ts +23 -0
- package/{dist/esm/filters/index.d.ts → src/filters/index.ts} +0 -1
- package/src/index.ts +13 -0
- package/src/inject/InjectSituationType.ts +3 -0
- package/{dist/esm/inject/index.d.ts → src/inject/index.ts} +0 -1
- package/src/lifecycle/OnInit.ts +5 -0
- package/src/lifecycle/index.ts +1 -0
- package/src/models/RequestResponse.ts +658 -0
- package/src/models/datas/HeaderData.ts +4 -0
- package/src/models/datas/MultipartData.ts +27 -0
- package/{dist/esm/models/datas/ReqHeader.d.ts → src/models/datas/ReqHeader.ts} +5 -4
- package/src/models/datas/Resource.ts +44 -0
- package/src/models/datas/body/ReqFormUrlBody.ts +3 -0
- package/src/models/datas/body/ReqJsonBody.ts +3 -0
- package/src/models/datas/body/ReqMultipartFormBody.ts +6 -0
- package/{dist/esm/models/index.d.ts → src/models/index.ts} +0 -1
- package/src/models/method/patch/PatchJson.ts +46 -0
- package/src/option/HttpServerOption.ts +81 -0
- package/{dist/esm/option/index.d.ts → src/option/index.ts} +0 -1
- package/src/resolvers/Resolver.ts +5 -0
- package/src/resolvers/ResourceResolver.ts +11 -0
- package/{dist/esm/resolvers/index.d.ts → src/resolvers/index.ts} +0 -1
- package/src/session/SessionManager.ts +89 -0
- package/src/session/index.ts +1 -0
- package/tsconfig.json +23 -0
- package/dist/cjs/SimpleBootHttpServer.d.ts.map +0 -1
- package/dist/cjs/codes/HttpHeaders.d.ts +0 -42
- package/dist/cjs/codes/HttpHeaders.d.ts.map +0 -1
- package/dist/cjs/decorators/MethodMapping.d.ts.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/models/RequestResponse.d.ts +0 -100
- package/dist/cjs/models/RequestResponse.d.ts.map +0 -1
- package/dist/cjs/package.json +0 -3
- package/dist/esm/SimpleBootHttpServer.d.ts +0 -14
- package/dist/esm/SimpleBootHttpServer.d.ts.map +0 -1
- package/dist/esm/codes/HttpHeaders.d.ts +0 -42
- package/dist/esm/codes/HttpHeaders.d.ts.map +0 -1
- package/dist/esm/codes/HttpMethod.d.ts +0 -12
- package/dist/esm/codes/HttpMethod.d.ts.map +0 -1
- package/dist/esm/codes/HttpStatus.d.ts.map +0 -1
- package/dist/esm/codes/Mimes.d.ts +0 -28
- package/dist/esm/codes/Mimes.d.ts.map +0 -1
- package/dist/esm/codes/index.d.ts.map +0 -1
- package/dist/esm/decorators/MethodMapping.d.ts +0 -74
- package/dist/esm/decorators/MethodMapping.d.ts.map +0 -1
- package/dist/esm/decorators/index.d.ts +0 -2
- package/dist/esm/decorators/index.d.ts.map +0 -1
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -16
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -1
- package/dist/esm/endpoints/EndPoint.d.ts +0 -7
- package/dist/esm/endpoints/EndPoint.d.ts.map +0 -1
- package/dist/esm/endpoints/HeaderEndPoint.d.ts +0 -12
- package/dist/esm/endpoints/HeaderEndPoint.d.ts.map +0 -1
- package/dist/esm/endpoints/index.d.ts.map +0 -1
- package/dist/esm/errors/BadRequestError.d.ts +0 -8
- package/dist/esm/errors/BadRequestError.d.ts.map +0 -1
- package/dist/esm/errors/ForbiddenError.d.ts +0 -8
- package/dist/esm/errors/ForbiddenError.d.ts.map +0 -1
- package/dist/esm/errors/HttpError.d.ts +0 -12
- package/dist/esm/errors/HttpError.d.ts.map +0 -1
- package/dist/esm/errors/InternalServerError.d.ts +0 -8
- package/dist/esm/errors/InternalServerError.d.ts.map +0 -1
- package/dist/esm/errors/NotFoundError.d.ts +0 -8
- package/dist/esm/errors/NotFoundError.d.ts.map +0 -1
- package/dist/esm/errors/UnauthorizedError.d.ts +0 -8
- package/dist/esm/errors/UnauthorizedError.d.ts.map +0 -1
- package/dist/esm/errors/index.d.ts.map +0 -1
- package/dist/esm/filters/CacheFilter.d.ts +0 -45
- package/dist/esm/filters/CacheFilter.d.ts.map +0 -1
- package/dist/esm/filters/Filter.d.ts +0 -17
- package/dist/esm/filters/Filter.d.ts.map +0 -1
- package/dist/esm/filters/HttpStatusFilter.d.ts +0 -20
- package/dist/esm/filters/HttpStatusFilter.d.ts.map +0 -1
- package/dist/esm/filters/OpenApi3Filter.d.ts +0 -142
- package/dist/esm/filters/OpenApi3Filter.d.ts.map +0 -1
- package/dist/esm/filters/ResourceFilter.d.ts +0 -24
- package/dist/esm/filters/ResourceFilter.d.ts.map +0 -1
- package/dist/esm/filters/ThrowFilter.d.ts +0 -19
- package/dist/esm/filters/ThrowFilter.d.ts.map +0 -1
- package/dist/esm/filters/index.d.ts.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/inject/InjectSituationType.d.ts +0 -4
- package/dist/esm/inject/InjectSituationType.d.ts.map +0 -1
- package/dist/esm/inject/index.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnInit.d.ts +0 -5
- package/dist/esm/lifecycle/OnInit.d.ts.map +0 -1
- package/dist/esm/lifecycle/index.d.ts +0 -2
- package/dist/esm/lifecycle/index.d.ts.map +0 -1
- package/dist/esm/models/RequestResponse.d.ts.map +0 -1
- package/dist/esm/models/datas/HeaderData.d.ts +0 -10
- package/dist/esm/models/datas/HeaderData.d.ts.map +0 -1
- package/dist/esm/models/datas/MultipartData.d.ts +0 -12
- package/dist/esm/models/datas/MultipartData.d.ts.map +0 -1
- package/dist/esm/models/datas/ReqHeader.d.ts.map +0 -1
- package/dist/esm/models/datas/Resource.d.ts +0 -11
- package/dist/esm/models/datas/Resource.d.ts.map +0 -1
- package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts +0 -4
- package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts.map +0 -1
- package/dist/esm/models/datas/body/ReqJsonBody.d.ts +0 -4
- package/dist/esm/models/datas/body/ReqJsonBody.d.ts.map +0 -1
- package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts +0 -6
- package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -1
- package/dist/esm/models/index.d.ts.map +0 -1
- package/dist/esm/models/method/patch/PatchJson.d.ts +0 -8
- package/dist/esm/models/method/patch/PatchJson.d.ts.map +0 -1
- package/dist/esm/option/HttpServerOption.d.ts +0 -83
- package/dist/esm/option/HttpServerOption.d.ts.map +0 -1
- package/dist/esm/option/index.d.ts.map +0 -1
- package/dist/esm/resolvers/Resolver.d.ts +0 -5
- package/dist/esm/resolvers/Resolver.d.ts.map +0 -1
- package/dist/esm/resolvers/ResourceResolver.d.ts +0 -6
- package/dist/esm/resolvers/ResourceResolver.d.ts.map +0 -1
- package/dist/esm/resolvers/index.d.ts.map +0 -1
- package/dist/esm/session/SessionManager.d.ts +0 -57
- package/dist/esm/session/SessionManager.d.ts.map +0 -1
- package/dist/esm/session/index.d.ts +0 -2
- package/dist/esm/session/index.d.ts.map +0 -1
- /package/dist/{cjs → types}/codes/HttpMethod.d.ts +0 -0
- /package/dist/{cjs → types}/codes/HttpMethod.d.ts.map +0 -0
- /package/dist/{cjs → types}/codes/HttpStatus.d.ts +0 -0
- /package/dist/{cjs → types}/codes/HttpStatus.d.ts.map +0 -0
- /package/dist/{cjs → types}/codes/Mimes.d.ts +0 -0
- /package/dist/{cjs → types}/codes/Mimes.d.ts.map +0 -0
- /package/dist/{cjs → types}/codes/index.d.ts +0 -0
- /package/dist/{cjs → types}/codes/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/decorators/index.d.ts +0 -0
- /package/dist/{cjs → types}/decorators/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/endpoints/CrossDomainHeaderEndPoint.d.ts +0 -0
- /package/dist/{cjs → types}/endpoints/CrossDomainHeaderEndPoint.d.ts.map +0 -0
- /package/dist/{cjs → types}/endpoints/EndPoint.d.ts +0 -0
- /package/dist/{cjs → types}/endpoints/EndPoint.d.ts.map +0 -0
- /package/dist/{cjs → types}/endpoints/HeaderEndPoint.d.ts +0 -0
- /package/dist/{cjs → types}/endpoints/HeaderEndPoint.d.ts.map +0 -0
- /package/dist/{cjs → types}/endpoints/index.d.ts +0 -0
- /package/dist/{cjs → types}/endpoints/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/BadRequestError.d.ts +0 -0
- /package/dist/{cjs → types}/errors/BadRequestError.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/ForbiddenError.d.ts +0 -0
- /package/dist/{cjs → types}/errors/ForbiddenError.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/HttpError.d.ts +0 -0
- /package/dist/{cjs → types}/errors/HttpError.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/InternalServerError.d.ts +0 -0
- /package/dist/{cjs → types}/errors/InternalServerError.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/NotFoundError.d.ts +0 -0
- /package/dist/{cjs → types}/errors/NotFoundError.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/UnauthorizedError.d.ts +0 -0
- /package/dist/{cjs → types}/errors/UnauthorizedError.d.ts.map +0 -0
- /package/dist/{cjs → types}/errors/index.d.ts +0 -0
- /package/dist/{cjs → types}/errors/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/CacheFilter.d.ts +0 -0
- /package/dist/{cjs → types}/filters/CacheFilter.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/Filter.d.ts +0 -0
- /package/dist/{cjs → types}/filters/Filter.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/HttpStatusFilter.d.ts +0 -0
- /package/dist/{cjs → types}/filters/HttpStatusFilter.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/OpenApi3Filter.d.ts +0 -0
- /package/dist/{cjs → types}/filters/OpenApi3Filter.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/ResourceFilter.d.ts +0 -0
- /package/dist/{cjs → types}/filters/ResourceFilter.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/ThrowFilter.d.ts +0 -0
- /package/dist/{cjs → types}/filters/ThrowFilter.d.ts.map +0 -0
- /package/dist/{cjs → types}/filters/index.d.ts +0 -0
- /package/dist/{cjs → types}/filters/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/inject/InjectSituationType.d.ts +0 -0
- /package/dist/{cjs → types}/inject/InjectSituationType.d.ts.map +0 -0
- /package/dist/{cjs → types}/inject/index.d.ts +0 -0
- /package/dist/{cjs → types}/inject/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnInit.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnInit.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/index.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/HeaderData.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/HeaderData.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/MultipartData.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/MultipartData.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/ReqHeader.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/ReqHeader.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/Resource.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/Resource.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/body/ReqFormUrlBody.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/body/ReqFormUrlBody.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/body/ReqJsonBody.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/body/ReqJsonBody.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/datas/body/ReqMultipartFormBody.d.ts +0 -0
- /package/dist/{cjs → types}/models/datas/body/ReqMultipartFormBody.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/index.d.ts +0 -0
- /package/dist/{cjs → types}/models/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/models/method/patch/PatchJson.d.ts +0 -0
- /package/dist/{cjs → types}/models/method/patch/PatchJson.d.ts.map +0 -0
- /package/dist/{cjs → types}/option/HttpServerOption.d.ts +0 -0
- /package/dist/{cjs → types}/option/HttpServerOption.d.ts.map +0 -0
- /package/dist/{cjs → types}/option/index.d.ts +0 -0
- /package/dist/{cjs → types}/option/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/resolvers/Resolver.d.ts +0 -0
- /package/dist/{cjs → types}/resolvers/Resolver.d.ts.map +0 -0
- /package/dist/{cjs → types}/resolvers/ResourceResolver.d.ts +0 -0
- /package/dist/{cjs → types}/resolvers/ResourceResolver.d.ts.map +0 -0
- /package/dist/{cjs → types}/resolvers/index.d.ts +0 -0
- /package/dist/{cjs → types}/resolvers/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/session/SessionManager.d.ts +0 -0
- /package/dist/{cjs → types}/session/SessionManager.d.ts.map +0 -0
- /package/dist/{cjs → types}/session/index.d.ts +0 -0
- /package/dist/{cjs → types}/session/index.d.ts.map +0 -0
package/package.json
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dooboostore/simple-boot-http-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.20",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
7
7
|
"module": "./dist/esm/index.js",
|
|
8
|
-
"types": "./dist/
|
|
8
|
+
"types": "./dist/types/index.d.ts",
|
|
9
|
+
"typesVersions": {
|
|
10
|
+
">=4.2": {
|
|
11
|
+
"*": [
|
|
12
|
+
"dist/types/*"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
9
16
|
"description": "back end http server frameworks",
|
|
10
17
|
"files": [
|
|
11
|
-
"dist"
|
|
18
|
+
"dist",
|
|
19
|
+
"src",
|
|
20
|
+
"LICENSE.md",
|
|
21
|
+
"tsconfig.json"
|
|
12
22
|
],
|
|
13
23
|
"keywords": [
|
|
14
24
|
"front",
|
|
@@ -19,21 +29,21 @@
|
|
|
19
29
|
"framwork",
|
|
20
30
|
"node"
|
|
21
31
|
],
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
22
35
|
"exports": {
|
|
23
36
|
".": {
|
|
24
|
-
"types": "./dist/
|
|
37
|
+
"types": "./dist/types/index.d.ts",
|
|
25
38
|
"import": "./dist/esm/index.js",
|
|
26
39
|
"require": "./dist/cjs/index.js"
|
|
27
40
|
},
|
|
28
41
|
"./*": {
|
|
29
|
-
"types": "./dist/
|
|
42
|
+
"types": "./dist/types/*.d.ts",
|
|
30
43
|
"import": "./dist/esm/*.js",
|
|
31
44
|
"require": "./dist/cjs/*.js"
|
|
32
45
|
}
|
|
33
46
|
},
|
|
34
|
-
"publishConfig": {
|
|
35
|
-
"access": "public"
|
|
36
|
-
},
|
|
37
47
|
"author": "dooboostore <dooboostore@gmail.com> (https://github.com/dooboostore)",
|
|
38
48
|
"contributors": [
|
|
39
49
|
"sewoo <sewooimda@nate.com> (https://github.com/sewoo)",
|
|
@@ -51,16 +61,18 @@
|
|
|
51
61
|
"type": "git",
|
|
52
62
|
"url": "https://github.com/dooboostore-develop/packages"
|
|
53
63
|
},
|
|
54
|
-
"
|
|
64
|
+
"peerDependencies": {
|
|
55
65
|
"reflect-metadata": "^0.2.2",
|
|
66
|
+
"@dooboostore/core": "1.0.21",
|
|
67
|
+
"@dooboostore/simple-boot": "1.0.49",
|
|
68
|
+
"@dooboostore/core-node": "1.0.7",
|
|
69
|
+
"@dooboostore/dom-render": "1.0.108",
|
|
70
|
+
"@dooboostore/core-web": "1.0.6"
|
|
71
|
+
},
|
|
72
|
+
"dependencies": {
|
|
56
73
|
"fast-json-patch": "^3.1.0",
|
|
57
74
|
"mime-types": "^2.1.34",
|
|
58
|
-
"node-gzip": "^1.1.2"
|
|
59
|
-
"@dooboostore/core": "1.0.17",
|
|
60
|
-
"@dooboostore/core-node": "1.0.5",
|
|
61
|
-
"@dooboostore/core-web": "1.0.4",
|
|
62
|
-
"@dooboostore/simple-boot": "1.0.47",
|
|
63
|
-
"@dooboostore/dom-render": "1.0.106"
|
|
75
|
+
"node-gzip": "^1.1.2"
|
|
64
76
|
},
|
|
65
77
|
"devDependencies": {
|
|
66
78
|
"@babel/core": "^7.24.0",
|
|
@@ -82,20 +94,22 @@
|
|
|
82
94
|
"@types/node": "^20",
|
|
83
95
|
"typescript": "^5.9.2",
|
|
84
96
|
"@types/node-gzip": "^1.1.0",
|
|
97
|
+
"esbuild-plugin-tsc": "^0.5.0",
|
|
85
98
|
"esbuild": "^0.23.0"
|
|
86
99
|
},
|
|
87
100
|
"scripts": {
|
|
88
101
|
"clean": "rm -rf dist",
|
|
89
|
-
"build:esm": "node build.mjs esm
|
|
90
|
-
"watch:esm": "node build.mjs esm --watch",
|
|
91
|
-
"build:cjs": "node build.mjs cjs &&
|
|
92
|
-
"watch:cjs": "node build.mjs cjs --watch",
|
|
93
|
-
"build": "
|
|
102
|
+
"build:esm": "node build.mjs esm",
|
|
103
|
+
"watch:esm": "pnpm run build:esm && node build.mjs esm --watch",
|
|
104
|
+
"build:cjs": "node build.mjs cjs && cp package.cjs.json dist/cjs/package.json",
|
|
105
|
+
"watch:cjs": "pnpm run build:cjs && node build.mjs cjs --watch",
|
|
106
|
+
"build": "pnpm run clean && node build.mjs all",
|
|
94
107
|
"build:umd-bundle": "node build.mjs umd-bundle",
|
|
95
|
-
"watch:umd": "node build.mjs umd-bundle --watch",
|
|
108
|
+
"watch:umd-bundle": "pnpm run build:umd-bundle && node build.mjs umd-bundle --watch",
|
|
96
109
|
"build:esm-bundle": "node build.mjs esm-bundle",
|
|
97
|
-
"watch:esm-bundle": "node build.mjs esm-bundle --watch",
|
|
110
|
+
"watch:esm-bundle": "pnpm run build:esm-bundle && node build.mjs esm-bundle --watch",
|
|
98
111
|
"publish:npm": "pnpm run build && cp package.json package.json.back && pnpm pack && TARBALL_NAME=$(ls dooboostore-simple-boot-http-server-*.tgz | head -n 1) && tar -xzf \"$TARBALL_NAME\" -C . --strip-components=1 package/package.json && rm \"$TARBALL_NAME\" && (pnpm publish --no-git-checks || true) && cp package.json.back package.json && rm -rf package.json.back ",
|
|
112
|
+
"ts:clean": "find . -name '*.js' -o -name '*.map' -o -name '*.d.ts' | xargs rm -f",
|
|
99
113
|
"typecheck": "tsc --noEmit",
|
|
100
114
|
"test": "echo test"
|
|
101
115
|
}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';
|
|
2
|
+
import { HttpServerOption } from './option/HttpServerOption';
|
|
3
|
+
import { ConstructorType } from '@dooboostore/core/types';
|
|
4
|
+
import { IncomingMessage, Server as HttpServer, ServerResponse } from 'http'
|
|
5
|
+
import { Server as HttpsServer } from 'https'; // Add HTTPS support
|
|
6
|
+
import { RequestResponse } from './models/RequestResponse';
|
|
7
|
+
import { getUrlMapping, getUrlMappings, SaveMappingConfig, UrlMappingSituationType } from './decorators/MethodMapping';
|
|
8
|
+
import { HttpStatus } from './codes/HttpStatus';
|
|
9
|
+
import { HttpHeaders } from './codes/HttpHeaders';
|
|
10
|
+
import { Mimes } from './codes/Mimes';
|
|
11
|
+
import { Filter } from './filters/Filter';
|
|
12
|
+
import { SimstanceManager } from '@dooboostore/simple-boot/simstance/SimstanceManager';
|
|
13
|
+
import { ExceptionHandlerSituationType, targetExceptionHandler } from '@dooboostore/simple-boot/decorators/exception/ExceptionDecorator';
|
|
14
|
+
import { getInject, SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';
|
|
15
|
+
import { EndPoint } from './endpoints/EndPoint';
|
|
16
|
+
import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
|
|
17
|
+
import { ReqFormUrlBody } from './models/datas/body/ReqFormUrlBody';
|
|
18
|
+
import { ReqJsonBody } from './models/datas/body/ReqJsonBody';
|
|
19
|
+
import { ReqHeader } from './models/datas/ReqHeader';
|
|
20
|
+
import { RouterModule } from '@dooboostore/simple-boot/route/RouterModule';
|
|
21
|
+
import { ReqMultipartFormBody } from './models/datas/body/ReqMultipartFormBody';
|
|
22
|
+
import { execValidationInValid, getValidIndex } from '@dooboostore/simple-boot/decorators/validate/Validation';
|
|
23
|
+
import { ValidException } from '@dooboostore/simple-boot/errors/ValidException';
|
|
24
|
+
import { HttpError } from './errors/HttpError';
|
|
25
|
+
import { getRoute } from '@dooboostore/simple-boot/decorators/route/Router';
|
|
26
|
+
import { OnInit } from './lifecycle/OnInit';
|
|
27
|
+
import { URLSearchParams } from 'url';
|
|
28
|
+
import { HttpMethod } from './codes/HttpMethod';
|
|
29
|
+
import { SessionManager } from './session/SessionManager';
|
|
30
|
+
import { InjectSituationType } from './inject/InjectSituationType';
|
|
31
|
+
|
|
32
|
+
export class SimpleBootHttpServer extends SimpleApplication {
|
|
33
|
+
public server?: HttpServer | HttpsServer;
|
|
34
|
+
private sessionManager: SessionManager;
|
|
35
|
+
constructor(public option: HttpServerOption = new HttpServerOption()) {
|
|
36
|
+
super(option);
|
|
37
|
+
this.sessionManager = new SessionManager(this.option);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
public run(otherInstanceSim?: Map<ConstructorType<any>, any>) {
|
|
42
|
+
const simstanceManager = super.run(otherInstanceSim);
|
|
43
|
+
const targets = [...this.option.closeEndPoints ?? [], ...this.option.errorEndPoints ?? [], ...this.option.requestEndPoints ?? [], ...this.option.filters ?? []];
|
|
44
|
+
Promise.all(targets.map(it => (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it as ConstructorType<any>}) : it) as OnInit).map(it => it.onInit(this))).then(it => {
|
|
45
|
+
this.startServer();
|
|
46
|
+
});
|
|
47
|
+
return simstanceManager;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private startServer() {
|
|
51
|
+
|
|
52
|
+
// const a = this.option.serverOption as HttpsServerOption;
|
|
53
|
+
// this.option.serverOption?.
|
|
54
|
+
|
|
55
|
+
if (this.option.serverOption && 'key' in this.option.serverOption && 'cert' in this.option.serverOption) {
|
|
56
|
+
this.server = new HttpsServer(this.option.serverOption);
|
|
57
|
+
const httpServer = new HttpServer();
|
|
58
|
+
httpServer.on('request', (req: IncomingMessage, res: ServerResponse) => {
|
|
59
|
+
res.writeHead(301, { Location: `https://${req.headers.host}${req.url}` });
|
|
60
|
+
res.end();
|
|
61
|
+
});
|
|
62
|
+
httpServer.listen(80, this.option.listen.hostname, () => {
|
|
63
|
+
console.log('HTTP redirect server running on port 80');
|
|
64
|
+
});
|
|
65
|
+
} else if (this.option.serverOption) {
|
|
66
|
+
this.server = new HttpServer(this.option.serverOption);
|
|
67
|
+
} else {
|
|
68
|
+
this.server = new HttpServer();
|
|
69
|
+
}
|
|
70
|
+
// const thisRef = this;
|
|
71
|
+
this.server.on('request', async (req: IncomingMessage, res: ServerResponse) => {
|
|
72
|
+
// console.log('request', req.url);
|
|
73
|
+
const transactionManager = this.option.transactionManagerFactory ? await this.option.transactionManagerFactory() : undefined;
|
|
74
|
+
res.on('close', async () => {
|
|
75
|
+
if (this.option.closeEndPoints) {
|
|
76
|
+
for (const it of this.option.closeEndPoints) {
|
|
77
|
+
try {
|
|
78
|
+
const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;
|
|
79
|
+
const endPoint = execute?.endPoint(rr, this);
|
|
80
|
+
if (endPoint instanceof Promise) {
|
|
81
|
+
await endPoint;
|
|
82
|
+
}
|
|
83
|
+
} catch (e) {
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!rr.resIsDone()) {
|
|
89
|
+
rr.resEnd();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
res.on('error', async () => {
|
|
93
|
+
if (this.option.errorEndPoints) {
|
|
94
|
+
for (const it of this.option.errorEndPoints) {
|
|
95
|
+
try {
|
|
96
|
+
const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as EndPoint;
|
|
97
|
+
const endPoint = execute?.endPoint(rr, this);
|
|
98
|
+
if (endPoint instanceof Promise) {
|
|
99
|
+
await endPoint;
|
|
100
|
+
}
|
|
101
|
+
} catch (e) {
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (!rr.resIsDone()) {
|
|
107
|
+
rr.resEnd();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const rr = new RequestResponse(req, res,{sessionManager: this.sessionManager, option: this.option});
|
|
112
|
+
/*
|
|
113
|
+
default setting first
|
|
114
|
+
*/
|
|
115
|
+
rr.resSetHeader(HttpHeaders.Server, 'simple-boot-http-server');
|
|
116
|
+
const cookie = rr.reqCookieGet(this.option.sessionOption.key);
|
|
117
|
+
if (!cookie) {
|
|
118
|
+
const session = await this.sessionManager.session();
|
|
119
|
+
rr.resSetHeader(HttpHeaders.SetCookie, `${this.option.sessionOption.key}=${session.uuid}; Path=/; HttpOnly`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const otherStorage = new Map<ConstructorType<any>, any>();
|
|
123
|
+
otherStorage.set(RequestResponse, rr);
|
|
124
|
+
otherStorage.set(IncomingMessage, req);
|
|
125
|
+
otherStorage.set(ServerResponse, res);
|
|
126
|
+
try {
|
|
127
|
+
transactionManager?.try();
|
|
128
|
+
if (this.option.requestEndPoints) {
|
|
129
|
+
for (const it of this.option.requestEndPoints) {
|
|
130
|
+
try {
|
|
131
|
+
const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim<EndPoint>({target:it}) : it) as EndPoint;
|
|
132
|
+
execute?.endPoint(rr, this);
|
|
133
|
+
} catch (e) {
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const filter = {
|
|
139
|
+
carrier: new Map<string, any>(),
|
|
140
|
+
filters: [] as { filter: Filter, sw: boolean }[]
|
|
141
|
+
};
|
|
142
|
+
for (let i = 0; this.option.filters && i < this.option.filters.length; i++) {
|
|
143
|
+
const it = this.option.filters[i];
|
|
144
|
+
const execute = (typeof it === 'function' ? this.simstanceManager.getOrNewSim({target:it}) : it) as Filter;
|
|
145
|
+
let sw = true;
|
|
146
|
+
if (execute?.proceedBefore) {
|
|
147
|
+
sw = await execute.proceedBefore({rr, app: this, carrier: filter.carrier});
|
|
148
|
+
filter.filters.push({filter: execute, sw});
|
|
149
|
+
}
|
|
150
|
+
if (!sw) {
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// body.. something..
|
|
156
|
+
if (!rr.resIsDone()) {
|
|
157
|
+
const routerModule = await super.routing(rr.reqIntent);
|
|
158
|
+
otherStorage.set(RouterModule, routerModule);
|
|
159
|
+
const moduleInstance = routerModule?.getModuleInstance?.();
|
|
160
|
+
let methods: SaveMappingConfig[] = [];
|
|
161
|
+
if (routerModule && moduleInstance) {
|
|
162
|
+
// router 클래스 내부에서 선언된 Route일때
|
|
163
|
+
if (routerModule.propertyKeys) {
|
|
164
|
+
const map = routerModule.propertyKeys?.map((it: string | symbol) => {
|
|
165
|
+
return {propertyKey: it, config: getUrlMapping(moduleInstance, it)} as SaveMappingConfig
|
|
166
|
+
});
|
|
167
|
+
methods.push(...(map ?? []));
|
|
168
|
+
} else {
|
|
169
|
+
methods.push(...(getUrlMappings(moduleInstance).filter(it => !getRoute(moduleInstance, it.propertyKey)) ?? []));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// options로 요청오면은 allow로 넣고 그냥 200처리해야됨.
|
|
173
|
+
if (rr.reqMethod()?.toUpperCase() === HttpMethod.OPTIONS.toUpperCase()) {
|
|
174
|
+
rr.resSetHeader(HttpHeaders.Allow, methods.map(it => it.config.method).join(', '));
|
|
175
|
+
rr.resStatusCode(HttpStatus.Ok);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// method 찾기
|
|
179
|
+
methods = methods.filter(it => it && it.propertyKey && it.config && rr.reqMethod()?.toUpperCase() === it.config.method.toUpperCase());
|
|
180
|
+
methods.sort((a, b) => {
|
|
181
|
+
return ((b.config?.req?.contentType?.length ?? 0) + (b.config?.req?.accept?.length ?? 0)) - ((a.config?.req?.contentType?.length ?? 0) + (a.config?.req?.accept?.length ?? 0));
|
|
182
|
+
});
|
|
183
|
+
methods = methods
|
|
184
|
+
.filter(it => it.config?.req?.contentType ? (!!it.config?.req?.contentType?.find(sit => rr.reqHasContentTypeHeader(sit))) : true)
|
|
185
|
+
.filter(it => it.config?.req?.accept ? (!!it.config?.req?.accept?.find(sit => rr.reqHasAcceptHeader(sit))) : true);
|
|
186
|
+
|
|
187
|
+
if (methods[0]) {
|
|
188
|
+
const it = methods[0];
|
|
189
|
+
const paramTypes = ReflectUtils.getParameterTypes(moduleInstance, it.propertyKey)
|
|
190
|
+
const injects = getInject(moduleInstance, it.propertyKey);
|
|
191
|
+
const validIndexs = getValidIndex(moduleInstance, it.propertyKey);
|
|
192
|
+
if (injects) {
|
|
193
|
+
const isJson = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_JSON_BODY);
|
|
194
|
+
const isFormUrl = injects.find(it => it.config?.situationType === UrlMappingSituationType.REQ_FORM_URL_BODY);
|
|
195
|
+
const isTransactionManager = injects.find(it => it.config?.situationType === InjectSituationType.TransactionManager);
|
|
196
|
+
const siturationContainers = new SituationTypeContainers();
|
|
197
|
+
if (isJson) {
|
|
198
|
+
let data = await rr.reqBodyJsonData()
|
|
199
|
+
if (isJson.type) {
|
|
200
|
+
data = Object.assign(new isJson.type(), data);
|
|
201
|
+
}
|
|
202
|
+
if (validIndexs.includes(isJson.index)) {
|
|
203
|
+
const inValid = execValidationInValid(data);
|
|
204
|
+
if ((inValid?.length ?? 0) > 0) {
|
|
205
|
+
throw new ValidException(inValid);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
siturationContainers.push(new SituationTypeContainer({
|
|
209
|
+
situationType: UrlMappingSituationType.REQ_JSON_BODY,
|
|
210
|
+
data
|
|
211
|
+
}));
|
|
212
|
+
}
|
|
213
|
+
if (isFormUrl) {
|
|
214
|
+
let data = await rr.reqBodyFormUrlData()
|
|
215
|
+
if (isFormUrl.type) {
|
|
216
|
+
data = Object.assign(new isFormUrl.type(), data);
|
|
217
|
+
}
|
|
218
|
+
if (validIndexs.includes(isFormUrl.index)) {
|
|
219
|
+
const inValid = execValidationInValid(data);
|
|
220
|
+
if ((inValid?.length ?? 0) > 0) {
|
|
221
|
+
throw new ValidException(inValid);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
siturationContainers.push(new SituationTypeContainer({situationType: UrlMappingSituationType.REQ_FORM_URL_BODY, data}));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (isTransactionManager && isTransactionManager.type && transactionManager && transactionManager.hasTransaction(isTransactionManager.type)) {
|
|
228
|
+
let data = await transactionManager.getTransaction(isTransactionManager.type);
|
|
229
|
+
if (data) {
|
|
230
|
+
data = await data.try(isTransactionManager.config.argument);
|
|
231
|
+
siturationContainers.push(new SituationTypeContainer({situationType: InjectSituationType.TransactionManager, data, index: isTransactionManager.index}));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (siturationContainers.length) {
|
|
235
|
+
otherStorage.set(SituationTypeContainers, siturationContainers);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
for (const paramType of paramTypes) {
|
|
240
|
+
if (paramType === ReqFormUrlBody) {
|
|
241
|
+
otherStorage.set(ReqFormUrlBody, await rr.reqBodyReqFormUrlBody())
|
|
242
|
+
} else if (paramType === ReqJsonBody) {
|
|
243
|
+
otherStorage.set(ReqJsonBody, await rr.reqBodyReqJsonBody())
|
|
244
|
+
} else if (paramType === URLSearchParams) {
|
|
245
|
+
otherStorage.set(URLSearchParams, rr.reqUrlSearchParams)
|
|
246
|
+
} else if (paramType === ReqMultipartFormBody) {
|
|
247
|
+
otherStorage.set(ReqMultipartFormBody, rr.reqBodyMultipartFormData())
|
|
248
|
+
} else if (paramType === ReqHeader) {
|
|
249
|
+
otherStorage.set(ReqHeader, rr.reqHeaderObj)
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// execute !!!
|
|
254
|
+
let data = await this.simstanceManager.executeBindParameterSimPromise({
|
|
255
|
+
target: moduleInstance,
|
|
256
|
+
targetKey: it.propertyKey
|
|
257
|
+
}, otherStorage);
|
|
258
|
+
/*
|
|
259
|
+
여기에서 정해진 타입 리턴에 따른 조치
|
|
260
|
+
...
|
|
261
|
+
*/
|
|
262
|
+
if (it.config?.resolver) {
|
|
263
|
+
const execute = typeof it.config.resolver === 'function' ? this.simstanceManager.getOrNewSim({target:it.config.resolver}) : it.config.resolver;
|
|
264
|
+
data = await execute?.resolve?.(data, rr);
|
|
265
|
+
}
|
|
266
|
+
const status = it.config?.res?.status ?? HttpStatus.Ok;
|
|
267
|
+
const headers = it.config?.res?.header ?? {};
|
|
268
|
+
if (it.config?.res?.contentType) {
|
|
269
|
+
headers[HttpHeaders.ContentType] = it.config?.res?.contentType;
|
|
270
|
+
}
|
|
271
|
+
if ((it.config?.res?.contentType?.toLowerCase().indexOf(Mimes.ApplicationJson.toLowerCase()) ?? -1) > -1) {
|
|
272
|
+
data = JSON.stringify(data);
|
|
273
|
+
} else if (data && typeof data === 'object') {
|
|
274
|
+
data = JSON.stringify(data);
|
|
275
|
+
}
|
|
276
|
+
rr.resSetHeaders(headers)
|
|
277
|
+
rr.resSetStatusCode(status);
|
|
278
|
+
rr.resWrite(data);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if (this.option.noSuchRouteEndPointMappingThrow && methods.length <= 0 && rr.reqMethod()?.toUpperCase() !== HttpMethod.OPTIONS) {
|
|
283
|
+
throw this.option.noSuchRouteEndPointMappingThrow(rr);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// after
|
|
288
|
+
for (const it of filter.filters.reverse()) {
|
|
289
|
+
if (it.filter?.proceedAfter && !await it.filter.proceedAfter({rr, app:this, before: it.sw, carrier: filter.carrier})) {
|
|
290
|
+
break;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
} catch (e) {
|
|
294
|
+
transactionManager?.catch(e);
|
|
295
|
+
rr.resStatusCode(e instanceof HttpError ? e.status : HttpStatus.InternalServerError)
|
|
296
|
+
const execute = typeof this.option.globalAdvice === 'function' ? this.simstanceManager.getOrNewSim(this.option.globalAdvice) : this.option.globalAdvice;
|
|
297
|
+
if (!execute) {
|
|
298
|
+
rr.resEnd();
|
|
299
|
+
// rr.resEnd().catch(e => {
|
|
300
|
+
// });
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (e && typeof e === 'object') {
|
|
304
|
+
otherStorage.set(e.constructor as ConstructorType<any>, e);
|
|
305
|
+
otherStorage.set(SituationTypeContainer, new SituationTypeContainer({
|
|
306
|
+
situationType: ExceptionHandlerSituationType.ERROR_OBJECT,
|
|
307
|
+
data: e
|
|
308
|
+
}));
|
|
309
|
+
}
|
|
310
|
+
const target = targetExceptionHandler(execute, e);
|
|
311
|
+
if (target) {
|
|
312
|
+
await this.simstanceManager.executeBindParameterSimPromise({
|
|
313
|
+
target: execute,
|
|
314
|
+
targetKey: target.propertyKey
|
|
315
|
+
}, otherStorage);
|
|
316
|
+
}
|
|
317
|
+
} finally {
|
|
318
|
+
transactionManager?.finally();
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
if (!rr.resIsDone()) {
|
|
322
|
+
rr.resEnd();
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
this.server.listen(this.option.listen.port, this.option.listen.hostname, this.option.listen.backlog, () => {
|
|
327
|
+
this.option.listen.listeningListener?.(this, this.server);
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './SimpleBootHttpServer';
|
|
2
1
|
export * from './codes';
|
|
3
2
|
export * from './decorators';
|
|
4
3
|
export * from './endpoints';
|
|
@@ -10,4 +9,4 @@ export * from './models';
|
|
|
10
9
|
export * from './option';
|
|
11
10
|
export * from './resolvers';
|
|
12
11
|
export * from './session';
|
|
13
|
-
|
|
12
|
+
export * from './SimpleBootHttpServer';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const HttpHeaders = {
|
|
2
|
+
ContentLength : 'Content-Length',
|
|
3
|
+
ContentType : 'Content-Type',
|
|
4
|
+
ContentEncoding : 'Content-Encoding',
|
|
5
|
+
Accept : 'Accept',
|
|
6
|
+
Authorization : 'Authorization',
|
|
7
|
+
CacheControl : 'Cache-Control',
|
|
8
|
+
Connection : 'Connection',
|
|
9
|
+
Date : 'Date',
|
|
10
|
+
Host : 'Host',
|
|
11
|
+
Pragma : 'Pragma',
|
|
12
|
+
Trailer : 'Trailer',
|
|
13
|
+
TransferEncoding : 'Transfer-Encoding',
|
|
14
|
+
Upgrade : 'Upgrade',
|
|
15
|
+
Via : 'Via',
|
|
16
|
+
Warning : 'Warning',
|
|
17
|
+
AcceptCharset : 'Accept-Charset',
|
|
18
|
+
AcceptEncoding : 'Accept-Encoding',
|
|
19
|
+
AcceptLanguage : 'Accept-Language',
|
|
20
|
+
AccessControlAllowOrigin : 'Access-Control-Allow-Origin',
|
|
21
|
+
AccessControlAllowMethods : 'Access-Control-Allow-Methods',
|
|
22
|
+
AccessControlAllowHeaders : 'Access-Control-Allow-Headers',
|
|
23
|
+
AccessControlExposeHeaders : 'Access-Control-Expose-Headers',
|
|
24
|
+
Expect : 'Expect',
|
|
25
|
+
From : 'From',
|
|
26
|
+
MaxForwards : 'Max-Forwards',
|
|
27
|
+
Referer : 'Referer',
|
|
28
|
+
UserAgent : 'User-Agent',
|
|
29
|
+
Cookie : 'Cookie',
|
|
30
|
+
SetCookie : 'Set-Cookie',
|
|
31
|
+
// SetHeader : 'Set-Header',
|
|
32
|
+
Cookie2 : 'Cookie2',
|
|
33
|
+
SetCookie2 : 'Set-Cookie2',
|
|
34
|
+
Location : 'Location',
|
|
35
|
+
IfModifiedSince : 'If-Modified-Since',
|
|
36
|
+
IfUnmodifiedSince : 'If-Unmodified-Since',
|
|
37
|
+
IfMatch : 'If-Match',
|
|
38
|
+
IfNoneMatch : 'If-None-Match',
|
|
39
|
+
IfRange : 'If-Range',
|
|
40
|
+
Allow : 'Allow',
|
|
41
|
+
Server : 'Server'
|
|
42
|
+
}
|
|
43
|
+
export type HttpHeadersType = keyof typeof HttpHeaders;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export
|
|
1
|
+
export enum HttpStatus {
|
|
2
2
|
Ok = 200,
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* HTTP 301 Moved Permanently 리디렉션 상태 응답 코드는 요청한 리소스가 Location 헤더에 주어진 URL로 완전히 옮겨졌다는 것을 나타냅니다. 브라우저는 이 페이지로 리디렉트하고, 검색 엔진은 해당 리소스로 연결되는 링크를 갱신합니다.
|
|
5
6
|
*/
|
|
@@ -42,4 +43,3 @@ export declare enum HttpStatus {
|
|
|
42
43
|
GatewayTimeout = 504,
|
|
43
44
|
HttpVersionNotSupported = 505
|
|
44
45
|
}
|
|
45
|
-
//# sourceMappingURL=HttpStatus.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export enum Mimes {
|
|
2
|
+
ApplicationJson = 'application/json',
|
|
3
|
+
ApplicationOctetStream = 'application/octet-stream',
|
|
4
|
+
ApplicationXml = 'application/xml',
|
|
5
|
+
ApplicationJsonPatch = 'application/json-patch+json',
|
|
6
|
+
ApplicationXWwwFormUrlencoded = 'application/x-www-form-urlencoded',
|
|
7
|
+
TextPlain = 'text/plain',
|
|
8
|
+
TextHtml = 'text/html',
|
|
9
|
+
All = '*/*',
|
|
10
|
+
TextCss = 'text/css',
|
|
11
|
+
TextJavascript = 'text/javascript',
|
|
12
|
+
TextXml = 'text/xml',
|
|
13
|
+
TextXslt = 'text/xslt',
|
|
14
|
+
TextXmlDtd = 'text/xml-dtd',
|
|
15
|
+
TextPlainUtf8 = 'text/plain; charset=utf-8',
|
|
16
|
+
ImagePng = 'image/png',
|
|
17
|
+
ImageGif = 'image/gif',
|
|
18
|
+
ImageJpeg = 'image/jpeg',
|
|
19
|
+
ImageSvg = 'image/svg+xml',
|
|
20
|
+
ImageBmp = 'image/bmp',
|
|
21
|
+
ImageTiff = 'image/tiff',
|
|
22
|
+
ImagePdf = 'application/pdf',
|
|
23
|
+
ImageXBmp = 'image/x-bmp',
|
|
24
|
+
ImageXpixmap = 'image/x-xpixmap',
|
|
25
|
+
ImageXxbm = 'image/x-xbm',
|
|
26
|
+
MultipartFormData = 'multipart/form-data',
|
|
27
|
+
}
|