@dooboostore/simple-boot-http-server 1.0.16 → 1.0.18
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.md +7 -0
- package/README.MD +6 -47
- package/dist/cjs/SimpleBootHttpServer.d.ts.map +1 -0
- package/dist/cjs/SimpleBootHttpServer.js +930 -0
- package/dist/cjs/SimpleBootHttpServer.js.map +7 -0
- package/dist/cjs/codes/HttpHeaders.d.ts.map +1 -0
- package/dist/cjs/codes/HttpHeaders.js +71 -0
- package/dist/cjs/codes/HttpHeaders.js.map +7 -0
- package/dist/cjs/codes/HttpMethod.d.ts.map +1 -0
- package/dist/cjs/codes/HttpMethod.js +41 -0
- package/dist/cjs/codes/HttpMethod.js.map +7 -0
- package/dist/cjs/codes/HttpStatus.d.ts +45 -0
- package/dist/cjs/codes/HttpStatus.d.ts.map +1 -0
- package/dist/cjs/codes/HttpStatus.js +49 -0
- package/dist/cjs/codes/HttpStatus.js.map +7 -0
- package/dist/cjs/codes/Mimes.d.ts.map +1 -0
- package/dist/cjs/codes/Mimes.js +57 -0
- package/dist/cjs/codes/Mimes.js.map +7 -0
- package/dist/cjs/codes/index.d.ts +5 -0
- package/dist/cjs/codes/index.d.ts.map +1 -0
- package/dist/cjs/codes/index.js +145 -0
- package/dist/cjs/codes/index.js.map +7 -0
- package/dist/cjs/decorators/MethodMapping.d.ts.map +1 -0
- package/dist/cjs/decorators/MethodMapping.js +265 -0
- package/dist/cjs/decorators/MethodMapping.js.map +7 -0
- package/dist/cjs/decorators/index.d.ts +2 -0
- package/dist/cjs/decorators/index.d.ts.map +1 -0
- package/dist/cjs/decorators/index.js +267 -0
- package/dist/cjs/decorators/index.js.map +7 -0
- package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.d.ts.map +1 -0
- package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js +55 -0
- package/dist/cjs/endpoints/CrossDomainHeaderEndPoint.js.map +7 -0
- package/dist/cjs/endpoints/EndPoint.d.ts.map +1 -0
- package/dist/cjs/endpoints/EndPoint.js +18 -0
- package/dist/cjs/endpoints/EndPoint.js.map +7 -0
- package/dist/cjs/endpoints/HeaderEndPoint.d.ts.map +1 -0
- package/dist/cjs/endpoints/HeaderEndPoint.js +41 -0
- package/dist/cjs/endpoints/HeaderEndPoint.js.map +7 -0
- package/dist/cjs/endpoints/index.d.ts +4 -0
- package/dist/cjs/endpoints/index.d.ts.map +1 -0
- package/dist/cjs/endpoints/index.js +73 -0
- package/dist/cjs/endpoints/index.js.map +7 -0
- package/dist/cjs/errors/BadRequestError.d.ts.map +1 -0
- package/dist/cjs/errors/BadRequestError.js +45 -0
- package/dist/cjs/errors/BadRequestError.js.map +7 -0
- package/dist/cjs/errors/ForbiddenError.d.ts.map +1 -0
- package/dist/cjs/errors/ForbiddenError.js +45 -0
- package/dist/cjs/errors/ForbiddenError.js.map +7 -0
- package/dist/cjs/errors/HttpError.d.ts.map +1 -0
- package/dist/cjs/errors/HttpError.js +36 -0
- package/dist/cjs/errors/HttpError.js.map +7 -0
- package/dist/cjs/errors/InternalServerError.d.ts.map +1 -0
- package/dist/cjs/errors/InternalServerError.js +45 -0
- package/dist/cjs/errors/InternalServerError.js.map +7 -0
- package/dist/cjs/errors/NotFoundError.d.ts.map +1 -0
- package/dist/cjs/errors/NotFoundError.js +45 -0
- package/dist/cjs/errors/NotFoundError.js.map +7 -0
- package/dist/cjs/errors/UnauthorizedError.d.ts.map +1 -0
- package/dist/cjs/errors/UnauthorizedError.js +45 -0
- package/dist/cjs/errors/UnauthorizedError.js.map +7 -0
- package/dist/cjs/errors/index.d.ts +7 -0
- package/dist/cjs/errors/index.d.ts.map +1 -0
- package/dist/cjs/errors/index.js +83 -0
- package/dist/cjs/errors/index.js.map +7 -0
- package/dist/cjs/filters/CacheFilter.d.ts.map +1 -0
- package/dist/cjs/filters/CacheFilter.js +153 -0
- package/dist/cjs/filters/CacheFilter.js.map +7 -0
- package/dist/cjs/filters/Filter.d.ts.map +1 -0
- package/dist/cjs/filters/Filter.js +18 -0
- package/dist/cjs/filters/Filter.js.map +7 -0
- package/dist/cjs/filters/HttpStatusFilter.d.ts.map +1 -0
- package/dist/cjs/filters/HttpStatusFilter.js +44 -0
- package/dist/cjs/filters/HttpStatusFilter.js.map +7 -0
- package/dist/cjs/filters/OpenApi3Filter.d.ts.map +1 -0
- package/dist/cjs/filters/OpenApi3Filter.js +83 -0
- package/dist/cjs/filters/OpenApi3Filter.js.map +7 -0
- package/dist/cjs/filters/ResourceFilter.d.ts.map +1 -0
- package/dist/cjs/filters/ResourceFilter.js +91 -0
- package/dist/cjs/filters/ResourceFilter.js.map +7 -0
- package/dist/cjs/filters/ThrowFilter.d.ts.map +1 -0
- package/dist/cjs/filters/ThrowFilter.js +47 -0
- package/dist/cjs/filters/ThrowFilter.js.map +7 -0
- package/dist/cjs/filters/index.d.ts +7 -0
- package/dist/cjs/filters/index.d.ts.map +1 -0
- package/dist/cjs/filters/index.js +318 -0
- package/dist/cjs/filters/index.js.map +7 -0
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +1756 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/inject/InjectSituationType.d.ts.map +1 -0
- package/dist/cjs/inject/InjectSituationType.js +33 -0
- package/dist/cjs/inject/InjectSituationType.js.map +7 -0
- package/dist/cjs/inject/index.d.ts +2 -0
- package/dist/cjs/inject/index.d.ts.map +1 -0
- package/dist/cjs/inject/index.js +35 -0
- package/dist/cjs/inject/index.js.map +7 -0
- package/dist/cjs/lifecycle/OnInit.d.ts.map +1 -0
- package/dist/cjs/lifecycle/OnInit.js +18 -0
- package/dist/cjs/lifecycle/OnInit.js.map +7 -0
- package/dist/cjs/lifecycle/index.d.ts +2 -0
- package/dist/cjs/lifecycle/index.d.ts.map +1 -0
- package/dist/cjs/lifecycle/index.js +18 -0
- package/dist/cjs/lifecycle/index.js.map +7 -0
- package/{models → dist/cjs/models}/RequestResponse.d.ts +1 -3
- package/dist/cjs/models/RequestResponse.d.ts.map +1 -0
- package/dist/cjs/models/RequestResponse.js +500 -0
- package/dist/cjs/models/RequestResponse.js.map +7 -0
- package/dist/cjs/models/datas/HeaderData.d.ts.map +1 -0
- package/dist/cjs/models/datas/HeaderData.js +35 -0
- package/dist/cjs/models/datas/HeaderData.js.map +7 -0
- package/dist/cjs/models/datas/MultipartData.d.ts.map +1 -0
- package/dist/cjs/models/datas/MultipartData.js +18 -0
- package/dist/cjs/models/datas/MultipartData.js.map +7 -0
- package/dist/cjs/models/datas/ReqHeader.d.ts.map +1 -0
- package/dist/cjs/models/datas/ReqHeader.js +31 -0
- package/dist/cjs/models/datas/ReqHeader.js.map +7 -0
- package/dist/cjs/models/datas/Resource.d.ts.map +1 -0
- package/dist/cjs/models/datas/Resource.js +550 -0
- package/dist/cjs/models/datas/Resource.js.map +7 -0
- package/dist/cjs/models/datas/body/ReqFormUrlBody.d.ts.map +1 -0
- package/dist/cjs/models/datas/body/ReqFormUrlBody.js +31 -0
- package/dist/cjs/models/datas/body/ReqFormUrlBody.js.map +7 -0
- package/dist/cjs/models/datas/body/ReqJsonBody.d.ts.map +1 -0
- package/dist/cjs/models/datas/body/ReqJsonBody.js +31 -0
- package/dist/cjs/models/datas/body/ReqJsonBody.js.map +7 -0
- package/dist/cjs/models/datas/body/ReqMultipartFormBody.d.ts.map +1 -0
- package/dist/cjs/models/datas/body/ReqMultipartFormBody.js +34 -0
- package/dist/cjs/models/datas/body/ReqMultipartFormBody.js.map +7 -0
- package/dist/cjs/models/index.d.ts +10 -0
- package/dist/cjs/models/index.d.ts.map +1 -0
- package/dist/cjs/models/index.js +593 -0
- package/dist/cjs/models/index.js.map +7 -0
- package/dist/cjs/models/method/patch/PatchJson.d.ts.map +1 -0
- package/dist/cjs/models/method/patch/PatchJson.js +49 -0
- package/dist/cjs/models/method/patch/PatchJson.js.map +7 -0
- package/dist/cjs/option/HttpServerOption.d.ts.map +1 -0
- package/dist/cjs/option/HttpServerOption.js +67 -0
- package/dist/cjs/option/HttpServerOption.js.map +7 -0
- package/dist/cjs/option/index.d.ts +2 -0
- package/dist/cjs/option/index.d.ts.map +1 -0
- package/dist/cjs/option/index.js +69 -0
- package/dist/cjs/option/index.js.map +7 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/resolvers/Resolver.d.ts.map +1 -0
- package/dist/cjs/resolvers/Resolver.js +18 -0
- package/dist/cjs/resolvers/Resolver.js.map +7 -0
- package/{resolvers/ResourceResorver.d.ts → dist/cjs/resolvers/ResourceResolver.d.ts} +2 -2
- package/dist/cjs/resolvers/ResourceResolver.d.ts.map +1 -0
- package/dist/cjs/resolvers/ResourceResolver.js +571 -0
- package/dist/cjs/resolvers/ResourceResolver.js.map +7 -0
- package/dist/cjs/resolvers/index.d.ts +3 -0
- package/dist/cjs/resolvers/index.d.ts.map +1 -0
- package/dist/cjs/resolvers/index.js +571 -0
- package/dist/cjs/resolvers/index.js.map +7 -0
- package/dist/cjs/session/SessionManager.d.ts.map +1 -0
- package/dist/cjs/session/SessionManager.js +577 -0
- package/dist/cjs/session/SessionManager.js.map +7 -0
- package/dist/cjs/session/index.d.ts +2 -0
- package/dist/cjs/session/index.d.ts.map +1 -0
- package/dist/cjs/session/index.js +579 -0
- package/dist/cjs/session/index.js.map +7 -0
- package/dist/esm/SimpleBootHttpServer.d.ts +14 -0
- package/dist/esm/SimpleBootHttpServer.d.ts.map +1 -0
- package/dist/esm/SimpleBootHttpServer.js +906 -0
- package/dist/esm/SimpleBootHttpServer.js.map +7 -0
- package/dist/esm/codes/HttpHeaders.d.ts +42 -0
- package/dist/esm/codes/HttpHeaders.d.ts.map +1 -0
- package/dist/esm/codes/HttpHeaders.js +47 -0
- package/dist/esm/codes/HttpHeaders.js.map +7 -0
- package/dist/esm/codes/HttpMethod.d.ts +12 -0
- package/dist/esm/codes/HttpMethod.d.ts.map +1 -0
- package/dist/esm/codes/HttpMethod.js +17 -0
- package/dist/esm/codes/HttpMethod.js.map +7 -0
- package/dist/esm/codes/HttpStatus.d.ts +45 -0
- package/dist/esm/codes/HttpStatus.d.ts.map +1 -0
- package/dist/esm/codes/HttpStatus.js +25 -0
- package/dist/esm/codes/HttpStatus.js.map +7 -0
- package/dist/esm/codes/Mimes.d.ts +28 -0
- package/dist/esm/codes/Mimes.d.ts.map +1 -0
- package/dist/esm/codes/Mimes.js +33 -0
- package/dist/esm/codes/Mimes.js.map +7 -0
- package/dist/esm/codes/index.d.ts +5 -0
- package/dist/esm/codes/index.d.ts.map +1 -0
- package/dist/esm/codes/index.js +116 -0
- package/dist/esm/codes/index.js.map +7 -0
- package/dist/esm/decorators/MethodMapping.d.ts +74 -0
- package/dist/esm/decorators/MethodMapping.d.ts.map +1 -0
- package/dist/esm/decorators/MethodMapping.js +211 -0
- package/dist/esm/decorators/MethodMapping.js.map +7 -0
- package/dist/esm/decorators/index.d.ts +2 -0
- package/dist/esm/decorators/index.d.ts.map +1 -0
- package/dist/esm/decorators/index.js +211 -0
- package/dist/esm/decorators/index.js.map +7 -0
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts +16 -0
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.d.ts.map +1 -0
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js +31 -0
- package/dist/esm/endpoints/CrossDomainHeaderEndPoint.js.map +7 -0
- package/dist/esm/endpoints/EndPoint.d.ts +7 -0
- package/dist/esm/endpoints/EndPoint.d.ts.map +1 -0
- package/dist/esm/endpoints/EndPoint.js +1 -0
- package/dist/esm/endpoints/EndPoint.js.map +7 -0
- package/dist/esm/endpoints/HeaderEndPoint.d.ts +12 -0
- package/dist/esm/endpoints/HeaderEndPoint.d.ts.map +1 -0
- package/dist/esm/endpoints/HeaderEndPoint.js +17 -0
- package/dist/esm/endpoints/HeaderEndPoint.js.map +7 -0
- package/dist/esm/endpoints/index.d.ts +4 -0
- package/dist/esm/endpoints/index.d.ts.map +1 -0
- package/dist/esm/endpoints/index.js +46 -0
- package/dist/esm/endpoints/index.js.map +7 -0
- package/dist/esm/errors/BadRequestError.d.ts +8 -0
- package/dist/esm/errors/BadRequestError.d.ts.map +1 -0
- package/dist/esm/errors/BadRequestError.js +19 -0
- package/dist/esm/errors/BadRequestError.js.map +7 -0
- package/dist/esm/errors/ForbiddenError.d.ts +8 -0
- package/dist/esm/errors/ForbiddenError.d.ts.map +1 -0
- package/dist/esm/errors/ForbiddenError.js +19 -0
- package/dist/esm/errors/ForbiddenError.js.map +7 -0
- package/dist/esm/errors/HttpError.d.ts +12 -0
- package/dist/esm/errors/HttpError.d.ts.map +1 -0
- package/dist/esm/errors/HttpError.js +12 -0
- package/dist/esm/errors/HttpError.js.map +7 -0
- package/dist/esm/errors/InternalServerError.d.ts +8 -0
- package/dist/esm/errors/InternalServerError.d.ts.map +1 -0
- package/dist/esm/errors/InternalServerError.js +19 -0
- package/dist/esm/errors/InternalServerError.js.map +7 -0
- package/dist/esm/errors/NotFoundError.d.ts +8 -0
- package/dist/esm/errors/NotFoundError.d.ts.map +1 -0
- package/dist/esm/errors/NotFoundError.js +19 -0
- package/dist/esm/errors/NotFoundError.js.map +7 -0
- package/dist/esm/errors/UnauthorizedError.d.ts +8 -0
- package/dist/esm/errors/UnauthorizedError.d.ts.map +1 -0
- package/dist/esm/errors/UnauthorizedError.js +19 -0
- package/dist/esm/errors/UnauthorizedError.js.map +7 -0
- package/dist/esm/errors/index.d.ts +7 -0
- package/dist/esm/errors/index.d.ts.map +1 -0
- package/dist/esm/errors/index.js +52 -0
- package/dist/esm/errors/index.js.map +7 -0
- package/dist/esm/filters/CacheFilter.d.ts +45 -0
- package/dist/esm/filters/CacheFilter.d.ts.map +1 -0
- package/dist/esm/filters/CacheFilter.js +129 -0
- package/dist/esm/filters/CacheFilter.js.map +7 -0
- package/dist/esm/filters/Filter.d.ts +17 -0
- package/dist/esm/filters/Filter.d.ts.map +1 -0
- package/dist/esm/filters/Filter.js +1 -0
- package/dist/esm/filters/Filter.js.map +7 -0
- package/dist/esm/filters/HttpStatusFilter.d.ts +20 -0
- package/dist/esm/filters/HttpStatusFilter.d.ts.map +1 -0
- package/dist/esm/filters/HttpStatusFilter.js +20 -0
- package/dist/esm/filters/HttpStatusFilter.js.map +7 -0
- package/dist/esm/filters/OpenApi3Filter.d.ts +142 -0
- package/dist/esm/filters/OpenApi3Filter.d.ts.map +1 -0
- package/dist/esm/filters/OpenApi3Filter.js +57 -0
- package/dist/esm/filters/OpenApi3Filter.js.map +7 -0
- package/dist/esm/filters/ResourceFilter.d.ts +24 -0
- package/dist/esm/filters/ResourceFilter.d.ts.map +1 -0
- package/dist/esm/filters/ResourceFilter.js +57 -0
- package/dist/esm/filters/ResourceFilter.js.map +7 -0
- package/dist/esm/filters/ThrowFilter.d.ts +19 -0
- package/dist/esm/filters/ThrowFilter.d.ts.map +1 -0
- package/dist/esm/filters/ThrowFilter.js +23 -0
- package/dist/esm/filters/ThrowFilter.js.map +7 -0
- package/dist/esm/filters/index.d.ts +7 -0
- package/dist/esm/filters/index.d.ts.map +1 -0
- package/dist/esm/filters/index.js +278 -0
- package/dist/esm/filters/index.js.map +7 -0
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +1662 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/inject/InjectSituationType.d.ts +4 -0
- package/dist/esm/inject/InjectSituationType.d.ts.map +1 -0
- package/dist/esm/inject/InjectSituationType.js +9 -0
- package/dist/esm/inject/InjectSituationType.js.map +7 -0
- package/dist/esm/inject/index.d.ts +2 -0
- package/dist/esm/inject/index.d.ts.map +1 -0
- package/dist/esm/inject/index.js +9 -0
- package/dist/esm/inject/index.js.map +7 -0
- package/dist/esm/lifecycle/OnInit.d.ts +5 -0
- package/dist/esm/lifecycle/OnInit.d.ts.map +1 -0
- package/dist/esm/lifecycle/OnInit.js +1 -0
- package/dist/esm/lifecycle/OnInit.js.map +7 -0
- package/dist/esm/lifecycle/index.d.ts +2 -0
- package/dist/esm/lifecycle/index.d.ts.map +1 -0
- package/dist/esm/lifecycle/index.js +1 -0
- package/dist/esm/lifecycle/index.js.map +7 -0
- package/dist/esm/models/RequestResponse.d.ts +100 -0
- package/dist/esm/models/RequestResponse.d.ts.map +1 -0
- package/dist/esm/models/RequestResponse.js +475 -0
- package/dist/esm/models/RequestResponse.js.map +7 -0
- package/dist/esm/models/datas/HeaderData.d.ts +10 -0
- package/dist/esm/models/datas/HeaderData.d.ts.map +1 -0
- package/dist/esm/models/datas/HeaderData.js +11 -0
- package/dist/esm/models/datas/HeaderData.js.map +7 -0
- package/dist/esm/models/datas/MultipartData.d.ts +12 -0
- package/dist/esm/models/datas/MultipartData.d.ts.map +1 -0
- package/dist/esm/models/datas/MultipartData.js +1 -0
- package/dist/esm/models/datas/MultipartData.js.map +7 -0
- package/dist/esm/models/datas/ReqHeader.d.ts +68 -0
- package/dist/esm/models/datas/ReqHeader.d.ts.map +1 -0
- package/dist/esm/models/datas/ReqHeader.js +7 -0
- package/dist/esm/models/datas/ReqHeader.js.map +7 -0
- package/dist/esm/models/datas/Resource.d.ts +11 -0
- package/dist/esm/models/datas/Resource.d.ts.map +1 -0
- package/dist/esm/models/datas/Resource.js +516 -0
- package/dist/esm/models/datas/Resource.js.map +7 -0
- package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts +4 -0
- package/dist/esm/models/datas/body/ReqFormUrlBody.d.ts.map +1 -0
- package/dist/esm/models/datas/body/ReqFormUrlBody.js +7 -0
- package/dist/esm/models/datas/body/ReqFormUrlBody.js.map +7 -0
- package/dist/esm/models/datas/body/ReqJsonBody.d.ts +4 -0
- package/dist/esm/models/datas/body/ReqJsonBody.d.ts.map +1 -0
- package/dist/esm/models/datas/body/ReqJsonBody.js +7 -0
- package/dist/esm/models/datas/body/ReqJsonBody.js.map +7 -0
- package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts +6 -0
- package/dist/esm/models/datas/body/ReqMultipartFormBody.d.ts.map +1 -0
- package/dist/esm/models/datas/body/ReqMultipartFormBody.js +10 -0
- package/dist/esm/models/datas/body/ReqMultipartFormBody.js.map +7 -0
- package/dist/esm/models/index.d.ts +10 -0
- package/dist/esm/models/index.d.ts.map +1 -0
- package/dist/esm/models/index.js +549 -0
- package/dist/esm/models/index.js.map +7 -0
- package/dist/esm/models/method/patch/PatchJson.d.ts +8 -0
- package/dist/esm/models/method/patch/PatchJson.d.ts.map +1 -0
- package/dist/esm/models/method/patch/PatchJson.js +15 -0
- package/dist/esm/models/method/patch/PatchJson.js.map +7 -0
- package/dist/esm/option/HttpServerOption.d.ts +83 -0
- package/dist/esm/option/HttpServerOption.d.ts.map +1 -0
- package/dist/esm/option/HttpServerOption.js +43 -0
- package/dist/esm/option/HttpServerOption.js.map +7 -0
- package/dist/esm/option/index.d.ts +2 -0
- package/dist/esm/option/index.d.ts.map +1 -0
- package/dist/esm/option/index.js +43 -0
- package/dist/esm/option/index.js.map +7 -0
- package/dist/esm/resolvers/Resolver.d.ts +5 -0
- package/dist/esm/resolvers/Resolver.d.ts.map +1 -0
- package/dist/esm/resolvers/Resolver.js +1 -0
- package/dist/esm/resolvers/Resolver.js.map +7 -0
- package/dist/esm/resolvers/ResourceResolver.d.ts +6 -0
- package/dist/esm/resolvers/ResourceResolver.d.ts.map +1 -0
- package/dist/esm/resolvers/ResourceResolver.js +538 -0
- package/dist/esm/resolvers/ResourceResolver.js.map +7 -0
- package/dist/esm/resolvers/index.d.ts +3 -0
- package/dist/esm/resolvers/index.d.ts.map +1 -0
- package/dist/esm/resolvers/index.js +538 -0
- package/dist/esm/resolvers/index.js.map +7 -0
- package/dist/esm/session/SessionManager.d.ts +57 -0
- package/dist/esm/session/SessionManager.d.ts.map +1 -0
- package/dist/esm/session/SessionManager.js +553 -0
- package/dist/esm/session/SessionManager.js.map +7 -0
- package/dist/esm/session/index.d.ts +2 -0
- package/dist/esm/session/index.d.ts.map +1 -0
- package/dist/esm/session/index.js +553 -0
- package/dist/esm/session/index.js.map +7 -0
- package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +1662 -0
- package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +7 -0
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +1699 -0
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +7 -0
- package/package.json +65 -46
- package/SimpleBootHttpServer.js +0 -313
- package/codes/HttpHeaders.js +0 -43
- package/codes/HttpMethod.js +0 -13
- package/codes/HttpStatus.d.ts +0 -20
- package/codes/HttpStatus.js +0 -21
- package/codes/Mimes.js +0 -29
- package/decorators/MethodMapping.js +0 -198
- package/endpoints/CrossDomainHeaderEndPoint.js +0 -37
- package/endpoints/EndPoint.js +0 -2
- package/endpoints/HeaderEndPoint.js +0 -26
- package/errors/BadRequestError.js +0 -8
- package/errors/ForbiddenError.js +0 -8
- package/errors/HttpError.js +0 -8
- package/errors/InternalServerError.js +0 -8
- package/errors/NotFoundError.js +0 -8
- package/errors/UnauthorizedError.js +0 -8
- package/filters/CacheFilter.js +0 -145
- package/filters/Filter.js +0 -2
- package/filters/HttpStatusFilter.js +0 -31
- package/filters/OpenApi3Filter.js +0 -57
- package/filters/ResourceFilter.js +0 -72
- package/filters/ThrowFilter.js +0 -34
- package/inject/InjectSituationType.js +0 -5
- package/lifecycle/OnInit.js +0 -2
- package/models/RequestResponse.js +0 -467
- package/models/datas/HeaderData.js +0 -7
- package/models/datas/MultipartData.js +0 -2
- package/models/datas/ReqHeader.js +0 -3
- package/models/datas/Resource.js +0 -55
- package/models/datas/body/ReqFormUrlBody.js +0 -3
- package/models/datas/body/ReqJsonBody.js +0 -3
- package/models/datas/body/ReqMultipartFormBody.js +0 -6
- package/models/method/patch/PatchJson.js +0 -11
- package/option/HttpServerOption.js +0 -35
- package/resolvers/Resolver.js +0 -2
- package/resolvers/ResourceResorver.js +0 -18
- package/session/SessionManager.js +0 -108
- /package/{SimpleBootHttpServer.d.ts → dist/cjs/SimpleBootHttpServer.d.ts} +0 -0
- /package/{codes → dist/cjs/codes}/HttpHeaders.d.ts +0 -0
- /package/{codes → dist/cjs/codes}/HttpMethod.d.ts +0 -0
- /package/{codes → dist/cjs/codes}/Mimes.d.ts +0 -0
- /package/{decorators → dist/cjs/decorators}/MethodMapping.d.ts +0 -0
- /package/{endpoints → dist/cjs/endpoints}/CrossDomainHeaderEndPoint.d.ts +0 -0
- /package/{endpoints → dist/cjs/endpoints}/EndPoint.d.ts +0 -0
- /package/{endpoints → dist/cjs/endpoints}/HeaderEndPoint.d.ts +0 -0
- /package/{errors → dist/cjs/errors}/BadRequestError.d.ts +0 -0
- /package/{errors → dist/cjs/errors}/ForbiddenError.d.ts +0 -0
- /package/{errors → dist/cjs/errors}/HttpError.d.ts +0 -0
- /package/{errors → dist/cjs/errors}/InternalServerError.d.ts +0 -0
- /package/{errors → dist/cjs/errors}/NotFoundError.d.ts +0 -0
- /package/{errors → dist/cjs/errors}/UnauthorizedError.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/CacheFilter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/Filter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/HttpStatusFilter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/OpenApi3Filter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/ResourceFilter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/ThrowFilter.d.ts +0 -0
- /package/{inject → dist/cjs/inject}/InjectSituationType.d.ts +0 -0
- /package/{lifecycle → dist/cjs/lifecycle}/OnInit.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/HeaderData.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/MultipartData.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/ReqHeader.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/Resource.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/body/ReqFormUrlBody.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/body/ReqJsonBody.d.ts +0 -0
- /package/{models → dist/cjs/models}/datas/body/ReqMultipartFormBody.d.ts +0 -0
- /package/{models → dist/cjs/models}/method/patch/PatchJson.d.ts +0 -0
- /package/{option → dist/cjs/option}/HttpServerOption.d.ts +0 -0
- /package/{resolvers → dist/cjs/resolvers}/Resolver.d.ts +0 -0
- /package/{session → dist/cjs/session}/SessionManager.d.ts +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/decorators/MethodMapping.ts
|
|
2
|
+
import "reflect-metadata";
|
|
3
|
+
import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
|
|
4
|
+
var MappingMetadataKey = Symbol("MappingMetadataKey");
|
|
5
|
+
var getUrlMappings = (target) => {
|
|
6
|
+
if (target !== null && void 0 !== target && typeof target === "object") {
|
|
7
|
+
target = target.constructor;
|
|
8
|
+
}
|
|
9
|
+
return ReflectUtils.getMetadata(MappingMetadataKey, target);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// src/filters/OpenApi3Filter.ts
|
|
13
|
+
var DefulatData = {
|
|
14
|
+
openapi: "3.0.1",
|
|
15
|
+
info: {
|
|
16
|
+
title: "SimpleBootHttpServer OpenApi3",
|
|
17
|
+
description: "SimpleBootHttpServer OpenApi3"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var OpenApi3Filter = class {
|
|
21
|
+
constructor(config, openApiConfig) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {});
|
|
24
|
+
}
|
|
25
|
+
async onInit(app) {
|
|
26
|
+
}
|
|
27
|
+
async proceedBefore({ rr, app }) {
|
|
28
|
+
if (rr.reqUrl === this.config.path) {
|
|
29
|
+
const map = app.routerManager.routingMap();
|
|
30
|
+
const data = {
|
|
31
|
+
paths: {}
|
|
32
|
+
};
|
|
33
|
+
Object.entries(map).filter(([k, v]) => typeof v !== "string").forEach(([k, v]) => {
|
|
34
|
+
const method = data.paths[k] = {};
|
|
35
|
+
getUrlMappings(v)?.forEach((it) => {
|
|
36
|
+
method[it.config.method] = {
|
|
37
|
+
summary: it.propertyKey,
|
|
38
|
+
description: it.propertyKey
|
|
39
|
+
// operationId: it.operationId,
|
|
40
|
+
// parameters: it.parameters,
|
|
41
|
+
// responses: it.responses,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(200 /* Ok */).resEnd();
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
async proceedAfter({ rr, app }) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
OpenApi3Filter
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=OpenApi3Filter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/decorators/MethodMapping.ts", "../../../src/filters/OpenApi3Filter.ts"],
|
|
4
|
+
"sourcesContent": ["import 'reflect-metadata';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '@dooboostore/simple-boot/types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { Resolver } from '../resolvers/Resolver';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpMethod } from '../codes/HttpMethod';\n\nexport enum UrlMappingSituationType {\n REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',\n REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'\n}\nexport type MappingConfig = {\n method: HttpMethod | string,\n description?: {\n name?: string;\n detail?: string;\n };\n\n req?: {\n contentType?: (Mimes|string)[];\n accept?: (Mimes|string)[];\n };\n\n res?: {\n status?: number;\n header?: {[key: string]: string};\n contentType?: Mimes | string;\n }\n resolver?: Resolver|ConstructorType<Resolver>;\n}\nexport type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}\nconst MappingMetadataKey = Symbol('MappingMetadataKey');\n// const GETSMappingMetadataKey = Symbol('GET_METHODS');\n// const GETMappingMetadataKey = Symbol('GET_METHOD');\n\nconst process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];\n saveMappingConfigs.push({propertyKey, config});\n ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);\n}\nexport function UrlMapping(config: MappingConfig): ReflectMethod;\nexport function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n process(configOrtarget, target, propertyKey, descriptor);\n }\n }\n}\nexport const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);\n}\n\nexport const getUrlMappings = (target: any): SaveMappingConfig[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(MappingMetadataKey, target);\n}\nexport function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.GET;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getGETS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.POST;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPOSTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);\n}\nexport function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.DELETE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getDELETES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);\n}\nexport function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PUT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPUTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);\n}\nexport function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PATCH;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPATCHS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.OPTIONS;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getOPTIONSS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);\n}\nexport function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.HEAD;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getHEADS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.TRACE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getTRACES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);\n}\nexport function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.CONNECT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getCONNECTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);\n}\n", "import {Filter} from './Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {getUrlMappings} from '../decorators/MethodMapping';\n\ntype MethodType = {\n summary?: string;\n description?: string;\n operationId?: string;\n parameters?: {\n name: string;\n in: string;\n required: boolean;\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }[];\n responses: {\n [code: string]: {\n description: string;\n content?: {\n [type: string]: {\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n }\n};\ntype PathType = {\n [method: string]: MethodType\n};\ntype PathsType = {\n [path: string]: PathType\n};\nexport type OpenApiType = {\n openapi: string;\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n paths?: PathsType\n components?: {\n schemas?: {\n [key: string]: {\n type: string;\n required?: string[];\n properties?: {\n [key: string]: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n securitySchemes?: {\n [key: string]: {\n type: string;\n description?: string;\n in?: string;\n name?: string;\n scheme?: string;\n bearerFormat?: string;\n flows?: {\n [key: string]: {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: {\n [key: string]: {\n description?: string;\n }\n }\n }\n }\n }\n }\n }\n}\nexport type OpenApi3FilterConfig = {\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n}\nconst DefulatData: OpenApiType = {\n openapi: '3.0.1',\n info: {\n title: 'SimpleBootHttpServer OpenApi3',\n description: 'SimpleBootHttpServer OpenApi3',\n }\n}\n\nexport class OpenApi3Filter implements Filter {\n private openApiConfig: any;\n\n constructor(public config: { path: string, excludePath?: { method: string, path: string }[] }, openApiConfig?: OpenApi3FilterConfig) {\n this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {})\n }\n async onInit(app: SimpleBootHttpServer){\n }\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n if (rr.reqUrl === this.config.path) {\n const map = app.routerManager.routingMap();\n // let routers = app.simstanceManager.getSimAtomics().filter((it: SimAtomic) => it.getConfig(RouterMetadataKey));\n const data = {\n paths: {} as PathsType\n } as OpenApiType;\n\n Object.entries(map).filter(([k, v]) => typeof v !== 'string').forEach(([k, v]) => {\n const method = data.paths![k] = {} as PathType;\n getUrlMappings(v)?.forEach(it => {\n method[it.config.method] = {\n summary: it.propertyKey,\n description: it.propertyKey\n // operationId: it.operationId,\n // parameters: it.parameters,\n // responses: it.responses,\n } as MethodType\n });\n })\n\n rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(HttpStatus.Ok).resEnd();\n return false;\n }\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO;AAGP,SAAS,oBAAoB;AA6B7B,IAAM,qBAAqB,OAAO,oBAAoB;AAyB/C,IAAM,iBAAiB,CAAC,WAAqC;AAChE,MAAI,WAAW,QAAQ,WAAc,UAAU,OAAO,WAAW,UAAU;AACvE,aAAS,OAAO;AAAA,EACpB;AACA,SAAO,aAAa,YAAY,oBAAoB,MAAM;AAC9D;;;ACiDA,IAAM,cAA2B;AAAA,EAC7B,SAAS;AAAA,EACT,MAAM;AAAA,IACF,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AACJ;AAEO,IAAM,iBAAN,MAAuC;AAAA,EAG1C,YAAmB,QAA4E,eAAsC;AAAlH;AACf,SAAK,gBAAgB,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,WAAW,GAAG,iBAAiB,CAAC,CAAC;AAAA,EAC1F;AAAA,EACA,MAAM,OAAO,KAA0B;AAAA,EACvC;AAAA,EACA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,QAAI,GAAG,WAAW,KAAK,OAAO,MAAM;AAChC,YAAM,MAAM,IAAI,cAAc,WAAW;AAEzC,YAAM,OAAO;AAAA,QACT,OAAO,CAAC;AAAA,MACZ;AAEA,aAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AAC9E,cAAM,SAAS,KAAK,MAAO,CAAC,IAAI,CAAC;AACjC,uBAAe,CAAC,GAAG,QAAQ,QAAM;AAC7B,iBAAO,GAAG,OAAO,MAAM,IAAI;AAAA,YACvB,SAAS,GAAG;AAAA,YACZ,aAAa,GAAG;AAAA;AAAA;AAAA;AAAA,UAIpB;AAAA,QACJ,CAAC;AAAA,MACL,CAAC;AAED,SAAG,aAAa,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,aAAa,GAAG,IAAI,CAAC,EAAE,0BAA2B,EAAE,OAAO;AAChH,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACvG,WAAO;AAAA,EACX;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Filter } from '../filters/Filter';
|
|
2
|
+
import { SimpleBootHttpServer } from '../SimpleBootHttpServer';
|
|
3
|
+
import { RequestResponse } from '../models/RequestResponse';
|
|
4
|
+
export type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);
|
|
5
|
+
export declare class ResourceFilter implements Filter {
|
|
6
|
+
private resourceDistPath;
|
|
7
|
+
private resourceRegex;
|
|
8
|
+
constructor(resourceDistPath: string, resourceRegex?: (RequestFilterType | {
|
|
9
|
+
request: RequestFilterType;
|
|
10
|
+
dist: string;
|
|
11
|
+
})[]);
|
|
12
|
+
onInit(app: SimpleBootHttpServer): Promise<void>;
|
|
13
|
+
proceedBefore({ rr, app }: {
|
|
14
|
+
rr: RequestResponse;
|
|
15
|
+
app: SimpleBootHttpServer;
|
|
16
|
+
carrier: Map<string, any>;
|
|
17
|
+
}): Promise<boolean>;
|
|
18
|
+
proceedAfter({ rr, app }: {
|
|
19
|
+
rr: RequestResponse;
|
|
20
|
+
app: SimpleBootHttpServer;
|
|
21
|
+
carrier: Map<string, any>;
|
|
22
|
+
}): Promise<boolean>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ResourceFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/ResourceFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzL,qBAAa,cAAe,YAAW,MAAM;IAC7B,OAAO,CAAC,gBAAgB;IAAU,OAAO,CAAC,aAAa;gBAA/C,gBAAgB,EAAE,MAAM,EAAU,aAAa,GAAE,CAAC,iBAAiB,GAAG;QAAE,OAAO,EAAE,iBAAiB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAO;IAGxI,MAAM,CAAC,GAAG,EAAE,oBAAoB;IAGhC,aAAa,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;IAkDpG,YAAY,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;CAG5G"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/filters/ResourceFilter.ts
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import mime from "mime-types";
|
|
5
|
+
var ResourceFilter = class {
|
|
6
|
+
constructor(resourceDistPath, resourceRegex = []) {
|
|
7
|
+
this.resourceDistPath = resourceDistPath;
|
|
8
|
+
this.resourceRegex = resourceRegex;
|
|
9
|
+
}
|
|
10
|
+
async onInit(app) {
|
|
11
|
+
}
|
|
12
|
+
async proceedBefore({ rr, app }) {
|
|
13
|
+
const url = (rr.reqUrlPathName ?? "").replace(/\.\./g, "");
|
|
14
|
+
const urlObj = rr.reqUrlObject;
|
|
15
|
+
let sw = true;
|
|
16
|
+
const regExps = this.resourceRegex.filter((it) => {
|
|
17
|
+
if (it instanceof RegExp) {
|
|
18
|
+
return it.test(url);
|
|
19
|
+
}
|
|
20
|
+
if (typeof it === "string") {
|
|
21
|
+
return RegExp(it).test(url);
|
|
22
|
+
}
|
|
23
|
+
if (typeof it === "function") {
|
|
24
|
+
return it(rr, app);
|
|
25
|
+
}
|
|
26
|
+
if (typeof it === "object" && "request" in it) {
|
|
27
|
+
if (typeof it.request === "function") {
|
|
28
|
+
return it.request(rr, app);
|
|
29
|
+
}
|
|
30
|
+
return RegExp(it.request).test(url);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
for (const it of regExps) {
|
|
34
|
+
const resourcePath = path.join(this.resourceDistPath, typeof it === "object" && "dist" in it ? it.dist : urlObj.pathname);
|
|
35
|
+
sw = false;
|
|
36
|
+
if (fs.existsSync(resourcePath)) {
|
|
37
|
+
rr.resStatusCode(200 /* Ok */);
|
|
38
|
+
rr.resSetHeader("Content-Type" /* ContentType */, mime.lookup(resourcePath).toString());
|
|
39
|
+
await rr.resEnd(fs.readFileSync(resourcePath));
|
|
40
|
+
break;
|
|
41
|
+
} else {
|
|
42
|
+
rr.resStatusCode(404 /* NotFound */);
|
|
43
|
+
await rr.resEnd();
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
sw = false;
|
|
47
|
+
}
|
|
48
|
+
return sw;
|
|
49
|
+
}
|
|
50
|
+
async proceedAfter({ rr, app }) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
ResourceFilter
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=ResourceFilter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/ResourceFilter.ts"],
|
|
4
|
+
"sourcesContent": ["import { Filter } from '../filters/Filter';\nimport fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\nexport class ResourceFilter implements Filter {\n constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string })[] = []) {\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n let sw = true;\n const regExps = this.resourceRegex.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })\n // console.log('regExps', regExps, url, this.resourceRegex);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n const resourcePath = path.join(this.resourceDistPath, typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname);\n // console.log('ResourceFilter', resourcePath, it, urlObj.pathname, url);\n sw = false;\n // console.log('-----', resourcePath);\n if (fs.existsSync(resourcePath)) {\n // const header = {} as any;\n // header[HttpHeaders.ContentType] = mime.lookup(resourcePath);\n // res.writeHead(HttpStatus.Ok, header);\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound)\n await rr.resEnd();\n break;\n }\n sw = false;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,UAAU;AAQV,IAAM,iBAAN,MAAuC;AAAA,EAC1C,YAAoB,kBAAkC,gBAAsF,CAAC,GAAG;AAA5H;AAAkC;AAAA,EACtD;AAAA,EAEA,MAAM,OAAO,KAA2B;AAAA,EACxC;AAAA,EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,UAAM,OAAO,GAAG,kBAAkB,IAAI,QAAQ,SAAS,EAAE;AACzD,UAAM,SAAS,GAAG;AAElB,QAAI,KAAK;AACT,UAAM,UAAU,KAAK,cAAc,OAAO,QAAM;AAC5C,UAAI,cAAc,QAAQ;AACtB,eAAO,GAAG,KAAK,GAAG;AAAA,MACtB;AAEA,UAAI,OAAO,OAAO,UAAU;AACxB,eAAO,OAAO,EAAE,EAAE,KAAK,GAAG;AAAA,MAC9B;AAEA,UAAI,OAAO,OAAO,YAAY;AAC1B,eAAO,GAAG,IAAI,GAAG;AAAA,MACrB;AAEA,UAAI,OAAO,OAAO,YAAY,aAAa,IAAI;AAC3C,YAAI,OAAO,GAAG,YAAY,YAAY;AAClC,iBAAO,GAAG,QAAQ,IAAI,GAAG;AAAA,QAC7B;AACA,eAAO,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG;AAAA,MACtC;AAAA,IACJ,CAAC;AAGD,eAAW,MAAM,SAAS;AACtB,YAAM,eAAe,KAAK,KAAK,KAAK,kBAAkB,OAAO,OAAO,YAAY,UAAU,KAAK,GAAG,OAAO,OAAO,QAAQ;AAExH,WAAK;AAEL,UAAI,GAAG,WAAW,YAAY,GAAG;AAI7B,WAAG,0BAA2B;AAC9B,WAAG,+CAAsC,KAAK,OAAO,YAAY,EAAE,SAAS,CAAC;AAC7E,cAAM,GAAG,OAAO,GAAG,aAAa,YAAY,CAAC;AAC7C;AAAA,MACJ,OAAO;AACH,WAAG,gCAAiC;AACpC,cAAM,GAAG,OAAO;AAChB;AAAA,MACJ;AACA,WAAK;AAAA,IACT;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACvG,WAAO;AAAA,EACX;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Filter } from '../filters/Filter';
|
|
2
|
+
import { RequestResponse } from '../models/RequestResponse';
|
|
3
|
+
import { SimpleBootHttpServer } from '../SimpleBootHttpServer';
|
|
4
|
+
export declare class ThrowFilter implements Filter {
|
|
5
|
+
private error;
|
|
6
|
+
constructor(error: any);
|
|
7
|
+
onInit(app: SimpleBootHttpServer): Promise<void>;
|
|
8
|
+
proceedBefore({ rr, app }: {
|
|
9
|
+
rr: RequestResponse;
|
|
10
|
+
app: SimpleBootHttpServer;
|
|
11
|
+
carrier: Map<string, any>;
|
|
12
|
+
}): Promise<boolean>;
|
|
13
|
+
proceedAfter({ rr, app }: {
|
|
14
|
+
rr: RequestResponse;
|
|
15
|
+
app: SimpleBootHttpServer;
|
|
16
|
+
carrier: Map<string, any>;
|
|
17
|
+
}): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ThrowFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThrowFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/ThrowFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAE7D,qBAAa,WAAY,YAAW,MAAM;IAC1B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,GAAG;IAGxB,MAAM,CAAC,GAAG,EAAE,oBAAoB;IAGhC,aAAa,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;IAIpG,YAAY,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE;QAAC,EAAE,EAAE,eAAe,CAAC;QAAC,GAAG,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC;CAO5G"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/filters/ThrowFilter.ts
|
|
2
|
+
var ThrowFilter = class {
|
|
3
|
+
constructor(error) {
|
|
4
|
+
this.error = error;
|
|
5
|
+
}
|
|
6
|
+
async onInit(app) {
|
|
7
|
+
}
|
|
8
|
+
async proceedBefore({ rr, app }) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
async proceedAfter({ rr, app }) {
|
|
12
|
+
const sw = rr.resIsDone();
|
|
13
|
+
if (!sw) {
|
|
14
|
+
throw this.error;
|
|
15
|
+
}
|
|
16
|
+
;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
ThrowFilter
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=ThrowFilter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/ThrowFilter.ts"],
|
|
4
|
+
"sourcesContent": ["import { Filter } from '../filters/Filter';\nimport { RequestResponse } from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class ThrowFilter implements Filter {\n constructor(private error: any) {\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const sw = rr.resIsDone();\n if (!sw) {\n throw this.error;\n };\n return false;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAIO,IAAM,cAAN,MAAoC;AAAA,EACvC,YAAoB,OAAY;AAAZ;AAAA,EACpB;AAAA,EAEA,MAAM,OAAO,KAA0B;AAAA,EACvC;AAAA,EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACvG,UAAM,KAAK,GAAG,UAAU;AACxB,QAAI,CAAC,IAAI;AACL,YAAM,KAAK;AAAA,IACf;AAAC;AACD,WAAO;AAAA,EACX;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
// src/filters/CacheFilter.ts
|
|
2
|
+
import { FileUtils } from "@dooboostore/core-node/file/FileUtils";
|
|
3
|
+
import { ConvertUtils } from "@dooboostore/core-node/convert/ConvertUtils";
|
|
4
|
+
import { RandomUtils } from "@dooboostore/core/random/RandomUtils";
|
|
5
|
+
var CacheFilter = class _CacheFilter {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
this.storage = /* @__PURE__ */ new Map();
|
|
9
|
+
if (config.config.cacheDir && config.config.startUpClean) {
|
|
10
|
+
FileUtils.deleteSync(config.config.cacheDir, { options: { recursive: true } });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
static {
|
|
14
|
+
this.CARRIER_KEY_NAME = "_CARRIER_CACHE_FILTER_KEY_NAME";
|
|
15
|
+
}
|
|
16
|
+
async onInit(app) {
|
|
17
|
+
}
|
|
18
|
+
async proceedBefore({ rr, app, carrier }) {
|
|
19
|
+
const filter = this.config.filter?.(rr, app);
|
|
20
|
+
if (!filter) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (this.config.config.cacheDir) {
|
|
24
|
+
FileUtils.mkdirSync(this.config.config.cacheDir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
if (!this.cacheConfig && this.config.config.cacheDir) {
|
|
27
|
+
try {
|
|
28
|
+
this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, "cacheConfig.json"], { option: { encoding: "utf-8" } })));
|
|
29
|
+
} catch (e) {
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const date = (/* @__PURE__ */ new Date()).toISOString();
|
|
33
|
+
this.cacheConfig ??= {
|
|
34
|
+
createDate: date,
|
|
35
|
+
updateDate: date,
|
|
36
|
+
// accessDate: date,
|
|
37
|
+
caches: {}
|
|
38
|
+
};
|
|
39
|
+
this.cacheConfig.createDate ??= date;
|
|
40
|
+
this.cacheConfig.updateDate ??= date;
|
|
41
|
+
this.cacheConfig.caches ??= {};
|
|
42
|
+
const rkey = this.config.key(rr, app);
|
|
43
|
+
const sessionData = { key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders };
|
|
44
|
+
const cache = this.cacheConfig.caches[sessionData.key];
|
|
45
|
+
if (cache) {
|
|
46
|
+
const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);
|
|
47
|
+
const diffTime = Date.now() - cache.createTime;
|
|
48
|
+
if (!existes || diffTime > cache.lifeTime) {
|
|
49
|
+
delete this.cacheConfig[sessionData.key];
|
|
50
|
+
this.deleteChunk(cache.path);
|
|
51
|
+
sessionData.isUpdate = true;
|
|
52
|
+
} else {
|
|
53
|
+
rr.resSetHeaders({
|
|
54
|
+
...cache.responseHeader,
|
|
55
|
+
cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`
|
|
56
|
+
});
|
|
57
|
+
try {
|
|
58
|
+
const chunk = this.getChunk(cache.path);
|
|
59
|
+
await rr.resEnd(chunk);
|
|
60
|
+
} catch (e) {
|
|
61
|
+
console.log("--------e", e);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
sessionData.isUpdate = true;
|
|
66
|
+
}
|
|
67
|
+
carrier.set(_CacheFilter.CARRIER_KEY_NAME, sessionData);
|
|
68
|
+
return sessionData.isUpdate;
|
|
69
|
+
}
|
|
70
|
+
deleteChunk(path2) {
|
|
71
|
+
if (this.config.config.cacheDir && FileUtils.existsSync(path2)) {
|
|
72
|
+
FileUtils.deleteFileSync(path2);
|
|
73
|
+
} else if (this.storage.has(path2)) {
|
|
74
|
+
this.storage.delete(path2);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
getChunk(path2) {
|
|
78
|
+
return this.config.config.cacheDir ? FileUtils.readSync(path2) : this.storage.get(path2);
|
|
79
|
+
}
|
|
80
|
+
async proceedAfter({ rr, app, carrier }) {
|
|
81
|
+
const sessionData = carrier.get(_CacheFilter.CARRIER_KEY_NAME);
|
|
82
|
+
if (sessionData && sessionData.isUpdate) {
|
|
83
|
+
try {
|
|
84
|
+
if (this.config.config.cacheDir) {
|
|
85
|
+
FileUtils.mkdirSync([this.config.config.cacheDir, "caches"], { recursive: true });
|
|
86
|
+
}
|
|
87
|
+
const resBody = rr.resBodyData();
|
|
88
|
+
if (!resBody) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
let p = void 0;
|
|
92
|
+
const destFileUUID = RandomUtils.uuid4();
|
|
93
|
+
p = this.writeChunk(destFileUUID, resBody);
|
|
94
|
+
const updateDateNow = Date.now();
|
|
95
|
+
const updateDate = new Date(updateDateNow).toISOString();
|
|
96
|
+
this.cacheConfig.createDate ??= updateDate;
|
|
97
|
+
this.cacheConfig.updateDate = updateDate;
|
|
98
|
+
const responseHeaders = {};
|
|
99
|
+
sessionData.responseHeaders?.map((it) => it.toLowerCase()).forEach((it) => {
|
|
100
|
+
responseHeaders[it] = rr.resHeader(it);
|
|
101
|
+
});
|
|
102
|
+
this.cacheConfig.caches[sessionData.key] = {
|
|
103
|
+
path: p,
|
|
104
|
+
createTime: updateDateNow,
|
|
105
|
+
lifeTime: sessionData.lifeTime,
|
|
106
|
+
responseHeader: responseHeaders
|
|
107
|
+
};
|
|
108
|
+
if (this.config.config.cacheDir) {
|
|
109
|
+
FileUtils.write(JSON.stringify(this.cacheConfig), { path: [this.config.config.cacheDir, "cacheConfig.json"] });
|
|
110
|
+
}
|
|
111
|
+
} catch (e) {
|
|
112
|
+
console.log("---", e);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
writeChunk(destFileUUID, resBody) {
|
|
118
|
+
if (this.config.config.cacheDir) {
|
|
119
|
+
return FileUtils.write(resBody, { path: [this.config.config.cacheDir, "caches", destFileUUID] });
|
|
120
|
+
} else {
|
|
121
|
+
this.storage.set(destFileUUID, resBody);
|
|
122
|
+
return destFileUUID;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// src/filters/HttpStatusFilter.ts
|
|
128
|
+
var HttpStatusFilter = class {
|
|
129
|
+
constructor(httpStatus) {
|
|
130
|
+
this.httpStatus = httpStatus;
|
|
131
|
+
}
|
|
132
|
+
async proceedBefore({ rr, app }) {
|
|
133
|
+
rr.resStatusCode(this.httpStatus);
|
|
134
|
+
rr.resEnd();
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
async proceedAfter({ rr, app }) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
async onInit(app) {
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// src/decorators/MethodMapping.ts
|
|
145
|
+
import "reflect-metadata";
|
|
146
|
+
import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
|
|
147
|
+
var MappingMetadataKey = Symbol("MappingMetadataKey");
|
|
148
|
+
var getUrlMappings = (target) => {
|
|
149
|
+
if (target !== null && void 0 !== target && typeof target === "object") {
|
|
150
|
+
target = target.constructor;
|
|
151
|
+
}
|
|
152
|
+
return ReflectUtils.getMetadata(MappingMetadataKey, target);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// src/filters/OpenApi3Filter.ts
|
|
156
|
+
var DefulatData = {
|
|
157
|
+
openapi: "3.0.1",
|
|
158
|
+
info: {
|
|
159
|
+
title: "SimpleBootHttpServer OpenApi3",
|
|
160
|
+
description: "SimpleBootHttpServer OpenApi3"
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
var OpenApi3Filter = class {
|
|
164
|
+
constructor(config, openApiConfig) {
|
|
165
|
+
this.config = config;
|
|
166
|
+
this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {});
|
|
167
|
+
}
|
|
168
|
+
async onInit(app) {
|
|
169
|
+
}
|
|
170
|
+
async proceedBefore({ rr, app }) {
|
|
171
|
+
if (rr.reqUrl === this.config.path) {
|
|
172
|
+
const map = app.routerManager.routingMap();
|
|
173
|
+
const data = {
|
|
174
|
+
paths: {}
|
|
175
|
+
};
|
|
176
|
+
Object.entries(map).filter(([k, v]) => typeof v !== "string").forEach(([k, v]) => {
|
|
177
|
+
const method = data.paths[k] = {};
|
|
178
|
+
getUrlMappings(v)?.forEach((it) => {
|
|
179
|
+
method[it.config.method] = {
|
|
180
|
+
summary: it.propertyKey,
|
|
181
|
+
description: it.propertyKey
|
|
182
|
+
// operationId: it.operationId,
|
|
183
|
+
// parameters: it.parameters,
|
|
184
|
+
// responses: it.responses,
|
|
185
|
+
};
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(200 /* Ok */).resEnd();
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
async proceedAfter({ rr, app }) {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// src/filters/ResourceFilter.ts
|
|
199
|
+
import fs from "fs";
|
|
200
|
+
import path from "path";
|
|
201
|
+
import mime from "mime-types";
|
|
202
|
+
var ResourceFilter = class {
|
|
203
|
+
constructor(resourceDistPath, resourceRegex = []) {
|
|
204
|
+
this.resourceDistPath = resourceDistPath;
|
|
205
|
+
this.resourceRegex = resourceRegex;
|
|
206
|
+
}
|
|
207
|
+
async onInit(app) {
|
|
208
|
+
}
|
|
209
|
+
async proceedBefore({ rr, app }) {
|
|
210
|
+
const url = (rr.reqUrlPathName ?? "").replace(/\.\./g, "");
|
|
211
|
+
const urlObj = rr.reqUrlObject;
|
|
212
|
+
let sw = true;
|
|
213
|
+
const regExps = this.resourceRegex.filter((it) => {
|
|
214
|
+
if (it instanceof RegExp) {
|
|
215
|
+
return it.test(url);
|
|
216
|
+
}
|
|
217
|
+
if (typeof it === "string") {
|
|
218
|
+
return RegExp(it).test(url);
|
|
219
|
+
}
|
|
220
|
+
if (typeof it === "function") {
|
|
221
|
+
return it(rr, app);
|
|
222
|
+
}
|
|
223
|
+
if (typeof it === "object" && "request" in it) {
|
|
224
|
+
if (typeof it.request === "function") {
|
|
225
|
+
return it.request(rr, app);
|
|
226
|
+
}
|
|
227
|
+
return RegExp(it.request).test(url);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
for (const it of regExps) {
|
|
231
|
+
const resourcePath = path.join(this.resourceDistPath, typeof it === "object" && "dist" in it ? it.dist : urlObj.pathname);
|
|
232
|
+
sw = false;
|
|
233
|
+
if (fs.existsSync(resourcePath)) {
|
|
234
|
+
rr.resStatusCode(200 /* Ok */);
|
|
235
|
+
rr.resSetHeader("Content-Type" /* ContentType */, mime.lookup(resourcePath).toString());
|
|
236
|
+
await rr.resEnd(fs.readFileSync(resourcePath));
|
|
237
|
+
break;
|
|
238
|
+
} else {
|
|
239
|
+
rr.resStatusCode(404 /* NotFound */);
|
|
240
|
+
await rr.resEnd();
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
sw = false;
|
|
244
|
+
}
|
|
245
|
+
return sw;
|
|
246
|
+
}
|
|
247
|
+
async proceedAfter({ rr, app }) {
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
// src/filters/ThrowFilter.ts
|
|
253
|
+
var ThrowFilter = class {
|
|
254
|
+
constructor(error) {
|
|
255
|
+
this.error = error;
|
|
256
|
+
}
|
|
257
|
+
async onInit(app) {
|
|
258
|
+
}
|
|
259
|
+
async proceedBefore({ rr, app }) {
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
async proceedAfter({ rr, app }) {
|
|
263
|
+
const sw = rr.resIsDone();
|
|
264
|
+
if (!sw) {
|
|
265
|
+
throw this.error;
|
|
266
|
+
}
|
|
267
|
+
;
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
export {
|
|
272
|
+
CacheFilter,
|
|
273
|
+
HttpStatusFilter,
|
|
274
|
+
OpenApi3Filter,
|
|
275
|
+
ResourceFilter,
|
|
276
|
+
ThrowFilter
|
|
277
|
+
};
|
|
278
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/CacheFilter.ts", "../../../src/filters/HttpStatusFilter.ts", "../../../src/decorators/MethodMapping.ts", "../../../src/filters/OpenApi3Filter.ts", "../../../src/filters/ResourceFilter.ts", "../../../src/filters/ThrowFilter.ts"],
|
|
4
|
+
"sourcesContent": ["import { Filter } from '../filters/Filter';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { FileUtils } from '@dooboostore/core-node/file/FileUtils';\nimport { ConvertUtils } from '@dooboostore/core-node/convert/ConvertUtils';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type CacheFilterSessionType = { key: string, lifeTime: number, isUpdate: boolean, responseHeaders?: string[] };\n\ntype CacheConfigCacheItemType = { path: string, createTime: number, lifeTime: number, responseHeader: { [key: string]: string | number | string[] } };\n\ntype KeyAndConfig = { key: string, lifeTime?: number, responseHeaders?: string[] } ;\n\nexport class CacheFilter implements Filter {\n public static readonly CARRIER_KEY_NAME = '_CARRIER_CACHE_FILTER_KEY_NAME';\n private storage = new Map<string, string | Buffer>();\n private cacheConfig: {\n createDate: string;\n updateDate: string;\n caches: { [key: string]: CacheConfigCacheItemType }\n }\n\n constructor(private config: {\n config: {\n cacheDir?: string;\n lifeTime: number;\n startUpClean?: boolean;\n },\n filter?: (rr: RequestResponse, app: SimpleBootHttpServer) => boolean;\n key: (rr: RequestResponse, app: SimpleBootHttpServer) => KeyAndConfig;\n }) {\n\n if (config.config.cacheDir && config.config.startUpClean) {\n FileUtils.deleteSync(config.config.cacheDir, {options: {recursive: true}});\n }\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // this.key = undefined;\n // this.lifeTime = undefined;\n // this.isUpdate = false;\n const filter = this.config.filter?.(rr,app);\n if (!filter) {\n return true;\n }\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync(this.config.config.cacheDir, {recursive: true});\n }\n if (!this.cacheConfig && this.config.config.cacheDir) {\n try {\n this.cacheConfig = JSON.parse(ConvertUtils.toString(FileUtils.readSync([this.config.config.cacheDir, 'cacheConfig.json'], { option: {encoding: 'utf-8'}})));\n } catch (e) {\n }\n }\n const date = new Date().toISOString();\n this.cacheConfig ??= {\n createDate: date,\n updateDate: date,\n // accessDate: date,\n caches: {}\n };\n this.cacheConfig.createDate ??= date;\n this.cacheConfig.updateDate ??= date;\n // this.cacheConfig.accessDate ??= date;\n this.cacheConfig.caches ??= {};\n\n\n const rkey = this.config.key(rr, app);\n // console.log('--path filter', rr.reqMethod(), rr.reqUrlPathName, filter, rkey)\n const sessionData: CacheFilterSessionType = {key: rkey.key, lifeTime: rkey.lifeTime ?? this.config.config.lifeTime, isUpdate: false, responseHeaders: rkey.responseHeaders};\n\n\n const cache = this.cacheConfig.caches[sessionData.key];\n if (cache) {\n const existes = this.config.config.cacheDir ? FileUtils.existsSync(cache.path) : this.storage.has(cache.path);\n const diffTime = Date.now() - cache.createTime;\n if (!existes || diffTime > cache.lifeTime) {\n delete this.cacheConfig[sessionData.key];\n this.deleteChunk(cache.path);\n sessionData.isUpdate = true;\n } else {\n rr.resSetHeaders({\n ...cache.responseHeader,\n cacheFilter: `true;remainTime=${cache.lifeTime - diffTime}`\n });\n // console.log('chunk--->', cache.path);\n try {\n const chunk = this.getChunk(cache.path);\n // console.log('chunk--->', chunk);\n await rr.resEnd(chunk);\n } catch (e) {\n console.log('--------e', e)\n }\n }\n } else {\n sessionData.isUpdate = true;\n }\n carrier.set(CacheFilter.CARRIER_KEY_NAME, sessionData);\n return sessionData.isUpdate;\n }\n\n private deleteChunk(path: string) {\n if (this.config.config.cacheDir && FileUtils.existsSync(path)) {\n FileUtils.deleteFileSync(path);\n } else if (this.storage.has(path)) {\n this.storage.delete(path);\n }\n }\n\n private getChunk(path: string) {\n return this.config.config.cacheDir ? FileUtils.readSync(path) : this.storage.get(path);\n }\n\n async proceedAfter({rr, app, carrier}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // const data = await rr.resBodyStringData()\n const sessionData = carrier.get(CacheFilter.CARRIER_KEY_NAME) as CacheFilterSessionType ;\n if (sessionData && sessionData.isUpdate) {\n try {\n if (this.config.config.cacheDir) {\n FileUtils.mkdirSync([this.config.config.cacheDir, 'caches'], {recursive: true});\n }\n const resBody = rr.resBodyData();\n if (!resBody) {\n return true;\n }\n let p: string | undefined = undefined;\n const destFileUUID = RandomUtils.uuid4();\n p = this.writeChunk(destFileUUID, resBody);\n const updateDateNow = Date.now();\n const updateDate = new Date(updateDateNow).toISOString();\n this.cacheConfig.createDate ??= updateDate;\n this.cacheConfig.updateDate = updateDate;\n const responseHeaders: {[key: string]: string | number | string[]} = {}\n sessionData.responseHeaders?.map(it=>it.toLowerCase()).forEach(it => {\n responseHeaders[it] = rr.resHeader(it);\n })\n this.cacheConfig.caches[sessionData.key] = {\n path: p,\n createTime: updateDateNow,\n lifeTime: sessionData.lifeTime,\n responseHeader: responseHeaders\n };\n\n if (this.config.config.cacheDir) {\n FileUtils.write(JSON.stringify(this.cacheConfig), {path: [this.config.config.cacheDir, 'cacheConfig.json']});\n }\n } catch (e) {\n console.log('---', e)\n }\n }\n\n return true;\n }\n\n private writeChunk(destFileUUID: string, resBody: string | Buffer ) {\n if (this.config.config.cacheDir) {\n return FileUtils.write(resBody, {path: [this.config.config.cacheDir, 'caches', destFileUUID]});\n } else {\n this.storage.set(destFileUUID, resBody);\n return destFileUUID;\n }\n }\n}\n", "import {Filter} from '../filters/Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class HttpStatusFilter implements Filter {\n\n constructor(private httpStatus: HttpStatus | number) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // res.writeHead(this.httpStatus);\n rr.resStatusCode(this.httpStatus);\n rr.resEnd();\n return false;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n}\n", "import 'reflect-metadata';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ReflectMethod } from '@dooboostore/simple-boot/types/Types';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { Resolver } from '../resolvers/Resolver';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpMethod } from '../codes/HttpMethod';\n\nexport enum UrlMappingSituationType {\n REQ_JSON_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_JSON_BODY',\n REQ_FORM_URL_BODY = 'SIMPLE_BOOT_HTTP_SERVER://URLMAPPING/REQ_FORM_URL_BODY'\n}\nexport type MappingConfig = {\n method: HttpMethod | string,\n description?: {\n name?: string;\n detail?: string;\n };\n\n req?: {\n contentType?: (Mimes|string)[];\n accept?: (Mimes|string)[];\n };\n\n res?: {\n status?: number;\n header?: {[key: string]: string};\n contentType?: Mimes | string;\n }\n resolver?: Resolver|ConstructorType<Resolver>;\n}\nexport type SaveMappingConfig = {propertyKey: string | symbol; config: MappingConfig}\nconst MappingMetadataKey = Symbol('MappingMetadataKey');\n// const GETSMappingMetadataKey = Symbol('GET_METHODS');\n// const GETMappingMetadataKey = Symbol('GET_METHOD');\n\nconst process = (config: MappingConfig, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const saveMappingConfigs = (ReflectUtils.getMetadata(MappingMetadataKey, target.constructor) ?? []) as SaveMappingConfig[];\n saveMappingConfigs.push({propertyKey, config});\n ReflectUtils.defineMetadata(MappingMetadataKey, saveMappingConfigs, target.constructor);\n ReflectUtils.defineMetadata(MappingMetadataKey, config, target, propertyKey);\n}\nexport function UrlMapping(config: MappingConfig): ReflectMethod;\nexport function UrlMapping(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function UrlMapping(configOrtarget?: MappingConfig | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrtarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n process(configOrtarget, target, propertyKey, descriptor);\n }\n }\n}\nexport const getUrlMapping = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return ReflectUtils.getMetadata(MappingMetadataKey, target, propertyKey);\n}\n\nexport const getUrlMappings = (target: any): SaveMappingConfig[] => {\n if (target !== null && undefined !== target && typeof target === 'object') {\n target = target.constructor;\n }\n return ReflectUtils.getMetadata(MappingMetadataKey, target);\n}\nexport function GET(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function GET(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function GET(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.GET}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.GET;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getGET = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getGETS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function POST(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function POST(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function POST(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.POST}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.POST;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPOST = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPOSTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.POST);\n}\nexport function DELETE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function DELETE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function DELETE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.DELETE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.DELETE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getDELETE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getDELETES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.DELETE);\n}\nexport function PUT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PUT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PUT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PUT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PUT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPUT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPUTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.PUT);\n}\nexport function PATCH(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function PATCH(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function PATCH(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.PATCH}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.PATCH;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getPATCH = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getPATCHS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function OPTIONS(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function OPTIONS(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function OPTIONS(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.OPTIONS}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.OPTIONS;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getOPTIONS = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getOPTIONSS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.OPTIONS);\n}\nexport function HEAD(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function HEAD(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function HEAD(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.HEAD}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.HEAD;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getHEAD = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getHEADS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.GET);\n}\nexport function TRACE(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function TRACE(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function TRACE(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.TRACE}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.TRACE;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getTRACE = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getTRACES = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.TRACE);\n}\nexport function CONNECT(config: Omit<MappingConfig, 'method'>): ReflectMethod;\nexport function CONNECT(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function CONNECT(configOrTarget?: Omit<MappingConfig, 'method'> | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): ReflectMethod | void {\n if (propertyKey && descriptor) {\n process({method: HttpMethod.CONNECT}, configOrTarget, propertyKey, descriptor);\n } else {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n configOrTarget.method = HttpMethod.CONNECT;\n process(configOrTarget, target, propertyKey, descriptor);\n }\n }\n}\n\nexport const getCONNECT = (target: any, propertyKey: string | symbol): MappingConfig | undefined => {\n return getUrlMapping(target, propertyKey);\n}\nexport const getCONNECTS = (target: any): SaveMappingConfig[] => {\n return getUrlMappings(target)?.filter(it => it.config?.method.toUpperCase() === HttpMethod.CONNECT);\n}\n", "import {Filter} from './Filter';\nimport {HttpStatus} from '../codes/HttpStatus';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\nimport {RequestResponse} from '../models/RequestResponse';\nimport {getUrlMappings} from '../decorators/MethodMapping';\n\ntype MethodType = {\n summary?: string;\n description?: string;\n operationId?: string;\n parameters?: {\n name: string;\n in: string;\n required: boolean;\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }[];\n responses: {\n [code: string]: {\n description: string;\n content?: {\n [type: string]: {\n schema: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n }\n};\ntype PathType = {\n [method: string]: MethodType\n};\ntype PathsType = {\n [path: string]: PathType\n};\nexport type OpenApiType = {\n openapi: string;\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n paths?: PathsType\n components?: {\n schemas?: {\n [key: string]: {\n type: string;\n required?: string[];\n properties?: {\n [key: string]: {\n type: string;\n format?: string;\n items?: {\n type: string;\n format?: string;\n }\n }\n }\n }\n }\n securitySchemes?: {\n [key: string]: {\n type: string;\n description?: string;\n in?: string;\n name?: string;\n scheme?: string;\n bearerFormat?: string;\n flows?: {\n [key: string]: {\n authorizationUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n scopes?: {\n [key: string]: {\n description?: string;\n }\n }\n }\n }\n }\n }\n }\n}\nexport type OpenApi3FilterConfig = {\n info?: {\n title?: string;\n description?: string;\n contact?: {\n name?: string;\n email?: string;\n }\n }\n servers?: { url: string }[],\n}\nconst DefulatData: OpenApiType = {\n openapi: '3.0.1',\n info: {\n title: 'SimpleBootHttpServer OpenApi3',\n description: 'SimpleBootHttpServer OpenApi3',\n }\n}\n\nexport class OpenApi3Filter implements Filter {\n private openApiConfig: any;\n\n constructor(public config: { path: string, excludePath?: { method: string, path: string }[] }, openApiConfig?: OpenApi3FilterConfig) {\n this.openApiConfig = Object.assign(Object.assign({}, DefulatData), openApiConfig ?? {})\n }\n async onInit(app: SimpleBootHttpServer){\n }\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n if (rr.reqUrl === this.config.path) {\n const map = app.routerManager.routingMap();\n // let routers = app.simstanceManager.getSimAtomics().filter((it: SimAtomic) => it.getConfig(RouterMetadataKey));\n const data = {\n paths: {} as PathsType\n } as OpenApiType;\n\n Object.entries(map).filter(([k, v]) => typeof v !== 'string').forEach(([k, v]) => {\n const method = data.paths![k] = {} as PathType;\n getUrlMappings(v)?.forEach(it => {\n method[it.config.method] = {\n summary: it.propertyKey,\n description: it.propertyKey\n // operationId: it.operationId,\n // parameters: it.parameters,\n // responses: it.responses,\n } as MethodType\n });\n })\n\n rr.resWriteJson(Object.assign(Object.assign({}, this.openApiConfig), data)).resStatusCode(HttpStatus.Ok).resEnd();\n return false;\n }\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport fs from 'fs';\nimport path from 'path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\nexport class ResourceFilter implements Filter {\n constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string })[] = []) {\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n let sw = true;\n const regExps = this.resourceRegex.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })\n // console.log('regExps', regExps, url, this.resourceRegex);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n const resourcePath = path.join(this.resourceDistPath, typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname);\n // console.log('ResourceFilter', resourcePath, it, urlObj.pathname, url);\n sw = false;\n // console.log('-----', resourcePath);\n if (fs.existsSync(resourcePath)) {\n // const header = {} as any;\n // header[HttpHeaders.ContentType] = mime.lookup(resourcePath);\n // res.writeHead(HttpStatus.Ok, header);\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound)\n await rr.resEnd();\n break;\n }\n sw = false;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n}\n", "import { Filter } from '../filters/Filter';\nimport { RequestResponse } from '../models/RequestResponse';\nimport {SimpleBootHttpServer} from '../SimpleBootHttpServer';\n\nexport class ThrowFilter implements Filter {\n constructor(private error: any) {\n }\n\n async onInit(app: SimpleBootHttpServer){\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n return true;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const sw = rr.resIsDone();\n if (!sw) {\n throw this.error;\n };\n return false;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["path"]
|
|
7
|
+
}
|