@strapi/core 5.49.0 → 5.50.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.
Files changed (242) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +2 -0
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +2 -0
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/configuration/config-loader.d.ts.map +1 -1
  7. package/dist/configuration/get-dirs.d.ts.map +1 -1
  8. package/dist/configuration/index.d.ts +0 -3
  9. package/dist/configuration/index.d.ts.map +1 -1
  10. package/dist/configuration/index.js +0 -3
  11. package/dist/configuration/index.js.map +1 -1
  12. package/dist/configuration/index.mjs +0 -3
  13. package/dist/configuration/index.mjs.map +1 -1
  14. package/dist/configuration/server-config.d.ts +11 -0
  15. package/dist/configuration/server-config.d.ts.map +1 -0
  16. package/dist/configuration/server-config.js +16 -0
  17. package/dist/configuration/server-config.js.map +1 -0
  18. package/dist/configuration/server-config.mjs +14 -0
  19. package/dist/configuration/server-config.mjs.map +1 -0
  20. package/dist/configuration/urls.d.ts.map +1 -1
  21. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  22. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  23. package/dist/core-api/controller/transform.d.ts.map +1 -1
  24. package/dist/core-api/routes/index.d.ts.map +1 -1
  25. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
  26. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -1
  27. package/dist/core-api/routes/validation/utils.d.ts.map +1 -1
  28. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  29. package/dist/core-api/service/pagination.d.ts.map +1 -1
  30. package/dist/core-api/service/single-type.d.ts.map +1 -1
  31. package/dist/domain/content-type/index.d.ts.map +1 -1
  32. package/dist/domain/content-type/validator.d.ts.map +1 -1
  33. package/dist/domain/module/index.d.ts.map +1 -1
  34. package/dist/domain/module/validation.d.ts.map +1 -1
  35. package/dist/ee/index.d.ts +2 -1
  36. package/dist/ee/index.d.ts.map +1 -1
  37. package/dist/ee/license.d.ts.map +1 -1
  38. package/dist/factories.d.ts.map +1 -1
  39. package/dist/index.d.ts +4 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  44. package/dist/loaders/sanitizers.d.ts.map +1 -1
  45. package/dist/loaders/src-index.d.ts.map +1 -1
  46. package/dist/loaders/validators.d.ts.map +1 -1
  47. package/dist/middlewares/body.d.ts.map +1 -1
  48. package/dist/middlewares/body.js +1 -1
  49. package/dist/middlewares/body.js.map +1 -1
  50. package/dist/middlewares/body.mjs +1 -1
  51. package/dist/middlewares/body.mjs.map +1 -1
  52. package/dist/middlewares/cors.d.ts.map +1 -1
  53. package/dist/middlewares/errors.d.ts +5 -0
  54. package/dist/middlewares/errors.d.ts.map +1 -1
  55. package/dist/middlewares/errors.js.map +1 -1
  56. package/dist/middlewares/errors.mjs.map +1 -1
  57. package/dist/middlewares/favicon.d.ts +0 -1
  58. package/dist/middlewares/favicon.d.ts.map +1 -1
  59. package/dist/migrations/draft-publish.d.ts.map +1 -1
  60. package/dist/migrations/first-published-at.d.ts.map +1 -1
  61. package/dist/migrations/i18n.d.ts.map +1 -1
  62. package/dist/migrations/index.d.ts.map +1 -1
  63. package/dist/package.json.js +16 -19
  64. package/dist/package.json.js.map +1 -1
  65. package/dist/package.json.mjs +16 -19
  66. package/dist/package.json.mjs.map +1 -1
  67. package/dist/providers/provider.d.ts.map +1 -1
  68. package/dist/registries/apis.d.ts.map +1 -1
  69. package/dist/registries/components.d.ts +1 -1
  70. package/dist/registries/components.d.ts.map +1 -1
  71. package/dist/registries/content-types.d.ts +2 -3
  72. package/dist/registries/content-types.d.ts.map +1 -1
  73. package/dist/registries/controllers.d.ts +3 -3
  74. package/dist/registries/controllers.d.ts.map +1 -1
  75. package/dist/registries/custom-fields.d.ts.map +1 -1
  76. package/dist/registries/hooks.d.ts +3 -4
  77. package/dist/registries/hooks.d.ts.map +1 -1
  78. package/dist/registries/middlewares.d.ts +2 -3
  79. package/dist/registries/middlewares.d.ts.map +1 -1
  80. package/dist/registries/models.d.ts +1 -1
  81. package/dist/registries/modules.d.ts.map +1 -1
  82. package/dist/registries/namespace.d.ts.map +1 -1
  83. package/dist/registries/plugins.d.ts.map +1 -1
  84. package/dist/registries/policies.d.ts +1 -2
  85. package/dist/registries/policies.d.ts.map +1 -1
  86. package/dist/registries/sanitizers.d.ts +2 -2
  87. package/dist/registries/services.d.ts +3 -3
  88. package/dist/registries/services.d.ts.map +1 -1
  89. package/dist/registries/validators.d.ts +2 -2
  90. package/dist/services/ai.d.ts.map +1 -1
  91. package/dist/services/config.d.ts.map +1 -1
  92. package/dist/services/content-api/index.d.ts +4 -4
  93. package/dist/services/content-api/index.d.ts.map +1 -1
  94. package/dist/services/content-api/permissions/engine.d.ts.map +1 -1
  95. package/dist/services/content-api/permissions/index.d.ts +2 -2
  96. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  97. package/dist/services/content-api/permissions/providers/action.d.ts +1 -1
  98. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  99. package/dist/services/content-api/permissions/providers/condition.d.ts +1 -1
  100. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  101. package/dist/services/content-source-maps.d.ts.map +1 -1
  102. package/dist/services/core-store.d.ts.map +1 -1
  103. package/dist/services/cron.d.ts +5 -5
  104. package/dist/services/custom-fields.d.ts.map +1 -1
  105. package/dist/services/document-service/attributes/index.d.ts +0 -1
  106. package/dist/services/document-service/attributes/index.d.ts.map +1 -1
  107. package/dist/services/document-service/common.d.ts.map +1 -1
  108. package/dist/services/document-service/components.d.ts +2 -2
  109. package/dist/services/document-service/components.d.ts.map +1 -1
  110. package/dist/services/document-service/draft-and-publish.d.ts +0 -1
  111. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  112. package/dist/services/document-service/entries.d.ts.map +1 -1
  113. package/dist/services/document-service/events.d.ts.map +1 -1
  114. package/dist/services/document-service/first-published-at.d.ts.map +1 -1
  115. package/dist/services/document-service/index.d.ts.map +1 -1
  116. package/dist/services/document-service/internationalization.d.ts +0 -1
  117. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  118. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  119. package/dist/services/document-service/params.d.ts +1 -1
  120. package/dist/services/document-service/params.d.ts.map +1 -1
  121. package/dist/services/document-service/publication-filter.d.ts +1 -1
  122. package/dist/services/document-service/publication-filter.d.ts.map +1 -1
  123. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  124. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  125. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  126. package/dist/services/document-service/transform/id-map.js +7 -4
  127. package/dist/services/document-service/transform/id-map.js.map +1 -1
  128. package/dist/services/document-service/transform/id-map.mjs +7 -4
  129. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  130. package/dist/services/document-service/transform/id-transform.d.ts +0 -1
  131. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  132. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  133. package/dist/services/document-service/transform/query.d.ts +0 -1
  134. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  135. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  136. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  137. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -1
  138. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
  139. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  140. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  141. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  142. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +0 -1
  143. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  144. package/dist/services/document-service/transform/relations/utils/xto-one.d.ts.map +1 -1
  145. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -1
  146. package/dist/services/document-service/utils/bidirectional-relations.js +7 -2
  147. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  148. package/dist/services/document-service/utils/bidirectional-relations.mjs +7 -2
  149. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  150. package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -1
  151. package/dist/services/document-service/utils/ordered-parallel.d.ts.map +1 -1
  152. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  153. package/dist/services/document-service/utils/self-referential-relations.d.ts.map +1 -1
  154. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  155. package/dist/services/entity-service/index.d.ts.map +1 -1
  156. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  157. package/dist/services/errors.d.ts.map +1 -1
  158. package/dist/services/features.d.ts.map +1 -1
  159. package/dist/services/fs.d.ts.map +1 -1
  160. package/dist/services/mcp/authentication.d.ts.map +1 -1
  161. package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -1
  162. package/dist/services/mcp/index.d.ts.map +1 -1
  163. package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +2 -2
  164. package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -1
  165. package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts.map +1 -1
  166. package/dist/services/mcp/metrics/metrics.d.ts.map +1 -1
  167. package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts.map +1 -1
  168. package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts.map +1 -1
  169. package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts.map +1 -1
  170. package/dist/services/mcp/prompt-registry.d.ts.map +1 -1
  171. package/dist/services/mcp/resource-registry.d.ts.map +1 -1
  172. package/dist/services/mcp/routes.d.ts +1 -1
  173. package/dist/services/mcp/routes.d.ts.map +1 -1
  174. package/dist/services/mcp/tool-registry.d.ts.map +1 -1
  175. package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts.map +1 -1
  176. package/dist/services/mcp/utils/safeHandlerWrapper.d.ts.map +1 -1
  177. package/dist/services/mcp/utils/sendJsonRpcError.d.ts +0 -1
  178. package/dist/services/mcp/utils/sendJsonRpcError.d.ts.map +1 -1
  179. package/dist/services/mcp/utils/withTimeout.d.ts.map +1 -1
  180. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  181. package/dist/services/metrics/index.d.ts.map +1 -1
  182. package/dist/services/metrics/is-truthy.d.ts.map +1 -1
  183. package/dist/services/metrics/middleware.d.ts.map +1 -1
  184. package/dist/services/metrics/rate-limiter.d.ts +2 -1
  185. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  186. package/dist/services/metrics/sender.d.ts.map +1 -1
  187. package/dist/services/query-params.d.ts.map +1 -1
  188. package/dist/services/reloader.d.ts.map +1 -1
  189. package/dist/services/request-context.d.ts.map +1 -1
  190. package/dist/services/server/admin-api.d.ts +3 -5
  191. package/dist/services/server/admin-api.d.ts.map +1 -1
  192. package/dist/services/server/api.d.ts +3 -4
  193. package/dist/services/server/api.d.ts.map +1 -1
  194. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  195. package/dist/services/server/content-api.d.ts +3 -5
  196. package/dist/services/server/content-api.d.ts.map +1 -1
  197. package/dist/services/server/http-server.d.ts +0 -1
  198. package/dist/services/server/http-server.d.ts.map +1 -1
  199. package/dist/services/server/index.d.ts.map +1 -1
  200. package/dist/services/server/koa-methods.d.ts +107 -0
  201. package/dist/services/server/koa-methods.d.ts.map +1 -0
  202. package/dist/services/server/koa-methods.js +24 -0
  203. package/dist/services/server/koa-methods.js.map +1 -0
  204. package/dist/services/server/koa-methods.mjs +22 -0
  205. package/dist/services/server/koa-methods.mjs.map +1 -0
  206. package/dist/services/server/koa.d.ts +0 -9
  207. package/dist/services/server/koa.d.ts.map +1 -1
  208. package/dist/services/server/koa.js +6 -9
  209. package/dist/services/server/koa.js.map +1 -1
  210. package/dist/services/server/koa.mjs +7 -9
  211. package/dist/services/server/koa.mjs.map +1 -1
  212. package/dist/services/server/middleware.d.ts.map +1 -1
  213. package/dist/services/server/openapi.d.ts.map +1 -1
  214. package/dist/services/server/policy.d.ts.map +1 -1
  215. package/dist/services/server/register-middlewares.d.ts.map +1 -1
  216. package/dist/services/server/register-routes.d.ts.map +1 -1
  217. package/dist/services/server/routing.d.ts +0 -2
  218. package/dist/services/server/routing.d.ts.map +1 -1
  219. package/dist/services/session-manager.d.ts +20 -0
  220. package/dist/services/session-manager.d.ts.map +1 -1
  221. package/dist/services/session-manager.js +57 -0
  222. package/dist/services/session-manager.js.map +1 -1
  223. package/dist/services/session-manager.mjs +57 -0
  224. package/dist/services/session-manager.mjs.map +1 -1
  225. package/dist/services/webhook-store.d.ts.map +1 -1
  226. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  227. package/dist/utils/cron.d.ts.map +1 -1
  228. package/dist/utils/fetch.d.ts.map +1 -1
  229. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  230. package/dist/utils/is-initialized.d.ts.map +1 -1
  231. package/dist/utils/load-config-file.d.ts.map +1 -1
  232. package/dist/utils/load-files.d.ts +1 -1
  233. package/dist/utils/load-files.d.ts.map +1 -1
  234. package/dist/utils/open-browser.d.ts +0 -1
  235. package/dist/utils/open-browser.d.ts.map +1 -1
  236. package/dist/utils/resolve-working-dirs.d.ts.map +1 -1
  237. package/dist/utils/signals.d.ts.map +1 -1
  238. package/dist/utils/startup-logger.d.ts.map +1 -1
  239. package/dist/utils/transform-content-types-to-models.d.ts +3 -3
  240. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  241. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  242. package/package.json +16 -19
