jimpex 9.0.0 → 10.0.1

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.
Files changed (142) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/app/index.d.mts +1 -1
  3. package/dist/app/index.d.ts +1 -1
  4. package/dist/app/jimpex.d.mts +1 -1
  5. package/dist/app/jimpex.d.ts +1 -1
  6. package/dist/app/jimpex.js +13 -2
  7. package/dist/app/jimpex.js.map +1 -1
  8. package/dist/controllers/common/config.d.mts +2 -2
  9. package/dist/controllers/common/config.d.ts +2 -2
  10. package/dist/controllers/common/health.d.mts +3 -3
  11. package/dist/controllers/common/health.d.ts +3 -3
  12. package/dist/controllers/common/index.d.mts +2 -1
  13. package/dist/controllers/common/index.d.ts +2 -1
  14. package/dist/controllers/common/statics.d.mts +10 -2
  15. package/dist/controllers/common/statics.d.ts +10 -2
  16. package/dist/controllers/common/statics.js +9 -3
  17. package/dist/controllers/common/statics.js.map +1 -1
  18. package/dist/controllers/index.d.mts +2 -1
  19. package/dist/controllers/index.d.ts +2 -1
  20. package/dist/controllers/utils/gateway.d.mts +2 -2
  21. package/dist/controllers/utils/gateway.d.ts +2 -2
  22. package/dist/controllers/utils/gateway.js +3 -0
  23. package/dist/controllers/utils/gateway.js.map +1 -1
  24. package/dist/controllers/utils/index.d.mts +1 -1
  25. package/dist/controllers/utils/index.d.ts +1 -1
  26. package/dist/esm/app/jimpex.js +14 -3
  27. package/dist/esm/app/jimpex.js.map +1 -1
  28. package/dist/esm/{chunk-2B2CG5KL.js → chunk-F3FYYIAV.js} +1 -1
  29. package/dist/esm/controllers/common/config.js +1 -1
  30. package/dist/esm/controllers/common/health.js +1 -1
  31. package/dist/esm/controllers/common/statics.js +10 -4
  32. package/dist/esm/controllers/common/statics.js.map +1 -1
  33. package/dist/esm/controllers/utils/gateway.js +4 -1
  34. package/dist/esm/controllers/utils/gateway.js.map +1 -1
  35. package/dist/esm/middlewares/common/errorHandler.js +1 -1
  36. package/dist/esm/middlewares/common/forceHTTPS.js +1 -1
  37. package/dist/esm/middlewares/common/hsts.js +1 -1
  38. package/dist/esm/middlewares/html/fastHTML.js +1 -1
  39. package/dist/esm/middlewares/html/showHTML.js +1 -1
  40. package/dist/esm/middlewares/utils/versionValidator.js +1 -1
  41. package/dist/esm/services/common/appError.js +1 -1
  42. package/dist/esm/services/common/httpError.js +1 -1
  43. package/dist/esm/services/common/index.js +1 -1
  44. package/dist/esm/services/common/sendFile.js +1 -1
  45. package/dist/esm/services/frontend/frontendFs.js +1 -1
  46. package/dist/esm/services/frontend/index.js +1 -1
  47. package/dist/esm/services/html/htmlGenerator.js +1 -1
  48. package/dist/esm/services/html/index.js +1 -1
  49. package/dist/esm/services/http/apiClient.js +1 -1
  50. package/dist/esm/services/http/http.js +11 -5
  51. package/dist/esm/services/http/http.js.map +1 -1
  52. package/dist/esm/services/http/index.js +1 -1
  53. package/dist/esm/services/http/responsesBuilder.js +1 -1
  54. package/dist/esm/services/utils/ensureBearerToken.js +1 -1
  55. package/dist/esm/services/utils/index.js +1 -1
  56. package/dist/esm/utils/fns/others.js +1 -1
  57. package/dist/esm/utils/fns/routes.js +1 -1
  58. package/dist/esm/utils/fns/statuses.js +1 -1
  59. package/dist/esm/utils/fns/text.js +1 -1
  60. package/dist/esm/utils/wrappers.js +1 -1
  61. package/dist/{index-efeb437e.d.ts → index-Bwf7JHu9.d.mts} +6 -1
  62. package/dist/{index-b2a04c78.d.ts → index-C6I3NCC-.d.ts} +6 -1
  63. package/dist/index.d.mts +3 -2
  64. package/dist/index.d.ts +3 -2
  65. package/dist/middlewares/common/errorHandler.d.mts +3 -3
  66. package/dist/middlewares/common/errorHandler.d.ts +3 -3
  67. package/dist/middlewares/common/forceHTTPS.d.mts +3 -3
  68. package/dist/middlewares/common/forceHTTPS.d.ts +3 -3
  69. package/dist/middlewares/common/hsts.d.mts +3 -3
  70. package/dist/middlewares/common/hsts.d.ts +3 -3
  71. package/dist/middlewares/common/index.d.mts +1 -1
  72. package/dist/middlewares/common/index.d.ts +1 -1
  73. package/dist/middlewares/html/fastHTML.d.mts +2 -2
  74. package/dist/middlewares/html/fastHTML.d.ts +2 -2
  75. package/dist/middlewares/html/index.d.mts +1 -1
  76. package/dist/middlewares/html/index.d.ts +1 -1
  77. package/dist/middlewares/html/showHTML.d.mts +2 -2
  78. package/dist/middlewares/html/showHTML.d.ts +2 -2
  79. package/dist/middlewares/index.d.mts +1 -1
  80. package/dist/middlewares/index.d.ts +1 -1
  81. package/dist/middlewares/utils/index.d.mts +1 -1
  82. package/dist/middlewares/utils/index.d.ts +1 -1
  83. package/dist/middlewares/utils/versionValidator.d.mts +2 -2
  84. package/dist/middlewares/utils/versionValidator.d.ts +2 -2
  85. package/dist/services/common/appError.d.mts +2 -2
  86. package/dist/services/common/appError.d.ts +2 -2
  87. package/dist/services/common/httpError.d.mts +2 -2
  88. package/dist/services/common/httpError.d.ts +2 -2
  89. package/dist/services/common/index.d.mts +1 -1
  90. package/dist/services/common/index.d.ts +1 -1
  91. package/dist/services/common/sendFile.d.mts +2 -2
  92. package/dist/services/common/sendFile.d.ts +2 -2
  93. package/dist/services/frontend/frontendFs.d.mts +2 -2
  94. package/dist/services/frontend/frontendFs.d.ts +2 -2
  95. package/dist/services/frontend/index.d.mts +1 -1
  96. package/dist/services/frontend/index.d.ts +1 -1
  97. package/dist/services/html/htmlGenerator.d.mts +2 -2
  98. package/dist/services/html/htmlGenerator.d.ts +2 -2
  99. package/dist/services/html/index.d.mts +1 -1
  100. package/dist/services/html/index.d.ts +1 -1
  101. package/dist/services/http/apiClient.d.mts +2 -2
  102. package/dist/services/http/apiClient.d.ts +2 -2
  103. package/dist/services/http/http.d.mts +14 -8
  104. package/dist/services/http/http.d.ts +14 -8
  105. package/dist/services/http/http.js +10 -4
  106. package/dist/services/http/http.js.map +1 -1
  107. package/dist/services/http/index.d.mts +1 -1
  108. package/dist/services/http/index.d.ts +1 -1
  109. package/dist/services/http/responsesBuilder.d.mts +2 -2
  110. package/dist/services/http/responsesBuilder.d.ts +2 -2
  111. package/dist/services/index.d.mts +1 -1
  112. package/dist/services/index.d.ts +1 -1
  113. package/dist/services/utils/ensureBearerToken.d.mts +3 -3
  114. package/dist/services/utils/ensureBearerToken.d.ts +3 -3
  115. package/dist/services/utils/index.d.mts +1 -1
  116. package/dist/services/utils/index.d.ts +1 -1
  117. package/dist/types/events.d.mts +1 -1
  118. package/dist/types/events.d.ts +1 -1
  119. package/dist/types/express.d.mts +1 -1
  120. package/dist/types/express.d.ts +1 -1
  121. package/dist/types/http.d.mts +5 -2
  122. package/dist/types/http.d.ts +5 -2
  123. package/dist/types/http.js.map +1 -1
  124. package/dist/types/index.d.mts +2 -2
  125. package/dist/types/index.d.ts +2 -2
  126. package/dist/types/options.d.mts +1 -1
  127. package/dist/types/options.d.ts +1 -1
  128. package/dist/types/utils.d.mts +1 -1
  129. package/dist/types/utils.d.ts +1 -1
  130. package/dist/utils/fns/statuses.d.mts +1 -1
  131. package/dist/utils/fns/statuses.d.ts +1 -1
  132. package/dist/utils/index.d.mts +1 -1
  133. package/dist/utils/index.d.ts +1 -1
  134. package/dist/utils/wrappers.d.mts +1 -1
  135. package/dist/utils/wrappers.d.ts +1 -1
  136. package/package.json +42 -44
  137. package/src/app/jimpex.ts +15 -2
  138. package/src/controllers/common/statics.ts +13 -2
  139. package/src/controllers/utils/gateway.ts +4 -0
  140. package/src/services/http/http.ts +13 -4
  141. package/src/types/http.ts +3 -0
  142. /package/dist/esm/{chunk-2B2CG5KL.js.map → chunk-F3FYYIAV.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import '@homer0/simple-config';
2
- export { m as JimpexConfigOptions, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions } from '../index-efeb437e.js';
2
+ export { m as JimpexConfigOptions, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions } from '../index-Bwf7JHu9.mjs';
3
3
  import './express.mjs';
4
4
  import 'express';
5
5
  import './http.mjs';
@@ -1,5 +1,5 @@
1
1
  import '@homer0/simple-config';
2
- export { m as JimpexConfigOptions, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions } from '../index-b2a04c78.js';
2
+ export { m as JimpexConfigOptions, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions } from '../index-C6I3NCC-.js';
3
3
  import './express.js';
4
4
  import 'express';
5
5
  import './http.js';
@@ -45,4 +45,4 @@ type NoStringIndex<T> = {
45
45
  [K in keyof T as string extends K ? never : K]: T[K];
46
46
  };
47
47
 
48
- export { DeepPartial, DeepReadonly, Dict, NoStringIndex };
48
+ export type { DeepPartial, DeepReadonly, Dict, NoStringIndex };
@@ -45,4 +45,4 @@ type NoStringIndex<T> = {
45
45
  [K in keyof T as string extends K ? never : K]: T[K];
46
46
  };
47
47
 
48
- export { DeepPartial, DeepReadonly, Dict, NoStringIndex };
48
+ export type { DeepPartial, DeepReadonly, Dict, NoStringIndex };
@@ -42,4 +42,4 @@ type Statuses = {
42
42
  retry: Record<number, boolean | undefined>;
43
43
  };
44
44
 
45
- export { Statuses };
45
+ export type { Statuses };
@@ -42,4 +42,4 @@ type Statuses = {
42
42
  retry: Record<number, boolean | undefined>;
43
43
  };
44
44
 
45
- export { Statuses };
45
+ export type { Statuses };
@@ -2,7 +2,7 @@ export { notUndefined } from './fns/others.mjs';
2
2
  export { createRouteExpression, removeLeadingSlash, removeSlashes, removeTrailingSlash } from './fns/routes.mjs';
3
3
  export { Statuses } from './fns/statuses.mjs';
4
4
  export { escapeForRegExp } from './fns/text.mjs';
5
- export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-efeb437e.js';
5
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-Bwf7JHu9.mjs';
6
6
  export { default as statuses } from 'statuses';
7
7
  import '../types/express.mjs';
8
8
  import 'express';
@@ -2,7 +2,7 @@ export { notUndefined } from './fns/others.js';
2
2
  export { createRouteExpression, removeLeadingSlash, removeSlashes, removeTrailingSlash } from './fns/routes.js';
3
3
  export { Statuses } from './fns/statuses.js';
4
4
  export { escapeForRegExp } from './fns/text.js';
5
- export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-b2a04c78.js';
5
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-C6I3NCC-.js';
6
6
  export { default as statuses } from 'statuses';
7
7
  import '../types/express.js';
8
8
  import 'express';
@@ -1,5 +1,5 @@
1
1
  import '@homer0/jimple';
2
- export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-efeb437e.js';
2
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-Bwf7JHu9.mjs';
3
3
  import '../types/express.mjs';
4
4
  import '../types/utils.mjs';
5
5
  import 'express';
@@ -1,5 +1,5 @@
1
1
  import '@homer0/jimple';
2
- export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-b2a04c78.js';
2
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../index-C6I3NCC-.js';
3
3
  import '../types/express.js';
4
4
  import '../types/utils.js';
5
5
  import 'express';
package/package.json CHANGED
@@ -2,63 +2,61 @@
2
2
  "name": "jimpex",
3
3
  "description": "Express as dependency injection container.",
4
4
  "homepage": "https://homer0.github.io/jimpex/",
5
- "version": "9.0.0",
5
+ "version": "10.0.1",
6
6
  "repository": "homer0/jimpex",
7
7
  "author": "Leonardo Apiwan (@homer0) <me@homer0.com>",
8
8
  "license": "MIT",
9
9
  "dependencies": {
10
- "@homer0/api-utils": "^3.0.0",
11
- "@homer0/deep-assign": "^3.0.0",
12
- "@homer0/deferred": "^3.0.0",
13
- "@homer0/env-utils": "^3.0.0",
14
- "@homer0/events-hub": "^3.0.0",
15
- "@homer0/jimple": "^3.0.0",
16
- "@homer0/object-utils": "^3.0.0",
17
- "@homer0/package-info": "^3.0.0",
18
- "@homer0/path-utils": "^3.0.0",
19
- "@homer0/root-file": "^3.0.0",
20
- "@homer0/simple-logger": "^3.0.0",
21
- "@homer0/simple-config": "^3.0.0",
22
- "express": "^4.18.2",
10
+ "@homer0/api-utils": "^3.0.4",
11
+ "@homer0/deep-assign": "^3.0.4",
12
+ "@homer0/deferred": "^3.0.4",
13
+ "@homer0/env-utils": "^3.0.4",
14
+ "@homer0/events-hub": "^3.0.4",
15
+ "@homer0/jimple": "^3.0.4",
16
+ "@homer0/object-utils": "^3.0.4",
17
+ "@homer0/package-info": "^3.0.4",
18
+ "@homer0/path-utils": "^3.0.4",
19
+ "@homer0/root-file": "^3.0.4",
20
+ "@homer0/simple-config": "^3.0.4",
21
+ "@homer0/simple-logger": "^3.0.4",
22
+ "@homer0/ts-async-import": "^1.1.3",
23
23
  "body-parser": "^1.20.2",
24
24
  "compression": "^1.7.4",
25
- "node-fetch": "^2.7.0",
26
- "urijs": "^1.19.11",
27
- "statuses": "^2.0.1",
25
+ "express": "^4.19.2",
26
+ "mime": "^4.0.1",
28
27
  "multer": "1.4.5-lts.1",
29
- "mime": "^3.0.0",
30
- "spdy": "^4.0.2"
28
+ "node-fetch": "^3.3.2",
29
+ "spdy": "^4.0.2",
30
+ "statuses": "^2.0.1",
31
+ "urijs": "^1.19.11"
31
32
  },
32
33
  "devDependencies": {
33
- "@commitlint/cli": "^17.7.2",
34
- "@commitlint/config-conventional": "^17.7.0",
35
- "@homer0/eslint-plugin": "^12.0.0",
34
+ "@commitlint/cli": "^19.2.1",
35
+ "@commitlint/config-conventional": "^19.1.0",
36
+ "@homer0/eslint-plugin": "^12.0.4",
36
37
  "@homer0/prettier-config": "^1.1.3",
37
- "@homer0/prettier-plugin-jsdoc": "^7.0.3",
38
- "@homer0/tsconfig": "^1.0.12",
39
- "@semantic-release/changelog": "^6.0.3",
40
- "@semantic-release/git": "^10.0.1",
41
- "@types/body-parser": "^1.19.3",
42
- "@types/compression": "^1.7.3",
43
- "@types/express": "^4.17.18",
44
- "@types/multer": "^1.4.8",
45
- "@types/mime": "^3.0.2",
46
- "@types/node-fetch": "^2.6.6",
47
- "@types/spdy": "^3.4.6",
48
- "@types/statuses": "^2.0.2",
49
- "@types/urijs": "^1.19.20",
50
- "eslint": "^8.50.0",
38
+ "@homer0/prettier-plugin-jsdoc": "^8.0.0",
39
+ "@homer0/tsconfig": "^1.0.15",
40
+ "@types/body-parser": "^1.19.5",
41
+ "@types/compression": "^1.7.5",
42
+ "@types/express": "^4.17.21",
43
+ "@types/jest": "^29.5.12",
44
+ "@types/multer": "^1.4.11",
45
+ "@types/node": "^20.12.5",
46
+ "@types/spdy": "^3.4.9",
47
+ "@types/statuses": "^2.0.5",
48
+ "@types/urijs": "^1.19.25",
49
+ "eslint": "^8.57.0",
50
+ "husky": "^9.0.11",
51
51
  "is-ci": "^3.0.1",
52
52
  "jest": "^29.7.0",
53
53
  "leasot": "^13.3.0",
54
- "lint-staged": "^14.0.1",
55
- "husky": "^8.0.3",
56
- "semantic-release": "^22.0.5",
57
- "ts-jest": "^29.1.1",
54
+ "lint-staged": "^15.2.2",
55
+ "ts-jest": "^29.1.2",
58
56
  "ts-node-dev": "^2.0.0",
59
- "tsup": "^7.2.0",
60
- "typedoc": "0.25.1",
61
- "typescript": "^5.2.2"
57
+ "tsup": "^8.0.2",
58
+ "typedoc": "0.25.12",
59
+ "typescript": "^5.4.4"
62
60
  },
63
61
  "engine-strict": true,
64
62
  "engines": {
@@ -89,7 +87,7 @@
89
87
  "docs": "./utils/scripts/docs",
90
88
  "todo": "./utils/scripts/todo",
91
89
  "example": "./utils/scripts/example",
92
- "prepublishOnly": "npm run build",
90
+ "prepublishOnly": "pnpm run build",
93
91
  "prepare": "./utils/scripts/prepare"
94
92
  }
95
93
  }
