jimpex 10.0.2 → 11.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 +29 -0
- package/README.md +7 -9
- package/dist/app/index.d.ts +1 -1
- package/dist/app/index.js +1 -22
- package/dist/app/index.js.map +1 -1
- package/dist/app/jimpex.d.ts +1 -1
- package/dist/app/jimpex.js +100 -131
- package/dist/app/jimpex.js.map +1 -1
- package/dist/controllers/common/config.d.ts +2 -2
- package/dist/controllers/common/config.js +12 -39
- package/dist/controllers/common/config.js.map +1 -1
- package/dist/controllers/common/health.d.ts +4 -4
- package/dist/controllers/common/health.js +20 -47
- package/dist/controllers/common/health.js.map +1 -1
- package/dist/controllers/common/index.d.ts +1 -1
- package/dist/controllers/common/index.js +3 -26
- package/dist/controllers/common/index.js.map +1 -1
- package/dist/controllers/common/statics.d.ts +3 -3
- package/dist/controllers/common/statics.js +32 -65
- package/dist/controllers/common/statics.js.map +1 -1
- package/dist/controllers/index.d.ts +1 -1
- package/dist/controllers/index.js +2 -24
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/utils/gateway.d.ts +5 -5
- package/dist/controllers/utils/gateway.js +70 -91
- package/dist/controllers/utils/gateway.js.map +1 -1
- package/dist/controllers/utils/index.d.ts +1 -1
- package/dist/controllers/utils/index.js +1 -22
- package/dist/controllers/utils/index.js.map +1 -1
- package/dist/{index-C6I3NCC-.d.ts → index-BlSpNHox.d.ts} +13 -13
- package/dist/index.d.ts +3 -3
- package/dist/index.js +6 -32
- package/dist/index.js.map +1 -1
- package/dist/middlewares/common/errorHandler.d.ts +5 -5
- package/dist/middlewares/common/errorHandler.js +31 -56
- package/dist/middlewares/common/errorHandler.js.map +1 -1
- package/dist/middlewares/common/forceHTTPS.d.ts +1 -1
- package/dist/middlewares/common/forceHTTPS.js +8 -35
- package/dist/middlewares/common/forceHTTPS.js.map +1 -1
- package/dist/middlewares/common/hsts.d.ts +1 -1
- package/dist/middlewares/common/hsts.js +12 -39
- package/dist/middlewares/common/hsts.js.map +1 -1
- package/dist/middlewares/common/index.d.ts +3 -3
- package/dist/middlewares/common/index.js +3 -26
- package/dist/middlewares/common/index.js.map +1 -1
- package/dist/middlewares/html/fastHTML.d.ts +4 -4
- package/dist/middlewares/html/fastHTML.js +43 -66
- package/dist/middlewares/html/fastHTML.js.map +1 -1
- package/dist/middlewares/html/index.d.ts +2 -2
- package/dist/middlewares/html/index.js +2 -24
- package/dist/middlewares/html/index.js.map +1 -1
- package/dist/middlewares/html/showHTML.d.ts +3 -3
- package/dist/middlewares/html/showHTML.js +25 -52
- package/dist/middlewares/html/showHTML.js.map +1 -1
- package/dist/middlewares/index.d.ts +4 -4
- package/dist/middlewares/index.js +3 -26
- package/dist/middlewares/index.js.map +1 -1
- package/dist/middlewares/utils/index.d.ts +3 -3
- package/dist/middlewares/utils/index.js +1 -22
- package/dist/middlewares/utils/index.js.map +1 -1
- package/dist/middlewares/utils/versionValidator.d.ts +5 -5
- package/dist/middlewares/utils/versionValidator.js +24 -51
- package/dist/middlewares/utils/versionValidator.js.map +1 -1
- package/dist/services/common/appError.d.ts +2 -2
- package/dist/services/common/appError.js +18 -46
- package/dist/services/common/appError.js.map +1 -1
- package/dist/services/common/httpError.d.ts +2 -2
- package/dist/services/common/httpError.js +7 -33
- package/dist/services/common/httpError.js.map +1 -1
- package/dist/services/common/index.d.ts +1 -1
- package/dist/services/common/index.js +14 -42
- package/dist/services/common/index.js.map +1 -1
- package/dist/services/common/sendFile.d.ts +1 -1
- package/dist/services/common/sendFile.js +4 -29
- package/dist/services/common/sendFile.js.map +1 -1
- package/dist/services/frontend/frontendFs.d.ts +2 -2
- package/dist/services/frontend/frontendFs.js +12 -49
- package/dist/services/frontend/frontendFs.js.map +1 -1
- package/dist/services/frontend/index.d.ts +2 -2
- package/dist/services/frontend/index.js +8 -34
- package/dist/services/frontend/index.js.map +1 -1
- package/dist/services/html/htmlGenerator.d.ts +5 -5
- package/dist/services/html/htmlGenerator.js +46 -75
- package/dist/services/html/htmlGenerator.js.map +1 -1
- package/dist/services/html/index.d.ts +2 -2
- package/dist/services/html/index.js +8 -34
- package/dist/services/html/index.js.map +1 -1
- package/dist/services/http/apiClient.d.ts +1 -1
- package/dist/services/http/apiClient.js +23 -48
- package/dist/services/http/apiClient.js.map +1 -1
- package/dist/services/http/http.d.ts +5 -5
- package/dist/services/http/http.js +23 -60
- package/dist/services/http/http.js.map +1 -1
- package/dist/services/http/index.d.ts +2 -2
- package/dist/services/http/index.js +14 -42
- package/dist/services/http/index.js.map +1 -1
- package/dist/services/http/responsesBuilder.d.ts +4 -4
- package/dist/services/http/responsesBuilder.js +13 -40
- package/dist/services/http/responsesBuilder.js.map +1 -1
- package/dist/services/index.d.ts +3 -3
- package/dist/services/index.js +5 -30
- package/dist/services/index.js.map +1 -1
- package/dist/services/utils/ensureBearerToken.d.ts +2 -2
- package/dist/services/utils/ensureBearerToken.js +15 -42
- package/dist/services/utils/ensureBearerToken.js.map +1 -1
- package/dist/services/utils/index.d.ts +1 -1
- package/dist/services/utils/index.js +8 -34
- package/dist/services/utils/index.js.map +1 -1
- package/dist/types/events.d.ts +1 -1
- package/dist/types/events.js +0 -16
- package/dist/types/events.js.map +1 -1
- package/dist/types/express.js +0 -16
- package/dist/types/express.js.map +1 -1
- package/dist/types/http.js +0 -16
- package/dist/types/http.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +6 -32
- package/dist/types/index.js.map +1 -1
- package/dist/types/options.d.ts +1 -1
- package/dist/types/options.js +0 -16
- package/dist/types/options.js.map +1 -1
- package/dist/types/utils.js +0 -16
- package/dist/types/utils.js.map +1 -1
- package/dist/types/wootils.js +0 -16
- package/dist/types/wootils.js.map +1 -1
- package/dist/utils/fns/index.js +4 -28
- package/dist/utils/fns/index.js.map +1 -1
- package/dist/utils/fns/others.js +2 -26
- package/dist/utils/fns/others.js.map +1 -1
- package/dist/utils/fns/routes.js +4 -31
- package/dist/utils/fns/routes.js.map +1 -1
- package/dist/utils/fns/statuses.js +3 -37
- package/dist/utils/fns/statuses.js.map +1 -1
- package/dist/utils/fns/text.js +2 -26
- package/dist/utils/fns/text.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +2 -24
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/wrappers.d.ts +1 -1
- package/dist/utils/wrappers.js +20 -48
- package/dist/utils/wrappers.js.map +1 -1
- package/eslint.config.js +19 -0
- package/examples/basic/app.ts +4 -4
- package/examples/basic/controller.ts +2 -2
- package/examples/basic/index.ts +4 -4
- package/examples/basic/middleware.ts +2 -2
- package/examples/basic/service.ts +1 -1
- package/package.json +61 -49
- package/pnpm-workspace.yaml +4 -0
- package/src/app/index.ts +1 -1
- package/src/app/jimpex.ts +23 -20
- package/src/controllers/common/config.ts +4 -4
- package/src/controllers/common/health.ts +9 -5
- package/src/controllers/common/index.ts +3 -3
- package/src/controllers/common/statics.ts +12 -7
- package/src/controllers/index.ts +2 -2
- package/src/controllers/utils/gateway.ts +8 -8
- package/src/controllers/utils/index.ts +1 -1
- package/src/index.ts +6 -6
- package/src/middlewares/common/errorHandler.ts +9 -5
- package/src/middlewares/common/forceHTTPS.ts +2 -2
- package/src/middlewares/common/hsts.ts +2 -2
- package/src/middlewares/common/index.ts +3 -3
- package/src/middlewares/html/fastHTML.ts +14 -5
- package/src/middlewares/html/index.ts +2 -2
- package/src/middlewares/html/showHTML.ts +8 -4
- package/src/middlewares/index.ts +3 -3
- package/src/middlewares/utils/index.ts +1 -1
- package/src/middlewares/utils/versionValidator.ts +6 -6
- package/src/services/common/appError.ts +1 -1
- package/src/services/common/httpError.ts +2 -2
- package/src/services/common/index.ts +7 -7
- package/src/services/common/sendFile.ts +2 -2
- package/src/services/frontend/frontendFs.ts +3 -3
- package/src/services/frontend/index.ts +3 -3
- package/src/services/html/htmlGenerator.ts +11 -13
- package/src/services/html/index.ts +3 -3
- package/src/services/http/apiClient.ts +3 -3
- package/src/services/http/http.ts +5 -5
- package/src/services/http/index.ts +7 -7
- package/src/services/http/responsesBuilder.ts +5 -5
- package/src/services/index.ts +5 -5
- package/src/services/utils/ensureBearerToken.ts +4 -4
- package/src/services/utils/index.ts +3 -3
- package/src/types/events.ts +8 -8
- package/src/types/http.ts +1 -1
- package/src/types/index.ts +6 -6
- package/src/types/options.ts +2 -2
- package/src/types/utils.ts +4 -4
- package/src/utils/fns/index.ts +4 -4
- package/src/utils/fns/routes.ts +1 -1
- package/src/utils/index.ts +2 -2
- package/src/utils/wrappers.ts +6 -6
- package/tsconfig.json +9 -4
- package/tsup.config.ts +1 -2
- package/vitest.config.ts +24 -0
- package/dist/app/index.d.mts +0 -14
- package/dist/app/jimpex.d.mts +0 -14
- package/dist/controllers/common/config.d.mts +0 -79
- package/dist/controllers/common/health.d.mts +0 -83
- package/dist/controllers/common/index.d.mts +0 -22
- package/dist/controllers/common/statics.d.mts +0 -223
- package/dist/controllers/index.d.mts +0 -25
- package/dist/controllers/utils/gateway.d.mts +0 -725
- package/dist/controllers/utils/index.d.mts +0 -17
- package/dist/esm/app/index.js +0 -2
- package/dist/esm/app/index.js.map +0 -1
- package/dist/esm/app/jimpex.js +0 -640
- package/dist/esm/app/jimpex.js.map +0 -1
- package/dist/esm/chunk-V6TY7KAL.js +0 -8
- package/dist/esm/chunk-V6TY7KAL.js.map +0 -1
- package/dist/esm/controllers/common/config.js +0 -80
- package/dist/esm/controllers/common/config.js.map +0 -1
- package/dist/esm/controllers/common/health.js +0 -88
- package/dist/esm/controllers/common/health.js.map +0 -1
- package/dist/esm/controllers/common/index.js +0 -4
- package/dist/esm/controllers/common/index.js.map +0 -1
- package/dist/esm/controllers/common/statics.js +0 -226
- package/dist/esm/controllers/common/statics.js.map +0 -1
- package/dist/esm/controllers/index.js +0 -3
- package/dist/esm/controllers/index.js.map +0 -1
- package/dist/esm/controllers/utils/gateway.js +0 -559
- package/dist/esm/controllers/utils/gateway.js.map +0 -1
- package/dist/esm/controllers/utils/index.js +0 -2
- package/dist/esm/controllers/utils/index.js.map +0 -1
- package/dist/esm/index.js +0 -7
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/middlewares/common/errorHandler.js +0 -116
- package/dist/esm/middlewares/common/errorHandler.js.map +0 -1
- package/dist/esm/middlewares/common/forceHTTPS.js +0 -52
- package/dist/esm/middlewares/common/forceHTTPS.js.map +0 -1
- package/dist/esm/middlewares/common/hsts.js +0 -74
- package/dist/esm/middlewares/common/hsts.js.map +0 -1
- package/dist/esm/middlewares/common/index.js +0 -4
- package/dist/esm/middlewares/common/index.js.map +0 -1
- package/dist/esm/middlewares/html/fastHTML.js +0 -157
- package/dist/esm/middlewares/html/fastHTML.js.map +0 -1
- package/dist/esm/middlewares/html/index.js +0 -3
- package/dist/esm/middlewares/html/index.js.map +0 -1
- package/dist/esm/middlewares/html/showHTML.js +0 -100
- package/dist/esm/middlewares/html/showHTML.js.map +0 -1
- package/dist/esm/middlewares/index.js +0 -4
- package/dist/esm/middlewares/index.js.map +0 -1
- package/dist/esm/middlewares/utils/index.js +0 -2
- package/dist/esm/middlewares/utils/index.js.map +0 -1
- package/dist/esm/middlewares/utils/versionValidator.js +0 -135
- package/dist/esm/middlewares/utils/versionValidator.js.map +0 -1
- package/dist/esm/services/common/appError.js +0 -98
- package/dist/esm/services/common/appError.js.map +0 -1
- package/dist/esm/services/common/httpError.js +0 -28
- package/dist/esm/services/common/httpError.js.map +0 -1
- package/dist/esm/services/common/index.js +0 -17
- package/dist/esm/services/common/index.js.map +0 -1
- package/dist/esm/services/common/sendFile.js +0 -27
- package/dist/esm/services/common/sendFile.js.map +0 -1
- package/dist/esm/services/frontend/frontendFs.js +0 -66
- package/dist/esm/services/frontend/frontendFs.js.map +0 -1
- package/dist/esm/services/frontend/index.js +0 -11
- package/dist/esm/services/frontend/index.js.map +0 -1
- package/dist/esm/services/html/htmlGenerator.js +0 -192
- package/dist/esm/services/html/htmlGenerator.js.map +0 -1
- package/dist/esm/services/html/index.js +0 -11
- package/dist/esm/services/html/index.js.map +0 -1
- package/dist/esm/services/http/apiClient.js +0 -94
- package/dist/esm/services/http/apiClient.js.map +0 -1
- package/dist/esm/services/http/http.js +0 -180
- package/dist/esm/services/http/http.js.map +0 -1
- package/dist/esm/services/http/index.js +0 -17
- package/dist/esm/services/http/index.js.map +0 -1
- package/dist/esm/services/http/responsesBuilder.js +0 -152
- package/dist/esm/services/http/responsesBuilder.js.map +0 -1
- package/dist/esm/services/index.js +0 -6
- package/dist/esm/services/index.js.map +0 -1
- package/dist/esm/services/utils/ensureBearerToken.js +0 -94
- package/dist/esm/services/utils/ensureBearerToken.js.map +0 -1
- package/dist/esm/services/utils/index.js +0 -11
- package/dist/esm/services/utils/index.js.map +0 -1
- package/dist/esm/types/events.js +0 -1
- package/dist/esm/types/events.js.map +0 -1
- package/dist/esm/types/express.js +0 -1
- package/dist/esm/types/express.js.map +0 -1
- package/dist/esm/types/http.js +0 -1
- package/dist/esm/types/http.js.map +0 -1
- package/dist/esm/types/index.js +0 -7
- package/dist/esm/types/index.js.map +0 -1
- package/dist/esm/types/options.js +0 -1
- package/dist/esm/types/options.js.map +0 -1
- package/dist/esm/types/utils.js +0 -1
- package/dist/esm/types/utils.js.map +0 -1
- package/dist/esm/types/wootils.js +0 -1
- package/dist/esm/types/wootils.js.map +0 -1
- package/dist/esm/utils/fns/index.js +0 -5
- package/dist/esm/utils/fns/index.js.map +0 -1
- package/dist/esm/utils/fns/others.js +0 -6
- package/dist/esm/utils/fns/others.js.map +0 -1
- package/dist/esm/utils/fns/routes.js +0 -25
- package/dist/esm/utils/fns/routes.js.map +0 -1
- package/dist/esm/utils/fns/statuses.js +0 -6
- package/dist/esm/utils/fns/statuses.js.map +0 -1
- package/dist/esm/utils/fns/text.js +0 -6
- package/dist/esm/utils/fns/text.js.map +0 -1
- package/dist/esm/utils/index.js +0 -3
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/esm/utils/wrappers.js +0 -41
- package/dist/esm/utils/wrappers.js.map +0 -1
- package/dist/index-Bwf7JHu9.d.mts +0 -1287
- package/dist/index.d.mts +0 -47
- package/dist/middlewares/common/errorHandler.d.mts +0 -132
- package/dist/middlewares/common/forceHTTPS.d.mts +0 -69
- package/dist/middlewares/common/hsts.d.mts +0 -110
- package/dist/middlewares/common/index.d.mts +0 -22
- package/dist/middlewares/html/fastHTML.d.mts +0 -180
- package/dist/middlewares/html/index.d.mts +0 -21
- package/dist/middlewares/html/showHTML.d.mts +0 -127
- package/dist/middlewares/index.d.mts +0 -30
- package/dist/middlewares/utils/index.d.mts +0 -20
- package/dist/middlewares/utils/versionValidator.d.mts +0 -215
- package/dist/services/common/appError.d.mts +0 -139
- package/dist/services/common/httpError.d.mts +0 -80
- package/dist/services/common/index.d.mts +0 -47
- package/dist/services/common/sendFile.d.mts +0 -102
- package/dist/services/frontend/frontendFs.d.mts +0 -96
- package/dist/services/frontend/index.d.mts +0 -40
- package/dist/services/html/htmlGenerator.d.mts +0 -237
- package/dist/services/html/index.d.mts +0 -43
- package/dist/services/http/apiClient.d.mts +0 -170
- package/dist/services/http/http.d.mts +0 -182
- package/dist/services/http/index.d.mts +0 -51
- package/dist/services/http/responsesBuilder.d.mts +0 -179
- package/dist/services/index.d.mts +0 -33
- package/dist/services/utils/ensureBearerToken.d.mts +0 -158
- package/dist/services/utils/index.d.mts +0 -44
- package/dist/types/events.d.mts +0 -14
- package/dist/types/express.d.mts +0 -10
- package/dist/types/http.d.mts +0 -82
- package/dist/types/index.d.mts +0 -14
- package/dist/types/options.d.mts +0 -14
- package/dist/types/utils.d.mts +0 -48
- package/dist/types/wootils.d.mts +0 -4
- package/dist/utils/fns/index.d.mts +0 -5
- package/dist/utils/fns/others.d.mts +0 -17
- package/dist/utils/fns/routes.d.mts +0 -39
- package/dist/utils/fns/statuses.d.mts +0 -45
- package/dist/utils/fns/text.d.mts +0 -9
- package/dist/utils/index.d.mts +0 -19
- package/dist/utils/wrappers.d.mts +0 -14
package/dist/utils/wrappers.js
CHANGED
|
@@ -1,58 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var wrappers_exports = {};
|
|
20
|
-
__export(wrappers_exports, {
|
|
21
|
-
controller: () => controller,
|
|
22
|
-
controllerCreator: () => controllerCreator,
|
|
23
|
-
controllerProvider: () => controllerProvider,
|
|
24
|
-
controllerProviderCreator: () => controllerProviderCreator,
|
|
25
|
-
middleware: () => middleware,
|
|
26
|
-
middlewareCreator: () => middlewareCreator,
|
|
27
|
-
middlewareProvider: () => middlewareProvider,
|
|
28
|
-
middlewareProviderCreator: () => middlewareProviderCreator,
|
|
29
|
-
provider: () => provider,
|
|
30
|
-
providerCreator: () => providerCreator,
|
|
31
|
-
providers: () => providers
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(wrappers_exports);
|
|
34
|
-
var import_jimple = require("@homer0/jimple");
|
|
35
|
-
const provider = (0, import_jimple.createProvider)();
|
|
36
|
-
const providerCreator = (0, import_jimple.createProviderCreator)();
|
|
37
|
-
const providers = (0, import_jimple.createProviders)();
|
|
38
|
-
const controllerFactory = (0, import_jimple.resourceFactory)();
|
|
1
|
+
import {
|
|
2
|
+
createProvider,
|
|
3
|
+
createProviderCreator,
|
|
4
|
+
createProviders,
|
|
5
|
+
resourceFactory,
|
|
6
|
+
resourceCreatorFactory
|
|
7
|
+
} from "@homer0/jimple";
|
|
8
|
+
const provider = createProvider();
|
|
9
|
+
const providerCreator = createProviderCreator();
|
|
10
|
+
const providers = createProviders();
|
|
11
|
+
const controllerFactory = resourceFactory();
|
|
39
12
|
const controller = (connect) => controllerFactory("controller", "connect", connect);
|
|
40
|
-
const controllerCreatorFactory =
|
|
13
|
+
const controllerCreatorFactory = resourceCreatorFactory();
|
|
41
14
|
const controllerCreator = (creator) => controllerCreatorFactory("controller", "connect", creator);
|
|
42
|
-
const controllerProviderFactory =
|
|
15
|
+
const controllerProviderFactory = resourceFactory();
|
|
43
16
|
const controllerProvider = (register) => controllerProviderFactory("provider", "register", register);
|
|
44
|
-
const controllerProviderCreatorFactory =
|
|
17
|
+
const controllerProviderCreatorFactory = resourceCreatorFactory();
|
|
45
18
|
const controllerProviderCreator = (creator) => controllerProviderCreatorFactory("provider", "register", creator);
|
|
46
|
-
const middlewareFactory =
|
|
19
|
+
const middlewareFactory = resourceFactory();
|
|
47
20
|
const middleware = (connect) => middlewareFactory("middleware", "connect", connect);
|
|
48
|
-
const middlewareCreatorFactory =
|
|
21
|
+
const middlewareCreatorFactory = resourceCreatorFactory();
|
|
49
22
|
const middlewareCreator = (creator) => middlewareCreatorFactory("middleware", "connect", creator);
|
|
50
|
-
const middlewareProviderFactory =
|
|
23
|
+
const middlewareProviderFactory = resourceFactory();
|
|
51
24
|
const middlewareProvider = (register) => middlewareProviderFactory("provider", "register", register);
|
|
52
|
-
const middlewareProviderCreatorFactory =
|
|
25
|
+
const middlewareProviderCreatorFactory = resourceCreatorFactory();
|
|
53
26
|
const middlewareProviderCreator = (creator) => middlewareProviderCreatorFactory("provider", "register", creator);
|
|
54
|
-
|
|
55
|
-
0 && (module.exports = {
|
|
27
|
+
export {
|
|
56
28
|
controller,
|
|
57
29
|
controllerCreator,
|
|
58
30
|
controllerProvider,
|
|
@@ -64,5 +36,5 @@ const middlewareProviderCreator = (creator) => middlewareProviderCreatorFactory(
|
|
|
64
36
|
provider,
|
|
65
37
|
providerCreator,
|
|
66
38
|
providers
|
|
67
|
-
}
|
|
39
|
+
};
|
|
68
40
|
//# sourceMappingURL=wrappers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/wrappers.ts"],"sourcesContent":["import {\n createProvider,\n createProviderCreator,\n createProviders,\n resourceFactory,\n type ProviderRegisterFn as OriginalProviderRegisterFn,\n type GenericCurriedFn,\n resourceCreatorFactory,\n} from '@homer0/jimple';\nimport type { Jimpex } from '../app';\nimport type { Router, ExpressMiddlewareLike, NoStringIndex } from '../types';\n/**\n * The function a provider uses to configure a resource in the container.\n *\n * @group Wrappers\n */\nexport type ProviderRegisterFn = OriginalProviderRegisterFn<Jimpex>;\n/**\n * Creates an object that can configure/extend the container by registering services and\n * resources.\n *\n * @example\n *\n * class APIClient {}\n * const apiClientProvider = provider((app) => {\n * app.set('apiClient', () => new APIClient());\n * });\n *\n * @group Wrappers\n */\nexport const provider = createProvider<Jimpex>();\n/**\n * Creates an object like a provider, but that it can also be used as a function, as it\n * normally expose options for the resources it will configure.\n *\n * @example\n *\n * <caption>Registering as a common provider</caption>\n *\n * const apiClientProvider = providerCreator(\n * ({ serviceName = 'apiClient' }) =>\n * (app) => {\n * app.set(serviceName, () => new APIClient());\n * },\n * );\n *\n * container.register(apiClientProvider);\n *\n * @example\n *\n * <caption>Registering a created provider</caption>\n *\n * container.register(\n * apiClientProvider({\n * serviceName: 'myApiClient',\n * }),\n * );\n *\n * @group Wrappers\n */\nexport const providerCreator = createProviderCreator<Jimpex>();\n/**\n * Creates a collection of providers that can be registered one by one, or all at once.\n *\n * @example\n *\n * <caption>Registering all the providers at once</caption>\n *\n * const collection = providers({\n * apiClient: apiClientProvider,\n * http: httpProvider,\n * });\n *\n * container.register(collection);\n *\n * @example\n *\n * <caption>Registering one by one</caption>\n *\n * container.register(collection.http);\n *\n * @group Wrappers\n */\nexport const providers = createProviders<Jimpex>();\n/**\n * An object that can configure/extend the container by registering services and\n * resources.\n *\n * @group Wrappers\n */\nexport type Provider = ReturnType<typeof provider>;\n/**\n * A provider creator is like a provider, but it can also be used as a function, and it\n * expose options for the resources it will configure.\n *\n * @group Wrappers\n */\nexport type ProviderCreator = ReturnType<typeof providerCreator>;\n/**\n * A collection of providers that can be registered one by one, or all at once.\n *\n * @group Wrappers\n */\nexport type Providers = ReturnType<typeof providers>;\n/**\n * A union of all types that can be registered in the provider with a `register` function.\n *\n * @group Wrappers\n */\nexport type ProviderLike = Provider | ProviderCreator | Providers;\n\n// --\n/**\n * The function a controller uses to mount a controller/middleware in the container.\n *\n * @param container The reference to the Jimpex container.\n * @param route The route on which the controller will be mounted on.\n * @group Wrappers\n */\nexport type ControllerConnectFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route: string,\n) => Router | ExpressMiddlewareLike;\n\nconst controllerFactory = resourceFactory<ControllerConnectFn>();\n/**\n * Generates a routes controller for the application container to mount.\n *\n * @param connect A function that will be called the moment the application mounts the\n * controller, and that is in charge of registering routes and\n * middlewares.\n * @example\n *\n * const myController = controller((app) => {\n * const router = app.getRouter();\n * const ctrl = new MyController();\n * return router.get('...', ctrl.doSomething()).post('...', ctrl.doSomethingElse());\n * });\n *\n * // ...\n * container.mount('/charo', myController);\n *\n * @group Wrappers\n */\nexport const controller = (connect: ControllerConnectFn) =>\n controllerFactory('controller', 'connect', connect);\n/**\n * A high order function that generates a controller. It's used on the definitions of a\n * controller creator.\n *\n * @group Wrappers\n */\nexport type ControllerCreatorFn = GenericCurriedFn<ControllerConnectFn>;\nconst controllerCreatorFactory = resourceCreatorFactory<ControllerConnectFn>();\n/**\n * Generates a configurable routes controller for the application to mount. It's\n * configurable because the `creator`, instead of just being sent to the container to\n * mount, it can also be called as a function with custom parameters the controller can\n * receive.\n *\n * @param creator A function that will generate a controller.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myController = controllerCreator((options = {}) => (app) => {\n * const router = app.getRouter();\n * const ctrl = new MyController(options);\n * return router.get('...', ctrl.doSomething()).post('...', ctrl.doSomethingElse());\n * });\n *\n * // ...\n * container.mount('/charo', myController);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.mount('/pili', myController({ foo: 'bar' }));\n *\n * @group Wrappers\n */\nexport const controllerCreator = <CreatorFn extends ControllerCreatorFn>(\n creator: CreatorFn,\n) => controllerCreatorFactory('controller', 'connect', creator);\n/**\n * A resource that will define middlewares for specific routes.\n *\n * @group Wrappers\n */\nexport type Controller = ReturnType<typeof controller>;\n/**\n * A controller creator is like a controller, but it can also be used as a function, and\n * it can receive custom parameters to configure its behavior.\n *\n * @group Wrappers\n */\nexport type ControllerCreator = ReturnType<typeof controllerCreator>;\n\n// --\n/**\n * The function a controller provider uses to configure/extend the container before\n * returning an actual controller.\n *\n * @param container The reference to the Jimpex container.\n * @param route The route on which the controller will be mounted on.\n * @group Wrappers\n */\nexport type ControllerProviderRegisterFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route: string,\n) => Controller;\n\nconst controllerProviderFactory = resourceFactory<ControllerProviderRegisterFn>();\n/**\n * Creates a \"controller provider\", which is a controller that can configure/extend the\n * container before the application mounts it.\n *\n * @param register A function that will be called the moment the application mounts\n * the controller provider.\n * @example\n *\n * class MyController {}\n * const myControllerProvider = controllerProvider((app) => {\n * app.set('myController', () => new MyController());\n * return controller(() => {\n * const ctrl = app.get<MyController>('myController');\n * const router = app.getRouter();\n * return router.get('/', ctrl.doSomething());\n * });\n * });\n *\n * @group Wrappers\n */\nexport const controllerProvider = (register: ControllerProviderRegisterFn) =>\n controllerProviderFactory('provider', 'register', register);\n/**\n * A high order function that generates a controller provider. It's used on the\n * definitions of a controller provider creator.\n *\n * @group Wrappers\n */\nexport type ControllerProviderCreatorFn = GenericCurriedFn<ControllerProviderRegisterFn>;\nconst controllerProviderCreatorFactory =\n resourceCreatorFactory<ControllerProviderRegisterFn>();\n/**\n * Generates a configurable controller provider for the application to mount. This is a\n * mix of a controller creator and a controller provider: it gives you the flexibility of\n * the creator, with the resources of the provider.\n *\n * @param creator A function that will generate a controller provider.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * class MyController {}\n * const myControllerProvider = controllerProviderCreator(\n * ({ serviceName = 'myController' }) =>\n * (app) => {\n * app.set(serviceName, () => new MyController());\n * return controller(() => {\n * const ctrl = app.get<MyController>(serviceName);\n * const router = app.getRouter();\n * return router.get('/', ctrl.doSomething());\n * });\n * },\n * );\n *\n * // ...\n * container.mount('/charo', myControllerProvider);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.mount('/pili', myControllerProvider({ serviceName: 'something' }));\n *\n * @group Wrappers\n */\nexport const controllerProviderCreator = <CreatorFn extends ControllerProviderCreatorFn>(\n creator: CreatorFn,\n) => controllerProviderCreatorFactory('provider', 'register', creator);\n/**\n * A special kind of controller that can be used to configure/extend the container before\n * returning an actual controller.\n *\n * @group Wrappers\n */\nexport type ControllerProvider = ReturnType<typeof controllerProvider>;\n/**\n * A \"creator version\" of a controller provider: a controller that can be used to\n * configure/extend the container before returning an actual controller, but that can also\n * be called as a function, and it can receive custom parameters to configure its\n * behavior.\n *\n * @group Wrappers\n */\nexport type ControllerProviderCreator = ReturnType<typeof controllerProviderCreator>;\n\n// --\n/**\n * The function a middleware uses to mount itself in the container.\n *\n * @param container The reference to the Jimpex container.\n * @param route This is optional because the implementation can use it as a\n * \"global widdleware\", or for a specific route.\n * @returns The resource can choose to be enabled or not by returning the function, or\n * `undefined`.\n * @group Wrappers\n */\nexport type MiddlewareConnectFn = <ContainerType extends Jimpex = Jimpex>(\n app: ContainerType,\n route?: string,\n) => Router | ExpressMiddlewareLike | undefined;\n\nconst middlewareFactory = resourceFactory<MiddlewareConnectFn>();\n/**\n * Generates a middleware for the application container to mount.\n *\n * @param connect A function that will be called the moment the application tries to\n * mount the middleware.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myMiddleware = controller((app) => {\n * const responsesBuilder = app.get<ResponsesBuilder>('responsesBuilder');\n * return (_, res) => {\n * responsesBuilder.json({ res, data: { hello: 'world' } });\n * };\n * });\n *\n * // ...\n * container.use(myMiddleware);\n *\n * @example\n *\n * <caption>On a specific route</caption>\n *\n * container.mount('/charo', myMiddleware);\n *\n * @group Wrappers\n */\nexport const middleware = (connect: MiddlewareConnectFn) =>\n middlewareFactory('middleware', 'connect', connect);\n/**\n * A high order function that generates a middleware. It's used on the definitions of a\n * middleware creator.\n *\n * @group Wrappers\n */\nexport type MiddlewareCreatorFn = GenericCurriedFn<MiddlewareConnectFn>;\nconst middlewareCreatorFactory = resourceCreatorFactory<MiddlewareConnectFn>();\n/**\n * Generates a configurable middleware for the application to use. It's configurable\n * because the `creator`, instead of just being sent to the container to mount, it can\n * also be called as a function with custom parameters the middleware can receive.\n *\n * @param creator A function that will generate a middleware.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myMiddleware = middlewareCreator((options = {}) => (app) => {\n * const message = options.message || 'Hello Charo!';\n * const responsesBuilder = app.get<ResponsesBuilder>('responsesBuilder');\n * return (_, res) => {\n * responsesBuilder.json({ res, data: { message } });\n * };\n * });\n *\n * // ...\n * container.use(myMiddleware);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.use(myMiddleware({ message: 'Hello Pili!' }));\n *\n * @group Wrappers\n */\nexport const middlewareCreator = <CreatorFn extends MiddlewareCreatorFn>(\n creator: CreatorFn,\n) => middlewareCreatorFactory('middleware', 'connect', creator);\n/**\n * A resource that will define middlewares the application can use.\n *\n * @group Wrappers\n */\nexport type Middleware = ReturnType<typeof middleware>;\n/**\n * A middleware creator is like a middleware, but i can also be used as a function, and it\n * can receive custom parameters to configure its behavior.\n *\n * @group Wrappers\n */\nexport type MiddlewareCreator = ReturnType<typeof middlewareCreator>;\n\n// --\n/**\n * The function a middelware provider uses to configure/extend the container before\n * returning an actual middleware.\n *\n * @param container The reference to the Jimpex container.\n * @param route This is available only in the case the middleware is mounted on a\n * specific route.\n * @group Wrappers\n */\nexport type MiddlewareProviderRegisterFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route?: string,\n) => Middleware;\nconst middlewareProviderFactory = resourceFactory<MiddlewareProviderRegisterFn>();\n/**\n * Creates a \"middleware provider\", which is a middleware that can configure/extend the\n * container before the application uses it.\n *\n * @param register A function that will be called the moment the application uses the\n * middleware provider.\n * @example\n *\n * class MyServiceWithMiddleware {\n * constructor(private readonly responsesBuilder: ResponsesBuilder) {}\n * getMiddleware() {\n * return (_, res) => {\n * this.responsesBuilder.json({ res, data: { message } });\n * };\n * }\n * }\n *\n * const myMiddlewareProvider = middlewareProvider((app) => {\n * app.set(\n * 'myMiddleware',\n * () => new MyServiceWithMiddleware(app.get('responsesBuilder')),\n * );\n * return middleware(() =>\n * app.get<MyServiceWithMiddleware>('myMiddleware').getMiddleware(),\n * );\n * });\n *\n * @group Wrappers\n */\nexport const middlewareProvider = (register: MiddlewareProviderRegisterFn) =>\n middlewareProviderFactory('provider', 'register', register);\n/**\n * A high order function that generates a middleware provider. It's used on the\n * definitions of a middleware provider creator.\n *\n * @group Wrappers\n */\nexport type MiddlewareProviderCreatorFn = GenericCurriedFn<MiddlewareProviderRegisterFn>;\nconst middlewareProviderCreatorFactory =\n resourceCreatorFactory<MiddlewareProviderRegisterFn>();\n/**\n * Generates a configurable middleware provider for the application to use. This is a mix\n * of a middleware creator and a middleware provider: it gives you the flexibility of the\n * creator, with the resources of the provider.\n *\n * @param creator A function that will generate a middleware provider.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * class MyServiceWithMiddleware {\n * constructor(private readonly responsesBuilder: ResponsesBuilder) {}\n * getMiddleware() {\n * return (_, res) => {\n * this.responsesBuilder.json({ res, data: { message } });\n * };\n * }\n * }\n * const myMiddlewareProvider = middlewareProviderCreator(\n * ({ serviceName = 'myMiddleware' }) =>\n * (app) => {\n * app.set(\n * serviceName,\n * () => new MyServiceWithMiddleware(app.get('responsesBuilder')),\n * );\n * return middleware(() =>\n * app.get<MyServiceWithMiddleware>(serviceName).getMiddleware(),\n * );\n * },\n * );\n *\n * // ...\n * container.use(myMiddlewareProvider);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.use(myMiddlewareProvider({ serviceName: 'something' }));\n *\n * @group Wrappers\n */\nexport const middlewareProviderCreator = <CreatorFn extends MiddlewareProviderCreatorFn>(\n creator: CreatorFn,\n) => middlewareProviderCreatorFactory('provider', 'register', creator);\n/**\n * A special kind of middleware that can be used to configure/extend the container before\n * returning an actual middleware.\n *\n * @group Wrappers\n */\nexport type MiddlewareProvider = ReturnType<typeof middlewareProvider>;\n/**\n * A \"creator version\" of a middleware provider: a middleware that can be used to\n * configure/extend the container before returning an actual middleware, but that can also\n * be called as a function, and it can receive custom parameters to configure its\n * behavior.\n *\n * @group Wrappers\n */\nexport type MiddlewareProviderCreator = ReturnType<typeof middlewareProviderCreator>;\n\n// --\n/**\n * A union types of the different kinds of middlewares that can be used by the\n * application.\n *\n * @group Wrappers\n */\nexport type MiddlewareLike =\n | NoStringIndex<Middleware>\n | NoStringIndex<MiddlewareProvider>\n | ExpressMiddlewareLike;\n/**\n * A union types of the different kinds of controllers that can be mounted by the\n * application.\n *\n * @group Wrappers\n */\nexport type ControllerLike =\n | NoStringIndex<Controller>\n | NoStringIndex<ControllerProvider>\n | MiddlewareLike;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAQO;AAsBA,MAAM,eAAW,8BAAuB;AA8BxC,MAAM,sBAAkB,qCAA8B;AAuBtD,MAAM,gBAAY,+BAAwB;AAyCjD,MAAM,wBAAoB,+BAAqC;AAoBxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,+BAA2B,sCAA4C;AA6BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,gCAA4B,+BAA8C;AAqBzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,uCACJ,sCAAqD;AAmChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;AAkCrE,MAAM,wBAAoB,+BAAqC;AA4BxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,+BAA2B,sCAA4C;AA8BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,gCAA4B,+BAA8C;AA8BzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,uCACJ,sCAAqD;AA2ChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/wrappers.ts"],"sourcesContent":["import {\n createProvider,\n createProviderCreator,\n createProviders,\n resourceFactory,\n type ProviderRegisterFn as OriginalProviderRegisterFn,\n type GenericCurriedFn,\n resourceCreatorFactory,\n} from '@homer0/jimple';\nimport type { Jimpex } from '../app/index.js';\nimport type { Router, ExpressMiddlewareLike, NoStringIndex } from '../types/index.js';\n/**\n * The function a provider uses to configure a resource in the container.\n *\n * @group Wrappers\n */\nexport type ProviderRegisterFn = OriginalProviderRegisterFn<Jimpex>;\n/**\n * Creates an object that can configure/extend the container by registering services and\n * resources.\n *\n * @example\n *\n * class APIClient {}\n * const apiClientProvider = provider((app) => {\n * app.set('apiClient', () => new APIClient());\n * });\n *\n * @group Wrappers\n */\nexport const provider = createProvider<Jimpex>();\n/**\n * Creates an object like a provider, but that it can also be used as a function, as it\n * normally expose options for the resources it will configure.\n *\n * @example\n *\n * <caption>Registering as a common provider</caption>\n *\n * const apiClientProvider = providerCreator(\n * ({ serviceName = 'apiClient' }) =>\n * (app) => {\n * app.set(serviceName, () => new APIClient());\n * },\n * );\n *\n * container.register(apiClientProvider);\n *\n * @example\n *\n * <caption>Registering a created provider</caption>\n *\n * container.register(\n * apiClientProvider({\n * serviceName: 'myApiClient',\n * }),\n * );\n *\n * @group Wrappers\n */\nexport const providerCreator = createProviderCreator<Jimpex>();\n/**\n * Creates a collection of providers that can be registered one by one, or all at once.\n *\n * @example\n *\n * <caption>Registering all the providers at once</caption>\n *\n * const collection = providers({\n * apiClient: apiClientProvider,\n * http: httpProvider,\n * });\n *\n * container.register(collection);\n *\n * @example\n *\n * <caption>Registering one by one</caption>\n *\n * container.register(collection.http);\n *\n * @group Wrappers\n */\nexport const providers = createProviders<Jimpex>();\n/**\n * An object that can configure/extend the container by registering services and\n * resources.\n *\n * @group Wrappers\n */\nexport type Provider = ReturnType<typeof provider>;\n/**\n * A provider creator is like a provider, but it can also be used as a function, and it\n * expose options for the resources it will configure.\n *\n * @group Wrappers\n */\nexport type ProviderCreator = ReturnType<typeof providerCreator>;\n/**\n * A collection of providers that can be registered one by one, or all at once.\n *\n * @group Wrappers\n */\nexport type Providers = ReturnType<typeof providers>;\n/**\n * A union of all types that can be registered in the provider with a `register` function.\n *\n * @group Wrappers\n */\nexport type ProviderLike = Provider | ProviderCreator | Providers;\n\n// --\n/**\n * The function a controller uses to mount a controller/middleware in the container.\n *\n * @param container The reference to the Jimpex container.\n * @param route The route on which the controller will be mounted on.\n * @group Wrappers\n */\nexport type ControllerConnectFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route: string,\n) => Router | ExpressMiddlewareLike;\n\nconst controllerFactory = resourceFactory<ControllerConnectFn>();\n/**\n * Generates a routes controller for the application container to mount.\n *\n * @param connect A function that will be called the moment the application mounts the\n * controller, and that is in charge of registering routes and\n * middlewares.\n * @example\n *\n * const myController = controller((app) => {\n * const router = app.getRouter();\n * const ctrl = new MyController();\n * return router.get('...', ctrl.doSomething()).post('...', ctrl.doSomethingElse());\n * });\n *\n * // ...\n * container.mount('/charo', myController);\n *\n * @group Wrappers\n */\nexport const controller = (connect: ControllerConnectFn) =>\n controllerFactory('controller', 'connect', connect);\n/**\n * A high order function that generates a controller. It's used on the definitions of a\n * controller creator.\n *\n * @group Wrappers\n */\nexport type ControllerCreatorFn = GenericCurriedFn<ControllerConnectFn>;\nconst controllerCreatorFactory = resourceCreatorFactory<ControllerConnectFn>();\n/**\n * Generates a configurable routes controller for the application to mount. It's\n * configurable because the `creator`, instead of just being sent to the container to\n * mount, it can also be called as a function with custom parameters the controller can\n * receive.\n *\n * @param creator A function that will generate a controller.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myController = controllerCreator((options = {}) => (app) => {\n * const router = app.getRouter();\n * const ctrl = new MyController(options);\n * return router.get('...', ctrl.doSomething()).post('...', ctrl.doSomethingElse());\n * });\n *\n * // ...\n * container.mount('/charo', myController);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.mount('/pili', myController({ foo: 'bar' }));\n *\n * @group Wrappers\n */\nexport const controllerCreator = <CreatorFn extends ControllerCreatorFn>(\n creator: CreatorFn,\n) => controllerCreatorFactory('controller', 'connect', creator);\n/**\n * A resource that will define middlewares for specific routes.\n *\n * @group Wrappers\n */\nexport type Controller = ReturnType<typeof controller>;\n/**\n * A controller creator is like a controller, but it can also be used as a function, and\n * it can receive custom parameters to configure its behavior.\n *\n * @group Wrappers\n */\nexport type ControllerCreator = ReturnType<typeof controllerCreator>;\n\n// --\n/**\n * The function a controller provider uses to configure/extend the container before\n * returning an actual controller.\n *\n * @param container The reference to the Jimpex container.\n * @param route The route on which the controller will be mounted on.\n * @group Wrappers\n */\nexport type ControllerProviderRegisterFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route: string,\n) => Controller;\n\nconst controllerProviderFactory = resourceFactory<ControllerProviderRegisterFn>();\n/**\n * Creates a \"controller provider\", which is a controller that can configure/extend the\n * container before the application mounts it.\n *\n * @param register A function that will be called the moment the application mounts\n * the controller provider.\n * @example\n *\n * class MyController {}\n * const myControllerProvider = controllerProvider((app) => {\n * app.set('myController', () => new MyController());\n * return controller(() => {\n * const ctrl = app.get<MyController>('myController');\n * const router = app.getRouter();\n * return router.get('/', ctrl.doSomething());\n * });\n * });\n *\n * @group Wrappers\n */\nexport const controllerProvider = (register: ControllerProviderRegisterFn) =>\n controllerProviderFactory('provider', 'register', register);\n/**\n * A high order function that generates a controller provider. It's used on the\n * definitions of a controller provider creator.\n *\n * @group Wrappers\n */\nexport type ControllerProviderCreatorFn = GenericCurriedFn<ControllerProviderRegisterFn>;\nconst controllerProviderCreatorFactory =\n resourceCreatorFactory<ControllerProviderRegisterFn>();\n/**\n * Generates a configurable controller provider for the application to mount. This is a\n * mix of a controller creator and a controller provider: it gives you the flexibility of\n * the creator, with the resources of the provider.\n *\n * @param creator A function that will generate a controller provider.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * class MyController {}\n * const myControllerProvider = controllerProviderCreator(\n * ({ serviceName = 'myController' }) =>\n * (app) => {\n * app.set(serviceName, () => new MyController());\n * return controller(() => {\n * const ctrl = app.get<MyController>(serviceName);\n * const router = app.getRouter();\n * return router.get('/', ctrl.doSomething());\n * });\n * },\n * );\n *\n * // ...\n * container.mount('/charo', myControllerProvider);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.mount('/pili', myControllerProvider({ serviceName: 'something' }));\n *\n * @group Wrappers\n */\nexport const controllerProviderCreator = <CreatorFn extends ControllerProviderCreatorFn>(\n creator: CreatorFn,\n) => controllerProviderCreatorFactory('provider', 'register', creator);\n/**\n * A special kind of controller that can be used to configure/extend the container before\n * returning an actual controller.\n *\n * @group Wrappers\n */\nexport type ControllerProvider = ReturnType<typeof controllerProvider>;\n/**\n * A \"creator version\" of a controller provider: a controller that can be used to\n * configure/extend the container before returning an actual controller, but that can also\n * be called as a function, and it can receive custom parameters to configure its\n * behavior.\n *\n * @group Wrappers\n */\nexport type ControllerProviderCreator = ReturnType<typeof controllerProviderCreator>;\n\n// --\n/**\n * The function a middleware uses to mount itself in the container.\n *\n * @param container The reference to the Jimpex container.\n * @param route This is optional because the implementation can use it as a\n * \"global middleware\", or for a specific route.\n * @returns The resource can choose to be enabled or not by returning the function,\n * or `undefined`.\n * @group Wrappers\n */\nexport type MiddlewareConnectFn = <ContainerType extends Jimpex = Jimpex>(\n app: ContainerType,\n route?: string,\n) => Router | ExpressMiddlewareLike | undefined;\n\nconst middlewareFactory = resourceFactory<MiddlewareConnectFn>();\n/**\n * Generates a middleware for the application container to mount.\n *\n * @param connect A function that will be called the moment the application tries to\n * mount the middleware.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myMiddleware = controller((app) => {\n * const responsesBuilder = app.get<ResponsesBuilder>('responsesBuilder');\n * return (_, res) => {\n * responsesBuilder.json({ res, data: { hello: 'world' } });\n * };\n * });\n *\n * // ...\n * container.use(myMiddleware);\n *\n * @example\n *\n * <caption>On a specific route</caption>\n *\n * container.mount('/charo', myMiddleware);\n *\n * @group Wrappers\n */\nexport const middleware = (connect: MiddlewareConnectFn) =>\n middlewareFactory('middleware', 'connect', connect);\n/**\n * A high order function that generates a middleware. It's used on the definitions of a\n * middleware creator.\n *\n * @group Wrappers\n */\nexport type MiddlewareCreatorFn = GenericCurriedFn<MiddlewareConnectFn>;\nconst middlewareCreatorFactory = resourceCreatorFactory<MiddlewareConnectFn>();\n/**\n * Generates a configurable middleware for the application to use. It's configurable\n * because the `creator`, instead of just being sent to the container to mount, it can\n * also be called as a function with custom parameters the middleware can receive.\n *\n * @param creator A function that will generate a middleware.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myMiddleware = middlewareCreator((options = {}) => (app) => {\n * const message = options.message || 'Hello Charo!';\n * const responsesBuilder = app.get<ResponsesBuilder>('responsesBuilder');\n * return (_, res) => {\n * responsesBuilder.json({ res, data: { message } });\n * };\n * });\n *\n * // ...\n * container.use(myMiddleware);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.use(myMiddleware({ message: 'Hello Pili!' }));\n *\n * @group Wrappers\n */\nexport const middlewareCreator = <CreatorFn extends MiddlewareCreatorFn>(\n creator: CreatorFn,\n) => middlewareCreatorFactory('middleware', 'connect', creator);\n/**\n * A resource that will define middlewares the application can use.\n *\n * @group Wrappers\n */\nexport type Middleware = ReturnType<typeof middleware>;\n/**\n * A middleware creator is like a middleware, but i can also be used as a function, and it\n * can receive custom parameters to configure its behavior.\n *\n * @group Wrappers\n */\nexport type MiddlewareCreator = ReturnType<typeof middlewareCreator>;\n\n// --\n/**\n * The function a middleware provider uses to configure/extend the container before\n * returning an actual middleware.\n *\n * @param container The reference to the Jimpex container.\n * @param route This is available only in the case the middleware is mounted on a\n * specific route.\n * @group Wrappers\n */\nexport type MiddlewareProviderRegisterFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route?: string,\n) => Middleware;\nconst middlewareProviderFactory = resourceFactory<MiddlewareProviderRegisterFn>();\n/**\n * Creates a \"middleware provider\", which is a middleware that can configure/extend the\n * container before the application uses it.\n *\n * @param register A function that will be called the moment the application uses the\n * middleware provider.\n * @example\n *\n * class MyServiceWithMiddleware {\n * constructor(private readonly responsesBuilder: ResponsesBuilder) {}\n * getMiddleware() {\n * return (_, res) => {\n * this.responsesBuilder.json({ res, data: { message } });\n * };\n * }\n * }\n *\n * const myMiddlewareProvider = middlewareProvider((app) => {\n * app.set(\n * 'myMiddleware',\n * () => new MyServiceWithMiddleware(app.get('responsesBuilder')),\n * );\n * return middleware(() =>\n * app.get<MyServiceWithMiddleware>('myMiddleware').getMiddleware(),\n * );\n * });\n *\n * @group Wrappers\n */\nexport const middlewareProvider = (register: MiddlewareProviderRegisterFn) =>\n middlewareProviderFactory('provider', 'register', register);\n/**\n * A high order function that generates a middleware provider. It's used on the\n * definitions of a middleware provider creator.\n *\n * @group Wrappers\n */\nexport type MiddlewareProviderCreatorFn = GenericCurriedFn<MiddlewareProviderRegisterFn>;\nconst middlewareProviderCreatorFactory =\n resourceCreatorFactory<MiddlewareProviderRegisterFn>();\n/**\n * Generates a configurable middleware provider for the application to use. This is a mix\n * of a middleware creator and a middleware provider: it gives you the flexibility of the\n * creator, with the resources of the provider.\n *\n * @param creator A function that will generate a middleware provider.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * class MyServiceWithMiddleware {\n * constructor(private readonly responsesBuilder: ResponsesBuilder) {}\n * getMiddleware() {\n * return (_, res) => {\n * this.responsesBuilder.json({ res, data: { message } });\n * };\n * }\n * }\n * const myMiddlewareProvider = middlewareProviderCreator(\n * ({ serviceName = 'myMiddleware' }) =>\n * (app) => {\n * app.set(\n * serviceName,\n * () => new MyServiceWithMiddleware(app.get('responsesBuilder')),\n * );\n * return middleware(() =>\n * app.get<MyServiceWithMiddleware>(serviceName).getMiddleware(),\n * );\n * },\n * );\n *\n * // ...\n * container.use(myMiddlewareProvider);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.use(myMiddlewareProvider({ serviceName: 'something' }));\n *\n * @group Wrappers\n */\nexport const middlewareProviderCreator = <CreatorFn extends MiddlewareProviderCreatorFn>(\n creator: CreatorFn,\n) => middlewareProviderCreatorFactory('provider', 'register', creator);\n/**\n * A special kind of middleware that can be used to configure/extend the container before\n * returning an actual middleware.\n *\n * @group Wrappers\n */\nexport type MiddlewareProvider = ReturnType<typeof middlewareProvider>;\n/**\n * A \"creator version\" of a middleware provider: a middleware that can be used to\n * configure/extend the container before returning an actual middleware, but that can also\n * be called as a function, and it can receive custom parameters to configure its\n * behavior.\n *\n * @group Wrappers\n */\nexport type MiddlewareProviderCreator = ReturnType<typeof middlewareProviderCreator>;\n\n// --\n/**\n * A union types of the different kinds of middlewares that can be used by the\n * application.\n *\n * @group Wrappers\n */\nexport type MiddlewareLike =\n | NoStringIndex<Middleware>\n | NoStringIndex<MiddlewareProvider>\n | ExpressMiddlewareLike;\n/**\n * A union types of the different kinds of controllers that can be mounted by the\n * application.\n *\n * @group Wrappers\n */\nexport type ControllerLike =\n | NoStringIndex<Controller>\n | NoStringIndex<ControllerProvider>\n | MiddlewareLike;\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,OACK;AAsBA,MAAM,WAAW,eAAuB;AA8BxC,MAAM,kBAAkB,sBAA8B;AAuBtD,MAAM,YAAY,gBAAwB;AAyCjD,MAAM,oBAAoB,gBAAqC;AAoBxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,2BAA2B,uBAA4C;AA6BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,4BAA4B,gBAA8C;AAqBzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,mCACJ,uBAAqD;AAmChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;AAkCrE,MAAM,oBAAoB,gBAAqC;AA4BxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,2BAA2B,uBAA4C;AA8BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,4BAA4B,gBAA8C;AA8BzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,mCACJ,uBAAqD;AA2ChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;","names":[]}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineConfig } from 'eslint/config';
|
|
2
|
+
import { createConfig } from '@homer0/eslint-plugin/create';
|
|
3
|
+
|
|
4
|
+
export default defineConfig([
|
|
5
|
+
createConfig({
|
|
6
|
+
importUrl: import.meta.url,
|
|
7
|
+
ignores: ['tests/**'],
|
|
8
|
+
configs: ['node-ts-with-prettier'],
|
|
9
|
+
}),
|
|
10
|
+
createConfig({
|
|
11
|
+
importUrl: import.meta.url,
|
|
12
|
+
files: 'all-inside:./tests',
|
|
13
|
+
configs: ['node-ts-tests-with-prettier'],
|
|
14
|
+
tsConfigPath: './tests',
|
|
15
|
+
rules: {
|
|
16
|
+
'no-use-before-define': 'off', // for global vi
|
|
17
|
+
},
|
|
18
|
+
}),
|
|
19
|
+
]);
|
package/examples/basic/app.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jimpex, healthController, fastHTMLMiddleware } from '../../src';
|
|
2
|
-
import { dateServiceProvider } from './service';
|
|
3
|
-
import { dateMiddleware } from './middleware';
|
|
4
|
-
import { dateController } from './controller';
|
|
1
|
+
import { jimpex, healthController, fastHTMLMiddleware } from '../../src/index.js';
|
|
2
|
+
import { dateServiceProvider } from './service.js';
|
|
3
|
+
import { dateMiddleware } from './middleware.js';
|
|
4
|
+
import { dateController } from './controller.js';
|
|
5
5
|
|
|
6
6
|
const app = jimpex();
|
|
7
7
|
app.register(dateServiceProvider);
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
type ExpressMiddleware,
|
|
4
4
|
type ResponsesBuilder,
|
|
5
5
|
type Router,
|
|
6
|
-
} from '../../src';
|
|
7
|
-
import type { DateService } from './service';
|
|
6
|
+
} from '../../src/index.js';
|
|
7
|
+
import type { DateService } from './service.js';
|
|
8
8
|
|
|
9
9
|
class DateController {
|
|
10
10
|
constructor(
|
package/examples/basic/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jimpex, healthController, fastHTMLMiddleware } from '../../src';
|
|
2
|
-
import { dateServiceProvider } from './service';
|
|
3
|
-
import { dateMiddleware } from './middleware';
|
|
4
|
-
import { dateController } from './controller';
|
|
1
|
+
import { jimpex, healthController, fastHTMLMiddleware } from '../../src/index.js';
|
|
2
|
+
import { dateServiceProvider } from './service.js';
|
|
3
|
+
import { dateMiddleware } from './middleware.js';
|
|
4
|
+
import { dateController } from './controller.js';
|
|
5
5
|
|
|
6
6
|
const PORT = 2509;
|
|
7
7
|
const app = jimpex();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { middleware, type ExpressMiddleware, type Logger } from '../../src';
|
|
2
|
-
import type { DateService } from './service';
|
|
1
|
+
import { middleware, type ExpressMiddleware, type Logger } from '../../src/index.js';
|
|
2
|
+
import type { DateService } from './service.js';
|
|
3
3
|
|
|
4
4
|
export const dateMiddleware = middleware((app) => {
|
|
5
5
|
const logger = app.get<Logger>('logger');
|
package/package.json
CHANGED
|
@@ -2,72 +2,84 @@
|
|
|
2
2
|
"name": "jimpex",
|
|
3
3
|
"description": "Express as dependency injection container.",
|
|
4
4
|
"homepage": "https://homer0.github.io/jimpex/",
|
|
5
|
-
"version": "
|
|
6
|
-
"repository":
|
|
5
|
+
"version": "11.0.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/homer0/jimpex.git"
|
|
9
|
+
},
|
|
7
10
|
"author": "Leonardo Apiwan (@homer0) <me@homer0.com>",
|
|
8
11
|
"license": "MIT",
|
|
12
|
+
"packageManager": "pnpm@10.11.0",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"import": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts"
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
9
23
|
"dependencies": {
|
|
10
|
-
"@homer0/api-utils": "^
|
|
11
|
-
"@homer0/deep-assign": "^
|
|
12
|
-
"@homer0/deferred": "^
|
|
13
|
-
"@homer0/env-utils": "^
|
|
14
|
-
"@homer0/events-hub": "^
|
|
15
|
-
"@homer0/jimple": "^
|
|
16
|
-
"@homer0/object-utils": "^
|
|
17
|
-
"@homer0/package-info": "^
|
|
18
|
-
"@homer0/path-utils": "^
|
|
19
|
-
"@homer0/root-file": "^
|
|
20
|
-
"@homer0/simple-config": "^
|
|
21
|
-
"@homer0/simple-logger": "^
|
|
22
|
-
"@homer0/ts-async-import": "^
|
|
23
|
-
"body-parser": "^
|
|
24
|
-
"compression": "^1.
|
|
25
|
-
"express": "^
|
|
26
|
-
"mime": "^4.0
|
|
27
|
-
"multer": "
|
|
24
|
+
"@homer0/api-utils": "^5.0.7",
|
|
25
|
+
"@homer0/deep-assign": "^5.0.7",
|
|
26
|
+
"@homer0/deferred": "^5.0.7",
|
|
27
|
+
"@homer0/env-utils": "^5.0.7",
|
|
28
|
+
"@homer0/events-hub": "^5.0.7",
|
|
29
|
+
"@homer0/jimple": "^5.0.7",
|
|
30
|
+
"@homer0/object-utils": "^5.0.7",
|
|
31
|
+
"@homer0/package-info": "^5.0.7",
|
|
32
|
+
"@homer0/path-utils": "^5.0.7",
|
|
33
|
+
"@homer0/root-file": "^5.0.7",
|
|
34
|
+
"@homer0/simple-config": "^5.0.7",
|
|
35
|
+
"@homer0/simple-logger": "^5.0.7",
|
|
36
|
+
"@homer0/ts-async-import": "^3.0.7",
|
|
37
|
+
"body-parser": "^2.2.1",
|
|
38
|
+
"compression": "^1.8.1",
|
|
39
|
+
"express": "^5.2.1",
|
|
40
|
+
"mime": "^4.1.0",
|
|
41
|
+
"multer": "2.0.2",
|
|
28
42
|
"node-fetch": "^3.3.2",
|
|
29
43
|
"spdy": "^4.0.2",
|
|
30
|
-
"statuses": "^2.0.
|
|
44
|
+
"statuses": "^2.0.2",
|
|
31
45
|
"urijs": "^1.19.11"
|
|
32
46
|
},
|
|
33
47
|
"devDependencies": {
|
|
34
|
-
"@commitlint/cli": "^
|
|
35
|
-
"@commitlint/config-conventional": "^
|
|
36
|
-
"@homer0/eslint-plugin": "^
|
|
37
|
-
"@homer0/prettier-config": "^
|
|
38
|
-
"@homer0/prettier-plugin-jsdoc": "^
|
|
39
|
-
"@homer0/tsconfig": "^1.
|
|
48
|
+
"@commitlint/cli": "^20.2.0",
|
|
49
|
+
"@commitlint/config-conventional": "^20.2.0",
|
|
50
|
+
"@homer0/eslint-plugin": "^14.2.2",
|
|
51
|
+
"@homer0/prettier-config": "^2.0.0",
|
|
52
|
+
"@homer0/prettier-plugin-jsdoc": "^11.0.1",
|
|
53
|
+
"@homer0/tsconfig": "^4.1.1",
|
|
40
54
|
"@semantic-release/changelog": "^6.0.3",
|
|
41
55
|
"@semantic-release/git": "^10.0.1",
|
|
42
|
-
"@
|
|
43
|
-
"@types/
|
|
44
|
-
"@types/
|
|
45
|
-
"@types/
|
|
46
|
-
"@types/multer": "^
|
|
47
|
-
"@types/node": "^
|
|
56
|
+
"@vitest/coverage-istanbul": "^4.0.15",
|
|
57
|
+
"@types/body-parser": "^1.19.6",
|
|
58
|
+
"@types/compression": "^1.8.1",
|
|
59
|
+
"@types/express": "^5.0.6",
|
|
60
|
+
"@types/multer": "^2.0.0",
|
|
61
|
+
"@types/node": "^24.10.1",
|
|
48
62
|
"@types/spdy": "^3.4.9",
|
|
49
|
-
"@types/statuses": "^2.0.
|
|
50
|
-
"@types/urijs": "^1.19.
|
|
51
|
-
"eslint": "^
|
|
52
|
-
"husky": "^9.1.
|
|
53
|
-
"is-ci": "^
|
|
54
|
-
"jest": "^29.7.0",
|
|
63
|
+
"@types/statuses": "^2.0.6",
|
|
64
|
+
"@types/urijs": "^1.19.26",
|
|
65
|
+
"eslint": "^9.39.1",
|
|
66
|
+
"husky": "^9.1.7",
|
|
67
|
+
"is-ci": "^4.1.0",
|
|
55
68
|
"leasot": "^14.4.0",
|
|
56
|
-
"lint-staged": "^
|
|
57
|
-
"semantic-release": "^
|
|
58
|
-
"ts-jest": "^29.2.5",
|
|
69
|
+
"lint-staged": "^16.2.7",
|
|
70
|
+
"semantic-release": "^25.0.2",
|
|
59
71
|
"ts-node-dev": "^2.0.0",
|
|
60
|
-
"tsup": "^8.
|
|
61
|
-
"typedoc": "0.
|
|
62
|
-
"typescript": "^5.
|
|
72
|
+
"tsup": "^8.5.1",
|
|
73
|
+
"typedoc": "0.28.15",
|
|
74
|
+
"typescript": "^5.9.3",
|
|
75
|
+
"unplugin-swc": "^1.5.9",
|
|
76
|
+
"vitest": "^4.0.15",
|
|
77
|
+
"vite-tsconfig-paths": "^5.1.4"
|
|
63
78
|
},
|
|
64
79
|
"engine-strict": true,
|
|
65
80
|
"engines": {
|
|
66
|
-
"node": ">=
|
|
81
|
+
"node": ">=20"
|
|
67
82
|
},
|
|
68
|
-
"main": "./dist/index.js",
|
|
69
|
-
"module": "./dist/esm/index.js",
|
|
70
|
-
"types": "./dist/index.d.ts",
|
|
71
83
|
"lint-staged": {
|
|
72
84
|
"*.{ts,tsx,js,json,css,scss,md}": [
|
|
73
85
|
"prettier --write"
|
package/src/app/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './jimpex';
|
|
1
|
+
export * from './jimpex.js';
|
package/src/app/jimpex.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
3
|
import { createServer as createHTTPSServer } from 'https';
|
|
4
4
|
import { Jimple } from '@homer0/jimple';
|
|
5
5
|
import { deepAssignWithOverwrite } from '@homer0/deep-assign';
|
|
@@ -14,16 +14,13 @@ import { simpleConfigProvider } from '@homer0/simple-config';
|
|
|
14
14
|
import compression from 'compression';
|
|
15
15
|
import bodyParser from 'body-parser';
|
|
16
16
|
import multer from 'multer';
|
|
17
|
-
import {
|
|
18
|
-
createServer as createSpdyServer,
|
|
19
|
-
type ServerOptions as SpdyServerOptions,
|
|
20
|
-
} from 'spdy';
|
|
17
|
+
import type { ServerOptions as SpdyServerOptions } from 'spdy';
|
|
21
18
|
import express from 'express';
|
|
22
19
|
import {
|
|
23
20
|
commonServicesProvider,
|
|
24
21
|
httpServicesProvider,
|
|
25
22
|
utilsServicesProvider,
|
|
26
|
-
} from '../services';
|
|
23
|
+
} from '../services/index.js';
|
|
27
24
|
import {
|
|
28
25
|
statuses,
|
|
29
26
|
type Controller,
|
|
@@ -31,7 +28,7 @@ import {
|
|
|
31
28
|
type MiddlewareLike,
|
|
32
29
|
type MiddlewareProvider,
|
|
33
30
|
type Middleware,
|
|
34
|
-
} from '../utils';
|
|
31
|
+
} from '../utils/index.js';
|
|
35
32
|
import type {
|
|
36
33
|
DeepPartial,
|
|
37
34
|
Express,
|
|
@@ -56,7 +53,8 @@ import type {
|
|
|
56
53
|
JimpexEventListener,
|
|
57
54
|
JimpexHealthCheckFn,
|
|
58
55
|
Router,
|
|
59
|
-
} from '../types';
|
|
56
|
+
} from '../types/index.js';
|
|
57
|
+
|
|
60
58
|
/**
|
|
61
59
|
* Jimpex is a mix of Jimple, a Javascript port of Pimple dependency injection container,
|
|
62
60
|
* and Express, one of the most popular web frameworks for Node.
|
|
@@ -79,7 +77,7 @@ export class Jimpex extends Jimple {
|
|
|
79
77
|
*/
|
|
80
78
|
protected _configReady: boolean = false;
|
|
81
79
|
/**
|
|
82
|
-
* A reference to the
|
|
80
|
+
* A reference to the actual HTTP the application will use. This can vary depending on
|
|
83
81
|
* whether HTTPS, or HTTP2 are enabled. If HTTPS is not enabled, it will be the same as
|
|
84
82
|
* the `express` property; if HTTPS is enabled, it will be an `https` server; and if
|
|
85
83
|
* HTTP2 is enabled, it will be an `spdy` server.
|
|
@@ -106,7 +104,7 @@ export class Jimpex extends Jimple {
|
|
|
106
104
|
/**
|
|
107
105
|
* @param options Preferences to customize the application.
|
|
108
106
|
* @param config The default settings for the configuration service. It's a
|
|
109
|
-
*
|
|
107
|
+
* short-circuit for `options.config.default`
|
|
110
108
|
*/
|
|
111
109
|
constructor(options: DeepPartial<JimpexOptions> = {}, config: unknown = {}) {
|
|
112
110
|
super();
|
|
@@ -171,7 +169,7 @@ export class Jimpex extends Jimple {
|
|
|
171
169
|
* Disables the server TLS validation. Meant to be used for development purposes.
|
|
172
170
|
*/
|
|
173
171
|
disableTLSValidation() {
|
|
174
|
-
// eslint-disable-next-line no-process-env
|
|
172
|
+
// eslint-disable-next-line n/no-process-env
|
|
175
173
|
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
|
|
176
174
|
this.logger.warn('TLS validation has been disabled');
|
|
177
175
|
}
|
|
@@ -392,7 +390,7 @@ export class Jimpex extends Jimple {
|
|
|
392
390
|
return this.eventsHub.on(eventName, listener);
|
|
393
391
|
}
|
|
394
392
|
/**
|
|
395
|
-
* Adds a listener for an application event that will only be
|
|
393
|
+
* Adds a listener for an application event that will only be executed once: the first
|
|
396
394
|
* time the event is triggered.
|
|
397
395
|
*
|
|
398
396
|
* @param eventName The name of the event to listen for.
|
|
@@ -408,7 +406,7 @@ export class Jimpex extends Jimple {
|
|
|
408
406
|
return this.eventsHub.once(eventName, listener);
|
|
409
407
|
}
|
|
410
408
|
/**
|
|
411
|
-
* Based on the application options, it returns
|
|
409
|
+
* Based on the application options, it returns whether the application is healthy or
|
|
412
410
|
* not.
|
|
413
411
|
*/
|
|
414
412
|
isHealthy(): ReturnType<JimpexHealthCheckFn> {
|
|
@@ -417,7 +415,7 @@ export class Jimpex extends Jimple {
|
|
|
417
415
|
/**
|
|
418
416
|
* This method is like a "lifecycle method", it gets executed on the constructor right
|
|
419
417
|
* before the "boot step". The idea is for the method to be a helper when the
|
|
420
|
-
* application is defined by
|
|
418
|
+
* application is defined by sub-classing {@link Jimpex}: the application could register
|
|
421
419
|
* all important services here and the routes on boot, then, if the implementation needs
|
|
422
420
|
* to access or overwrite a something, it can send `boot: false`, access/register what
|
|
423
421
|
* it needs, and then call `boot()`. That would be impossible for an application without
|
|
@@ -426,7 +424,7 @@ export class Jimpex extends Jimple {
|
|
|
426
424
|
protected _init(): void {}
|
|
427
425
|
/**
|
|
428
426
|
* It generates overwrites for the application options when it gets created. This method
|
|
429
|
-
* is a helper for when the application is defined by
|
|
427
|
+
* is a helper for when the application is defined by sub-classing {@link Jimpex}: It's
|
|
430
428
|
* highly probable that if the application needs to change the default options, it would
|
|
431
429
|
* want to do it right from the class, instead of having to do it on every
|
|
432
430
|
* implementation. A way to do it would be overwriting the constructor and calling
|
|
@@ -532,7 +530,7 @@ export class Jimpex extends Jimple {
|
|
|
532
530
|
* This helper method validates the `path` options in order to register the `app`
|
|
533
531
|
* location in the `pathUtils` service. The `app` location should be the path to where
|
|
534
532
|
* the application executable is located, but due to how ESM works, we can't infer it
|
|
535
|
-
* from the `module` object, so we need either
|
|
533
|
+
* from the `module` object, so we need either received as the `appPath` setting, or try
|
|
536
534
|
* to get it from the parent module.
|
|
537
535
|
*
|
|
538
536
|
* @throws If the method should use the path from the parent module, but can't find
|
|
@@ -553,8 +551,10 @@ export class Jimpex extends Jimple {
|
|
|
553
551
|
const stackList = stack.split('\n');
|
|
554
552
|
stackList.shift();
|
|
555
553
|
const parentFromStack = stackList.find((line) => !line.includes(__filename));
|
|
554
|
+
/* istanbul ignore else */
|
|
556
555
|
if (parentFromStack) {
|
|
557
|
-
const parentFile = parentFromStack.replace(/^.*?\s\(([^\s]+):\d+:\d+\)
|
|
556
|
+
const parentFile = parentFromStack.replace(/^.*?\s\(?([^\s]+):\d+:\d+\)?/, '$1');
|
|
557
|
+
/* istanbul ignore else */
|
|
558
558
|
if (parentFile !== parentFromStack) {
|
|
559
559
|
foundPath = true;
|
|
560
560
|
pathUtils.addLocation('app', path.dirname(parentFile));
|
|
@@ -703,7 +703,7 @@ export class Jimpex extends Jimple {
|
|
|
703
703
|
* @returns {Server}
|
|
704
704
|
* @throws {Error} If HTTP2 is enabled but HTTPS is not.
|
|
705
705
|
* @throws {Error} If HTTPS is enabled but there's no `https.credentials` object.
|
|
706
|
-
* @throws {Error} If HTTPS is enabled and no
|
|
706
|
+
* @throws {Error} If HTTPS is enabled and no credentials are found.
|
|
707
707
|
* @access protected
|
|
708
708
|
* @ignore
|
|
709
709
|
*/
|
|
@@ -739,7 +739,10 @@ export class Jimpex extends Jimple {
|
|
|
739
739
|
spdy: http2Config.spdy,
|
|
740
740
|
};
|
|
741
741
|
|
|
742
|
-
|
|
742
|
+
const spdyModule = await tsAsyncImport<{
|
|
743
|
+
default: { createServer: (typeof import('spdy'))['createServer'] };
|
|
744
|
+
}>('spdy');
|
|
745
|
+
return spdyModule.default.createServer(serverOptions, this._express);
|
|
743
746
|
}
|
|
744
747
|
|
|
745
748
|
return createHTTPSServer(credentials, this._express);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { controller } from '../../utils';
|
|
2
|
-
import type { ResponsesBuilder } from '../../services';
|
|
1
|
+
import { controller } from '../../utils/index.js';
|
|
2
|
+
import type { ResponsesBuilder } from '../../services/index.js';
|
|
3
3
|
import type {
|
|
4
4
|
Config,
|
|
5
5
|
Response,
|
|
6
6
|
AsyncExpressMiddleware,
|
|
7
7
|
ExpressMiddleware,
|
|
8
|
-
} from '../../types';
|
|
8
|
+
} from '../../types/index.js';
|
|
9
9
|
/**
|
|
10
|
-
* The options to
|
|
10
|
+
* The options to construct a {@link ConfigController}.
|
|
11
11
|
*
|
|
12
12
|
* @group Controllers/Config
|
|
13
13
|
*/
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { controller, type Statuses } from '../../utils';
|
|
2
|
-
import type { ResponsesBuilder } from '../../services';
|
|
3
|
-
import type {
|
|
1
|
+
import { controller, type Statuses } from '../../utils/index.js';
|
|
2
|
+
import type { ResponsesBuilder } from '../../services/index.js';
|
|
3
|
+
import type {
|
|
4
|
+
JimpexHealthStatus,
|
|
5
|
+
Config,
|
|
6
|
+
AsyncExpressMiddleware,
|
|
7
|
+
} from '../../types/index.js';
|
|
4
8
|
/**
|
|
5
9
|
* A function that will return the health status of the application.
|
|
6
10
|
*
|
|
@@ -8,7 +12,7 @@ import type { JimpexHealthStatus, Config, AsyncExpressMiddleware } from '../../t
|
|
|
8
12
|
*/
|
|
9
13
|
export type GetHealthStatus = () => Promise<JimpexHealthStatus>;
|
|
10
14
|
/**
|
|
11
|
-
* The options to
|
|
15
|
+
* The options to construct a {@link HealthController}.
|
|
12
16
|
*
|
|
13
17
|
* @group Controllers/Health
|
|
14
18
|
*/
|
|
@@ -44,7 +48,7 @@ export class HealthController {
|
|
|
44
48
|
*/
|
|
45
49
|
protected readonly _config: Config;
|
|
46
50
|
/**
|
|
47
|
-
* The
|
|
51
|
+
* The utility service to get HTTP status codes.
|
|
48
52
|
*/
|
|
49
53
|
protected readonly _statuses: Statuses;
|
|
50
54
|
/**
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './config';
|
|
2
|
-
export * from './health';
|
|
3
|
-
export * from './statics';
|
|
1
|
+
export * from './config.js';
|
|
2
|
+
export * from './health.js';
|
|
3
|
+
export * from './statics.js';
|