jimpex 7.0.1 → 8.0.0
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/CHANGELOG.md +87 -0
- package/LICENSE +1 -1
- package/README.md +446 -434
- package/dist/app/index.d.ts +13 -0
- package/dist/app/index.js +19 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/jimpex.d.ts +13 -0
- package/dist/app/jimpex.js +440 -0
- package/dist/app/jimpex.js.map +1 -0
- package/dist/controllers/common/config.d.ts +78 -0
- package/dist/controllers/common/config.js +89 -0
- package/dist/controllers/common/config.js.map +1 -0
- package/dist/controllers/common/health.d.ts +82 -0
- package/dist/controllers/common/health.js +97 -0
- package/dist/controllers/common/health.js.map +1 -0
- package/dist/controllers/common/index.d.ts +21 -0
- package/dist/controllers/common/index.js +21 -0
- package/dist/controllers/common/index.js.map +1 -0
- package/dist/controllers/common/statics.d.ts +215 -0
- package/dist/controllers/common/statics.js +202 -0
- package/dist/controllers/common/statics.js.map +1 -0
- package/dist/controllers/index.d.ts +24 -0
- package/dist/controllers/index.js +20 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/utils/gateway.d.ts +724 -0
- package/dist/controllers/utils/gateway.js +425 -0
- package/dist/controllers/utils/gateway.js.map +1 -0
- package/dist/controllers/utils/index.d.ts +16 -0
- package/dist/controllers/utils/index.js +19 -0
- package/dist/controllers/utils/index.js.map +1 -0
- package/dist/esm/app/index.js +2 -0
- package/dist/esm/app/index.js.map +1 -0
- package/dist/esm/app/jimpex.js +415 -0
- package/dist/esm/app/jimpex.js.map +1 -0
- package/dist/esm/chunk-T2T6Q22Z.js +11 -0
- package/dist/esm/chunk-T2T6Q22Z.js.map +1 -0
- package/dist/esm/controllers/common/config.js +62 -0
- package/dist/esm/controllers/common/config.js.map +1 -0
- package/dist/esm/controllers/common/health.js +70 -0
- package/dist/esm/controllers/common/health.js.map +1 -0
- package/dist/esm/controllers/common/index.js +4 -0
- package/dist/esm/controllers/common/index.js.map +1 -0
- package/dist/esm/controllers/common/statics.js +173 -0
- package/dist/esm/controllers/common/statics.js.map +1 -0
- package/dist/esm/controllers/index.js +3 -0
- package/dist/esm/controllers/index.js.map +1 -0
- package/dist/esm/controllers/utils/gateway.js +404 -0
- package/dist/esm/controllers/utils/gateway.js.map +1 -0
- package/dist/esm/controllers/utils/index.js +2 -0
- package/dist/esm/controllers/utils/index.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/middlewares/common/errorHandler.js +92 -0
- package/dist/esm/middlewares/common/errorHandler.js.map +1 -0
- package/dist/esm/middlewares/common/forceHTTPS.js +41 -0
- package/dist/esm/middlewares/common/forceHTTPS.js.map +1 -0
- package/dist/esm/middlewares/common/hsts.js +53 -0
- package/dist/esm/middlewares/common/hsts.js.map +1 -0
- package/dist/esm/middlewares/common/index.js +4 -0
- package/dist/esm/middlewares/common/index.js.map +1 -0
- package/dist/esm/middlewares/html/fastHTML.js +104 -0
- package/dist/esm/middlewares/html/fastHTML.js.map +1 -0
- package/dist/esm/middlewares/html/index.js +3 -0
- package/dist/esm/middlewares/html/index.js.map +1 -0
- package/dist/esm/middlewares/html/showHTML.js +68 -0
- package/dist/esm/middlewares/html/showHTML.js.map +1 -0
- package/dist/esm/middlewares/index.js +4 -0
- package/dist/esm/middlewares/index.js.map +1 -0
- package/dist/esm/middlewares/utils/index.js +2 -0
- package/dist/esm/middlewares/utils/index.js.map +1 -0
- package/dist/esm/middlewares/utils/versionValidator.js +101 -0
- package/dist/esm/middlewares/utils/versionValidator.js.map +1 -0
- package/dist/esm/services/common/appError.js +52 -0
- package/dist/esm/services/common/appError.js.map +1 -0
- package/dist/esm/services/common/httpError.js +19 -0
- package/dist/esm/services/common/httpError.js.map +1 -0
- package/dist/esm/services/common/index.js +17 -0
- package/dist/esm/services/common/index.js.map +1 -0
- package/dist/esm/services/common/sendFile.js +27 -0
- package/dist/esm/services/common/sendFile.js.map +1 -0
- package/dist/esm/services/frontend/frontendFs.js +38 -0
- package/dist/esm/services/frontend/frontendFs.js.map +1 -0
- package/dist/esm/services/frontend/index.js +11 -0
- package/dist/esm/services/frontend/index.js.map +1 -0
- package/dist/esm/services/html/htmlGenerator.js +144 -0
- package/dist/esm/services/html/htmlGenerator.js.map +1 -0
- package/dist/esm/services/html/index.js +11 -0
- package/dist/esm/services/html/index.js.map +1 -0
- package/dist/esm/services/http/apiClient.js +71 -0
- package/dist/esm/services/http/apiClient.js.map +1 -0
- package/dist/esm/services/http/http.js +125 -0
- package/dist/esm/services/http/http.js.map +1 -0
- package/dist/esm/services/http/index.js +17 -0
- package/dist/esm/services/http/index.js.map +1 -0
- package/dist/esm/services/http/responsesBuilder.js +105 -0
- package/dist/esm/services/http/responsesBuilder.js.map +1 -0
- package/dist/esm/services/index.js +6 -0
- package/dist/esm/services/index.js.map +1 -0
- package/dist/esm/services/utils/ensureBearerToken.js +78 -0
- package/dist/esm/services/utils/ensureBearerToken.js.map +1 -0
- package/dist/esm/services/utils/index.js +11 -0
- package/dist/esm/services/utils/index.js.map +1 -0
- package/dist/esm/types/events.js +1 -0
- package/dist/esm/types/events.js.map +1 -0
- package/dist/esm/types/express.js +1 -0
- package/dist/esm/types/express.js.map +1 -0
- package/dist/esm/types/http.js +1 -0
- package/dist/esm/types/http.js.map +1 -0
- package/dist/esm/types/index.js +7 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/options.js +1 -0
- package/dist/esm/types/options.js.map +1 -0
- package/dist/esm/types/utils.js +1 -0
- package/dist/esm/types/utils.js.map +1 -0
- package/dist/esm/types/wootils.js +1 -0
- package/dist/esm/types/wootils.js.map +1 -0
- package/dist/esm/utils/fns/index.js +5 -0
- package/dist/esm/utils/fns/index.js.map +1 -0
- package/dist/esm/utils/fns/others.js +6 -0
- package/dist/esm/utils/fns/others.js.map +1 -0
- package/dist/esm/utils/fns/routes.js +25 -0
- package/dist/esm/utils/fns/routes.js.map +1 -0
- package/dist/esm/utils/fns/statuses.js +6 -0
- package/dist/esm/utils/fns/statuses.js.map +1 -0
- package/dist/esm/utils/fns/text.js +6 -0
- package/dist/esm/utils/fns/text.js.map +1 -0
- package/dist/esm/utils/index.js +3 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/wrappers.js +41 -0
- package/dist/esm/utils/wrappers.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/jimpex-7eaee271.d.ts +1278 -0
- package/dist/middlewares/common/errorHandler.d.ts +131 -0
- package/dist/middlewares/common/errorHandler.js +119 -0
- package/dist/middlewares/common/errorHandler.js.map +1 -0
- package/dist/middlewares/common/forceHTTPS.d.ts +68 -0
- package/dist/middlewares/common/forceHTTPS.js +68 -0
- package/dist/middlewares/common/forceHTTPS.js.map +1 -0
- package/dist/middlewares/common/hsts.d.ts +109 -0
- package/dist/middlewares/common/hsts.js +80 -0
- package/dist/middlewares/common/hsts.js.map +1 -0
- package/dist/middlewares/common/index.d.ts +21 -0
- package/dist/middlewares/common/index.js +21 -0
- package/dist/middlewares/common/index.js.map +1 -0
- package/dist/middlewares/html/fastHTML.d.ts +180 -0
- package/dist/middlewares/html/fastHTML.js +131 -0
- package/dist/middlewares/html/fastHTML.js.map +1 -0
- package/dist/middlewares/html/index.d.ts +21 -0
- package/dist/middlewares/html/index.js +20 -0
- package/dist/middlewares/html/index.js.map +1 -0
- package/dist/middlewares/html/showHTML.d.ts +127 -0
- package/dist/middlewares/html/showHTML.js +95 -0
- package/dist/middlewares/html/showHTML.js.map +1 -0
- package/dist/middlewares/index.d.ts +30 -0
- package/dist/middlewares/index.js +21 -0
- package/dist/middlewares/index.js.map +1 -0
- package/dist/middlewares/utils/index.d.ts +19 -0
- package/dist/middlewares/utils/index.js +19 -0
- package/dist/middlewares/utils/index.js.map +1 -0
- package/dist/middlewares/utils/versionValidator.d.ts +214 -0
- package/dist/middlewares/utils/versionValidator.js +128 -0
- package/dist/middlewares/utils/versionValidator.js.map +1 -0
- package/dist/services/common/appError.d.ts +138 -0
- package/dist/services/common/appError.js +80 -0
- package/dist/services/common/appError.js.map +1 -0
- package/dist/services/common/httpError.d.ts +79 -0
- package/dist/services/common/httpError.js +44 -0
- package/dist/services/common/httpError.js.map +1 -0
- package/dist/services/common/index.d.ts +47 -0
- package/dist/services/common/index.js +41 -0
- package/dist/services/common/index.js.map +1 -0
- package/dist/services/common/sendFile.d.ts +102 -0
- package/dist/services/common/sendFile.js +51 -0
- package/dist/services/common/sendFile.js.map +1 -0
- package/dist/services/frontend/frontendFs.d.ts +96 -0
- package/dist/services/frontend/frontendFs.js +71 -0
- package/dist/services/frontend/frontendFs.js.map +1 -0
- package/dist/services/frontend/index.d.ts +40 -0
- package/dist/services/frontend/index.js +35 -0
- package/dist/services/frontend/index.js.map +1 -0
- package/dist/services/html/htmlGenerator.d.ts +237 -0
- package/dist/services/html/htmlGenerator.js +171 -0
- package/dist/services/html/htmlGenerator.js.map +1 -0
- package/dist/services/html/index.d.ts +43 -0
- package/dist/services/html/index.js +35 -0
- package/dist/services/html/index.js.map +1 -0
- package/dist/services/http/apiClient.d.ts +169 -0
- package/dist/services/http/apiClient.js +96 -0
- package/dist/services/http/apiClient.js.map +1 -0
- package/dist/services/http/http.d.ts +175 -0
- package/dist/services/http/http.js +158 -0
- package/dist/services/http/http.js.map +1 -0
- package/dist/services/http/index.d.ts +50 -0
- package/dist/services/http/index.js +41 -0
- package/dist/services/http/index.js.map +1 -0
- package/dist/services/http/responsesBuilder.d.ts +178 -0
- package/dist/services/http/responsesBuilder.js +132 -0
- package/dist/services/http/responsesBuilder.js.map +1 -0
- package/dist/services/index.d.ts +33 -0
- package/dist/services/index.js +23 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/utils/ensureBearerToken.d.ts +157 -0
- package/dist/services/utils/ensureBearerToken.js +105 -0
- package/dist/services/utils/ensureBearerToken.js.map +1 -0
- package/dist/services/utils/index.d.ts +43 -0
- package/dist/services/utils/index.js +35 -0
- package/dist/services/utils/index.js.map +1 -0
- package/dist/types/events.d.ts +13 -0
- package/dist/types/events.js +17 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/express.d.ts +10 -0
- package/dist/types/express.js +17 -0
- package/dist/types/express.js.map +1 -0
- package/dist/types/http.d.ts +79 -0
- package/dist/types/http.js +17 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +13 -0
- package/dist/types/options.js +17 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/utils.d.ts +48 -0
- package/dist/types/utils.js +17 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/types/wootils.d.ts +4 -0
- package/dist/types/wootils.js +17 -0
- package/dist/types/wootils.js.map +1 -0
- package/dist/utils/fns/index.d.ts +5 -0
- package/dist/utils/fns/index.js +22 -0
- package/dist/utils/fns/index.js.map +1 -0
- package/dist/utils/fns/others.d.ts +17 -0
- package/dist/utils/fns/others.js +29 -0
- package/dist/utils/fns/others.js.map +1 -0
- package/dist/utils/fns/routes.d.ts +39 -0
- package/dist/utils/fns/routes.js +51 -0
- package/dist/utils/fns/routes.js.map +1 -0
- package/dist/utils/fns/statuses.d.ts +45 -0
- package/dist/utils/fns/statuses.js +35 -0
- package/dist/utils/fns/statuses.js.map +1 -0
- package/dist/utils/fns/text.d.ts +9 -0
- package/dist/utils/fns/text.js +29 -0
- package/dist/utils/fns/text.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/wrappers.d.ts +13 -0
- package/dist/utils/wrappers.js +68 -0
- package/dist/utils/wrappers.js.map +1 -0
- package/examples/basic/404.html +12 -0
- package/examples/basic/README.md +30 -0
- package/examples/basic/app.ts +18 -0
- package/examples/basic/controller.ts +45 -0
- package/examples/basic/index.ts +19 -0
- package/examples/basic/middleware.ts +13 -0
- package/examples/basic/service.ts +11 -0
- package/package.json +59 -38
- package/src/app/index.ts +1 -0
- package/src/app/jimpex.ts +743 -0
- package/src/controllers/common/config.ts +115 -0
- package/src/controllers/common/health.ts +128 -0
- package/src/controllers/common/index.ts +3 -0
- package/src/controllers/common/statics.ts +380 -0
- package/src/controllers/index.ts +2 -0
- package/src/controllers/utils/gateway.ts +1186 -0
- package/src/controllers/utils/index.ts +1 -0
- package/src/index.ts +6 -0
- package/src/middlewares/common/errorHandler.ts +203 -0
- package/src/middlewares/common/forceHTTPS.ts +83 -0
- package/src/middlewares/common/hsts.ts +135 -0
- package/src/middlewares/common/index.ts +3 -0
- package/src/middlewares/html/fastHTML.ts +255 -0
- package/src/middlewares/html/index.ts +2 -0
- package/src/middlewares/html/showHTML.ts +165 -0
- package/src/middlewares/index.ts +3 -0
- package/src/middlewares/utils/index.ts +1 -0
- package/src/middlewares/utils/versionValidator.ts +289 -0
- package/src/services/common/appError.ts +158 -0
- package/src/services/common/httpError.ts +74 -0
- package/src/services/common/index.ts +29 -0
- package/src/services/common/sendFile.ts +106 -0
- package/src/services/frontend/frontendFs.ts +101 -0
- package/src/services/frontend/index.ts +21 -0
- package/src/services/html/htmlGenerator.ts +356 -0
- package/src/services/html/index.ts +21 -0
- package/src/services/http/apiClient.ts +221 -0
- package/src/services/http/http.ts +286 -0
- package/src/services/http/index.ts +29 -0
- package/src/services/http/responsesBuilder.ts +265 -0
- package/src/services/index.ts +5 -0
- package/src/services/utils/ensureBearerToken.ts +202 -0
- package/src/services/utils/index.ts +21 -0
- package/src/types/events.ts +303 -0
- package/src/types/express.ts +21 -0
- package/src/types/http.ts +77 -0
- package/src/types/index.ts +6 -0
- package/src/types/options.ts +248 -0
- package/src/types/utils.ts +52 -0
- package/src/types/wootils.ts +4 -0
- package/src/utils/fns/index.ts +4 -0
- package/src/utils/fns/others.ts +15 -0
- package/src/utils/fns/routes.ts +64 -0
- package/src/utils/fns/statuses.ts +44 -0
- package/src/utils/fns/text.ts +8 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/wrappers.ts +537 -0
- package/tsconfig.json +5 -8
- package/tsup.config.ts +10 -0
- package/src/app/index.js +0 -692
- package/src/constants/eventNames.js +0 -48
- package/src/constants/index.js +0 -7
- package/src/controllers/common/configuration.js +0 -116
- package/src/controllers/common/health.js +0 -79
- package/src/controllers/common/index.js +0 -7
- package/src/controllers/common/statics.js +0 -336
- package/src/controllers/index.js +0 -9
- package/src/controllers/utils/gateway.js +0 -1039
- package/src/controllers/utils/index.js +0 -3
- package/src/index.js +0 -30
- package/src/middlewares/common/errorHandler.js +0 -185
- package/src/middlewares/common/forceHTTPS.js +0 -80
- package/src/middlewares/common/hsts.js +0 -122
- package/src/middlewares/common/index.js +0 -7
- package/src/middlewares/html/fastHTML.js +0 -298
- package/src/middlewares/html/index.js +0 -5
- package/src/middlewares/html/showHTML.js +0 -167
- package/src/middlewares/index.js +0 -11
- package/src/middlewares/utils/index.js +0 -3
- package/src/middlewares/utils/versionValidator.js +0 -261
- package/src/services/common/appError.js +0 -136
- package/src/services/common/httpError.js +0 -60
- package/src/services/common/index.js +0 -25
- package/src/services/common/sendFile.js +0 -68
- package/src/services/frontend/frontendFs.js +0 -85
- package/src/services/frontend/index.js +0 -17
- package/src/services/html/htmlGenerator.js +0 -391
- package/src/services/html/index.js +0 -17
- package/src/services/http/apiClient.js +0 -148
- package/src/services/http/http.js +0 -256
- package/src/services/http/index.js +0 -25
- package/src/services/http/responsesBuilder.js +0 -193
- package/src/services/index.js +0 -15
- package/src/services/utils/ensureBearerToken.js +0 -147
- package/src/services/utils/index.js +0 -19
- package/src/types.js +0 -377
- package/src/utils/functions.js +0 -78
- package/src/utils/wrappers.js +0 -131
- package/types/app/index.d.ts +0 -417
- package/types/constants/eventNames.d.ts +0 -93
- package/types/constants/index.d.ts +0 -2
- package/types/controllers/common/configuration.d.ts +0 -71
- package/types/controllers/common/health.d.ts +0 -55
- package/types/controllers/common/index.d.ts +0 -4
- package/types/controllers/common/statics.d.ts +0 -271
- package/types/controllers/index.d.ts +0 -3
- package/types/controllers/utils/gateway.d.ts +0 -947
- package/types/controllers/utils/index.d.ts +0 -2
- package/types/index.d.ts +0 -15
- package/types/middlewares/common/errorHandler.d.ts +0 -143
- package/types/middlewares/common/forceHTTPS.d.ts +0 -64
- package/types/middlewares/common/hsts.d.ts +0 -111
- package/types/middlewares/common/index.d.ts +0 -4
- package/types/middlewares/html/fastHTML.d.ts +0 -238
- package/types/middlewares/html/index.d.ts +0 -3
- package/types/middlewares/html/showHTML.d.ts +0 -128
- package/types/middlewares/index.d.ts +0 -4
- package/types/middlewares/utils/index.d.ts +0 -2
- package/types/middlewares/utils/versionValidator.d.ts +0 -247
- package/types/services/common/appError.d.ts +0 -89
- package/types/services/common/httpError.d.ts +0 -37
- package/types/services/common/index.d.ts +0 -18
- package/types/services/common/sendFile.d.ts +0 -56
- package/types/services/frontend/frontendFs.d.ts +0 -72
- package/types/services/frontend/index.d.ts +0 -3
- package/types/services/html/htmlGenerator.d.ts +0 -298
- package/types/services/html/index.d.ts +0 -3
- package/types/services/http/apiClient.d.ts +0 -141
- package/types/services/http/http.d.ts +0 -159
- package/types/services/http/index.d.ts +0 -18
- package/types/services/http/responsesBuilder.d.ts +0 -140
- package/types/services/index.d.ts +0 -6
- package/types/services/utils/ensureBearerToken.d.ts +0 -137
- package/types/services/utils/index.d.ts +0 -16
- package/types/types.d.ts +0 -280
- package/types/utils/functions.d.ts +0 -55
- package/types/utils/wrappers.d.ts +0 -127
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var __publicField = (obj, key, value) => {
|
|
21
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
var config_exports = {};
|
|
25
|
+
__export(config_exports, {
|
|
26
|
+
ConfigController: () => ConfigController,
|
|
27
|
+
configController: () => configController
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(config_exports);
|
|
30
|
+
var import_utils = require("../../utils");
|
|
31
|
+
class ConfigController {
|
|
32
|
+
constructor({ inject }) {
|
|
33
|
+
__publicField(this, "_responsesBuilder");
|
|
34
|
+
__publicField(this, "_config");
|
|
35
|
+
this._responsesBuilder = inject.responsesBuilder;
|
|
36
|
+
this._config = inject.config;
|
|
37
|
+
}
|
|
38
|
+
showConfig() {
|
|
39
|
+
return (_, res) => {
|
|
40
|
+
this.respondWithConfig(res);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
switchConfig() {
|
|
44
|
+
return async (req, res, next) => {
|
|
45
|
+
const { name } = req.params;
|
|
46
|
+
if (!name || !this._config.canSwitchConfigs()) {
|
|
47
|
+
next();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
await this._config.switch(name);
|
|
52
|
+
this.respondWithConfig(res);
|
|
53
|
+
} catch (error) {
|
|
54
|
+
next(error);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
respondWithConfig(res) {
|
|
59
|
+
const name = this._config.get("name");
|
|
60
|
+
const data = {
|
|
61
|
+
name,
|
|
62
|
+
...this._config.getConfig()
|
|
63
|
+
};
|
|
64
|
+
this._responsesBuilder.json({
|
|
65
|
+
res,
|
|
66
|
+
data
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const configController = (0, import_utils.controller)((app) => {
|
|
71
|
+
const config = app.getConfig();
|
|
72
|
+
const router = app.getRouter();
|
|
73
|
+
if (config.get("debug.configController") !== true) {
|
|
74
|
+
return router;
|
|
75
|
+
}
|
|
76
|
+
const ctrl = new ConfigController({
|
|
77
|
+
inject: {
|
|
78
|
+
config,
|
|
79
|
+
responsesBuilder: app.get("responsesBuilder")
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return router.get("/", ctrl.showConfig()).get("/switch/:name", ctrl.switchConfig());
|
|
83
|
+
});
|
|
84
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
+
0 && (module.exports = {
|
|
86
|
+
ConfigController,
|
|
87
|
+
configController
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/controllers/common/config.ts"],"sourcesContent":["import { controller } from '../../utils';\nimport type { ResponsesBuilder } from '../../services';\nimport type {\n Config,\n Response,\n AsyncExpressMiddleware,\n ExpressMiddleware,\n} from '../../types';\n/**\n * The options to contruct a {@link ConfigController}.\n *\n * @group Controllers/Config\n */\nexport type ConfigControllerOptions = {\n /**\n * A dictionary with the dependencies to inject.\n */\n inject: {\n responsesBuilder: ResponsesBuilder;\n config: Config;\n };\n};\n/**\n * The controller class that allows to show and switch the application configuration.\n *\n * @group Controller Classes\n * @group Controllers/Config\n * @prettierignore\n */\nexport class ConfigController {\n /**\n * The service in charge or building the responses.\n */\n protected readonly _responsesBuilder: ResponsesBuilder;\n /**\n * The service in charge of the configuration.\n */\n protected readonly _config: Config;\n /**\n * @param options The options to construct the controller.\n */\n constructor({ inject }: ConfigControllerOptions) {\n this._responsesBuilder = inject.responsesBuilder;\n this._config = inject.config;\n }\n /**\n * Creates the middleware the shows the current configuration.\n */\n showConfig(): ExpressMiddleware {\n return (_, res) => {\n this.respondWithConfig(res);\n };\n }\n /**\n * Creates the middleware the allows to switch the configuration.\n */\n switchConfig(): AsyncExpressMiddleware {\n return async (req, res, next) => {\n const { name } = req.params;\n if (!name || !this._config.canSwitchConfigs()) {\n next();\n return;\n }\n\n try {\n await this._config.switch(name);\n this.respondWithConfig(res);\n } catch (error) {\n next(error);\n }\n };\n }\n /**\n * Utility to respond with the current configuration.\n */\n protected respondWithConfig(res: Response): void {\n const name = this._config.get<string>('name');\n const data = {\n name,\n ...this._config.getConfig<Record<string, unknown>>(),\n };\n\n this._responsesBuilder.json({\n res,\n data,\n });\n }\n}\n/**\n * This controller is kind of special as it will only mount the routes if the\n * `debug.configController` setting of the app configuration is set to `true`.\n *\n * It provides routes for:\n * - `/`: Showing the current configuration.\n * - `/switch/:name`: Switching the configuration, but only if the service allows it.\n *\n * @group Controllers\n * @group Controllers/Config\n */\nexport const configController = controller((app) => {\n const config = app.getConfig();\n const router = app.getRouter();\n if (config.get<boolean | undefined>('debug.configController') !== true) {\n return router;\n }\n\n const ctrl = new ConfigController({\n inject: {\n config,\n responsesBuilder: app.get('responsesBuilder'),\n },\n });\n\n return router.get('/', ctrl.showConfig()).get('/switch/:name', ctrl.switchConfig());\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2B;AA6BpB,MAAM,iBAAiB;AAAA,EAY5B,YAAY,EAAE,OAAO,GAA4B;AARjD,wBAAmB;AAInB,wBAAmB;AAKjB,SAAK,oBAAoB,OAAO;AAChC,SAAK,UAAU,OAAO;AAAA,EACxB;AAAA,EAIA,aAAgC;AAC9B,WAAO,CAAC,GAAG,QAAQ;AACjB,WAAK,kBAAkB,GAAG;AAAA,IAC5B;AAAA,EACF;AAAA,EAIA,eAAuC;AACrC,WAAO,OAAO,KAAK,KAAK,SAAS;AAC/B,YAAM,EAAE,KAAK,IAAI,IAAI;AACrB,UAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,iBAAiB,GAAG;AAC7C,aAAK;AACL;AAAA,MACF;AAEA,UAAI;AACF,cAAM,KAAK,QAAQ,OAAO,IAAI;AAC9B,aAAK,kBAAkB,GAAG;AAAA,MAC5B,SAAS,OAAP;AACA,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAIU,kBAAkB,KAAqB;AAC/C,UAAM,OAAO,KAAK,QAAQ,IAAY,MAAM;AAC5C,UAAM,OAAO;AAAA,MACX;AAAA,MACA,GAAG,KAAK,QAAQ,UAAmC;AAAA,IACrD;AAEA,SAAK,kBAAkB,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAYO,MAAM,uBAAmB,yBAAW,CAAC,QAAQ;AAClD,QAAM,SAAS,IAAI,UAAU;AAC7B,QAAM,SAAS,IAAI,UAAU;AAC7B,MAAI,OAAO,IAAyB,wBAAwB,MAAM,MAAM;AACtE,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,IAAI,iBAAiB;AAAA,IAChC,QAAQ;AAAA,MACN;AAAA,MACA,kBAAkB,IAAI,IAAI,kBAAkB;AAAA,IAC9C;AAAA,EACF,CAAC;AAED,SAAO,OAAO,IAAI,KAAK,KAAK,WAAW,CAAC,EAAE,IAAI,iBAAiB,KAAK,aAAa,CAAC;AACpF,CAAC;","names":[]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as _homer0_jimple from '@homer0/jimple';
|
|
2
|
+
import { Statuses } from '../../utils/fns/statuses.js';
|
|
3
|
+
import { r as JimpexHealthStatus, C as ControllerConnectFn } from '../../jimpex-7eaee271.js';
|
|
4
|
+
import { AsyncExpressMiddleware } from '../../types/express.js';
|
|
5
|
+
import { SimpleConfig } from '@homer0/simple-config';
|
|
6
|
+
import { ResponsesBuilder } from '../../services/http/responsesBuilder.js';
|
|
7
|
+
import 'statuses';
|
|
8
|
+
import '@homer0/events-hub';
|
|
9
|
+
import 'express';
|
|
10
|
+
import '../../types/http.js';
|
|
11
|
+
import 'https';
|
|
12
|
+
import 'http';
|
|
13
|
+
import 'spdy';
|
|
14
|
+
import 'node-fetch';
|
|
15
|
+
import '../../types/utils.js';
|
|
16
|
+
import '@homer0/simple-logger';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A function that will return the health status of the application.
|
|
20
|
+
*
|
|
21
|
+
* @group Controllers/Health
|
|
22
|
+
*/
|
|
23
|
+
type GetHealthStatus = () => Promise<JimpexHealthStatus>;
|
|
24
|
+
/**
|
|
25
|
+
* The options to contruct a {@link HealthController}.
|
|
26
|
+
*
|
|
27
|
+
* @group Controllers/Health
|
|
28
|
+
*/
|
|
29
|
+
type HealthControllerOptions = {
|
|
30
|
+
/**
|
|
31
|
+
* A dictionary with the dependencies to inject.
|
|
32
|
+
*/
|
|
33
|
+
inject: {
|
|
34
|
+
getHealthStatus: GetHealthStatus;
|
|
35
|
+
responsesBuilder: ResponsesBuilder;
|
|
36
|
+
config: SimpleConfig;
|
|
37
|
+
statuses: Statuses;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* The controller class that shows the application health status.
|
|
42
|
+
*
|
|
43
|
+
* @group Controller Classes
|
|
44
|
+
* @group Controllers/Health
|
|
45
|
+
* @prettierignore
|
|
46
|
+
*/
|
|
47
|
+
declare class HealthController {
|
|
48
|
+
/**
|
|
49
|
+
* The function that returns the health status of the application.
|
|
50
|
+
*/
|
|
51
|
+
protected readonly _getHealthStatus: GetHealthStatus;
|
|
52
|
+
/**
|
|
53
|
+
* The service in charge or building the responses.
|
|
54
|
+
*/
|
|
55
|
+
protected readonly _responsesBuilder: ResponsesBuilder;
|
|
56
|
+
/**
|
|
57
|
+
* The service in charge of the configuration.
|
|
58
|
+
*/
|
|
59
|
+
protected readonly _config: SimpleConfig;
|
|
60
|
+
/**
|
|
61
|
+
* The uility service to get HTTP status codes.
|
|
62
|
+
*/
|
|
63
|
+
protected readonly _statuses: Statuses;
|
|
64
|
+
/**
|
|
65
|
+
* @param options The options to construct the controller.
|
|
66
|
+
*/
|
|
67
|
+
constructor({ inject }: HealthControllerOptions);
|
|
68
|
+
/**
|
|
69
|
+
* Creates the middleware the shows the application health status.
|
|
70
|
+
*/
|
|
71
|
+
showHealth(): AsyncExpressMiddleware;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The controller that once mounted, it will add an endpoint to show the application
|
|
75
|
+
* health status.
|
|
76
|
+
*
|
|
77
|
+
* @group Controllers
|
|
78
|
+
* @group Controllers/Health
|
|
79
|
+
*/
|
|
80
|
+
declare const healthController: _homer0_jimple.Resource<"controller", "connect", ControllerConnectFn>;
|
|
81
|
+
|
|
82
|
+
export { GetHealthStatus, HealthController, HealthControllerOptions, healthController };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var __publicField = (obj, key, value) => {
|
|
21
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
var health_exports = {};
|
|
25
|
+
__export(health_exports, {
|
|
26
|
+
HealthController: () => HealthController,
|
|
27
|
+
healthController: () => healthController
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(health_exports);
|
|
30
|
+
var import_utils = require("../../utils");
|
|
31
|
+
class HealthController {
|
|
32
|
+
constructor({ inject }) {
|
|
33
|
+
__publicField(this, "_getHealthStatus");
|
|
34
|
+
__publicField(this, "_responsesBuilder");
|
|
35
|
+
__publicField(this, "_config");
|
|
36
|
+
__publicField(this, "_statuses");
|
|
37
|
+
this._getHealthStatus = inject.getHealthStatus;
|
|
38
|
+
this._responsesBuilder = inject.responsesBuilder;
|
|
39
|
+
this._config = inject.config;
|
|
40
|
+
this._statuses = inject.statuses;
|
|
41
|
+
}
|
|
42
|
+
showHealth() {
|
|
43
|
+
return async (_, res) => {
|
|
44
|
+
const healthStatus = await this._getHealthStatus();
|
|
45
|
+
let isHealthy;
|
|
46
|
+
let extras;
|
|
47
|
+
if (typeof healthStatus === "boolean") {
|
|
48
|
+
isHealthy = healthStatus;
|
|
49
|
+
extras = {};
|
|
50
|
+
} else {
|
|
51
|
+
if (typeof healthStatus.isHealthy === "boolean") {
|
|
52
|
+
isHealthy = healthStatus.isHealthy;
|
|
53
|
+
} else if (healthStatus.services) {
|
|
54
|
+
isHealthy = Object.values(healthStatus.services).every(
|
|
55
|
+
(value) => value === true
|
|
56
|
+
);
|
|
57
|
+
} else {
|
|
58
|
+
isHealthy = true;
|
|
59
|
+
}
|
|
60
|
+
extras = {
|
|
61
|
+
...healthStatus.services
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const { name: config, version } = this._config.get(["name", "version"]);
|
|
65
|
+
const status = isHealthy ? this._statuses("ok") : this._statuses("service unavailable");
|
|
66
|
+
this._responsesBuilder.json({
|
|
67
|
+
res,
|
|
68
|
+
status,
|
|
69
|
+
data: {
|
|
70
|
+
isHealthy,
|
|
71
|
+
status,
|
|
72
|
+
config,
|
|
73
|
+
version,
|
|
74
|
+
...extras
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const healthController = (0, import_utils.controller)((app) => {
|
|
81
|
+
const router = app.getRouter();
|
|
82
|
+
const ctrl = new HealthController({
|
|
83
|
+
inject: {
|
|
84
|
+
getHealthStatus: app.isHealthy.bind(app),
|
|
85
|
+
responsesBuilder: app.get("responsesBuilder"),
|
|
86
|
+
config: app.get("config"),
|
|
87
|
+
statuses: app.get("statuses")
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return router.get("/", ctrl.showHealth());
|
|
91
|
+
});
|
|
92
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
93
|
+
0 && (module.exports = {
|
|
94
|
+
HealthController,
|
|
95
|
+
healthController
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/controllers/common/health.ts"],"sourcesContent":["import { controller, type Statuses } from '../../utils';\nimport type { ResponsesBuilder } from '../../services';\nimport type { JimpexHealthStatus, Config, AsyncExpressMiddleware } from '../../types';\n/**\n * A function that will return the health status of the application.\n *\n * @group Controllers/Health\n */\nexport type GetHealthStatus = () => Promise<JimpexHealthStatus>;\n/**\n * The options to contruct a {@link HealthController}.\n *\n * @group Controllers/Health\n */\nexport type HealthControllerOptions = {\n /**\n * A dictionary with the dependencies to inject.\n */\n inject: {\n getHealthStatus: GetHealthStatus;\n responsesBuilder: ResponsesBuilder;\n config: Config;\n statuses: Statuses;\n };\n};\n/**\n * The controller class that shows the application health status.\n *\n * @group Controller Classes\n * @group Controllers/Health\n * @prettierignore\n */\nexport class HealthController {\n /**\n * The function that returns the health status of the application.\n */\n protected readonly _getHealthStatus: GetHealthStatus;\n /**\n * The service in charge or building the responses.\n */\n protected readonly _responsesBuilder: ResponsesBuilder;\n /**\n * The service in charge of the configuration.\n */\n protected readonly _config: Config;\n /**\n * The uility service to get HTTP status codes.\n */\n protected readonly _statuses: Statuses;\n /**\n * @param options The options to construct the controller.\n */\n constructor({ inject }: HealthControllerOptions) {\n this._getHealthStatus = inject.getHealthStatus;\n this._responsesBuilder = inject.responsesBuilder;\n this._config = inject.config;\n this._statuses = inject.statuses;\n }\n /**\n * Creates the middleware the shows the application health status.\n */\n showHealth(): AsyncExpressMiddleware {\n return async (_, res) => {\n const healthStatus = await this._getHealthStatus();\n let isHealthy: boolean;\n let extras: Record<string, unknown>;\n if (typeof healthStatus === 'boolean') {\n isHealthy = healthStatus;\n extras = {};\n } else {\n if (typeof healthStatus.isHealthy === 'boolean') {\n isHealthy = healthStatus.isHealthy;\n } else if (healthStatus.services) {\n isHealthy = Object.values(healthStatus.services).every(\n (value) => value === true,\n );\n } else {\n isHealthy = true;\n }\n\n extras = {\n ...healthStatus.services,\n };\n }\n\n const { name: config, version } = this._config.get<{\n name: string;\n version: string;\n }>(['name', 'version']);\n\n const status = isHealthy\n ? this._statuses('ok')\n : this._statuses('service unavailable');\n\n this._responsesBuilder.json({\n res,\n status,\n data: {\n isHealthy,\n status,\n config,\n version,\n ...extras,\n },\n });\n };\n }\n}\n/**\n * The controller that once mounted, it will add an endpoint to show the application\n * health status.\n *\n * @group Controllers\n * @group Controllers/Health\n */\nexport const healthController = controller((app) => {\n const router = app.getRouter();\n const ctrl = new HealthController({\n inject: {\n getHealthStatus: app.isHealthy.bind(app),\n responsesBuilder: app.get('responsesBuilder'),\n config: app.get('config'),\n statuses: app.get('statuses'),\n },\n });\n\n return router.get('/', ctrl.showHealth());\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0C;AAgCnC,MAAM,iBAAiB;AAAA,EAoB5B,YAAY,EAAE,OAAO,GAA4B;AAhBjD,wBAAmB;AAInB,wBAAmB;AAInB,wBAAmB;AAInB,wBAAmB;AAKjB,SAAK,mBAAmB,OAAO;AAC/B,SAAK,oBAAoB,OAAO;AAChC,SAAK,UAAU,OAAO;AACtB,SAAK,YAAY,OAAO;AAAA,EAC1B;AAAA,EAIA,aAAqC;AACnC,WAAO,OAAO,GAAG,QAAQ;AACvB,YAAM,eAAe,MAAM,KAAK,iBAAiB;AACjD,UAAI;AACJ,UAAI;AACJ,UAAI,OAAO,iBAAiB,WAAW;AACrC,oBAAY;AACZ,iBAAS,CAAC;AAAA,MACZ,OAAO;AACL,YAAI,OAAO,aAAa,cAAc,WAAW;AAC/C,sBAAY,aAAa;AAAA,QAC3B,WAAW,aAAa,UAAU;AAChC,sBAAY,OAAO,OAAO,aAAa,QAAQ,EAAE;AAAA,YAC/C,CAAC,UAAU,UAAU;AAAA,UACvB;AAAA,QACF,OAAO;AACL,sBAAY;AAAA,QACd;AAEA,iBAAS;AAAA,UACP,GAAG,aAAa;AAAA,QAClB;AAAA,MACF;AAEA,YAAM,EAAE,MAAM,QAAQ,QAAQ,IAAI,KAAK,QAAQ,IAG5C,CAAC,QAAQ,SAAS,CAAC;AAEtB,YAAM,SAAS,YACX,KAAK,UAAU,IAAI,IACnB,KAAK,UAAU,qBAAqB;AAExC,WAAK,kBAAkB,KAAK;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAQO,MAAM,uBAAmB,yBAAW,CAAC,QAAQ;AAClD,QAAM,SAAS,IAAI,UAAU;AAC7B,QAAM,OAAO,IAAI,iBAAiB;AAAA,IAChC,QAAQ;AAAA,MACN,iBAAiB,IAAI,UAAU,KAAK,GAAG;AAAA,MACvC,kBAAkB,IAAI,IAAI,kBAAkB;AAAA,MAC5C,QAAQ,IAAI,IAAI,QAAQ;AAAA,MACxB,UAAU,IAAI,IAAI,UAAU;AAAA,IAC9B;AAAA,EACF,CAAC;AAED,SAAO,OAAO,IAAI,KAAK,KAAK,WAAW,CAAC;AAC1C,CAAC;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { ConfigController, ConfigControllerOptions, configController } from './config.js';
|
|
2
|
+
export { GetHealthStatus, HealthController, HealthControllerOptions, healthController } from './health.js';
|
|
3
|
+
export { AddStaticRouteOptions, StaticsController, StaticsControllerConstructorOptions, StaticsControllerCreatorOptions, StaticsControllerFile, StaticsControllerGetMiddlewaresFn, StaticsControllerOptions, StaticsControllerPathsOptions, staticsController } from './statics.js';
|
|
4
|
+
import '@homer0/jimple';
|
|
5
|
+
import '../../jimpex-7eaee271.js';
|
|
6
|
+
import '@homer0/events-hub';
|
|
7
|
+
import '../../types/express.js';
|
|
8
|
+
import 'express';
|
|
9
|
+
import '../../types/http.js';
|
|
10
|
+
import 'https';
|
|
11
|
+
import 'http';
|
|
12
|
+
import 'spdy';
|
|
13
|
+
import 'node-fetch';
|
|
14
|
+
import '@homer0/simple-config';
|
|
15
|
+
import '../../types/utils.js';
|
|
16
|
+
import '@homer0/simple-logger';
|
|
17
|
+
import '../../services/http/responsesBuilder.js';
|
|
18
|
+
import '../../utils/fns/statuses.js';
|
|
19
|
+
import 'statuses';
|
|
20
|
+
import '../../services/common/sendFile.js';
|
|
21
|
+
import '@homer0/path-utils';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var common_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(common_exports);
|
|
18
|
+
__reExport(common_exports, require("./config"), module.exports);
|
|
19
|
+
__reExport(common_exports, require("./health"), module.exports);
|
|
20
|
+
__reExport(common_exports, require("./statics"), module.exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/controllers/common/index.ts"],"sourcesContent":["export * from './config';\nexport * from './health';\nexport * from './statics';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,2BAAc,qBAAd;AACA,2BAAc,qBADd;AAEA,2BAAc,sBAFd;","names":[]}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import * as _homer0_jimple from '@homer0/jimple';
|
|
2
|
+
import { J as Jimpex, a1 as MiddlewareLike, C as ControllerConnectFn } from '../../jimpex-7eaee271.js';
|
|
3
|
+
import { RouterMethod, ExpressMiddleware } from '../../types/express.js';
|
|
4
|
+
import { DeepPartial } from '../../types/utils.js';
|
|
5
|
+
import { SendFile } from '../../services/common/sendFile.js';
|
|
6
|
+
import { Router } from 'express';
|
|
7
|
+
import '@homer0/events-hub';
|
|
8
|
+
import '../../types/http.js';
|
|
9
|
+
import 'https';
|
|
10
|
+
import 'http';
|
|
11
|
+
import 'spdy';
|
|
12
|
+
import 'node-fetch';
|
|
13
|
+
import '@homer0/simple-config';
|
|
14
|
+
import '@homer0/simple-logger';
|
|
15
|
+
import '@homer0/path-utils';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The definition for each file the controller handles.
|
|
19
|
+
*
|
|
20
|
+
* @group Controllers/Statics
|
|
21
|
+
*/
|
|
22
|
+
type StaticsControllerFile = {
|
|
23
|
+
/**
|
|
24
|
+
* The route, relative to the controller root, to the file.
|
|
25
|
+
*/
|
|
26
|
+
route: string;
|
|
27
|
+
/**
|
|
28
|
+
* The path to the file in the filesystem. Since the file is served using the
|
|
29
|
+
* {@link SendFile} service, whether the file is relative to the project root or the
|
|
30
|
+
* application executable depends on how the service is configured (relative to the
|
|
31
|
+
* executable by default).
|
|
32
|
+
*/
|
|
33
|
+
path: string;
|
|
34
|
+
/**
|
|
35
|
+
* A dictionary of headers for the response.
|
|
36
|
+
*/
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* These are like "master paths" that get prepended to all the file paths and routes the
|
|
41
|
+
* controller use.
|
|
42
|
+
*
|
|
43
|
+
* @group Controllers/Statics
|
|
44
|
+
*/
|
|
45
|
+
type StaticsControllerPathsOptions = {
|
|
46
|
+
/**
|
|
47
|
+
* A custom route to prefix all the file routes with.
|
|
48
|
+
*/
|
|
49
|
+
route: string;
|
|
50
|
+
/**
|
|
51
|
+
* A custom path to prefix all the file paths with.
|
|
52
|
+
*/
|
|
53
|
+
source: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* The options to customize the controller.
|
|
57
|
+
*
|
|
58
|
+
* @group Controllers/Statics
|
|
59
|
+
*/
|
|
60
|
+
type StaticsControllerOptions = {
|
|
61
|
+
/**
|
|
62
|
+
* A list of filenames, or definitions for the files to handle.
|
|
63
|
+
*/
|
|
64
|
+
files: Array<string | StaticsControllerFile>;
|
|
65
|
+
/**
|
|
66
|
+
* A dictionary with the allowed router (HTTP) methods the controller can use to serve
|
|
67
|
+
* the files. If `all` is set to `true`, the rest of the values will be ignored.
|
|
68
|
+
*
|
|
69
|
+
* @default {get: true, all: false}
|
|
70
|
+
*/
|
|
71
|
+
methods: Partial<Record<RouterMethod, boolean>>;
|
|
72
|
+
/**
|
|
73
|
+
* The "master paths" the controller can use to prefix the file paths and routes.
|
|
74
|
+
*
|
|
75
|
+
* @default {route: '', source: './',}
|
|
76
|
+
*/
|
|
77
|
+
paths: StaticsControllerPathsOptions;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The options to construct a {@link StaticsController}.
|
|
81
|
+
*
|
|
82
|
+
* @group Controllers/Statics
|
|
83
|
+
*/
|
|
84
|
+
type StaticsControllerConstructorOptions = DeepPartial<StaticsControllerOptions> & {
|
|
85
|
+
/**
|
|
86
|
+
* A dictionary with the dependencies to inject.
|
|
87
|
+
*/
|
|
88
|
+
inject: {
|
|
89
|
+
sendFile: SendFile;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* A function to generate a list of middlewares that can be executed before the tontroller
|
|
94
|
+
* main middleware.
|
|
95
|
+
*
|
|
96
|
+
* @group Controllers/Statics
|
|
97
|
+
*/
|
|
98
|
+
type StaticsControllerGetMiddlewaresFn = (app: Jimpex) => MiddlewareLike[];
|
|
99
|
+
/**
|
|
100
|
+
* The options for the controller creator that mounts {@link StaticsController}.
|
|
101
|
+
*
|
|
102
|
+
* @group Controllers/Statics
|
|
103
|
+
*/
|
|
104
|
+
type StaticsControllerCreatorOptions = DeepPartial<StaticsControllerOptions> & {
|
|
105
|
+
/**
|
|
106
|
+
* A function to generate a list of middlewares that can be executed before the
|
|
107
|
+
* tontroller main middleware.
|
|
108
|
+
*/
|
|
109
|
+
getMiddlewares?: StaticsControllerGetMiddlewaresFn;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* The options for {@link StaticsController._addRoute}.
|
|
113
|
+
*
|
|
114
|
+
* @access protected
|
|
115
|
+
* @group Controllers/Statics
|
|
116
|
+
*/
|
|
117
|
+
type AddStaticRouteOptions = {
|
|
118
|
+
/**
|
|
119
|
+
* The reference for the router in which the middlewares will be added.
|
|
120
|
+
*/
|
|
121
|
+
router: Router;
|
|
122
|
+
/**
|
|
123
|
+
* The router method in which the middlewares will be added.
|
|
124
|
+
*/
|
|
125
|
+
method: RouterMethod;
|
|
126
|
+
/**
|
|
127
|
+
* The definition of the file to serve.
|
|
128
|
+
*/
|
|
129
|
+
file: StaticsControllerFile;
|
|
130
|
+
/**
|
|
131
|
+
* The middleware created by {@link StaticsController}, that will serve the file.
|
|
132
|
+
*/
|
|
133
|
+
fileMiddleware: ExpressMiddleware;
|
|
134
|
+
/**
|
|
135
|
+
* A list of extra middlewares to execute before the file middleware.
|
|
136
|
+
*/
|
|
137
|
+
middlewares: ExpressMiddleware[];
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* The controller class that allows the application to serve specific files from any
|
|
141
|
+
* folder to any route without the need of mounting directories as "static".
|
|
142
|
+
*
|
|
143
|
+
* @group Controller Classes
|
|
144
|
+
* @group Controllers/Statics
|
|
145
|
+
* @prettierignore
|
|
146
|
+
*/
|
|
147
|
+
declare class StaticsController {
|
|
148
|
+
/**
|
|
149
|
+
* The service that serves static files.
|
|
150
|
+
*/
|
|
151
|
+
protected readonly _sendFile: SendFile;
|
|
152
|
+
/**
|
|
153
|
+
* The controller customization options.
|
|
154
|
+
*/
|
|
155
|
+
protected _options: StaticsControllerOptions;
|
|
156
|
+
/**
|
|
157
|
+
* A dictionary with the formatted definitions of the files that will be served.
|
|
158
|
+
* It uses the files' routes as keys, for easy access in the middleware.
|
|
159
|
+
*/
|
|
160
|
+
protected files: Record<string, StaticsControllerFile>;
|
|
161
|
+
/**
|
|
162
|
+
* @param options The options to construct the controller.
|
|
163
|
+
*/
|
|
164
|
+
constructor({ inject, ...options }: StaticsControllerConstructorOptions);
|
|
165
|
+
/**
|
|
166
|
+
* Mounts the middlewares in the router in order to serve the files.
|
|
167
|
+
*
|
|
168
|
+
* @param router A reference to the application router.
|
|
169
|
+
* @param middlewares A list of extra middlewares to execute before the file
|
|
170
|
+
* middleware.
|
|
171
|
+
*/
|
|
172
|
+
addRoutes(router: Router, middlewares?: ExpressMiddleware[]): Router;
|
|
173
|
+
/**
|
|
174
|
+
* The controller options.
|
|
175
|
+
*/
|
|
176
|
+
get options(): Readonly<StaticsControllerOptions>;
|
|
177
|
+
/**
|
|
178
|
+
* Generates the middleware that will serve the file.
|
|
179
|
+
*
|
|
180
|
+
* @param file The definition of the file to serve.
|
|
181
|
+
*/
|
|
182
|
+
protected _getMiddleware(file: StaticsControllerFile): ExpressMiddleware;
|
|
183
|
+
/**
|
|
184
|
+
* Mounts the middleware(s) for a file in the router.
|
|
185
|
+
*
|
|
186
|
+
* @param options The information of the file and how it needs to be added.
|
|
187
|
+
*/
|
|
188
|
+
protected _addRoute({ router, method, file, fileMiddleware, middlewares, }: AddStaticRouteOptions): void;
|
|
189
|
+
/**
|
|
190
|
+
* Validates and formats the options sent to the constructor in order to get the final
|
|
191
|
+
* set that will be stored in the controller.
|
|
192
|
+
*
|
|
193
|
+
* @param options The options to validate.
|
|
194
|
+
* @throws If no files are specified.
|
|
195
|
+
* @throws If methods is not defined.
|
|
196
|
+
* @throws If no methods are enabled.
|
|
197
|
+
* @throws If there's an invalid HTTP method.
|
|
198
|
+
*/
|
|
199
|
+
protected _validateOptions(options: StaticsControllerOptions): StaticsControllerOptions;
|
|
200
|
+
/**
|
|
201
|
+
* Parses the files received from the constructor's options, and formats them into
|
|
202
|
+
* proper definitions the controller can use.
|
|
203
|
+
*/
|
|
204
|
+
protected _createFiles(): Record<string, StaticsControllerFile>;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* A controller that allows the application to server specific files from any folder to
|
|
208
|
+
* any route without the need of mounting directories as "static" folders.
|
|
209
|
+
*
|
|
210
|
+
* @group Controllers
|
|
211
|
+
* @group Controllers/Statics
|
|
212
|
+
*/
|
|
213
|
+
declare const staticsController: _homer0_jimple.ResourceCreator<"controller", "connect", ({ getMiddlewares, ...options }?: StaticsControllerCreatorOptions) => <ContainerType extends Jimpex = Jimpex>(app: ContainerType) => Router, ControllerConnectFn>;
|
|
214
|
+
|
|
215
|
+
export { AddStaticRouteOptions, StaticsController, StaticsControllerConstructorOptions, StaticsControllerCreatorOptions, StaticsControllerFile, StaticsControllerGetMiddlewaresFn, StaticsControllerOptions, StaticsControllerPathsOptions, staticsController };
|