package/src/app/jimpex.ts CHANGED
@@ -8,6 +8,7 @@ import { envUtilsProvider } from '@homer0/env-utils';
8
8
  import { packageInfoProvider } from '@homer0/package-info';
9
9
  import { pathUtilsProvider } from '@homer0/path-utils';
10
10
  import { rootFileProvider } from '@homer0/root-file';
11
+ import { tsAsyncImport } from '@homer0/ts-async-import';
11
12
  import { EventsHub } from '@homer0/events-hub';
12
13
  import { simpleConfigProvider } from '@homer0/simple-config';
13
14
  import compression from 'compression';
@@ -181,7 +182,7 @@ export class Jimpex extends Jimple {
181
182
  * @returns The server instance.
182
183
  */
183
184
  async start(onStart?: JimpexStartCallback): Promise<JimpexServerInstance> {
184
- await this._setupConfig();
185
+ await Promise.all([this._setupConfig(), this._loadESMModules()]);
185
186
  const config = this.getConfig();
186
187
  const port = config.get<number | undefined>('port');
187
188
  if (!port) {
@@ -218,7 +219,7 @@ export class Jimpex extends Jimple {
218
219
  onStart?: JimpexStartCallback,
219
220
  ): Promise<JimpexServerInstance> {
220
221
  if (port) {
221
- await this._setupConfig();
222
+ await Promise.all([this._setupConfig(), this._loadESMModules()]);
222
223
  const config = this.getConfig();
223
224
  config.set('port', port);
224
225
  }
@@ -608,6 +609,18 @@ export class Jimpex extends Jimple {
608
609
  await config.loadFromEnv();
609
610
  }
610
611
  }
612
+ /**
613
+ * Loads the ESM modules that are needed by Jimpex. This is called just before the starting
614
+ * the application so they'll be available for all the services.
615
+ */
616
+ protected async _loadESMModules(): Promise<void> {
617
+ const { default: nodeFetch } =
618
+ await tsAsyncImport<typeof import('node-fetch')>('node-fetch');
619
+ const { default: mime } = await tsAsyncImport<typeof import('mime')>('mime');
620
+
621
+ this.set('node-fetch', () => nodeFetch);
622
+ this.set('mime', () => mime);
623
+ }
611
624
  /**
612
625
  * Processes the resources from the mount queue (added with {@link Jimpex.mount} and
613
626
  * {@link Jimpex.use}), and adds them to the Express application.
@@ -1,5 +1,5 @@
1
1
  import * as path from 'path';
2
- import * as mime from 'mime';
2
+ import type mime from 'mime';
3
3
  import { deepAssignWithOverwrite } from '@homer0/deep-assign';
4
4
  import {
5
5
  controllerCreator,
@@ -10,6 +10,9 @@ import {
10
10
  import type { SendFile } from '../../services';
11
11
  import type { Jimpex } from '../../app';
12
12
  import type { DeepPartial, ExpressMiddleware, Router, RouterMethod } from '../../types';
13
+
14
+ type Mime = typeof mime;
15
+
13
16
  /**
14
17
  * The definition for each file the controller handles.
15
18
  *
@@ -84,6 +87,7 @@ export type StaticsControllerConstructorOptions =
84
87
  */
85
88
  inject: {
86
89
  sendFile: SendFile;
90
+ mime: Mime;
87
91
  };
88
92
  };
89
93
  /**
@@ -147,6 +151,11 @@ export class StaticsController {
147
151
  * The service that serves static files.
148
152
  */
149
153
  protected readonly _sendFile: SendFile;
154
+ /**
155
+ * The MIME type library. Since it's an ESM only module, Jimpex loads it on boot and makes
156
+ * it available on the container.
157
+ */
158
+ protected readonly _mime: Mime;
150
159
  /**
151
160
  * The controller customization options.
152
161
  */
@@ -161,6 +170,7 @@ export class StaticsController {
161
170
  */
162
171
  constructor({ inject, ...options }: StaticsControllerConstructorOptions) {
163
172
  this._sendFile = inject.sendFile;
173
+ this._mime = inject.mime;
164
174
  this._options = this._validateOptions(
165
175
  deepAssignWithOverwrite(
166
176
  {
@@ -224,7 +234,7 @@ export class StaticsController {
224
234
  return (_, res, next) => {
225
235
  const extension = path.parse(file.path).ext.substring(1);
226
236
  const headers = {
227
- 'Content-Type': mime.getType(extension) || 'text/html',
237
+ 'Content-Type': this._mime.getType(extension) || 'text/html',
228
238
  ...file.headers,
229
239
  };
230
240
 
@@ -358,6 +368,7 @@ export const staticsController = controllerCreator(
358
368
  const ctrl = new StaticsController({
359
369
  inject: {
360
370
  sendFile: app.get('sendFile'),
371
+ mime: app.get('mime'),
361
372
  },
362
373
  ...options,
363
374
  });
@@ -737,6 +737,10 @@ export class GatewayController {
737
737
  });
738
738
 
739
739
  if (shouldStream) {
740
+ if (response.body === null) {
741
+ throw new Error('The response body is null');
742
+ }
743
+
740
744
  /**
741
745
  * If the response should be streamed, set the status, remove unwanted headers,
742
746
  * and pipe it to the application response object.
@@ -1,8 +1,9 @@
1
- import fetch, { type RequestInit, type BodyInit } from 'node-fetch';
2
1
  import urijs from 'urijs';
2
+ import type { RequestInit, BodyInit } from 'node-fetch';
3
3
  import { deepAssignWithOverwrite } from '@homer0/deep-assign';
4
4
  import { provider } from '../../utils';
5
- import { Logger, Request, HTTPResponse } from '../../types';
5
+ import { Logger, Request, HTTPResponse, NodeFetch } from '../../types';
6
+
6
7
  /**
7
8
  * The options to customize the service.
8
9
  *
@@ -25,6 +26,7 @@ export type HTTPContructorOptions = Partial<HTTPOptions> & {
25
26
  */
26
27
  inject: {
27
28
  logger: Logger;
29
+ nodeFetch: NodeFetch;
28
30
  };
29
31
  };
30
32
  /**
@@ -89,6 +91,11 @@ export class HTTP {
89
91
  * The service used to log information in the terminal.
90
92
  */
91
93
  protected readonly _logger: Logger;
94
+ /**
95
+ * The node-fetch library. Since it's an ESM only module, Jimpex loads it on boot and makes
96
+ * it available on the container.
97
+ */
98
+ protected readonly _nodeFetch: NodeFetch;
92
99
  /**
93
100
  * The service customization options.
94
101
  */
@@ -96,8 +103,9 @@ export class HTTP {
96
103
  /**
97
104
  * @param options The options to construct the class.
98
105
  */
99
- constructor({ inject: { logger }, ...options }: HTTPContructorOptions) {
106
+ constructor({ inject: { logger, nodeFetch }, ...options }: HTTPContructorOptions) {
100
107
  this._logger = logger;
108
+ this._nodeFetch = nodeFetch;
101
109
  this._options = deepAssignWithOverwrite(
102
110
  {
103
111
  logRequests: false,
@@ -146,7 +154,7 @@ export class HTTP {
146
154
  this._logRequest(useURL, fetchOptions);
147
155
  }
148
156
 
149
- const response = await fetch(useURL, fetchOptions);
157
+ const response = await this._nodeFetch(useURL, fetchOptions);
150
158
  if (logRequests) {
151
159
  this._logResponse(response);
152
160
  }
@@ -279,6 +287,7 @@ export const httpProvider = provider((app) => {
279
287
  return new HTTP({
280
288
  inject: {
281
289
  logger: app.get('logger'),
290
+ nodeFetch: app.get('node-fetch'),
282
291
  },
283
292
  logRequests,
284
293
  });
package/src/types/http.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import type { Server as HTTPSServer } from 'https';
2
2
  import type { Server as HTTPServer } from 'http';
3
3
  import type { ServerOptions as SpdyServerOptions } from 'spdy';
4
+ import type NodeFetchFn from 'node-fetch';
4
5
  import type { Express } from './express';
5
6
 
6
7
  export type { Response as HTTPResponse } from 'node-fetch';
7
8
 
9
+ export type NodeFetch = typeof NodeFetchFn;
10
+
8
11
  export type { HTTPSServer, HTTPServer };
9
12
  /**
10
13
  * @group Jimpex