@@ -0,0 +1,107 @@
1
+ export interface ErrorMethodEntry {
2
+ /** HTTP status code (400–599). */
3
+ code: number;
4
+ /** Reason phrase from `node:http` `STATUS_CODES`, e.g. "Not Found". */
5
+ statusName: string;
6
+ /** camelCased helper name registered on the context, e.g. "notFound". */
7
+ methodName: keyof ContextDelegatedResponseErrorMethods;
8
+ }
9
+ /**
10
+ * Single source of truth for the generated error helpers: yields one entry per
11
+ * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the
12
+ * type/runtime sync test iterate this, so they cannot drift.
13
+ */
14
+ export declare function errorMethodEntries(): Generator<ErrorMethodEntry>;
15
+ export interface ContextDelegatedResponseErrorMethods {
16
+ /** 400 Bad Request */
17
+ badRequest(response?: string | object, details?: object): void;
18
+ /** 401 Unauthorized */
19
+ unauthorized(response?: string | object, details?: object): void;
20
+ /** 402 Payment Required */
21
+ paymentRequired(response?: string | object, details?: object): void;
22
+ /** 403 Forbidden */
23
+ forbidden(response?: string | object, details?: object): void;
24
+ /** 404 Not Found */
25
+ notFound(response?: string | object, details?: object): void;
26
+ /** 405 Method Not Allowed */
27
+ methodNotAllowed(response?: string | object, details?: object): void;
28
+ /** 406 Not Acceptable */
29
+ notAcceptable(response?: string | object, details?: object): void;
30
+ /** 407 Proxy Authentication Required */
31
+ proxyAuthenticationRequired(response?: string | object, details?: object): void;
32
+ /** 408 Request Timeout */
33
+ requestTimeout(response?: string | object, details?: object): void;
34
+ /** 409 Conflict */
35
+ conflict(response?: string | object, details?: object): void;
36
+ /** 410 Gone */
37
+ gone(response?: string | object, details?: object): void;
38
+ /** 411 Length Required */
39
+ lengthRequired(response?: string | object, details?: object): void;
40
+ /** 412 Precondition Failed */
41
+ preconditionFailed(response?: string | object, details?: object): void;
42
+ /** 413 Payload Too Large */
43
+ payloadTooLarge(response?: string | object, details?: object): void;
44
+ /** 414 Uri Too Long */
45
+ uriTooLong(response?: string | object, details?: object): void;
46
+ /** 415 Unsupported Media Type */
47
+ unsupportedMediaType(response?: string | object, details?: object): void;
48
+ /** 416 Range Not Satisfiable */
49
+ rangeNotSatisfiable(response?: string | object, details?: object): void;
50
+ /** 417 Expectation Failed */
51
+ expectationFailed(response?: string | object, details?: object): void;
52
+ /** 418 Im A Teapot */
53
+ imATeapot(response?: string | object, details?: object): void;
54
+ /** 421 Misdirected Request */
55
+ misdirectedRequest(response?: string | object, details?: object): void;
56
+ /** 422 Unprocessable Entity */
57
+ unprocessableEntity(response?: string | object, details?: object): void;
58
+ /** 423 Locked */
59
+ locked(response?: string | object, details?: object): void;
60
+ /** 424 Failed Dependency */
61
+ failedDependency(response?: string | object, details?: object): void;
62
+ /** 425 Too Early */
63
+ tooEarly(response?: string | object, details?: object): void;
64
+ /** 426 Upgrade Required */
65
+ upgradeRequired(response?: string | object, details?: object): void;
66
+ /** 428 Precondition Required */
67
+ preconditionRequired(response?: string | object, details?: object): void;
68
+ /** 429 Too Many Requests */
69
+ tooManyRequests(response?: string | object, details?: object): void;
70
+ /** 431 Request Header Fields Too Large */
71
+ requestHeaderFieldsTooLarge(response?: string | object, details?: object): void;
72
+ /** 451 Unavailable For Legal Reasons */
73
+ unavailableForLegalReasons(response?: string | object, details?: object): void;
74
+ /** 500 Internal Server Error */
75
+ internalServerError(response?: string | object, details?: object): void;
76
+ /** 501 Not Implemented */
77
+ notImplemented(response?: string | object, details?: object): void;
78
+ /** 502 Bad Gateway */
79
+ badGateway(response?: string | object, details?: object): void;
80
+ /** 503 Service Unavailable */
81
+ serviceUnavailable(response?: string | object, details?: object): void;
82
+ /** 504 Gateway Timeout */
83
+ gatewayTimeout(response?: string | object, details?: object): void;
84
+ /** 505 Http Version Not Supported */
85
+ httpVersionNotSupported(response?: string | object, details?: object): void;
86
+ /** 506 Variant Also Negotiates */
87
+ variantAlsoNegotiates(response?: string | object, details?: object): void;
88
+ /** 507 Insufficient Storage */
89
+ insufficientStorage(response?: string | object, details?: object): void;
90
+ /** 508 Loop Detected */
91
+ loopDetected(response?: string | object, details?: object): void;
92
+ /** 509 Bandwidth Limit Exceeded */
93
+ bandwidthLimitExceeded(response?: string | object, details?: object): void;
94
+ /** 510 Not Extended */
95
+ notExtended(response?: string | object, details?: object): void;
96
+ /** 511 Network Authentication Required */
97
+ networkAuthenticationRequired(response?: string | object, details?: object): void;
98
+ }
99
+ export interface ContextDelegatedResponseSuccessMethods {
100
+ /** 200 */
101
+ send(response: unknown, status?: number): void;
102
+ /** 201 */
103
+ created(response?: unknown): void;
104
+ /** 204 | 200 */
105
+ deleted(response?: unknown): void;
106
+ }
107
+ //# sourceMappingURL=koa-methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koa-methods.d.ts","sourceRoot":"","sources":["../../../src/services/server/koa-methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var node_http = require('node:http');
5
+
6
+ /**
7
+ * Single source of truth for the generated error helpers: yields one entry per
8
+ * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the
9
+ * type/runtime sync test iterate this, so they cannot drift.
10
+ */ function* errorMethodEntries() {
11
+ for (const [codeStr, statusName] of Object.entries(node_http.STATUS_CODES)){
12
+ const code = Number(codeStr);
13
+ if (statusName && code >= 400 && code < 600) {
14
+ yield {
15
+ code,
16
+ statusName,
17
+ methodName: fp.camelCase(statusName)
18
+ };
19
+ }
20
+ }
21
+ }
22
+
23
+ exports.errorMethodEntries = errorMethodEntries;
24
+ //# sourceMappingURL=koa-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koa-methods.js","sources":["../../../src/services/server/koa-methods.ts"],"sourcesContent":["import { camelCase } from 'lodash/fp';\nimport { STATUS_CODES } from 'node:http';\n\nexport interface ErrorMethodEntry {\n /** HTTP status code (400–599). */\n code: number;\n /** Reason phrase from `node:http` `STATUS_CODES`, e.g. \"Not Found\". */\n statusName: string;\n /** camelCased helper name registered on the context, e.g. \"notFound\". */\n methodName: keyof ContextDelegatedResponseErrorMethods;\n}\n\n/**\n * Single source of truth for the generated error helpers: yields one entry per\n * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the\n * type/runtime sync test iterate this, so they cannot drift.\n */\nexport function* errorMethodEntries(): Generator<ErrorMethodEntry> {\n for (const [codeStr, statusName] of Object.entries(STATUS_CODES)) {\n const code = Number(codeStr);\n\n if (statusName && code >= 400 && code < 600) {\n yield {\n code,\n statusName,\n methodName: camelCase(statusName) as keyof ContextDelegatedResponseErrorMethods,\n };\n }\n }\n}\n\nexport interface ContextDelegatedResponseErrorMethods {\n /** 400 Bad Request */\n badRequest(response?: string | object, details?: object): void;\n /** 401 Unauthorized */\n unauthorized(response?: string | object, details?: object): void;\n /** 402 Payment Required */\n paymentRequired(response?: string | object, details?: object): void;\n /** 403 Forbidden */\n forbidden(response?: string | object, details?: object): void;\n /** 404 Not Found */\n notFound(response?: string | object, details?: object): void;\n /** 405 Method Not Allowed */\n methodNotAllowed(response?: string | object, details?: object): void;\n /** 406 Not Acceptable */\n notAcceptable(response?: string | object, details?: object): void;\n /** 407 Proxy Authentication Required */\n proxyAuthenticationRequired(response?: string | object, details?: object): void;\n /** 408 Request Timeout */\n requestTimeout(response?: string | object, details?: object): void;\n /** 409 Conflict */\n conflict(response?: string | object, details?: object): void;\n /** 410 Gone */\n gone(response?: string | object, details?: object): void;\n /** 411 Length Required */\n lengthRequired(response?: string | object, details?: object): void;\n /** 412 Precondition Failed */\n preconditionFailed(response?: string | object, details?: object): void;\n /** 413 Payload Too Large */\n payloadTooLarge(response?: string | object, details?: object): void;\n /** 414 Uri Too Long */\n uriTooLong(response?: string | object, details?: object): void;\n /** 415 Unsupported Media Type */\n unsupportedMediaType(response?: string | object, details?: object): void;\n /** 416 Range Not Satisfiable */\n rangeNotSatisfiable(response?: string | object, details?: object): void;\n /** 417 Expectation Failed */\n expectationFailed(response?: string | object, details?: object): void;\n /** 418 Im A Teapot */\n imATeapot(response?: string | object, details?: object): void;\n /** 421 Misdirected Request */\n misdirectedRequest(response?: string | object, details?: object): void;\n /** 422 Unprocessable Entity */\n unprocessableEntity(response?: string | object, details?: object): void;\n /** 423 Locked */\n locked(response?: string | object, details?: object): void;\n /** 424 Failed Dependency */\n failedDependency(response?: string | object, details?: object): void;\n /** 425 Too Early */\n tooEarly(response?: string | object, details?: object): void;\n /** 426 Upgrade Required */\n upgradeRequired(response?: string | object, details?: object): void;\n /** 428 Precondition Required */\n preconditionRequired(response?: string | object, details?: object): void;\n /** 429 Too Many Requests */\n tooManyRequests(response?: string | object, details?: object): void;\n /** 431 Request Header Fields Too Large */\n requestHeaderFieldsTooLarge(response?: string | object, details?: object): void;\n /** 451 Unavailable For Legal Reasons */\n unavailableForLegalReasons(response?: string | object, details?: object): void;\n /** 500 Internal Server Error */\n internalServerError(response?: string | object, details?: object): void;\n /** 501 Not Implemented */\n notImplemented(response?: string | object, details?: object): void;\n /** 502 Bad Gateway */\n badGateway(response?: string | object, details?: object): void;\n /** 503 Service Unavailable */\n serviceUnavailable(response?: string | object, details?: object): void;\n /** 504 Gateway Timeout */\n gatewayTimeout(response?: string | object, details?: object): void;\n /** 505 Http Version Not Supported */\n httpVersionNotSupported(response?: string | object, details?: object): void;\n /** 506 Variant Also Negotiates */\n variantAlsoNegotiates(response?: string | object, details?: object): void;\n /** 507 Insufficient Storage */\n insufficientStorage(response?: string | object, details?: object): void;\n /** 508 Loop Detected */\n loopDetected(response?: string | object, details?: object): void;\n /** 509 Bandwidth Limit Exceeded */\n bandwidthLimitExceeded(response?: string | object, details?: object): void;\n /** 510 Not Extended */\n notExtended(response?: string | object, details?: object): void;\n /** 511 Network Authentication Required */\n networkAuthenticationRequired(response?: string | object, details?: object): void;\n}\n\nexport interface ContextDelegatedResponseSuccessMethods {\n /** 200 */\n send(response: unknown, status?: number): void;\n /** 201 */\n created(response?: unknown): void;\n /** 204 | 200 */\n deleted(response?: unknown): void;\n}\n"],"names":["errorMethodEntries","codeStr","statusName","Object","entries","STATUS_CODES","code","Number","methodName","camelCase"],"mappings":";;;;;AAYA;;;;AAIC,IACM,UAAUA,kBAAAA,GAAAA;IACf,KAAK,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,IAAIC,MAAAA,CAAOC,OAAO,CAACC,sBAAAA,CAAAA,CAAe;AAChE,QAAA,MAAMC,OAAOC,MAAAA,CAAON,OAAAA,CAAAA;AAEpB,QAAA,IAAIC,UAAAA,IAAcI,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,GAAO,GAAA,EAAK;YAC3C,MAAM;AACJA,gBAAAA,IAAAA;AACAJ,gBAAAA,UAAAA;AACAM,gBAAAA,UAAAA,EAAYC,YAAAA,CAAUP,UAAAA;AACxB,aAAA;AACF,QAAA;AACF,IAAA;AACF;;;;"}
@@ -0,0 +1,22 @@
1
+ import { camelCase } from 'lodash/fp';
2
+ import { STATUS_CODES } from 'node:http';
3
+
4
+ /**
5
+ * Single source of truth for the generated error helpers: yields one entry per
6
+ * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the
7
+ * type/runtime sync test iterate this, so they cannot drift.
8
+ */ function* errorMethodEntries() {
9
+ for (const [codeStr, statusName] of Object.entries(STATUS_CODES)){
10
+ const code = Number(codeStr);
11
+ if (statusName && code >= 400 && code < 600) {
12
+ yield {
13
+ code,
14
+ statusName,
15
+ methodName: camelCase(statusName)
16
+ };
17
+ }
18
+ }
19
+ }
20
+
21
+ export { errorMethodEntries };
22
+ //# sourceMappingURL=koa-methods.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koa-methods.mjs","sources":["../../../src/services/server/koa-methods.ts"],"sourcesContent":["import { camelCase } from 'lodash/fp';\nimport { STATUS_CODES } from 'node:http';\n\nexport interface ErrorMethodEntry {\n /** HTTP status code (400–599). */\n code: number;\n /** Reason phrase from `node:http` `STATUS_CODES`, e.g. \"Not Found\". */\n statusName: string;\n /** camelCased helper name registered on the context, e.g. \"notFound\". */\n methodName: keyof ContextDelegatedResponseErrorMethods;\n}\n\n/**\n * Single source of truth for the generated error helpers: yields one entry per\n * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the\n * type/runtime sync test iterate this, so they cannot drift.\n */\nexport function* errorMethodEntries(): Generator<ErrorMethodEntry> {\n for (const [codeStr, statusName] of Object.entries(STATUS_CODES)) {\n const code = Number(codeStr);\n\n if (statusName && code >= 400 && code < 600) {\n yield {\n code,\n statusName,\n methodName: camelCase(statusName) as keyof ContextDelegatedResponseErrorMethods,\n };\n }\n }\n}\n\nexport interface ContextDelegatedResponseErrorMethods {\n /** 400 Bad Request */\n badRequest(response?: string | object, details?: object): void;\n /** 401 Unauthorized */\n unauthorized(response?: string | object, details?: object): void;\n /** 402 Payment Required */\n paymentRequired(response?: string | object, details?: object): void;\n /** 403 Forbidden */\n forbidden(response?: string | object, details?: object): void;\n /** 404 Not Found */\n notFound(response?: string | object, details?: object): void;\n /** 405 Method Not Allowed */\n methodNotAllowed(response?: string | object, details?: object): void;\n /** 406 Not Acceptable */\n notAcceptable(response?: string | object, details?: object): void;\n /** 407 Proxy Authentication Required */\n proxyAuthenticationRequired(response?: string | object, details?: object): void;\n /** 408 Request Timeout */\n requestTimeout(response?: string | object, details?: object): void;\n /** 409 Conflict */\n conflict(response?: string | object, details?: object): void;\n /** 410 Gone */\n gone(response?: string | object, details?: object): void;\n /** 411 Length Required */\n lengthRequired(response?: string | object, details?: object): void;\n /** 412 Precondition Failed */\n preconditionFailed(response?: string | object, details?: object): void;\n /** 413 Payload Too Large */\n payloadTooLarge(response?: string | object, details?: object): void;\n /** 414 Uri Too Long */\n uriTooLong(response?: string | object, details?: object): void;\n /** 415 Unsupported Media Type */\n unsupportedMediaType(response?: string | object, details?: object): void;\n /** 416 Range Not Satisfiable */\n rangeNotSatisfiable(response?: string | object, details?: object): void;\n /** 417 Expectation Failed */\n expectationFailed(response?: string | object, details?: object): void;\n /** 418 Im A Teapot */\n imATeapot(response?: string | object, details?: object): void;\n /** 421 Misdirected Request */\n misdirectedRequest(response?: string | object, details?: object): void;\n /** 422 Unprocessable Entity */\n unprocessableEntity(response?: string | object, details?: object): void;\n /** 423 Locked */\n locked(response?: string | object, details?: object): void;\n /** 424 Failed Dependency */\n failedDependency(response?: string | object, details?: object): void;\n /** 425 Too Early */\n tooEarly(response?: string | object, details?: object): void;\n /** 426 Upgrade Required */\n upgradeRequired(response?: string | object, details?: object): void;\n /** 428 Precondition Required */\n preconditionRequired(response?: string | object, details?: object): void;\n /** 429 Too Many Requests */\n tooManyRequests(response?: string | object, details?: object): void;\n /** 431 Request Header Fields Too Large */\n requestHeaderFieldsTooLarge(response?: string | object, details?: object): void;\n /** 451 Unavailable For Legal Reasons */\n unavailableForLegalReasons(response?: string | object, details?: object): void;\n /** 500 Internal Server Error */\n internalServerError(response?: string | object, details?: object): void;\n /** 501 Not Implemented */\n notImplemented(response?: string | object, details?: object): void;\n /** 502 Bad Gateway */\n badGateway(response?: string | object, details?: object): void;\n /** 503 Service Unavailable */\n serviceUnavailable(response?: string | object, details?: object): void;\n /** 504 Gateway Timeout */\n gatewayTimeout(response?: string | object, details?: object): void;\n /** 505 Http Version Not Supported */\n httpVersionNotSupported(response?: string | object, details?: object): void;\n /** 506 Variant Also Negotiates */\n variantAlsoNegotiates(response?: string | object, details?: object): void;\n /** 507 Insufficient Storage */\n insufficientStorage(response?: string | object, details?: object): void;\n /** 508 Loop Detected */\n loopDetected(response?: string | object, details?: object): void;\n /** 509 Bandwidth Limit Exceeded */\n bandwidthLimitExceeded(response?: string | object, details?: object): void;\n /** 510 Not Extended */\n notExtended(response?: string | object, details?: object): void;\n /** 511 Network Authentication Required */\n networkAuthenticationRequired(response?: string | object, details?: object): void;\n}\n\nexport interface ContextDelegatedResponseSuccessMethods {\n /** 200 */\n send(response: unknown, status?: number): void;\n /** 201 */\n created(response?: unknown): void;\n /** 204 | 200 */\n deleted(response?: unknown): void;\n}\n"],"names":["errorMethodEntries","codeStr","statusName","Object","entries","STATUS_CODES","code","Number","methodName","camelCase"],"mappings":";;;AAYA;;;;AAIC,IACM,UAAUA,kBAAAA,GAAAA;IACf,KAAK,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,IAAIC,MAAAA,CAAOC,OAAO,CAACC,YAAAA,CAAAA,CAAe;AAChE,QAAA,MAAMC,OAAOC,MAAAA,CAAON,OAAAA,CAAAA;AAEpB,QAAA,IAAIC,UAAAA,IAAcI,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,GAAO,GAAA,EAAK;YAC3C,MAAM;AACJA,gBAAAA,IAAAA;AACAJ,gBAAAA,UAAAA;AACAM,gBAAAA,UAAAA,EAAYC,SAAAA,CAAUP,UAAAA;AACxB,aAAA;AACF,QAAA;AACF,IAAA;AACF;;;;"}
@@ -1,13 +1,4 @@
1
1
  import Koa from 'koa';
