@strapi/openapi 0.0.0 → 5.20.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 (279) hide show
  1. package/README.md +1 -0
  2. package/dist/assemblers/document/factory.d.ts +8 -0
  3. package/dist/assemblers/document/factory.d.ts.map +1 -0
  4. package/dist/assemblers/document/factory.js +38 -0
  5. package/dist/assemblers/document/factory.js.map +1 -0
  6. package/dist/assemblers/document/factory.mjs +36 -0
  7. package/dist/assemblers/document/factory.mjs.map +1 -0
  8. package/dist/assemblers/document/index.d.ts +5 -0
  9. package/dist/assemblers/document/index.d.ts.map +1 -0
  10. package/dist/assemblers/document/info.d.ts +8 -0
  11. package/dist/assemblers/document/info.d.ts.map +1 -0
  12. package/dist/assemblers/document/info.js +32 -0
  13. package/dist/assemblers/document/info.js.map +1 -0
  14. package/dist/assemblers/document/info.mjs +30 -0
  15. package/dist/assemblers/document/info.mjs.map +1 -0
  16. package/dist/assemblers/document/metadata.d.ts +6 -0
  17. package/dist/assemblers/document/metadata.d.ts.map +1 -0
  18. package/dist/assemblers/document/metadata.js +23 -0
  19. package/dist/assemblers/document/metadata.js.map +1 -0
  20. package/dist/assemblers/document/metadata.mjs +21 -0
  21. package/dist/assemblers/document/metadata.mjs.map +1 -0
  22. package/dist/assemblers/document/path/factory.d.ts +6 -0
  23. package/dist/assemblers/document/path/factory.d.ts.map +1 -0
  24. package/dist/assemblers/document/path/factory.js +27 -0
  25. package/dist/assemblers/document/path/factory.js.map +1 -0
  26. package/dist/assemblers/document/path/factory.mjs +25 -0
  27. package/dist/assemblers/document/path/factory.mjs.map +1 -0
  28. package/dist/assemblers/document/path/index.d.ts +4 -0
  29. package/dist/assemblers/document/path/index.d.ts.map +1 -0
  30. package/dist/assemblers/document/path/path-item/factory.d.ts +6 -0
  31. package/dist/assemblers/document/path/path-item/factory.d.ts.map +1 -0
  32. package/dist/assemblers/document/path/path-item/factory.js +26 -0
  33. package/dist/assemblers/document/path/path-item/factory.js.map +1 -0
  34. package/dist/assemblers/document/path/path-item/factory.mjs +24 -0
  35. package/dist/assemblers/document/path/path-item/factory.mjs.map +1 -0
  36. package/dist/assemblers/document/path/path-item/index.d.ts +4 -0
  37. package/dist/assemblers/document/path/path-item/index.d.ts.map +1 -0
  38. package/dist/assemblers/document/path/path-item/operation/body.d.ts +7 -0
  39. package/dist/assemblers/document/path/path-item/operation/body.d.ts.map +1 -0
  40. package/dist/assemblers/document/path/path-item/operation/body.js +27 -0
  41. package/dist/assemblers/document/path/path-item/operation/body.js.map +1 -0
  42. package/dist/assemblers/document/path/path-item/operation/body.mjs +25 -0
  43. package/dist/assemblers/document/path/path-item/operation/body.mjs.map +1 -0
  44. package/dist/assemblers/document/path/path-item/operation/factory.d.ts +10 -0
  45. package/dist/assemblers/document/path/path-item/operation/factory.d.ts.map +1 -0
  46. package/dist/assemblers/document/path/path-item/operation/factory.js +37 -0
  47. package/dist/assemblers/document/path/path-item/operation/factory.js.map +1 -0
  48. package/dist/assemblers/document/path/path-item/operation/factory.mjs +35 -0
  49. package/dist/assemblers/document/path/path-item/operation/factory.mjs.map +1 -0
  50. package/dist/assemblers/document/path/path-item/operation/index.d.ts +8 -0
  51. package/dist/assemblers/document/path/path-item/operation/index.d.ts.map +1 -0
  52. package/dist/assemblers/document/path/path-item/operation/operation-id.d.ts +10 -0
  53. package/dist/assemblers/document/path/path-item/operation/operation-id.d.ts.map +1 -0
  54. package/dist/assemblers/document/path/path-item/operation/operation-id.js +47 -0
  55. package/dist/assemblers/document/path/path-item/operation/operation-id.js.map +1 -0
  56. package/dist/assemblers/document/path/path-item/operation/operation-id.mjs +45 -0
  57. package/dist/assemblers/document/path/path-item/operation/operation-id.mjs.map +1 -0
  58. package/dist/assemblers/document/path/path-item/operation/operation.d.ts +13 -0
  59. package/dist/assemblers/document/path/path-item/operation/operation.d.ts.map +1 -0
  60. package/dist/assemblers/document/path/path-item/operation/operation.js +51 -0
  61. package/dist/assemblers/document/path/path-item/operation/operation.js.map +1 -0
  62. package/dist/assemblers/document/path/path-item/operation/operation.mjs +49 -0
  63. package/dist/assemblers/document/path/path-item/operation/operation.mjs.map +1 -0
  64. package/dist/assemblers/document/path/path-item/operation/parameters.d.ts +9 -0
  65. package/dist/assemblers/document/path/path-item/operation/parameters.d.ts.map +1 -0
  66. package/dist/assemblers/document/path/path-item/operation/parameters.js +67 -0
  67. package/dist/assemblers/document/path/path-item/operation/parameters.js.map +1 -0
  68. package/dist/assemblers/document/path/path-item/operation/parameters.mjs +65 -0
  69. package/dist/assemblers/document/path/path-item/operation/parameters.mjs.map +1 -0
  70. package/dist/assemblers/document/path/path-item/operation/responses.d.ts +8 -0
  71. package/dist/assemblers/document/path/path-item/operation/responses.d.ts.map +1 -0
  72. package/dist/assemblers/document/path/path-item/operation/responses.js +51 -0
  73. package/dist/assemblers/document/path/path-item/operation/responses.js.map +1 -0
  74. package/dist/assemblers/document/path/path-item/operation/responses.mjs +49 -0
  75. package/dist/assemblers/document/path/path-item/operation/responses.mjs.map +1 -0
  76. package/dist/assemblers/document/path/path-item/operation/tags.d.ts +7 -0
  77. package/dist/assemblers/document/path/path-item/operation/tags.d.ts.map +1 -0
  78. package/dist/assemblers/document/path/path-item/operation/tags.js +25 -0
  79. package/dist/assemblers/document/path/path-item/operation/tags.js.map +1 -0
  80. package/dist/assemblers/document/path/path-item/operation/tags.mjs +23 -0
  81. package/dist/assemblers/document/path/path-item/operation/tags.mjs.map +1 -0
  82. package/dist/assemblers/document/path/path-item/path-item.d.ts +13 -0
  83. package/dist/assemblers/document/path/path-item/path-item.d.ts.map +1 -0
  84. package/dist/assemblers/document/path/path-item/path-item.js +53 -0
  85. package/dist/assemblers/document/path/path-item/path-item.js.map +1 -0
  86. package/dist/assemblers/document/path/path-item/path-item.mjs +51 -0
  87. package/dist/assemblers/document/path/path-item/path-item.mjs.map +1 -0
  88. package/dist/assemblers/document/path/path.d.ts +10 -0
  89. package/dist/assemblers/document/path/path.d.ts.map +1 -0
  90. package/dist/assemblers/document/path/path.js +28 -0
  91. package/dist/assemblers/document/path/path.js.map +1 -0
  92. package/dist/assemblers/document/path/path.mjs +26 -0
  93. package/dist/assemblers/document/path/path.mjs.map +1 -0
  94. package/dist/assemblers/index.d.ts +3 -0
  95. package/dist/assemblers/index.d.ts.map +1 -0
  96. package/dist/assemblers/types.d.ts +18 -0
  97. package/dist/assemblers/types.d.ts.map +1 -0
  98. package/dist/constants.d.ts +3 -0
  99. package/dist/constants.d.ts.map +1 -0
  100. package/dist/constants.js +8 -0
  101. package/dist/constants.js.map +1 -0
  102. package/dist/constants.mjs +5 -0
  103. package/dist/constants.mjs.map +1 -0
  104. package/dist/context/factories/abstract.d.ts +11 -0
  105. package/dist/context/factories/abstract.d.ts.map +1 -0
  106. package/dist/context/factories/abstract.js +38 -0
  107. package/dist/context/factories/abstract.js.map +1 -0
  108. package/dist/context/factories/abstract.mjs +36 -0
  109. package/dist/context/factories/abstract.mjs.map +1 -0
  110. package/dist/context/factories/document.d.ts +11 -0
  111. package/dist/context/factories/document.d.ts.map +1 -0
  112. package/dist/context/factories/document.js +20 -0
  113. package/dist/context/factories/document.js.map +1 -0
  114. package/dist/context/factories/document.mjs +18 -0
  115. package/dist/context/factories/document.mjs.map +1 -0
  116. package/dist/context/factories/index.d.ts +6 -0
  117. package/dist/context/factories/index.d.ts.map +1 -0
  118. package/dist/context/factories/operation.d.ts +11 -0
  119. package/dist/context/factories/operation.d.ts.map +1 -0
  120. package/dist/context/factories/operation.js +20 -0
  121. package/dist/context/factories/operation.js.map +1 -0
  122. package/dist/context/factories/operation.mjs +18 -0
  123. package/dist/context/factories/operation.mjs.map +1 -0
  124. package/dist/context/factories/path-item.d.ts +10 -0
  125. package/dist/context/factories/path-item.d.ts.map +1 -0
  126. package/dist/context/factories/path-item.js +20 -0
  127. package/dist/context/factories/path-item.js.map +1 -0
  128. package/dist/context/factories/path-item.mjs +18 -0
  129. package/dist/context/factories/path-item.mjs.map +1 -0
  130. package/dist/context/factories/path.d.ts +10 -0
  131. package/dist/context/factories/path.d.ts.map +1 -0
  132. package/dist/context/factories/path.js +20 -0
  133. package/dist/context/factories/path.js.map +1 -0
  134. package/dist/context/factories/path.mjs +18 -0
  135. package/dist/context/factories/path.mjs.map +1 -0
  136. package/dist/context/index.d.ts +3 -0
  137. package/dist/context/index.d.ts.map +1 -0
  138. package/dist/context/types.d.ts +28 -0
  139. package/dist/context/types.d.ts.map +1 -0
  140. package/dist/exports.d.ts +35 -0
  141. package/dist/exports.d.ts.map +1 -0
  142. package/dist/exports.js +76 -0
  143. package/dist/exports.js.map +1 -0
  144. package/dist/exports.mjs +74 -0
  145. package/dist/exports.mjs.map +1 -0
  146. package/dist/generator/generator.d.ts +29 -0
  147. package/dist/generator/generator.d.ts.map +1 -0
  148. package/dist/generator/generator.js +85 -0
  149. package/dist/generator/generator.js.map +1 -0
  150. package/dist/generator/generator.mjs +83 -0
  151. package/dist/generator/generator.mjs.map +1 -0
  152. package/dist/generator/index.d.ts +3 -0
  153. package/dist/generator/index.d.ts.map +1 -0
  154. package/dist/generator/types.d.ts +12 -0
  155. package/dist/generator/types.d.ts.map +1 -0
  156. package/dist/index.d.ts +1 -0
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +5 -0
  159. package/dist/index.js.map +1 -1
  160. package/dist/index.mjs +1 -1
  161. package/dist/post-processor/component-writer.d.ts +6 -0
  162. package/dist/post-processor/component-writer.d.ts.map +1 -0
  163. package/dist/post-processor/component-writer.js +38 -0
  164. package/dist/post-processor/component-writer.js.map +1 -0
  165. package/dist/post-processor/component-writer.mjs +17 -0
  166. package/dist/post-processor/component-writer.mjs.map +1 -0
  167. package/dist/post-processor/factory.d.ts +5 -0
  168. package/dist/post-processor/factory.d.ts.map +1 -0
  169. package/dist/post-processor/factory.js +14 -0
  170. package/dist/post-processor/factory.js.map +1 -0
  171. package/dist/post-processor/factory.mjs +12 -0
  172. package/dist/post-processor/factory.mjs.map +1 -0
  173. package/dist/post-processor/index.d.ts +4 -0
  174. package/dist/post-processor/index.d.ts.map +1 -0
  175. package/dist/post-processor/types.d.ts +5 -0
  176. package/dist/post-processor/types.d.ts.map +1 -0
  177. package/dist/pre-processor/factory.d.ts +5 -0
  178. package/dist/pre-processor/factory.d.ts.map +1 -0
  179. package/dist/pre-processor/factory.js +10 -0
  180. package/dist/pre-processor/factory.js.map +1 -0
  181. package/dist/pre-processor/factory.mjs +8 -0
  182. package/dist/pre-processor/factory.mjs.map +1 -0
  183. package/dist/pre-processor/index.d.ts +3 -0
  184. package/dist/pre-processor/index.d.ts.map +1 -0
  185. package/dist/pre-processor/types.d.ts +5 -0
  186. package/dist/pre-processor/types.d.ts.map +1 -0
  187. package/dist/registries/factory.d.ts +4 -0
  188. package/dist/registries/factory.d.ts.map +1 -0
  189. package/dist/registries/factory.js +10 -0
  190. package/dist/registries/factory.js.map +1 -0
  191. package/dist/registries/factory.mjs +8 -0
  192. package/dist/registries/factory.mjs.map +1 -0
  193. package/dist/registries/index.d.ts +3 -0
  194. package/dist/registries/index.d.ts.map +1 -0
  195. package/dist/registries/types.d.ts +3 -0
  196. package/dist/registries/types.d.ts.map +1 -0
  197. package/dist/routes/collector.d.ts +29 -0
  198. package/dist/routes/collector.d.ts.map +1 -0
  199. package/dist/routes/collector.js +40 -0
  200. package/dist/routes/collector.js.map +1 -0
  201. package/dist/routes/collector.mjs +38 -0
  202. package/dist/routes/collector.mjs.map +1 -0
  203. package/dist/routes/index.d.ts +7 -0
  204. package/dist/routes/index.d.ts.map +1 -0
  205. package/dist/routes/matcher.d.ts +25 -0
  206. package/dist/routes/matcher.d.ts.map +1 -0
  207. package/dist/routes/matcher.js +24 -0
  208. package/dist/routes/matcher.js.map +1 -0
  209. package/dist/routes/matcher.mjs +22 -0
  210. package/dist/routes/matcher.mjs.map +1 -0
  211. package/dist/routes/providers/abstract.d.ts +35 -0
  212. package/dist/routes/providers/abstract.d.ts.map +1 -0
  213. package/dist/routes/providers/abstract.js +29 -0
  214. package/dist/routes/providers/abstract.js.map +1 -0
  215. package/dist/routes/providers/abstract.mjs +27 -0
  216. package/dist/routes/providers/abstract.mjs.map +1 -0
  217. package/dist/routes/providers/admin.d.ts +6 -0
  218. package/dist/routes/providers/admin.d.ts.map +1 -0
  219. package/dist/routes/providers/admin.js +19 -0
  220. package/dist/routes/providers/admin.js.map +1 -0
  221. package/dist/routes/providers/admin.mjs +17 -0
  222. package/dist/routes/providers/admin.mjs.map +1 -0
  223. package/dist/routes/providers/api.d.ts +22 -0
  224. package/dist/routes/providers/api.d.ts.map +1 -0
  225. package/dist/routes/providers/api.js +35 -0
  226. package/dist/routes/providers/api.js.map +1 -0
  227. package/dist/routes/providers/api.mjs +33 -0
  228. package/dist/routes/providers/api.mjs.map +1 -0
  229. package/dist/routes/providers/index.d.ts +6 -0
  230. package/dist/routes/providers/index.d.ts.map +1 -0
  231. package/dist/routes/providers/plugin.d.ts +23 -0
  232. package/dist/routes/providers/plugin.d.ts.map +1 -0
  233. package/dist/routes/providers/plugin.js +37 -0
  234. package/dist/routes/providers/plugin.js.map +1 -0
  235. package/dist/routes/providers/plugin.mjs +35 -0
  236. package/dist/routes/providers/plugin.mjs.map +1 -0
  237. package/dist/routes/providers/types.d.ts +13 -0
  238. package/dist/routes/providers/types.d.ts.map +1 -0
  239. package/dist/routes/rules/index.d.ts +2 -0
  240. package/dist/routes/rules/index.d.ts.map +1 -0
  241. package/dist/routes/rules/is-of-type.d.ts +3 -0
  242. package/dist/routes/rules/is-of-type.d.ts.map +1 -0
  243. package/dist/routes/rules/is-of-type.js +8 -0
  244. package/dist/routes/rules/is-of-type.js.map +1 -0
  245. package/dist/routes/rules/is-of-type.mjs +6 -0
  246. package/dist/routes/rules/is-of-type.mjs.map +1 -0
  247. package/dist/routes/types.d.ts +6 -0
  248. package/dist/routes/types.d.ts.map +1 -0
  249. package/dist/types.d.ts +14 -0
  250. package/dist/types.d.ts.map +1 -0
  251. package/dist/utils/debug.d.ts +3 -0
  252. package/dist/utils/debug.d.ts.map +1 -0
  253. package/dist/utils/debug.js +11 -0
  254. package/dist/utils/debug.js.map +1 -0
  255. package/dist/utils/debug.mjs +9 -0
  256. package/dist/utils/debug.mjs.map +1 -0
  257. package/dist/utils/index.d.ts +4 -0
  258. package/dist/utils/index.d.ts.map +1 -0
  259. package/dist/utils/timer/factory.d.ts +5 -0
  260. package/dist/utils/timer/factory.d.ts.map +1 -0
  261. package/dist/utils/timer/factory.js +12 -0
  262. package/dist/utils/timer/factory.js.map +1 -0
  263. package/dist/utils/timer/factory.mjs +10 -0
  264. package/dist/utils/timer/factory.mjs.map +1 -0
  265. package/dist/utils/timer/index.d.ts +3 -0
  266. package/dist/utils/timer/index.d.ts.map +1 -0
  267. package/dist/utils/timer/timer.d.ts +14 -0
  268. package/dist/utils/timer/timer.d.ts.map +1 -0
  269. package/dist/utils/timer/timer.js +38 -0
  270. package/dist/utils/timer/timer.js.map +1 -0
  271. package/dist/utils/timer/timer.mjs +36 -0
  272. package/dist/utils/timer/timer.mjs.map +1 -0
  273. package/dist/utils/zod.d.ts +39 -0
  274. package/dist/utils/zod.d.ts.map +1 -0
  275. package/dist/utils/zod.js +86 -0
  276. package/dist/utils/zod.js.map +1 -0
  277. package/dist/utils/zod.mjs +64 -0
  278. package/dist/utils/zod.mjs.map +1 -0
  279. package/package.json +25 -12