2
- declare module 'koa' {
3
- interface BaseResponse {
4
- send: (data: any, status?: number) => void;
5
- created: (data: any) => void;
6
- deleted: (data: any) => void;
7
- _explicitStatus: boolean;
8
- [key: string]: (message: string, details?: unknown) => void;
9
- }
10
- }
11
2
  declare const createKoaApp: ({ proxy, keys }: {
12
3
  proxy: boolean;
13
4
  keys: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../../src/services/server/koa.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,OAAO,QAAQ,KAAK,CAAC;IACnB,UAAU,YAAY;QACpB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAC7B,eAAe,EAAE,OAAO,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KAC7D;CACF;AA8CD,QAAA,MAAM,YAAY,oBAAqB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,8CAOxE,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../../src/services/server/koa.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AA8CtB,QAAA,MAAM,YAAY,GAAI,iBAAiB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,8CAOxE,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -4,31 +4,28 @@ var fp = require('lodash/fp');
4
4
  var Koa = require('koa');
5
5
  var createError = require('http-errors');
6
6
  var delegate = require('delegates');
7
- var statuses = require('statuses');
8
7
  var errors = require('../errors.js');
8
+ var koaMethods = require('./koa-methods.js');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var Koa__default = /*#__PURE__*/_interopDefault(Koa);
13
13
  var createError__default = /*#__PURE__*/_interopDefault(createError);
14
14
  var delegate__default = /*#__PURE__*/_interopDefault(delegate);
15
- var statuses__default = /*#__PURE__*/_interopDefault(statuses);
16
15
 
17
16
  const addCustomMethods = (app)=>{
18
17
  const delegator = delegate__default.default(app.context, 'response');
19
- /* errors */ statuses__default.default.codes.filter((code)=>code >= 400 && code < 600).forEach((code)=>{
20
- const name = statuses__default.default(code);
21
- const camelCasedName = fp.camelCase(name);
22
- app.response[camelCasedName] = function responseCode(message = name, details = {}) {
23
- const httpError = createError__default.default(code, message, {
18
+ /* errors */ for (const { code, statusName, methodName } of koaMethods.errorMethodEntries()){
19
+ app.response[methodName] = function responseCode(response = statusName, details = {}) {
20
+ const httpError = createError__default.default(code, response, {
24
21
  details
25
22
  });
26
23
  const { status, body } = errors.formatHttpError(httpError);
27
24
  this.status = status;
28
25
  this.body = body;
29
26
  };
30
- delegator.method(camelCasedName);
31
- });
27
+ delegator.method(methodName);
28
+ }
32
29
  /* send, created, deleted */ app.response.send = function send(data, status = 200) {
33
30
  this.status = status;
34
31
  this.body = data;
@@ -1 +1 @@
1
- {"version":3,"file":"koa.js","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil, camelCase } from 'lodash/fp';\nimport Koa from 'koa';\nimport createError from 'http-errors';\nimport delegate from 'delegates';\nimport statuses from 'statuses';\nimport { formatHttpError } from '../errors';\n\ndeclare module 'koa' {\n interface BaseResponse {\n send: (data: any, status?: number) => void;\n created: (data: any) => void;\n deleted: (data: any) => void;\n _explicitStatus: boolean;\n [key: string]: (message: string, details?: unknown) => void;\n }\n}\n\nconst addCustomMethods = (app: Koa) => {\n const delegator = delegate(app.context, 'response');\n\n /* errors */\n statuses.codes\n .filter((code) => code >= 400 && code < 600)\n .forEach((code) => {\n const name = statuses(code);\n\n const camelCasedName = camelCase(name);\n app.response[camelCasedName] = function responseCode(message = name, details = {}) {\n const httpError = createError(code, message, { details });\n const { status, body } = formatHttpError(httpError);\n this.status = status;\n this.body = body;\n };\n delegator.method(camelCasedName);\n });\n\n /* send, created, deleted */\n app.response.send = function send(data, status = 200) {\n this.status = status;\n this.body = data;\n };\n\n app.response.created = function created(data) {\n this.status = 201;\n this.body = data;\n };\n\n app.response.deleted = function deleted(data) {\n if (isNil(data)) {\n this.status = 204;\n } else {\n this.status = 200;\n this.body = data;\n }\n };\n\n delegator.method('send').method('created').method('deleted');\n\n return app;\n};\n\nconst createKoaApp = ({ proxy, keys }: { proxy: boolean; keys: string[] }) => {\n const app = new Koa({ proxy });\n app.keys = keys;\n\n addCustomMethods(app);\n\n return app;\n};\n\nexport default createKoaApp;\n"],"names":["addCustomMethods","app","delegator","delegate","context","statuses","codes","filter","code","forEach","name","camelCasedName","camelCase","response","responseCode","message","details","httpError","createError","status","body","formatHttpError","method","send","data","created","deleted","isNil","createKoaApp","proxy","keys","Koa"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAMA,mBAAmB,CAACC,GAAAA,GAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,yBAAAA,CAASF,GAAAA,CAAIG,OAAO,EAAE,UAAA,CAAA;AAExC,iBACAC,yBAAAA,CAASC,KAAK,CACXC,MAAM,CAAC,CAACC,IAAAA,GAASA,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,GAAO,GAAA,CAAA,CACvCC,OAAO,CAAC,CAACD,IAAAA,GAAAA;AACR,QAAA,MAAME,OAAOL,yBAAAA,CAASG,IAAAA,CAAAA;AAEtB,QAAA,MAAMG,iBAAiBC,YAAAA,CAAUF,IAAAA,CAAAA;QACjCT,GAAAA,CAAIY,QAAQ,CAACF,cAAAA,CAAe,GAAG,SAASG,YAAAA,CAAaC,OAAAA,GAAUL,IAAI,EAAEM,OAAAA,GAAU,EAAE,EAAA;YAC/E,MAAMC,SAAAA,GAAYC,4BAAAA,CAAYV,IAAAA,EAAMO,OAAAA,EAAS;AAAEC,gBAAAA;AAAQ,aAAA,CAAA;AACvD,YAAA,MAAM,EAAEG,MAAM,EAAEC,IAAI,EAAE,GAAGC,sBAAAA,CAAgBJ,SAAAA,CAAAA;YACzC,IAAI,CAACE,MAAM,GAAGA,MAAAA;YACd,IAAI,CAACC,IAAI,GAAGA,IAAAA;AACd,QAAA,CAAA;AACAlB,QAAAA,SAAAA,CAAUoB,MAAM,CAACX,cAAAA,CAAAA;AACnB,IAAA,CAAA,CAAA;iCAGFV,GAAAA,CAAIY,QAAQ,CAACU,IAAI,GAAG,SAASA,IAAAA,CAAKC,IAAI,EAAEL,MAAAA,GAAS,GAAG,EAAA;QAClD,IAAI,CAACA,MAAM,GAAGA,MAAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAvB,IAAAA,GAAAA,CAAIY,QAAQ,CAACY,OAAO,GAAG,SAASA,QAAQD,IAAI,EAAA;QAC1C,IAAI,CAACL,MAAM,GAAG,GAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAvB,IAAAA,GAAAA,CAAIY,QAAQ,CAACa,OAAO,GAAG,SAASA,QAAQF,IAAI,EAAA;AAC1C,QAAA,IAAIG,SAAMH,IAAAA,CAAAA,EAAO;YACf,IAAI,CAACL,MAAM,GAAG,GAAA;QAChB,CAAA,MAAO;YACL,IAAI,CAACA,MAAM,GAAG,GAAA;YACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEAtB,IAAAA,SAAAA,CAAUoB,MAAM,CAAC,MAAA,CAAA,CAAQA,MAAM,CAAC,SAAA,CAAA,CAAWA,MAAM,CAAC,SAAA,CAAA;IAElD,OAAOrB,GAAAA;AACT,CAAA;AAEA,MAAM2B,eAAe,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAsC,GAAA;IACvE,MAAM7B,GAAAA,GAAM,IAAI8B,oBAAAA,CAAI;AAAEF,QAAAA;AAAM,KAAA,CAAA;AAC5B5B,IAAAA,GAAAA,CAAI6B,IAAI,GAAGA,IAAAA;IAEX9B,gBAAAA,CAAiBC,GAAAA,CAAAA;IAEjB,OAAOA,GAAAA;AACT;;;;"}
1
+ {"version":3,"file":"koa.js","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport Koa from 'koa';\nimport createError from 'http-errors';\nimport delegate from 'delegates';\nimport { formatHttpError } from '../errors';\nimport { errorMethodEntries } from './koa-methods';\n\nconst addCustomMethods = (app: Koa) => {\n const delegator = delegate(app.context, 'response');\n\n /* errors */\n for (const { code, statusName, methodName } of errorMethodEntries()) {\n app.response[methodName] = function responseCode(response = statusName, details = {}) {\n const httpError = createError(code, response, { details });\n const { status, body } = formatHttpError(httpError);\n this.status = status;\n this.body = body;\n };\n\n delegator.method(methodName);\n }\n\n /* send, created, deleted */\n app.response.send = function send(data, status = 200) {\n this.status = status;\n this.body = data;\n };\n\n app.response.created = function created(data) {\n this.status = 201;\n this.body = data;\n };\n\n app.response.deleted = function deleted(data) {\n if (isNil(data)) {\n this.status = 204;\n } else {\n this.status = 200;\n this.body = data;\n }\n };\n\n delegator.method('send').method('created').method('deleted');\n\n return app;\n};\n\nconst createKoaApp = ({ proxy, keys }: { proxy: boolean; keys: string[] }) => {\n const app = new Koa({ proxy });\n app.keys = keys;\n\n addCustomMethods(app);\n\n return app;\n};\n\nexport default createKoaApp;\n"],"names":["addCustomMethods","app","delegator","delegate","context","code","statusName","methodName","errorMethodEntries","response","responseCode","details","httpError","createError","status","body","formatHttpError","method","send","data","created","deleted","isNil","createKoaApp","proxy","keys","Koa"],"mappings":";;;;;;;;;;;;;;;AAOA,MAAMA,mBAAmB,CAACC,GAAAA,GAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,yBAAAA,CAASF,GAAAA,CAAIG,OAAO,EAAE,UAAA,CAAA;iBAGxC,KAAK,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,UAAU,EAAE,IAAIC,6BAAAA,EAAAA,CAAsB;QACnEP,GAAAA,CAAIQ,QAAQ,CAACF,UAAAA,CAAW,GAAG,SAASG,YAAAA,CAAaD,QAAAA,GAAWH,UAAU,EAAEK,OAAAA,GAAU,EAAE,EAAA;YAClF,MAAMC,SAAAA,GAAYC,4BAAAA,CAAYR,IAAAA,EAAMI,QAAAA,EAAU;AAAEE,gBAAAA;AAAQ,aAAA,CAAA;AACxD,YAAA,MAAM,EAAEG,MAAM,EAAEC,IAAI,EAAE,GAAGC,sBAAAA,CAAgBJ,SAAAA,CAAAA;YACzC,IAAI,CAACE,MAAM,GAAGA,MAAAA;YACd,IAAI,CAACC,IAAI,GAAGA,IAAAA;AACd,QAAA,CAAA;AAEAb,QAAAA,SAAAA,CAAUe,MAAM,CAACV,UAAAA,CAAAA;AACnB,IAAA;iCAGAN,GAAAA,CAAIQ,QAAQ,CAACS,IAAI,GAAG,SAASA,IAAAA,CAAKC,IAAI,EAAEL,MAAAA,GAAS,GAAG,EAAA;QAClD,IAAI,CAACA,MAAM,GAAGA,MAAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACW,OAAO,GAAG,SAASA,QAAQD,IAAI,EAAA;QAC1C,IAAI,CAACL,MAAM,GAAG,GAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACY,OAAO,GAAG,SAASA,QAAQF,IAAI,EAAA;AAC1C,QAAA,IAAIG,SAAMH,IAAAA,CAAAA,EAAO;YACf,IAAI,CAACL,MAAM,GAAG,GAAA;QAChB,CAAA,MAAO;YACL,IAAI,CAACA,MAAM,GAAG,GAAA;YACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEAjB,IAAAA,SAAAA,CAAUe,MAAM,CAAC,MAAA,CAAA,CAAQA,MAAM,CAAC,SAAA,CAAA,CAAWA,MAAM,CAAC,SAAA,CAAA;IAElD,OAAOhB,GAAAA;AACT,CAAA;AAEA,MAAMsB,eAAe,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAsC,GAAA;IACvE,MAAMxB,GAAAA,GAAM,IAAIyB,oBAAAA,CAAI;AAAEF,QAAAA;AAAM,KAAA,CAAA;AAC5BvB,IAAAA,GAAAA,CAAIwB,IAAI,GAAGA,IAAAA;IAEXzB,gBAAAA,CAAiBC,GAAAA,CAAAA;IAEjB,OAAOA,GAAAA;AACT;;;;"}
@@ -1,25 +1,23 @@
1
- import { camelCase, isNil } from 'lodash/fp';
1
+ import { isNil } from 'lodash/fp';
2
2
  import Koa from 'koa';
3
3
  import createError from 'http-errors';
4
4
  import delegate from 'delegates';
5
- import statuses from 'statuses';
6
5
  import { formatHttpError } from '../errors.mjs';
6
+ import { errorMethodEntries } from './koa-methods.mjs';
7
7
 
8
8
  const addCustomMethods = (app)=>{
9
9
  const delegator = delegate(app.context, 'response');
10
- /* errors */ statuses.codes.filter((code)=>code >= 400 && code < 600).forEach((code)=>{
11
- const name = statuses(code);
12
- const camelCasedName = camelCase(name);
13
- app.response[camelCasedName] = function responseCode(message = name, details = {}) {
14
- const httpError = createError(code, message, {
10
+ /* errors */ for (const { code, statusName, methodName } of errorMethodEntries()){
11
+ app.response[methodName] = function responseCode(response = statusName, details = {}) {
12
+ const httpError = createError(code, response, {
15
13
  details
16
14
  });
17
15
  const { status, body } = formatHttpError(httpError);
18
16
  this.status = status;
19
17
  this.body = body;
20
18
  };
21
- delegator.method(camelCasedName);
22
- });
19
+ delegator.method(methodName);
20
+ }
23
21
  /* send, created, deleted */ app.response.send = function send(data, status = 200) {
24
22
  this.status = status;
25
23
  this.body = data;
@@ -1 +1 @@
1
- {"version":3,"file":"koa.mjs","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil, camelCase } from 'lodash/fp';\nimport Koa from 'koa';\nimport createError from 'http-errors';\nimport delegate from 'delegates';\nimport statuses from 'statuses';\nimport { formatHttpError } from '../errors';\n\ndeclare module 'koa' {\n interface BaseResponse {\n send: (data: any, status?: number) => void;\n created: (data: any) => void;\n deleted: (data: any) => void;\n _explicitStatus: boolean;\n [key: string]: (message: string, details?: unknown) => void;\n }\n}\n\nconst addCustomMethods = (app: Koa) => {\n const delegator = delegate(app.context, 'response');\n\n /* errors */\n statuses.codes\n .filter((code) => code >= 400 && code < 600)\n .forEach((code) => {\n const name = statuses(code);\n\n const camelCasedName = camelCase(name);\n app.response[camelCasedName] = function responseCode(message = name, details = {}) {\n const httpError = createError(code, message, { details });\n const { status, body } = formatHttpError(httpError);\n this.status = status;\n this.body = body;\n };\n delegator.method(camelCasedName);\n });\n\n /* send, created, deleted */\n app.response.send = function send(data, status = 200) {\n this.status = status;\n this.body = data;\n };\n\n app.response.created = function created(data) {\n this.status = 201;\n this.body = data;\n };\n\n app.response.deleted = function deleted(data) {\n if (isNil(data)) {\n this.status = 204;\n } else {\n this.status = 200;\n this.body = data;\n }\n };\n\n delegator.method('send').method('created').method('deleted');\n\n return app;\n};\n\nconst createKoaApp = ({ proxy, keys }: { proxy: boolean; keys: string[] }) => {\n const app = new Koa({ proxy });\n app.keys = keys;\n\n addCustomMethods(app);\n\n return app;\n};\n\nexport default createKoaApp;\n"],"names":["addCustomMethods","app","delegator","delegate","context","statuses","codes","filter","code","forEach","name","camelCasedName","camelCase","response","responseCode","message","details","httpError","createError","status","body","formatHttpError","method","send","data","created","deleted","isNil","createKoaApp","proxy","keys","Koa"],"mappings":";;;;;;;AAiBA,MAAMA,mBAAmB,CAACC,GAAAA,GAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,QAAAA,CAASF,GAAAA,CAAIG,OAAO,EAAE,UAAA,CAAA;AAExC,iBACAC,QAAAA,CAASC,KAAK,CACXC,MAAM,CAAC,CAACC,IAAAA,GAASA,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,GAAO,GAAA,CAAA,CACvCC,OAAO,CAAC,CAACD,IAAAA,GAAAA;AACR,QAAA,MAAME,OAAOL,QAAAA,CAASG,IAAAA,CAAAA;AAEtB,QAAA,MAAMG,iBAAiBC,SAAAA,CAAUF,IAAAA,CAAAA;QACjCT,GAAAA,CAAIY,QAAQ,CAACF,cAAAA,CAAe,GAAG,SAASG,YAAAA,CAAaC,OAAAA,GAAUL,IAAI,EAAEM,OAAAA,GAAU,EAAE,EAAA;YAC/E,MAAMC,SAAAA,GAAYC,WAAAA,CAAYV,IAAAA,EAAMO,OAAAA,EAAS;AAAEC,gBAAAA;AAAQ,aAAA,CAAA;AACvD,YAAA,MAAM,EAAEG,MAAM,EAAEC,IAAI,EAAE,GAAGC,eAAAA,CAAgBJ,SAAAA,CAAAA;YACzC,IAAI,CAACE,MAAM,GAAGA,MAAAA;YACd,IAAI,CAACC,IAAI,GAAGA,IAAAA;AACd,QAAA,CAAA;AACAlB,QAAAA,SAAAA,CAAUoB,MAAM,CAACX,cAAAA,CAAAA;AACnB,IAAA,CAAA,CAAA;iCAGFV,GAAAA,CAAIY,QAAQ,CAACU,IAAI,GAAG,SAASA,IAAAA,CAAKC,IAAI,EAAEL,MAAAA,GAAS,GAAG,EAAA;QAClD,IAAI,CAACA,MAAM,GAAGA,MAAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAvB,IAAAA,GAAAA,CAAIY,QAAQ,CAACY,OAAO,GAAG,SAASA,QAAQD,IAAI,EAAA;QAC1C,IAAI,CAACL,MAAM,GAAG,GAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAvB,IAAAA,GAAAA,CAAIY,QAAQ,CAACa,OAAO,GAAG,SAASA,QAAQF,IAAI,EAAA;AAC1C,QAAA,IAAIG,MAAMH,IAAAA,CAAAA,EAAO;YACf,IAAI,CAACL,MAAM,GAAG,GAAA;QAChB,CAAA,MAAO;YACL,IAAI,CAACA,MAAM,GAAG,GAAA;YACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEAtB,IAAAA,SAAAA,CAAUoB,MAAM,CAAC,MAAA,CAAA,CAAQA,MAAM,CAAC,SAAA,CAAA,CAAWA,MAAM,CAAC,SAAA,CAAA;IAElD,OAAOrB,GAAAA;AACT,CAAA;AAEA,MAAM2B,eAAe,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAsC,GAAA;IACvE,MAAM7B,GAAAA,GAAM,IAAI8B,GAAAA,CAAI;AAAEF,QAAAA;AAAM,KAAA,CAAA;AAC5B5B,IAAAA,GAAAA,CAAI6B,IAAI,GAAGA,IAAAA;IAEX9B,gBAAAA,CAAiBC,GAAAA,CAAAA;IAEjB,OAAOA,GAAAA;AACT;;;;"}
1
+ {"version":3,"file":"koa.mjs","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport Koa from 'koa';\nimport createError from 'http-errors';\nimport delegate from 'delegates';\nimport { formatHttpError } from '../errors';\nimport { errorMethodEntries } from './koa-methods';\n\nconst addCustomMethods = (app: Koa) => {\n const delegator = delegate(app.context, 'response');\n\n /* errors */\n for (const { code, statusName, methodName } of errorMethodEntries()) {\n app.response[methodName] = function responseCode(response = statusName, details = {}) {\n const httpError = createError(code, response, { details });\n const { status, body } = formatHttpError(httpError);\n this.status = status;\n this.body = body;\n };\n\n delegator.method(methodName);\n }\n\n /* send, created, deleted */\n app.response.send = function send(data, status = 200) {\n this.status = status;\n this.body = data;\n };\n\n app.response.created = function created(data) {\n this.status = 201;\n this.body = data;\n };\n\n app.response.deleted = function deleted(data) {\n if (isNil(data)) {\n this.status = 204;\n } else {\n this.status = 200;\n this.body = data;\n }\n };\n\n delegator.method('send').method('created').method('deleted');\n\n return app;\n};\n\nconst createKoaApp = ({ proxy, keys }: { proxy: boolean; keys: string[] }) => {\n const app = new Koa({ proxy });\n app.keys = keys;\n\n addCustomMethods(app);\n\n return app;\n};\n\nexport default createKoaApp;\n"],"names":["addCustomMethods","app","delegator","delegate","context","code","statusName","methodName","errorMethodEntries","response","responseCode","details","httpError","createError","status","body","formatHttpError","method","send","data","created","deleted","isNil","createKoaApp","proxy","keys","Koa"],"mappings":";;;;;;;AAOA,MAAMA,mBAAmB,CAACC,GAAAA,GAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,QAAAA,CAASF,GAAAA,CAAIG,OAAO,EAAE,UAAA,CAAA;iBAGxC,KAAK,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,UAAU,EAAE,IAAIC,kBAAAA,EAAAA,CAAsB;QACnEP,GAAAA,CAAIQ,QAAQ,CAACF,UAAAA,CAAW,GAAG,SAASG,YAAAA,CAAaD,QAAAA,GAAWH,UAAU,EAAEK,OAAAA,GAAU,EAAE,EAAA;YAClF,MAAMC,SAAAA,GAAYC,WAAAA,CAAYR,IAAAA,EAAMI,QAAAA,EAAU;AAAEE,gBAAAA;AAAQ,aAAA,CAAA;AACxD,YAAA,MAAM,EAAEG,MAAM,EAAEC,IAAI,EAAE,GAAGC,eAAAA,CAAgBJ,SAAAA,CAAAA;YACzC,IAAI,CAACE,MAAM,GAAGA,MAAAA;YACd,IAAI,CAACC,IAAI,GAAGA,IAAAA;AACd,QAAA,CAAA;AAEAb,QAAAA,SAAAA,CAAUe,MAAM,CAACV,UAAAA,CAAAA;AACnB,IAAA;iCAGAN,GAAAA,CAAIQ,QAAQ,CAACS,IAAI,GAAG,SAASA,IAAAA,CAAKC,IAAI,EAAEL,MAAAA,GAAS,GAAG,EAAA;QAClD,IAAI,CAACA,MAAM,GAAGA,MAAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACW,OAAO,GAAG,SAASA,QAAQD,IAAI,EAAA;QAC1C,IAAI,CAACL,MAAM,GAAG,GAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACY,OAAO,GAAG,SAASA,QAAQF,IAAI,EAAA;AAC1C,QAAA,IAAIG,MAAMH,IAAAA,CAAAA,EAAO;YACf,IAAI,CAACL,MAAM,GAAG,GAAA;QAChB,CAAA,MAAO;YACL,IAAI,CAACA,MAAM,GAAG,GAAA;YACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEAjB,IAAAA,SAAAA,CAAUe,MAAM,CAAC,MAAA,CAAA,CAAQA,MAAM,CAAC,SAAA,CAAA,CAAWA,MAAM,CAAC,SAAA,CAAA;IAElD,OAAOhB,GAAAA;AACT,CAAA;AAEA,MAAMsB,eAAe,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAsC,GAAA;IACvE,MAAMxB,GAAAA,GAAM,IAAIyB,GAAAA,CAAI;AAAEF,QAAAA;AAAM,KAAA,CAAA;AAC5BvB,IAAAA,GAAAA,CAAIwB,IAAI,GAAGA,IAAAA;IAEXzB,gBAAAA,CAAiBC,GAAAA,CAAAA;IAEjB,OAAOA,GAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/services/server/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C,QAAA,MAAM,uBAAuB,UAAW,KAAK,KAAK,UAAU,KAAK,MAAM,6BAUtE,CAAC;AAIF;;GAEG;AACH,QAAA,MAAM,kBAAkB,WACd,MAAM,KAAK,cAAc,GAAG,KAAK,gBAAgB,GAAG,KAAK,iBAAiB,CAAC,UAC3E,KAAK,MAAM;UAGX,MAAM,GAAG,IAAI;aACV,KAAK,iBAAiB;GA+DlC,CAAC;AAyBF,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/services/server/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C,QAAA,MAAM,uBAAuB,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,6BAUtE,CAAC;AAIF;;GAEG;AACH,QAAA,MAAM,kBAAkB,GACtB,QAAQ,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,EACnF,QAAQ,IAAI,CAAC,MAAM;UAGX,MAAM,GAAG,IAAI;aACV,IAAI,CAAC,iBAAiB;GA+DlC,CAAC;AAyBF,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/services/server/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA0K1C,eAAO,MAAM,oBAAoB,WAAY,KAAK,MAAM,SA8DvD,CAAC"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/services/server/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA0K1C,eAAO,MAAM,oBAAoB,GAAI,QAAQ,IAAI,CAAC,MAAM,SA8DvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/services/server/policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAA,MAAM,yBAAyB,UAAW,KAAK,KAAK,UAAU,KAAK,MAAM,2BAmBxE,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/services/server/policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAA,MAAM,yBAAyB,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,2BAmBxE,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-middlewares.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-middlewares.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiD1C;;GAEG;AACH,QAAA,MAAM,8BAA8B,WAAkB,KAAK,MAAM,kBAchE,CAAC;AAkCF,eAAe,8BAA8B,CAAC"}
1
+ {"version":3,"file":"register-middlewares.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-middlewares.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiD1C;;GAEG;AACH,QAAA,MAAM,8BAA8B,GAAU,QAAQ,IAAI,CAAC,MAAM,kBAchE,CAAC;AAkCF,eAAe,8BAA8B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C;;GAEG;iCACqB,KAAK,MAAM;AAAnC,wBAKE"}
1
+ {"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C;;GAEG;yBACa,QAAQ,IAAI,CAAC,MAAM;AAAnC,wBAKE"}
@@ -1,5 +1,3 @@
1
- /// <reference types="koa" />
2
- /// <reference types="koa__router" />
3
1
  import Router from '@koa/router';
4
2
  import { yup } from '@strapi/utils';
5
3
  import type { Core } from '@strapi/types';
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/services/server/routing.ts"],"names":[],"mappings":";;AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkE1C,QAAA,MAAM,mBAAmB,gBAAiB,KAAK,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYxD,CAAC;AAEF,QAAA,MAAM,kBAAkB,WAAY,KAAK,MAAM,SAAQ;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;wBAmB3C,WAAW,GAAG,KAAK,UAAU,EAAE,UAAU,MAAM;CAkB3E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/services/server/routing.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkE1C,QAAA,MAAM,mBAAmB,GAAI,aAAa,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYxD,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAM;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO;wBAmBhD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,MAAM;CAkB3E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -3,6 +3,11 @@ import type { Database } from '@strapi/database';
3
3
  export interface SessionProvider {
4
4
  create(session: SessionData): Promise<SessionData>;
5
5
  findBySessionId(sessionId: string): Promise<SessionData | null>;
6
+ findByUser(criteria: {
7
+ userId: string;
8
+ origin: string;
9
+ status?: SessionData['status'];
10
+ }): Promise<SessionData[]>;
6
11
  updateBySessionId(sessionId: string, data: Partial<SessionData>): Promise<void>;
7
12
  deleteBySessionId(sessionId: string): Promise<void>;
8
13
  deleteExpired(): Promise<void>;
@@ -21,6 +26,7 @@ export interface SessionData {
21
26
  childId?: string | null;
22
27
  type?: 'refresh' | 'session';
23
28
  status?: 'active' | 'rotated' | 'revoked';
29
+ metadata?: Record<string, unknown> | null;
24
30
  expiresAt: Date;
25
31
  absoluteExpiresAt?: Date | null;
26
32
  createdAt?: Date;
@@ -63,6 +69,7 @@ declare class OriginSessionManager {
63
69
  constructor(sessionManager: SessionManager, origin: string);
64
70
  generateRefreshToken(userId: string, deviceId: string | undefined, options?: {
65
71
  type?: 'refresh' | 'session';
72
+ metadata?: Record<string, unknown>;
66
73
  }): Promise<{
67
74
  token: string;
68
75
  sessionId: string;
@@ -90,6 +97,16 @@ declare class OriginSessionManager {
90
97
  };
91
98
  validateRefreshToken(token: string): Promise<ValidateRefreshTokenResult>;
92
99
  invalidateRefreshToken(userId: string, deviceId?: string): Promise<void>;
100
+ /**
101
+ * Lists the active sessions of a user for this origin. Rotated/expired records
102
+ * are excluded so each live login family yields a single entry.
103
+ */
104
+ listSessions(userId: string): Promise<SessionData[]>;
105
+ /**
106
+ * Revokes a single session by id, but only if it belongs to the given user and origin.
107
+ * Returns true when a matching session was found and deleted.
108
+ */
109
+ revokeSessionById(userId: string, sessionId: string): Promise<boolean>;
93
110
  /**
94
111
  * Returns true when a session exists and is not expired for this origin.
95
112
  * If the session exists but is expired, it will be deleted as part of this check.
@@ -126,6 +143,7 @@ declare class SessionManager {
126
143
  get cleanupThreshold(): number;
127
144
  generateRefreshToken(userId: string, deviceId: string | undefined, origin: string, options?: {
128
145
  type?: 'refresh' | 'session';
146
+ metadata?: Record<string, unknown>;
129
147
  }): Promise<{
130
148
  token: string;
131
149
  sessionId: string;
@@ -140,6 +158,8 @@ declare class SessionManager {
140
158
  };
141
159
  validateRefreshToken(token: string, origin: string): Promise<ValidateRefreshTokenResult>;
142
160
  invalidateRefreshToken(origin: string, userId: string, deviceId?: string): Promise<void>;
161
+ listSessions(origin: string, userId: string): Promise<SessionData[]>;
162
+ revokeSessionById(origin: string, userId: string, sessionId: string): Promise<boolean>;
143
163
  generateAccessToken(refreshToken: string, origin: string): Promise<{
144
164
  token: string;
145
165
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,21 @@ class DatabaseSessionProvider {
24
24
  });
25
25
  return result;
26
26
  }
27
+ async findByUser(criteria) {
28
+ const results = await this.db.query(this.contentType).findMany({
29
+ where: {
30
+ userId: criteria.userId,
31
+ origin: criteria.origin,
32
+ ...criteria.status ? {
33
+ status: criteria.status
34
+ } : {}
35
+ },
36
+ orderBy: {
37
+ createdAt: 'DESC'
38
+ }
39
+ });
40
+ return results;
41
+ }
27
42
  async updateBySessionId(sessionId, data) {
28
43
  await this.db.query(this.contentType).update({
29
44
  where: {
@@ -88,6 +103,18 @@ class OriginSessionManager {
88
103
  return this.sessionManager.invalidateRefreshToken(this.origin, userId, deviceId);
89
104
  }
90
105
  /**
106
+ * Lists the active sessions of a user for this origin. Rotated/expired records
107
+ * are excluded so each live login family yields a single entry.
108
+ */ async listSessions(userId) {
109
+ return this.sessionManager.listSessions(this.origin, userId);
110
+ }
111
+ /**
112
+ * Revokes a single session by id, but only if it belongs to the given user and origin.
113
+ * Returns true when a matching session was found and deleted.
114
+ */ async revokeSessionById(userId, sessionId) {
115
+ return this.sessionManager.revokeSessionById(this.origin, userId, sessionId);
116
+ }
117
+ /**
91
118
  * Returns true when a session exists and is not expired for this origin.
92
119
  * If the session exists but is expired, it will be deleted as part of this check.
93
120
  */ async isSessionActive(sessionId) {
@@ -186,6 +213,9 @@ class SessionManager {
186
213
  childId: null,
187
214
  type: tokenType,
188
215
  status: 'active',
216
+ ...options?.metadata ? {
217
+ metadata: options.metadata
218
+ } : {},
189
219
  expiresAt,
190
220
  absoluteExpiresAt
191
221
  });
@@ -314,6 +344,28 @@ class SessionManager {
314
344
  deviceId
315
345
  });
316
346
  }
347
+ async listSessions(origin, userId) {
348
+ if (!origin || typeof origin !== 'string') {
349
+ throw new Error('SessionManager: Origin parameter is required and must be a non-empty string');
350
+ }
351
+ return this.provider.findByUser({
352
+ userId,
353
+ origin,
354
+ status: 'active'
355
+ });
356
+ }
357
+ async revokeSessionById(origin, userId, sessionId) {
358
+ if (!origin || typeof origin !== 'string') {
359
+ throw new Error('SessionManager: Origin parameter is required and must be a non-empty string');
360
+ }
361
+ const session = await this.provider.findBySessionId(sessionId);
362
+ // Only allow revoking a session that belongs to the requesting user and origin.
363
+ if (session?.userId !== userId || session?.origin !== origin) {
364
+ return false;
365
+ }
366
+ await this.provider.deleteBySessionId(sessionId);
367
+ return true;
368
+ }
317
369
  async generateAccessToken(refreshToken, origin) {
318
370
  if (!origin || typeof origin !== 'string') {
319
371
  throw new Error('SessionManager: Origin parameter is required and must be a non-empty string');
@@ -432,6 +484,11 @@ class SessionManager {
432
484
  childId: null,
433
485
  type: tokenType,
434
486
  status: 'active',
487
+ // Preserve origin-defined metadata (e.g. deviceName, loginAt) across rotation so the
488
+ // active record always reflects the original session details.
489
+ ...current.metadata ? {
490
+ metadata: current.metadata
491
+ } : {},
435
492
  expiresAt: childExpiresAt,
436
493
  absoluteExpiresAt: current.absoluteExpiresAt ?? new Date(absolute)
437
494
  });