@@ -0,0 +1,35 @@
1
+ import { OperationIDAssembler } from './operation-id.mjs';
2
+ import { OperationParametersAssembler } from './parameters.mjs';
3
+ import { OperationResponsesAssembler } from './responses.mjs';
4
+ import { OperationTagsAssembler } from './tags.mjs';
5
+ import { BodyAssembler } from './body.mjs';
6
+
7
+ class OperationAssemblerFactory {
8
+ createAll() {
9
+ return [
10
+ this._createOperationIDAssembler(),
11
+ this._createParametersAssembler(),
12
+ this._createResponsesAssembler(),
13
+ this._createTagsAssembler(),
14
+ this._createBodyAssembler()
15
+ ];
16
+ }
17
+ _createOperationIDAssembler() {
18
+ return new OperationIDAssembler();
19
+ }
20
+ _createParametersAssembler() {
21
+ return new OperationParametersAssembler();
22
+ }
23
+ _createResponsesAssembler() {
24
+ return new OperationResponsesAssembler();
25
+ }
26
+ _createTagsAssembler() {
27
+ return new OperationTagsAssembler();
28
+ }
29
+ _createBodyAssembler() {
30
+ return new BodyAssembler();
31
+ }
32
+ }
33
+
34
+ export { OperationAssemblerFactory };
35
+ //# sourceMappingURL=factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/factory.ts"],"sourcesContent":["import type { Assembler } from '../../../..';\n\nimport { OperationIDAssembler } from './operation-id';\nimport { OperationParametersAssembler } from './parameters';\nimport { OperationResponsesAssembler } from './responses';\nimport { OperationTagsAssembler } from './tags';\nimport { BodyAssembler } from './body';\n\nexport class OperationAssemblerFactory {\n createAll(): Assembler.Operation[] {\n return [\n this._createOperationIDAssembler(),\n this._createParametersAssembler(),\n this._createResponsesAssembler(),\n this._createTagsAssembler(),\n this._createBodyAssembler(),\n ];\n }\n\n private _createOperationIDAssembler() {\n return new OperationIDAssembler();\n }\n\n private _createParametersAssembler() {\n return new OperationParametersAssembler();\n }\n\n private _createResponsesAssembler() {\n return new OperationResponsesAssembler();\n }\n\n private _createTagsAssembler() {\n return new OperationTagsAssembler();\n }\n\n private _createBodyAssembler() {\n return new BodyAssembler();\n }\n}\n"],"names":["OperationAssemblerFactory","createAll","_createOperationIDAssembler","_createParametersAssembler","_createResponsesAssembler","_createTagsAssembler","_createBodyAssembler","OperationIDAssembler","OperationParametersAssembler","OperationResponsesAssembler","OperationTagsAssembler","BodyAssembler"],"mappings":";;;;;;AAQO,MAAMA,yBAAAA,CAAAA;IACXC,SAAmC,GAAA;QACjC,OAAO;AACL,YAAA,IAAI,CAACC,2BAA2B,EAAA;AAChC,YAAA,IAAI,CAACC,0BAA0B,EAAA;AAC/B,YAAA,IAAI,CAACC,yBAAyB,EAAA;AAC9B,YAAA,IAAI,CAACC,oBAAoB,EAAA;AACzB,YAAA,IAAI,CAACC,oBAAoB;AAC1B,SAAA;AACH;IAEQJ,2BAA8B,GAAA;AACpC,QAAA,OAAO,IAAIK,oBAAAA,EAAAA;AACb;IAEQJ,0BAA6B,GAAA;AACnC,QAAA,OAAO,IAAIK,4BAAAA,EAAAA;AACb;IAEQJ,yBAA4B,GAAA;AAClC,QAAA,OAAO,IAAIK,2BAAAA,EAAAA;AACb;IAEQJ,oBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAIK,sBAAAA,EAAAA;AACb;IAEQJ,oBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAIK,aAAAA,EAAAA;AACb;AACF;;;;"}
@@ -0,0 +1,8 @@
1
+ export { OperationAssembler } from './operation';
2
+ export { OperationAssemblerFactory } from './factory';
3
+ export { OperationParametersAssembler } from './parameters';
4
+ export { OperationIDAssembler } from './operation-id';
5
+ export { OperationResponsesAssembler } from './responses';
6
+ export { OperationTagsAssembler } from './tags';
7
+ export { BodyAssembler } from './body';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/assemblers/document/path/path-item/operation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { OperationContext } from '../../../../../types';
3
+ import type { Assembler } from '../../../..';
4
+ export declare class OperationIDAssembler implements Assembler.Operation {
5
+ assemble(context: OperationContext, route: Core.Route): void;
6
+ private _maybeAppendOrigin;
7
+ private _appendMethod;
8
+ private _maybeAppendPath;
9
+ }
10
+ //# sourceMappingURL=operation-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-id.d.ts","sourceRoot":"","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAI1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,oBAAqB,YAAW,SAAS,CAAC,SAAS;IAC9D,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IAkB5D,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;CA0BzB"}
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../../../../../constants.js');
4
+ var debug$1 = require('../../../../../utils/debug.js');
5
+ require('node:crypto');
6
+ require('zod/v4');
7
+
8
+ const debug = debug$1.createDebugger('assembler:operation-id');
9
+ class OperationIDAssembler {
10
+ assemble(context, route) {
11
+ const { path, method, info } = route;
12
+ const origin = info.apiName ?? info.pluginName;
13
+ const [operationId] = [
14
+ ''
15
+ ]// 'origin/' or ''
16
+ .map(this._maybeAppendOrigin(origin))// 'origin/get' or 'get'
17
+ .map(this._appendMethod(method))// 'origin/get/entity_by_id' or 'get/entity_by_id'
18
+ .map(this._maybeAppendPath(path));
19
+ debug('assembled an operation ID for %o %o: %o', method, path, operationId);
20
+ context.output.data.operationId = operationId;
21
+ }
22
+ _maybeAppendOrigin(origin) {
23
+ return ()=>origin ? `${origin}/` : '';
24
+ }
25
+ _appendMethod(method) {
26
+ return (operationId)=>`${operationId}${method.toLowerCase()}`;
27
+ }
28
+ _maybeAppendPath(path) {
29
+ const pathParts = path.split('/').filter(Boolean);
30
+ return (operationId)=>{
31
+ if (!pathParts.length) {
32
+ return operationId;
33
+ }
34
+ // Make sure to add a trailing slash after the method name
35
+ let appendix = '/';
36
+ const formatPart = (str)=>/[_/]$/.test(appendix) ? str : `_${str}`;
37
+ pathParts.forEach((part)=>{
38
+ const match = constants.REGEX_STRAPI_PATH_PARAMS.exec(part);
39
+ appendix += match ? formatPart(`by_${match[1]}`) : formatPart(part.replaceAll(/\W/g, '_'));
40
+ });
41
+ return `${operationId}${appendix}`;
42
+ };
43
+ }
44
+ }
45
+
46
+ exports.OperationIDAssembler = OperationIDAssembler;
47
+ //# sourceMappingURL=operation-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-id.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger } from '../../../../../utils';\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation-id');\n\nexport class OperationIDAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { path, method, info } = route;\n\n const origin = info.apiName ?? info.pluginName;\n\n const [operationId] = ['']\n // 'origin/' or ''\n .map(this._maybeAppendOrigin(origin))\n // 'origin/get' or 'get'\n .map(this._appendMethod(method))\n // 'origin/get/entity_by_id' or 'get/entity_by_id'\n .map(this._maybeAppendPath(path));\n\n debug('assembled an operation ID for %o %o: %o', method, path, operationId);\n\n context.output.data.operationId = operationId;\n }\n\n private _maybeAppendOrigin(origin?: string) {\n return () => (origin ? `${origin}/` : '');\n }\n\n private _appendMethod(method: string) {\n return (operationId: string) => `${operationId}${method.toLowerCase()}`;\n }\n\n private _maybeAppendPath(path: string) {\n const pathParts = path.split('/').filter(Boolean);\n\n return (operationId: string) => {\n if (!pathParts.length) {\n return operationId;\n }\n\n // Make sure to add a trailing slash after the method name\n let appendix = '/';\n\n const formatPart = (str: string) => (/[_/]$/.test(appendix) ? str : `_${str}`);\n\n pathParts.forEach((part) => {\n const match = REGEX_STRAPI_PATH_PARAMS.exec(part);\n\n appendix += match\n ? // Parameter\n formatPart(`by_${match[1]}`)\n : // Regular path segment\n formatPart(part.replaceAll(/\\W/g, '_'));\n });\n\n return `${operationId}${appendix}`;\n };\n }\n}\n"],"names":["debug","createDebugger","OperationIDAssembler","assemble","context","route","path","method","info","origin","apiName","pluginName","operationId","map","_maybeAppendOrigin","_appendMethod","_maybeAppendPath","output","data","toLowerCase","pathParts","split","filter","Boolean","length","appendix","formatPart","str","test","forEach","part","match","REGEX_STRAPI_PATH_PARAMS","exec","replaceAll"],"mappings":";;;;;;;AAQA,MAAMA,QAAQC,sBAAe,CAAA,wBAAA,CAAA;AAEtB,MAAMC,oBAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3D,QAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH,KAAAA;AAE/B,QAAA,MAAMI,MAASD,GAAAA,IAAAA,CAAKE,OAAO,IAAIF,KAAKG,UAAU;QAE9C,MAAM,CAACC,YAAY,GAAG;AAAC,YAAA;AAAG,SACxB;AACCC,SAAAA,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACL,QAC7B;AACCI,SAAAA,GAAG,CAAC,IAAI,CAACE,aAAa,CAACR,QACxB;AACCM,SAAAA,GAAG,CAAC,IAAI,CAACG,gBAAgB,CAACV,IAAAA,CAAAA,CAAAA;QAE7BN,KAAM,CAAA,yCAAA,EAA2CO,QAAQD,IAAMM,EAAAA,WAAAA,CAAAA;AAE/DR,QAAAA,OAAAA,CAAQa,MAAM,CAACC,IAAI,CAACN,WAAW,GAAGA,WAAAA;AACpC;AAEQE,IAAAA,kBAAAA,CAAmBL,MAAe,EAAE;AAC1C,QAAA,OAAO,IAAOA,MAAS,GAAA,CAAC,EAAEA,MAAO,CAAA,CAAC,CAAC,GAAG,EAAA;AACxC;AAEQM,IAAAA,aAAAA,CAAcR,MAAc,EAAE;QACpC,OAAO,CAACK,cAAwB,CAAC,EAAEA,YAAY,EAAEL,MAAAA,CAAOY,WAAW,EAAA,CAAG,CAAC;AACzE;AAEQH,IAAAA,gBAAAA,CAAiBV,IAAY,EAAE;AACrC,QAAA,MAAMc,YAAYd,IAAKe,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAACC,OAAAA,CAAAA;AAEzC,QAAA,OAAO,CAACX,WAAAA,GAAAA;YACN,IAAI,CAACQ,SAAUI,CAAAA,MAAM,EAAE;gBACrB,OAAOZ,WAAAA;AACT;;AAGA,YAAA,IAAIa,QAAW,GAAA,GAAA;AAEf,YAAA,MAAMC,UAAa,GAAA,CAACC,GAAiB,GAAA,OAAA,CAAQC,IAAI,CAACH,QAAYE,CAAAA,GAAAA,GAAAA,GAAM,CAAC,CAAC,EAAEA,GAAAA,CAAI,CAAC;YAE7EP,SAAUS,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBACjB,MAAMC,KAAAA,GAAQC,kCAAyBC,CAAAA,IAAI,CAACH,IAAAA,CAAAA;AAE5CL,gBAAAA,QAAAA,IAAYM,KAERL,GAAAA,UAAAA,CAAW,CAAC,GAAG,EAAEK,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC,CAE3BL,GAAAA,UAAAA,CAAWI,IAAKI,CAAAA,UAAU,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;AAEA,YAAA,OAAO,CAAC,EAAEtB,WAAY,CAAA,EAAEa,SAAS,CAAC;AACpC,SAAA;AACF;AACF;;;;"}
@@ -0,0 +1,45 @@
1
+ import { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants.mjs';
2
+ import { createDebugger } from '../../../../../utils/debug.mjs';
3
+ import 'node:crypto';
4
+ import 'zod/v4';
5
+
6
+ const debug = createDebugger('assembler:operation-id');
7
+ class OperationIDAssembler {
8
+ assemble(context, route) {
9
+ const { path, method, info } = route;
10
+ const origin = info.apiName ?? info.pluginName;
11
+ const [operationId] = [
12
+ ''
13
+ ]// 'origin/' or ''
14
+ .map(this._maybeAppendOrigin(origin))// 'origin/get' or 'get'
15
+ .map(this._appendMethod(method))// 'origin/get/entity_by_id' or 'get/entity_by_id'
16
+ .map(this._maybeAppendPath(path));
17
+ debug('assembled an operation ID for %o %o: %o', method, path, operationId);
18
+ context.output.data.operationId = operationId;
19
+ }
20
+ _maybeAppendOrigin(origin) {
21
+ return ()=>origin ? `${origin}/` : '';
22
+ }
23
+ _appendMethod(method) {
24
+ return (operationId)=>`${operationId}${method.toLowerCase()}`;
25
+ }
26
+ _maybeAppendPath(path) {
27
+ const pathParts = path.split('/').filter(Boolean);
28
+ return (operationId)=>{
29
+ if (!pathParts.length) {
30
+ return operationId;
31
+ }
32
+ // Make sure to add a trailing slash after the method name
33
+ let appendix = '/';
34
+ const formatPart = (str)=>/[_/]$/.test(appendix) ? str : `_${str}`;
35
+ pathParts.forEach((part)=>{
36
+ const match = REGEX_STRAPI_PATH_PARAMS.exec(part);
37
+ appendix += match ? formatPart(`by_${match[1]}`) : formatPart(part.replaceAll(/\W/g, '_'));
38
+ });
39
+ return `${operationId}${appendix}`;
40
+ };
41
+ }
42
+ }
43
+
44
+ export { OperationIDAssembler };
45
+ //# sourceMappingURL=operation-id.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-id.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation-id.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { REGEX_STRAPI_PATH_PARAMS } from '../../../../../constants';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger } from '../../../../../utils';\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation-id');\n\nexport class OperationIDAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { path, method, info } = route;\n\n const origin = info.apiName ?? info.pluginName;\n\n const [operationId] = ['']\n // 'origin/' or ''\n .map(this._maybeAppendOrigin(origin))\n // 'origin/get' or 'get'\n .map(this._appendMethod(method))\n // 'origin/get/entity_by_id' or 'get/entity_by_id'\n .map(this._maybeAppendPath(path));\n\n debug('assembled an operation ID for %o %o: %o', method, path, operationId);\n\n context.output.data.operationId = operationId;\n }\n\n private _maybeAppendOrigin(origin?: string) {\n return () => (origin ? `${origin}/` : '');\n }\n\n private _appendMethod(method: string) {\n return (operationId: string) => `${operationId}${method.toLowerCase()}`;\n }\n\n private _maybeAppendPath(path: string) {\n const pathParts = path.split('/').filter(Boolean);\n\n return (operationId: string) => {\n if (!pathParts.length) {\n return operationId;\n }\n\n // Make sure to add a trailing slash after the method name\n let appendix = '/';\n\n const formatPart = (str: string) => (/[_/]$/.test(appendix) ? str : `_${str}`);\n\n pathParts.forEach((part) => {\n const match = REGEX_STRAPI_PATH_PARAMS.exec(part);\n\n appendix += match\n ? // Parameter\n formatPart(`by_${match[1]}`)\n : // Regular path segment\n formatPart(part.replaceAll(/\\W/g, '_'));\n });\n\n return `${operationId}${appendix}`;\n };\n }\n}\n"],"names":["debug","createDebugger","OperationIDAssembler","assemble","context","route","path","method","info","origin","apiName","pluginName","operationId","map","_maybeAppendOrigin","_appendMethod","_maybeAppendPath","output","data","toLowerCase","pathParts","split","filter","Boolean","length","appendix","formatPart","str","test","forEach","part","match","REGEX_STRAPI_PATH_PARAMS","exec","replaceAll"],"mappings":";;;;;AAQA,MAAMA,QAAQC,cAAe,CAAA,wBAAA,CAAA;AAEtB,MAAMC,oBAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3D,QAAA,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGH,KAAAA;AAE/B,QAAA,MAAMI,MAASD,GAAAA,IAAAA,CAAKE,OAAO,IAAIF,KAAKG,UAAU;QAE9C,MAAM,CAACC,YAAY,GAAG;AAAC,YAAA;AAAG,SACxB;AACCC,SAAAA,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACL,QAC7B;AACCI,SAAAA,GAAG,CAAC,IAAI,CAACE,aAAa,CAACR,QACxB;AACCM,SAAAA,GAAG,CAAC,IAAI,CAACG,gBAAgB,CAACV,IAAAA,CAAAA,CAAAA;QAE7BN,KAAM,CAAA,yCAAA,EAA2CO,QAAQD,IAAMM,EAAAA,WAAAA,CAAAA;AAE/DR,QAAAA,OAAAA,CAAQa,MAAM,CAACC,IAAI,CAACN,WAAW,GAAGA,WAAAA;AACpC;AAEQE,IAAAA,kBAAAA,CAAmBL,MAAe,EAAE;AAC1C,QAAA,OAAO,IAAOA,MAAS,GAAA,CAAC,EAAEA,MAAO,CAAA,CAAC,CAAC,GAAG,EAAA;AACxC;AAEQM,IAAAA,aAAAA,CAAcR,MAAc,EAAE;QACpC,OAAO,CAACK,cAAwB,CAAC,EAAEA,YAAY,EAAEL,MAAAA,CAAOY,WAAW,EAAA,CAAG,CAAC;AACzE;AAEQH,IAAAA,gBAAAA,CAAiBV,IAAY,EAAE;AACrC,QAAA,MAAMc,YAAYd,IAAKe,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAKC,MAAM,CAACC,OAAAA,CAAAA;AAEzC,QAAA,OAAO,CAACX,WAAAA,GAAAA;YACN,IAAI,CAACQ,SAAUI,CAAAA,MAAM,EAAE;gBACrB,OAAOZ,WAAAA;AACT;;AAGA,YAAA,IAAIa,QAAW,GAAA,GAAA;AAEf,YAAA,MAAMC,UAAa,GAAA,CAACC,GAAiB,GAAA,OAAA,CAAQC,IAAI,CAACH,QAAYE,CAAAA,GAAAA,GAAAA,GAAM,CAAC,CAAC,EAAEA,GAAAA,CAAI,CAAC;YAE7EP,SAAUS,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBACjB,MAAMC,KAAAA,GAAQC,wBAAyBC,CAAAA,IAAI,CAACH,IAAAA,CAAAA;AAE5CL,gBAAAA,QAAAA,IAAYM,KAERL,GAAAA,UAAAA,CAAW,CAAC,GAAG,EAAEK,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC,CAE3BL,GAAAA,UAAAA,CAAWI,IAAKI,CAAAA,UAAU,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;AAEA,YAAA,OAAO,CAAC,EAAEtB,WAAY,CAAA,EAAEa,SAAS,CAAC;AACpC,SAAA;AACF;AACF;;;;"}
@@ -0,0 +1,13 @@
1
+ import type { Core } from '@strapi/types';
2
+ import { OperationContextFactory } from '../../../../../context';
3
+ import type { PathItemContext } from '../../../../../types';
4
+ import type { Assembler } from '../../../..';
5
+ export declare class OperationAssembler implements Assembler.PathItem {
6
+ private readonly _assemblers;
7
+ private readonly _contextFactory;
8
+ constructor(assemblers: Assembler.Operation[], contextFactory?: OperationContextFactory);
9
+ assemble(context: PathItemContext, path: string, routes: Core.Route[]): void;
10
+ private _validateOperationObject;
11
+ private _validateHTTPIndex;
12
+ }
13
+ //# sourceMappingURL=operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,kBAAmB,YAAW,SAAS,CAAC,QAAQ;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IAEpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;gBAGxD,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,EACjC,cAAc,GAAE,uBAAuD;IAMzE,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI;IA6B5E,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var openapiTypes = require('openapi-types');
4
+ var debug$1 = require('../../../../../utils/debug.js');
5
+ require('node:crypto');
6
+ require('zod/v4');
7
+ var operation = require('../../../../../context/factories/operation.js');
8
+
9
+ const debug = debug$1.createDebugger('assembler:operation');
10
+ class OperationAssembler {
11
+ assemble(context, path, routes) {
12
+ const { output, ...defaultContextProps } = context;
13
+ for (const route of routes){
14
+ const { method } = route;
15
+ const methodIndex = method.toLowerCase();
16
+ const operationContext = this._contextFactory.create(defaultContextProps);
17
+ this._validateHTTPIndex(methodIndex);
18
+ debug('assembling operation object for %o %o...', method, path);
19
+ for (const assembler of this._assemblers){
20
+ debug('running assembler: %s...', assembler.constructor.name);
21
+ assembler.assemble(operationContext, route);
22
+ }
23
+ const { data: operationObject } = operationContext.output;
24
+ this._validateOperationObject(operationObject);
25
+ debug('assembled operation object for %o %o', method, path);
26
+ Object.assign(output.data, {
27
+ [methodIndex]: operationObject
28
+ });
29
+ }
30
+ }
31
+ _validateOperationObject(operation) {
32
+ if (!('responses' in operation)) {
33
+ throw new Error('Invalid operation object: missing "responses" property');
34
+ }
35
+ }
36
+ _validateHTTPIndex(method) {
37
+ // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1
38
+ const allowedMethods = Object.values(openapiTypes.OpenAPIV3.HttpMethods);
39
+ const isAllowedMethod = allowedMethods.includes(method);
40
+ if (!isAllowedMethod) {
41
+ throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);
42
+ }
43
+ }
44
+ constructor(assemblers, contextFactory = new operation.OperationContextFactory()){
45
+ this._assemblers = assemblers;
46
+ this._contextFactory = contextFactory;
47
+ }
48
+ }
49
+
50
+ exports.OperationAssembler = OperationAssembler;
51
+ //# sourceMappingURL=operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"sourcesContent":["import { OpenAPIV3_1, OpenAPIV3 } from 'openapi-types';\n\nimport type { Core } from '@strapi/types';\n\nimport { OperationContextFactory } from '../../../../../context';\nimport { createDebugger } from '../../../../../utils';\n\nimport type { PathItemContext } from '../../../../../types';\n\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation');\n\nexport class OperationAssembler implements Assembler.PathItem {\n private readonly _assemblers: Assembler.Operation[];\n\n private readonly _contextFactory: OperationContextFactory;\n\n constructor(\n assemblers: Assembler.Operation[],\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n this._assemblers = assemblers;\n this._contextFactory = contextFactory;\n }\n\n assemble(context: PathItemContext, path: string, routes: Core.Route[]): void {\n const { output, ...defaultContextProps } = context;\n\n for (const route of routes) {\n const { method } = route;\n\n const methodIndex = method.toLowerCase();\n const operationContext = this._contextFactory.create(defaultContextProps);\n\n this._validateHTTPIndex(methodIndex);\n\n debug('assembling operation object for %o %o...', method, path);\n\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(operationContext, route);\n }\n\n const { data: operationObject } = operationContext.output;\n\n this._validateOperationObject(operationObject);\n\n debug('assembled operation object for %o %o', method, path);\n\n Object.assign(output.data, { [methodIndex]: operationObject });\n }\n }\n\n private _validateOperationObject(\n operation: Partial<OpenAPIV3_1.OperationObject>\n ): asserts operation is OpenAPIV3_1.OperationObject {\n if (!('responses' in operation)) {\n throw new Error('Invalid operation object: missing \"responses\" property');\n }\n }\n\n private _validateHTTPIndex(method: string): asserts method is OpenAPIV3_1.HttpMethods {\n // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1\n const allowedMethods = Object.values<string>(OpenAPIV3.HttpMethods);\n const isAllowedMethod = allowedMethods.includes(method);\n\n if (!isAllowedMethod) {\n throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);\n }\n }\n}\n"],"names":["debug","createDebugger","OperationAssembler","assemble","context","path","routes","output","defaultContextProps","route","method","methodIndex","toLowerCase","operationContext","_contextFactory","create","_validateHTTPIndex","assembler","_assemblers","constructor","name","data","operationObject","_validateOperationObject","Object","assign","operation","Error","allowedMethods","values","OpenAPIV3","HttpMethods","isAllowedMethod","includes","assemblers","contextFactory","OperationContextFactory"],"mappings":";;;;;;;;AAWA,MAAMA,QAAQC,sBAAe,CAAA,qBAAA,CAAA;AAEtB,MAAMC,kBAAAA,CAAAA;AAaXC,IAAAA,QAAAA,CAASC,OAAwB,EAAEC,IAAY,EAAEC,MAAoB,EAAQ;AAC3E,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGJ,OAAAA;QAE3C,KAAK,MAAMK,SAASH,MAAQ,CAAA;YAC1B,MAAM,EAAEI,MAAM,EAAE,GAAGD,KAAAA;YAEnB,MAAME,WAAAA,GAAcD,OAAOE,WAAW,EAAA;AACtC,YAAA,MAAMC,mBAAmB,IAAI,CAACC,eAAe,CAACC,MAAM,CAACP,mBAAAA,CAAAA;YAErD,IAAI,CAACQ,kBAAkB,CAACL,WAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAM,4CAA4CU,MAAQL,EAAAA,IAAAA,CAAAA;AAE1D,YAAA,KAAK,MAAMY,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxClB,gBAAAA,KAAAA,CAAM,0BAA4BiB,EAAAA,SAAAA,CAAUE,WAAW,CAACC,IAAI,CAAA;gBAE5DH,SAAUd,CAAAA,QAAQ,CAACU,gBAAkBJ,EAAAA,KAAAA,CAAAA;AACvC;AAEA,YAAA,MAAM,EAAEY,IAAMC,EAAAA,eAAe,EAAE,GAAGT,iBAAiBN,MAAM;YAEzD,IAAI,CAACgB,wBAAwB,CAACD,eAAAA,CAAAA;AAE9BtB,YAAAA,KAAAA,CAAM,wCAAwCU,MAAQL,EAAAA,IAAAA,CAAAA;AAEtDmB,YAAAA,MAAAA,CAAOC,MAAM,CAAClB,MAAOc,CAAAA,IAAI,EAAE;AAAE,gBAAA,CAACV,cAAcW;AAAgB,aAAA,CAAA;AAC9D;AACF;AAEQC,IAAAA,wBAAAA,CACNG,SAA+C,EACG;AAClD,QAAA,IAAI,EAAE,WAAeA,IAAAA,SAAQ,CAAI,EAAA;AAC/B,YAAA,MAAM,IAAIC,KAAM,CAAA,wDAAA,CAAA;AAClB;AACF;AAEQX,IAAAA,kBAAAA,CAAmBN,MAAc,EAA6C;;AAEpF,QAAA,MAAMkB,cAAiBJ,GAAAA,MAAAA,CAAOK,MAAM,CAASC,uBAAUC,WAAW,CAAA;QAClE,MAAMC,eAAAA,GAAkBJ,cAAeK,CAAAA,QAAQ,CAACvB,MAAAA,CAAAA;AAEhD,QAAA,IAAI,CAACsB,eAAiB,EAAA;YACpB,MAAM,IAAIL,MAAM,CAAC,4BAA4B,EAAEjB,MAAO,CAAA,kBAAkB,EAAEkB,cAAAA,CAAe,CAAC,CAAA;AAC5F;AACF;AArDAT,IAAAA,WAAAA,CACEe,UAAiC,EACjCC,cAA0C,GAAA,IAAIC,mCAAyB,CACvE;QACA,IAAI,CAAClB,WAAW,GAAGgB,UAAAA;QACnB,IAAI,CAACpB,eAAe,GAAGqB,cAAAA;AACzB;AAgDF;;;;"}
@@ -0,0 +1,49 @@
1
+ import { OpenAPIV3 } from 'openapi-types';
2
+ import { createDebugger } from '../../../../../utils/debug.mjs';
3
+ import 'node:crypto';
4
+ import 'zod/v4';
5
+ import { OperationContextFactory } from '../../../../../context/factories/operation.mjs';
6
+
7
+ const debug = createDebugger('assembler:operation');
8
+ class OperationAssembler {
9
+ assemble(context, path, routes) {
10
+ const { output, ...defaultContextProps } = context;
11
+ for (const route of routes){
12
+ const { method } = route;
13
+ const methodIndex = method.toLowerCase();
14
+ const operationContext = this._contextFactory.create(defaultContextProps);
15
+ this._validateHTTPIndex(methodIndex);
16
+ debug('assembling operation object for %o %o...', method, path);
17
+ for (const assembler of this._assemblers){
18
+ debug('running assembler: %s...', assembler.constructor.name);
19
+ assembler.assemble(operationContext, route);
20
+ }
21
+ const { data: operationObject } = operationContext.output;
22
+ this._validateOperationObject(operationObject);
23
+ debug('assembled operation object for %o %o', method, path);
24
+ Object.assign(output.data, {
25
+ [methodIndex]: operationObject
26
+ });
27
+ }
28
+ }
29
+ _validateOperationObject(operation) {
30
+ if (!('responses' in operation)) {
31
+ throw new Error('Invalid operation object: missing "responses" property');
32
+ }
33
+ }
34
+ _validateHTTPIndex(method) {
35
+ // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1
36
+ const allowedMethods = Object.values(OpenAPIV3.HttpMethods);
37
+ const isAllowedMethod = allowedMethods.includes(method);
38
+ if (!isAllowedMethod) {
39
+ throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);
40
+ }
41
+ }
42
+ constructor(assemblers, contextFactory = new OperationContextFactory()){
43
+ this._assemblers = assemblers;
44
+ this._contextFactory = contextFactory;
45
+ }
46
+ }
47
+
48
+ export { OperationAssembler };
49
+ //# sourceMappingURL=operation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/operation.ts"],"sourcesContent":["import { OpenAPIV3_1, OpenAPIV3 } from 'openapi-types';\n\nimport type { Core } from '@strapi/types';\n\nimport { OperationContextFactory } from '../../../../../context';\nimport { createDebugger } from '../../../../../utils';\n\nimport type { PathItemContext } from '../../../../../types';\n\nimport type { Assembler } from '../../../..';\n\nconst debug = createDebugger('assembler:operation');\n\nexport class OperationAssembler implements Assembler.PathItem {\n private readonly _assemblers: Assembler.Operation[];\n\n private readonly _contextFactory: OperationContextFactory;\n\n constructor(\n assemblers: Assembler.Operation[],\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n this._assemblers = assemblers;\n this._contextFactory = contextFactory;\n }\n\n assemble(context: PathItemContext, path: string, routes: Core.Route[]): void {\n const { output, ...defaultContextProps } = context;\n\n for (const route of routes) {\n const { method } = route;\n\n const methodIndex = method.toLowerCase();\n const operationContext = this._contextFactory.create(defaultContextProps);\n\n this._validateHTTPIndex(methodIndex);\n\n debug('assembling operation object for %o %o...', method, path);\n\n for (const assembler of this._assemblers) {\n debug('running assembler: %s...', assembler.constructor.name);\n\n assembler.assemble(operationContext, route);\n }\n\n const { data: operationObject } = operationContext.output;\n\n this._validateOperationObject(operationObject);\n\n debug('assembled operation object for %o %o', method, path);\n\n Object.assign(output.data, { [methodIndex]: operationObject });\n }\n }\n\n private _validateOperationObject(\n operation: Partial<OpenAPIV3_1.OperationObject>\n ): asserts operation is OpenAPIV3_1.OperationObject {\n if (!('responses' in operation)) {\n throw new Error('Invalid operation object: missing \"responses\" property');\n }\n }\n\n private _validateHTTPIndex(method: string): asserts method is OpenAPIV3_1.HttpMethods {\n // HttpMethods is exported as an enum in OpenAPIV3 and as a type only in OpenAPIV3_1\n const allowedMethods = Object.values<string>(OpenAPIV3.HttpMethods);\n const isAllowedMethod = allowedMethods.includes(method);\n\n if (!isAllowedMethod) {\n throw new Error(`Invalid HTTP method object: ${method}. Expected one of ${allowedMethods}`);\n }\n }\n}\n"],"names":["debug","createDebugger","OperationAssembler","assemble","context","path","routes","output","defaultContextProps","route","method","methodIndex","toLowerCase","operationContext","_contextFactory","create","_validateHTTPIndex","assembler","_assemblers","constructor","name","data","operationObject","_validateOperationObject","Object","assign","operation","Error","allowedMethods","values","OpenAPIV3","HttpMethods","isAllowedMethod","includes","assemblers","contextFactory","OperationContextFactory"],"mappings":";;;;;;AAWA,MAAMA,QAAQC,cAAe,CAAA,qBAAA,CAAA;AAEtB,MAAMC,kBAAAA,CAAAA;AAaXC,IAAAA,QAAAA,CAASC,OAAwB,EAAEC,IAAY,EAAEC,MAAoB,EAAQ;AAC3E,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAqB,GAAGJ,OAAAA;QAE3C,KAAK,MAAMK,SAASH,MAAQ,CAAA;YAC1B,MAAM,EAAEI,MAAM,EAAE,GAAGD,KAAAA;YAEnB,MAAME,WAAAA,GAAcD,OAAOE,WAAW,EAAA;AACtC,YAAA,MAAMC,mBAAmB,IAAI,CAACC,eAAe,CAACC,MAAM,CAACP,mBAAAA,CAAAA;YAErD,IAAI,CAACQ,kBAAkB,CAACL,WAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAM,4CAA4CU,MAAQL,EAAAA,IAAAA,CAAAA;AAE1D,YAAA,KAAK,MAAMY,SAAAA,IAAa,IAAI,CAACC,WAAW,CAAE;AACxClB,gBAAAA,KAAAA,CAAM,0BAA4BiB,EAAAA,SAAAA,CAAUE,WAAW,CAACC,IAAI,CAAA;gBAE5DH,SAAUd,CAAAA,QAAQ,CAACU,gBAAkBJ,EAAAA,KAAAA,CAAAA;AACvC;AAEA,YAAA,MAAM,EAAEY,IAAMC,EAAAA,eAAe,EAAE,GAAGT,iBAAiBN,MAAM;YAEzD,IAAI,CAACgB,wBAAwB,CAACD,eAAAA,CAAAA;AAE9BtB,YAAAA,KAAAA,CAAM,wCAAwCU,MAAQL,EAAAA,IAAAA,CAAAA;AAEtDmB,YAAAA,MAAAA,CAAOC,MAAM,CAAClB,MAAOc,CAAAA,IAAI,EAAE;AAAE,gBAAA,CAACV,cAAcW;AAAgB,aAAA,CAAA;AAC9D;AACF;AAEQC,IAAAA,wBAAAA,CACNG,SAA+C,EACG;AAClD,QAAA,IAAI,EAAE,WAAeA,IAAAA,SAAQ,CAAI,EAAA;AAC/B,YAAA,MAAM,IAAIC,KAAM,CAAA,wDAAA,CAAA;AAClB;AACF;AAEQX,IAAAA,kBAAAA,CAAmBN,MAAc,EAA6C;;AAEpF,QAAA,MAAMkB,cAAiBJ,GAAAA,MAAAA,CAAOK,MAAM,CAASC,UAAUC,WAAW,CAAA;QAClE,MAAMC,eAAAA,GAAkBJ,cAAeK,CAAAA,QAAQ,CAACvB,MAAAA,CAAAA;AAEhD,QAAA,IAAI,CAACsB,eAAiB,EAAA;YACpB,MAAM,IAAIL,MAAM,CAAC,4BAA4B,EAAEjB,MAAO,CAAA,kBAAkB,EAAEkB,cAAAA,CAAe,CAAC,CAAA;AAC5F;AACF;AArDAT,IAAAA,WAAAA,CACEe,UAAiC,EACjCC,cAA0C,GAAA,IAAIC,yBAAyB,CACvE;QACA,IAAI,CAAClB,WAAW,GAAGgB,UAAAA;QACnB,IAAI,CAACpB,eAAe,GAAGqB,cAAAA;AACzB;AAgDF;;;;"}
@@ -0,0 +1,9 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { Assembler } from '../../../..';
3
+ import type { OperationContext } from '../../../../../types';
4
+ export declare class OperationParametersAssembler implements Assembler.Operation {
5
+ assemble(context: OperationContext, route: Core.Route): void;
6
+ private _getPathParameters;
7
+ private _getQueryParameters;
8
+ }
9
+ //# sourceMappingURL=parameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/assemblers/document/path/path-item/operation/parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,qBAAa,4BAA6B,YAAW,SAAS,CAAC,SAAS;IACtE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IAe5D,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,mBAAmB;CAuB5B"}
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ var debug$1 = require('../../../../../utils/debug.js');
4
+ var zod = require('../../../../../utils/zod.js');
5
+
6
+ const debug = debug$1.createDebugger('assembler:parameters');
7
+ class OperationParametersAssembler {
8
+ assemble(context, route) {
9
+ debug('assembling parameters for %o %o...', route.method, route.path);
10
+ const pathParameters = this._getPathParameters(route);
11
+ debug('found %o path parameters', pathParameters.length);
12
+ const queryParameters = this._getQueryParameters(route);
13
+ debug('found %o query parameters', queryParameters.length);
14
+ const parameters = [
15
+ ...pathParameters,
16
+ ...queryParameters
17
+ ];
18
+ debug('assembled %o parameters for %o %o', parameters.length, route.method, route.path);
19
+ context.output.data.parameters = parameters;
20
+ }
21
+ _getPathParameters(route) {
22
+ const { params } = route.request ?? {};
23
+ // TODO: Allow auto inference (from path) if enabled through configuration
24
+ if (!params) {
25
+ return [];
26
+ }
27
+ const pathParams = [];
28
+ for (const [name, zodSchema] of Object.entries(params)){
29
+ const required = !zodSchema.isOptional();
30
+ const schema = zod.zodToOpenAPI(zodSchema);
31
+ pathParams.push({
32
+ name,
33
+ in: 'path',
34
+ required,
35
+ schema
36
+ });
37
+ }
38
+ return pathParams;
39
+ }
40
+ _getQueryParameters(route) {
41
+ const { query } = route.request ?? {};
42
+ if (!query) {
43
+ return [];
44
+ }
45
+ const queryParams = [];
46
+ for (const [name, zodSchema] of Object.entries(query)){
47
+ const required = !zodSchema.isOptional();
48
+ const schema = zod.zodToOpenAPI(zodSchema);
49
+ const param = {
50
+ name,
51
+ in: 'query',
52
+ required,
53
+ schema
54
+ };
55
+ // In Strapi, query params are always interpreted as query strings, which isn't supported by the specification
56
+ // TODO: Make that configurable somehow
57
+ Object.assign(param, {
58
+ 'x-strapi-serialize': 'querystring'
59
+ });
60
+ queryParams.push(param);
61
+ }
62
+ return queryParams;
63
+ }
64
+ }
65
+
66
+ exports.OperationParametersAssembler = OperationParametersAssembler;
67
+ //# sourceMappingURL=parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/parameters.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\nimport type { Assembler } from '../../../..';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger, zodToOpenAPI } from '../../../../../utils';\n\nconst debug = createDebugger('assembler:parameters');\n\ntype PathParameterObject = OpenAPIV3_1.ParameterObject & { in: 'path' };\ntype QueryParameterObject = OpenAPIV3_1.ParameterObject & { in: 'query' };\n\nexport class OperationParametersAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n debug('assembling parameters for %o %o...', route.method, route.path);\n\n const pathParameters = this._getPathParameters(route);\n debug('found %o path parameters', pathParameters.length);\n\n const queryParameters = this._getQueryParameters(route);\n debug('found %o query parameters', queryParameters.length);\n\n const parameters = [...pathParameters, ...queryParameters];\n debug('assembled %o parameters for %o %o', parameters.length, route.method, route.path);\n\n context.output.data.parameters = parameters;\n }\n\n private _getPathParameters(route: Core.Route): PathParameterObject[] {\n const { params } = route.request ?? {};\n\n // TODO: Allow auto inference (from path) if enabled through configuration\n if (!params) {\n return [];\n }\n\n const pathParams: PathParameterObject[] = [];\n\n for (const [name, zodSchema] of Object.entries(params)) {\n const required = !zodSchema.isOptional();\n const schema = zodToOpenAPI(zodSchema) as any;\n\n pathParams.push({ name, in: 'path', required, schema });\n }\n\n return pathParams;\n }\n\n private _getQueryParameters(route: Core.Route): QueryParameterObject[] {\n const { query } = route.request ?? {};\n\n if (!query) {\n return [];\n }\n\n const queryParams: QueryParameterObject[] = [];\n\n for (const [name, zodSchema] of Object.entries(query)) {\n const required = !zodSchema.isOptional();\n const schema = zodToOpenAPI(zodSchema) as any;\n const param: QueryParameterObject = { name, in: 'query', required, schema };\n\n // In Strapi, query params are always interpreted as query strings, which isn't supported by the specification\n // TODO: Make that configurable somehow\n Object.assign(param, { 'x-strapi-serialize': 'querystring' });\n\n queryParams.push(param);\n }\n\n return queryParams;\n }\n}\n"],"names":["debug","createDebugger","OperationParametersAssembler","assemble","context","route","method","path","pathParameters","_getPathParameters","length","queryParameters","_getQueryParameters","parameters","output","data","params","request","pathParams","name","zodSchema","Object","entries","required","isOptional","schema","zodToOpenAPI","push","in","query","queryParams","param","assign"],"mappings":";;;;;AAOA,MAAMA,QAAQC,sBAAe,CAAA,sBAAA,CAAA;AAKtB,MAAMC,4BAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3DL,QAAAA,KAAAA,CAAM,oCAAsCK,EAAAA,KAAAA,CAAMC,MAAM,EAAED,MAAME,IAAI,CAAA;AAEpE,QAAA,MAAMC,cAAiB,GAAA,IAAI,CAACC,kBAAkB,CAACJ,KAAAA,CAAAA;QAC/CL,KAAM,CAAA,0BAAA,EAA4BQ,eAAeE,MAAM,CAAA;AAEvD,QAAA,MAAMC,eAAkB,GAAA,IAAI,CAACC,mBAAmB,CAACP,KAAAA,CAAAA;QACjDL,KAAM,CAAA,2BAAA,EAA6BW,gBAAgBD,MAAM,CAAA;AAEzD,QAAA,MAAMG,UAAa,GAAA;AAAIL,YAAAA,GAAAA,cAAAA;AAAmBG,YAAAA,GAAAA;AAAgB,SAAA;QAC1DX,KAAM,CAAA,mCAAA,EAAqCa,WAAWH,MAAM,EAAEL,MAAMC,MAAM,EAAED,MAAME,IAAI,CAAA;AAEtFH,QAAAA,OAAAA,CAAQU,MAAM,CAACC,IAAI,CAACF,UAAU,GAAGA,UAAAA;AACnC;AAEQJ,IAAAA,kBAAAA,CAAmBJ,KAAiB,EAAyB;AACnE,QAAA,MAAM,EAAEW,MAAM,EAAE,GAAGX,KAAMY,CAAAA,OAAO,IAAI,EAAC;;AAGrC,QAAA,IAAI,CAACD,MAAQ,EAAA;AACX,YAAA,OAAO,EAAE;AACX;AAEA,QAAA,MAAME,aAAoC,EAAE;QAE5C,KAAK,MAAM,CAACC,IAAMC,EAAAA,SAAAA,CAAU,IAAIC,MAAOC,CAAAA,OAAO,CAACN,MAAS,CAAA,CAAA;YACtD,MAAMO,QAAAA,GAAW,CAACH,SAAAA,CAAUI,UAAU,EAAA;AACtC,YAAA,MAAMC,SAASC,gBAAaN,CAAAA,SAAAA,CAAAA;AAE5BF,YAAAA,UAAAA,CAAWS,IAAI,CAAC;AAAER,gBAAAA,IAAAA;gBAAMS,EAAI,EAAA,MAAA;AAAQL,gBAAAA,QAAAA;AAAUE,gBAAAA;AAAO,aAAA,CAAA;AACvD;QAEA,OAAOP,UAAAA;AACT;AAEQN,IAAAA,mBAAAA,CAAoBP,KAAiB,EAA0B;AACrE,QAAA,MAAM,EAAEwB,KAAK,EAAE,GAAGxB,KAAMY,CAAAA,OAAO,IAAI,EAAC;AAEpC,QAAA,IAAI,CAACY,KAAO,EAAA;AACV,YAAA,OAAO,EAAE;AACX;AAEA,QAAA,MAAMC,cAAsC,EAAE;QAE9C,KAAK,MAAM,CAACX,IAAMC,EAAAA,SAAAA,CAAU,IAAIC,MAAOC,CAAAA,OAAO,CAACO,KAAQ,CAAA,CAAA;YACrD,MAAMN,QAAAA,GAAW,CAACH,SAAAA,CAAUI,UAAU,EAAA;AACtC,YAAA,MAAMC,SAASC,gBAAaN,CAAAA,SAAAA,CAAAA;AAC5B,YAAA,MAAMW,KAA8B,GAAA;AAAEZ,gBAAAA,IAAAA;gBAAMS,EAAI,EAAA,OAAA;AAASL,gBAAAA,QAAAA;AAAUE,gBAAAA;AAAO,aAAA;;;YAI1EJ,MAAOW,CAAAA,MAAM,CAACD,KAAO,EAAA;gBAAE,oBAAsB,EAAA;AAAc,aAAA,CAAA;AAE3DD,YAAAA,WAAAA,CAAYH,IAAI,CAACI,KAAAA,CAAAA;AACnB;QAEA,OAAOD,WAAAA;AACT;AACF;;;;"}
@@ -0,0 +1,65 @@
1
+ import { createDebugger } from '../../../../../utils/debug.mjs';
2
+ import { zodToOpenAPI } from '../../../../../utils/zod.mjs';
3
+
4
+ const debug = createDebugger('assembler:parameters');
5
+ class OperationParametersAssembler {
6
+ assemble(context, route) {
7
+ debug('assembling parameters for %o %o...', route.method, route.path);
8
+ const pathParameters = this._getPathParameters(route);
9
+ debug('found %o path parameters', pathParameters.length);
10
+ const queryParameters = this._getQueryParameters(route);
11
+ debug('found %o query parameters', queryParameters.length);
12
+ const parameters = [
13
+ ...pathParameters,
14
+ ...queryParameters
15
+ ];
16
+ debug('assembled %o parameters for %o %o', parameters.length, route.method, route.path);
17
+ context.output.data.parameters = parameters;
18
+ }
19
+ _getPathParameters(route) {
20
+ const { params } = route.request ?? {};
21
+ // TODO: Allow auto inference (from path) if enabled through configuration
22
+ if (!params) {
23
+ return [];
24
+ }
25
+ const pathParams = [];
26
+ for (const [name, zodSchema] of Object.entries(params)){
27
+ const required = !zodSchema.isOptional();
28
+ const schema = zodToOpenAPI(zodSchema);
29
+ pathParams.push({
30
+ name,
31
+ in: 'path',
32
+ required,
33
+ schema
34
+ });
35
+ }
36
+ return pathParams;
37
+ }
38
+ _getQueryParameters(route) {
39
+ const { query } = route.request ?? {};
40
+ if (!query) {
41
+ return [];
42
+ }
43
+ const queryParams = [];
44
+ for (const [name, zodSchema] of Object.entries(query)){
45
+ const required = !zodSchema.isOptional();
46
+ const schema = zodToOpenAPI(zodSchema);
47
+ const param = {
48
+ name,
49
+ in: 'query',
50
+ required,
51
+ schema
52
+ };
53
+ // In Strapi, query params are always interpreted as query strings, which isn't supported by the specification
54
+ // TODO: Make that configurable somehow
55
+ Object.assign(param, {
56
+ 'x-strapi-serialize': 'querystring'
57
+ });
58
+ queryParams.push(param);
59
+ }
60
+ return queryParams;
61
+ }
62
+ }
63
+
64
+ export { OperationParametersAssembler };
65
+ //# sourceMappingURL=parameters.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.mjs","sources":["../../../../../../src/assemblers/document/path/path-item/operation/parameters.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\nimport type { Assembler } from '../../../..';\n\nimport type { OperationContext } from '../../../../../types';\nimport { createDebugger, zodToOpenAPI } from '../../../../../utils';\n\nconst debug = createDebugger('assembler:parameters');\n\ntype PathParameterObject = OpenAPIV3_1.ParameterObject & { in: 'path' };\ntype QueryParameterObject = OpenAPIV3_1.ParameterObject & { in: 'query' };\n\nexport class OperationParametersAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n debug('assembling parameters for %o %o...', route.method, route.path);\n\n const pathParameters = this._getPathParameters(route);\n debug('found %o path parameters', pathParameters.length);\n\n const queryParameters = this._getQueryParameters(route);\n debug('found %o query parameters', queryParameters.length);\n\n const parameters = [...pathParameters, ...queryParameters];\n debug('assembled %o parameters for %o %o', parameters.length, route.method, route.path);\n\n context.output.data.parameters = parameters;\n }\n\n private _getPathParameters(route: Core.Route): PathParameterObject[] {\n const { params } = route.request ?? {};\n\n // TODO: Allow auto inference (from path) if enabled through configuration\n if (!params) {\n return [];\n }\n\n const pathParams: PathParameterObject[] = [];\n\n for (const [name, zodSchema] of Object.entries(params)) {\n const required = !zodSchema.isOptional();\n const schema = zodToOpenAPI(zodSchema) as any;\n\n pathParams.push({ name, in: 'path', required, schema });\n }\n\n return pathParams;\n }\n\n private _getQueryParameters(route: Core.Route): QueryParameterObject[] {\n const { query } = route.request ?? {};\n\n if (!query) {\n return [];\n }\n\n const queryParams: QueryParameterObject[] = [];\n\n for (const [name, zodSchema] of Object.entries(query)) {\n const required = !zodSchema.isOptional();\n const schema = zodToOpenAPI(zodSchema) as any;\n const param: QueryParameterObject = { name, in: 'query', required, schema };\n\n // In Strapi, query params are always interpreted as query strings, which isn't supported by the specification\n // TODO: Make that configurable somehow\n Object.assign(param, { 'x-strapi-serialize': 'querystring' });\n\n queryParams.push(param);\n }\n\n return queryParams;\n }\n}\n"],"names":["debug","createDebugger","OperationParametersAssembler","assemble","context","route","method","path","pathParameters","_getPathParameters","length","queryParameters","_getQueryParameters","parameters","output","data","params","request","pathParams","name","zodSchema","Object","entries","required","isOptional","schema","zodToOpenAPI","push","in","query","queryParams","param","assign"],"mappings":";;;AAOA,MAAMA,QAAQC,cAAe,CAAA,sBAAA,CAAA;AAKtB,MAAMC,4BAAAA,CAAAA;IACXC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;AAC3DL,QAAAA,KAAAA,CAAM,oCAAsCK,EAAAA,KAAAA,CAAMC,MAAM,EAAED,MAAME,IAAI,CAAA;AAEpE,QAAA,MAAMC,cAAiB,GAAA,IAAI,CAACC,kBAAkB,CAACJ,KAAAA,CAAAA;QAC/CL,KAAM,CAAA,0BAAA,EAA4BQ,eAAeE,MAAM,CAAA;AAEvD,QAAA,MAAMC,eAAkB,GAAA,IAAI,CAACC,mBAAmB,CAACP,KAAAA,CAAAA;QACjDL,KAAM,CAAA,2BAAA,EAA6BW,gBAAgBD,MAAM,CAAA;AAEzD,QAAA,MAAMG,UAAa,GAAA;AAAIL,YAAAA,GAAAA,cAAAA;AAAmBG,YAAAA,GAAAA;AAAgB,SAAA;QAC1DX,KAAM,CAAA,mCAAA,EAAqCa,WAAWH,MAAM,EAAEL,MAAMC,MAAM,EAAED,MAAME,IAAI,CAAA;AAEtFH,QAAAA,OAAAA,CAAQU,MAAM,CAACC,IAAI,CAACF,UAAU,GAAGA,UAAAA;AACnC;AAEQJ,IAAAA,kBAAAA,CAAmBJ,KAAiB,EAAyB;AACnE,QAAA,MAAM,EAAEW,MAAM,EAAE,GAAGX,KAAMY,CAAAA,OAAO,IAAI,EAAC;;AAGrC,QAAA,IAAI,CAACD,MAAQ,EAAA;AACX,YAAA,OAAO,EAAE;AACX;AAEA,QAAA,MAAME,aAAoC,EAAE;QAE5C,KAAK,MAAM,CAACC,IAAMC,EAAAA,SAAAA,CAAU,IAAIC,MAAOC,CAAAA,OAAO,CAACN,MAAS,CAAA,CAAA;YACtD,MAAMO,QAAAA,GAAW,CAACH,SAAAA,CAAUI,UAAU,EAAA;AACtC,YAAA,MAAMC,SAASC,YAAaN,CAAAA,SAAAA,CAAAA;AAE5BF,YAAAA,UAAAA,CAAWS,IAAI,CAAC;AAAER,gBAAAA,IAAAA;gBAAMS,EAAI,EAAA,MAAA;AAAQL,gBAAAA,QAAAA;AAAUE,gBAAAA;AAAO,aAAA,CAAA;AACvD;QAEA,OAAOP,UAAAA;AACT;AAEQN,IAAAA,mBAAAA,CAAoBP,KAAiB,EAA0B;AACrE,QAAA,MAAM,EAAEwB,KAAK,EAAE,GAAGxB,KAAMY,CAAAA,OAAO,IAAI,EAAC;AAEpC,QAAA,IAAI,CAACY,KAAO,EAAA;AACV,YAAA,OAAO,EAAE;AACX;AAEA,QAAA,MAAMC,cAAsC,EAAE;QAE9C,KAAK,MAAM,CAACX,IAAMC,EAAAA,SAAAA,CAAU,IAAIC,MAAOC,CAAAA,OAAO,CAACO,KAAQ,CAAA,CAAA;YACrD,MAAMN,QAAAA,GAAW,CAACH,SAAAA,CAAUI,UAAU,EAAA;AACtC,YAAA,MAAMC,SAASC,YAAaN,CAAAA,SAAAA,CAAAA;AAC5B,YAAA,MAAMW,KAA8B,GAAA;AAAEZ,gBAAAA,IAAAA;gBAAMS,EAAI,EAAA,OAAA;AAASL,gBAAAA,QAAAA;AAAUE,gBAAAA;AAAO,aAAA;;;YAI1EJ,MAAOW,CAAAA,MAAM,CAACD,KAAO,EAAA;gBAAE,oBAAsB,EAAA;AAAc,aAAA,CAAA;AAE3DD,YAAAA,WAAAA,CAAYH,IAAI,CAACI,KAAAA,CAAAA;AACnB;QAEA,OAAOD,WAAAA;AACT;AACF;;;;"}
@@ -0,0 +1,8 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { Assembler } from '../../../..';
3
+ import type { OperationContext } from '../../../../../types';
4
+ export declare class OperationResponsesAssembler implements Assembler.Operation {
5
+ private get _errors();
6
+ assemble(context: OperationContext, route: Core.Route): void;
7
+ }
8
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../../../../src/assemblers/document/path/path-item/operation/responses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,qBAAa,2BAA4B,YAAW,SAAS,CAAC,SAAS;IACrE,OAAO,KAAK,OAAO,GAQlB;IAED,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;CAqB7D"}
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ require('debug');
4
+ var zod = require('../../../../../utils/zod.js');
5
+
6
+ class OperationResponsesAssembler {
7
+ get _errors() {
8
+ return {
9
+ 400: {
10
+ description: 'Bad request'
11
+ },
12
+ 401: {
13
+ description: 'Unauthorized'
14
+ },
15
+ 403: {
16
+ description: 'Forbidden'
17
+ },
18
+ 404: {
19
+ description: 'Not found'
20
+ },
21
+ 500: {
22
+ description: 'Internal server error'
23
+ }
24
+ };
25
+ }
26
+ assemble(context, route) {
27
+ const { output } = context;
28
+ const responses = {
29
+ ...output.data.responses
30
+ };
31
+ // Register common error responses first to allow manual overrides
32
+ for (const [errorCode, response] of Object.entries(this._errors)){
33
+ responses[errorCode] = response;
34
+ }
35
+ if (route.response) {
36
+ const schema = zod.zodToOpenAPI(route.response);
37
+ responses[200] = {
38
+ description: 'OK',
39
+ content: {
40
+ 'application/json': {
41
+ schema
42
+ }
43
+ }
44
+ };
45
+ }
46
+ output.data.responses = responses;
47
+ }
48
+ }
49
+
50
+ exports.OperationResponsesAssembler = OperationResponsesAssembler;
51
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/responses.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\nimport type { Assembler } from '../../../..';\nimport type { OperationContext } from '../../../../../types';\nimport { zodToOpenAPI } from '../../../../../utils';\n\nexport class OperationResponsesAssembler implements Assembler.Operation {\n private get _errors() {\n return {\n 400: { description: 'Bad request' },\n 401: { description: 'Unauthorized' },\n 403: { description: 'Forbidden' },\n 404: { description: 'Not found' },\n 500: { description: 'Internal server error' },\n };\n }\n\n assemble(context: OperationContext, route: Core.Route): void {\n const { output } = context;\n\n const responses = { ...output.data.responses } satisfies OpenAPIV3_1.ResponsesObject;\n\n // Register common error responses first to allow manual overrides\n for (const [errorCode, response] of Object.entries(this._errors)) {\n responses[errorCode] = response;\n }\n\n if (route.response) {\n const schema = zodToOpenAPI(route.response);\n\n responses[200] = {\n description: 'OK',\n content: { 'application/json': { schema } },\n };\n }\n\n output.data.responses = responses;\n }\n}\n"],"names":["OperationResponsesAssembler","_errors","description","assemble","context","route","output","responses","data","errorCode","response","Object","entries","schema","zodToOpenAPI","content"],"mappings":";;;;;AAMO,MAAMA,2BAAAA,CAAAA;AACX,IAAA,IAAYC,OAAU,GAAA;QACpB,OAAO;YACL,GAAK,EAAA;gBAAEC,WAAa,EAAA;AAAc,aAAA;YAClC,GAAK,EAAA;gBAAEA,WAAa,EAAA;AAAe,aAAA;YACnC,GAAK,EAAA;gBAAEA,WAAa,EAAA;AAAY,aAAA;YAChC,GAAK,EAAA;gBAAEA,WAAa,EAAA;AAAY,aAAA;YAChC,GAAK,EAAA;gBAAEA,WAAa,EAAA;AAAwB;AAC9C,SAAA;AACF;IAEAC,QAASC,CAAAA,OAAyB,EAAEC,KAAiB,EAAQ;QAC3D,MAAM,EAAEC,MAAM,EAAE,GAAGF,OAAAA;AAEnB,QAAA,MAAMG,SAAY,GAAA;YAAE,GAAGD,MAAAA,CAAOE,IAAI,CAACD;AAAU,SAAA;;QAG7C,KAAK,MAAM,CAACE,SAAAA,EAAWC,QAAS,CAAA,IAAIC,MAAOC,CAAAA,OAAO,CAAC,IAAI,CAACX,OAAO,CAAG,CAAA;YAChEM,SAAS,CAACE,UAAU,GAAGC,QAAAA;AACzB;QAEA,IAAIL,KAAAA,CAAMK,QAAQ,EAAE;YAClB,MAAMG,MAAAA,GAASC,gBAAaT,CAAAA,KAAAA,CAAMK,QAAQ,CAAA;YAE1CH,SAAS,CAAC,IAAI,GAAG;gBACfL,WAAa,EAAA,IAAA;gBACba,OAAS,EAAA;oBAAE,kBAAoB,EAAA;AAAEF,wBAAAA;AAAO;AAAE;AAC5C,aAAA;AACF;QAEAP,MAAOE,CAAAA,IAAI,CAACD,SAAS,GAAGA,SAAAA;AAC1B;AACF;;;;"}