@strapi/openapi 0.0.0-experimental.0008b7f1c9e3678ad260dac74a24f2d9f8d8a5c7

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 (281) hide show
  1. package/LICENSE +37 -0
  2. package/README.md +77 -0
  3. package/dist/assemblers/document/factory.d.ts +8 -0
  4. package/dist/assemblers/document/factory.d.ts.map +1 -0
  5. package/dist/assemblers/document/factory.js +38 -0
  6. package/dist/assemblers/document/factory.js.map +1 -0
  7. package/dist/assemblers/document/factory.mjs +36 -0
  8. package/dist/assemblers/document/factory.mjs.map +1 -0
  9. package/dist/assemblers/document/index.d.ts +5 -0
  10. package/dist/assemblers/document/index.d.ts.map +1 -0
  11. package/dist/assemblers/document/info.d.ts +8 -0
  12. package/dist/assemblers/document/info.d.ts.map +1 -0
  13. package/dist/assemblers/document/info.js +32 -0
  14. package/dist/assemblers/document/info.js.map +1 -0
  15. package/dist/assemblers/document/info.mjs +30 -0
  16. package/dist/assemblers/document/info.mjs.map +1 -0
  17. package/dist/assemblers/document/metadata.d.ts +6 -0
  18. package/dist/assemblers/document/metadata.d.ts.map +1 -0
  19. package/dist/assemblers/document/metadata.js +23 -0
  20. package/dist/assemblers/document/metadata.js.map +1 -0
  21. package/dist/assemblers/document/metadata.mjs +21 -0
  22. package/dist/assemblers/document/metadata.mjs.map +1 -0
  23. package/dist/assemblers/document/path/factory.d.ts +6 -0
  24. package/dist/assemblers/document/path/factory.d.ts.map +1 -0
  25. package/dist/assemblers/document/path/factory.js +27 -0
  26. package/dist/assemblers/document/path/factory.js.map +1 -0
  27. package/dist/assemblers/document/path/factory.mjs +25 -0
  28. package/dist/assemblers/document/path/factory.mjs.map +1 -0
  29. package/dist/assemblers/document/path/index.d.ts +4 -0
  30. package/dist/assemblers/document/path/index.d.ts.map +1 -0
  31. package/dist/assemblers/document/path/path-item/factory.d.ts +6 -0
  32. package/dist/assemblers/document/path/path-item/factory.d.ts.map +1 -0
  33. package/dist/assemblers/document/path/path-item/factory.js +26 -0
  34. package/dist/assemblers/document/path/path-item/factory.js.map +1 -0
  35. package/dist/assemblers/document/path/path-item/factory.mjs +24 -0
  36. package/dist/assemblers/document/path/path-item/factory.mjs.map +1 -0
  37. package/dist/assemblers/document/path/path-item/index.d.ts +4 -0
  38. package/dist/assemblers/document/path/path-item/index.d.ts.map +1 -0
  39. package/dist/assemblers/document/path/path-item/operation/body.d.ts +7 -0
  40. package/dist/assemblers/document/path/path-item/operation/body.d.ts.map +1 -0
  41. package/dist/assemblers/document/path/path-item/operation/body.js +27 -0
  42. package/dist/assemblers/document/path/path-item/operation/body.js.map +1 -0
  43. package/dist/assemblers/document/path/path-item/operation/body.mjs +25 -0
  44. package/dist/assemblers/document/path/path-item/operation/body.mjs.map +1 -0
  45. package/dist/assemblers/document/path/path-item/operation/factory.d.ts +10 -0
  46. package/dist/assemblers/document/path/path-item/operation/factory.d.ts.map +1 -0
  47. package/dist/assemblers/document/path/path-item/operation/factory.js +37 -0
  48. package/dist/assemblers/document/path/path-item/operation/factory.js.map +1 -0
  49. package/dist/assemblers/document/path/path-item/operation/factory.mjs +35 -0
  50. package/dist/assemblers/document/path/path-item/operation/factory.mjs.map +1 -0
  51. package/dist/assemblers/document/path/path-item/operation/index.d.ts +8 -0
  52. package/dist/assemblers/document/path/path-item/operation/index.d.ts.map +1 -0
  53. package/dist/assemblers/document/path/path-item/operation/operation-id.d.ts +10 -0
  54. package/dist/assemblers/document/path/path-item/operation/operation-id.d.ts.map +1 -0
  55. package/dist/assemblers/document/path/path-item/operation/operation-id.js +47 -0
  56. package/dist/assemblers/document/path/path-item/operation/operation-id.js.map +1 -0
  57. package/dist/assemblers/document/path/path-item/operation/operation-id.mjs +45 -0
  58. package/dist/assemblers/document/path/path-item/operation/operation-id.mjs.map +1 -0
  59. package/dist/assemblers/document/path/path-item/operation/operation.d.ts +13 -0
  60. package/dist/assemblers/document/path/path-item/operation/operation.d.ts.map +1 -0
  61. package/dist/assemblers/document/path/path-item/operation/operation.js +51 -0
  62. package/dist/assemblers/document/path/path-item/operation/operation.js.map +1 -0
  63. package/dist/assemblers/document/path/path-item/operation/operation.mjs +49 -0
  64. package/dist/assemblers/document/path/path-item/operation/operation.mjs.map +1 -0
  65. package/dist/assemblers/document/path/path-item/operation/parameters.d.ts +9 -0
  66. package/dist/assemblers/document/path/path-item/operation/parameters.d.ts.map +1 -0
  67. package/dist/assemblers/document/path/path-item/operation/parameters.js +67 -0
  68. package/dist/assemblers/document/path/path-item/operation/parameters.js.map +1 -0
  69. package/dist/assemblers/document/path/path-item/operation/parameters.mjs +65 -0
  70. package/dist/assemblers/document/path/path-item/operation/parameters.mjs.map +1 -0
  71. package/dist/assemblers/document/path/path-item/operation/responses.d.ts +8 -0
  72. package/dist/assemblers/document/path/path-item/operation/responses.d.ts.map +1 -0
  73. package/dist/assemblers/document/path/path-item/operation/responses.js +51 -0
  74. package/dist/assemblers/document/path/path-item/operation/responses.js.map +1 -0
  75. package/dist/assemblers/document/path/path-item/operation/responses.mjs +49 -0
  76. package/dist/assemblers/document/path/path-item/operation/responses.mjs.map +1 -0
  77. package/dist/assemblers/document/path/path-item/operation/tags.d.ts +7 -0
  78. package/dist/assemblers/document/path/path-item/operation/tags.d.ts.map +1 -0
  79. package/dist/assemblers/document/path/path-item/operation/tags.js +25 -0
  80. package/dist/assemblers/document/path/path-item/operation/tags.js.map +1 -0
  81. package/dist/assemblers/document/path/path-item/operation/tags.mjs +23 -0
  82. package/dist/assemblers/document/path/path-item/operation/tags.mjs.map +1 -0
  83. package/dist/assemblers/document/path/path-item/path-item.d.ts +13 -0
  84. package/dist/assemblers/document/path/path-item/path-item.d.ts.map +1 -0
  85. package/dist/assemblers/document/path/path-item/path-item.js +53 -0
  86. package/dist/assemblers/document/path/path-item/path-item.js.map +1 -0
  87. package/dist/assemblers/document/path/path-item/path-item.mjs +51 -0
  88. package/dist/assemblers/document/path/path-item/path-item.mjs.map +1 -0
  89. package/dist/assemblers/document/path/path.d.ts +10 -0
  90. package/dist/assemblers/document/path/path.d.ts.map +1 -0
  91. package/dist/assemblers/document/path/path.js +28 -0
  92. package/dist/assemblers/document/path/path.js.map +1 -0
  93. package/dist/assemblers/document/path/path.mjs +26 -0
  94. package/dist/assemblers/document/path/path.mjs.map +1 -0
  95. package/dist/assemblers/index.d.ts +3 -0
  96. package/dist/assemblers/index.d.ts.map +1 -0
  97. package/dist/assemblers/types.d.ts +18 -0
  98. package/dist/assemblers/types.d.ts.map +1 -0
  99. package/dist/constants.d.ts +3 -0
  100. package/dist/constants.d.ts.map +1 -0
  101. package/dist/constants.js +8 -0
  102. package/dist/constants.js.map +1 -0
  103. package/dist/constants.mjs +5 -0
  104. package/dist/constants.mjs.map +1 -0
  105. package/dist/context/factories/abstract.d.ts +11 -0
  106. package/dist/context/factories/abstract.d.ts.map +1 -0
  107. package/dist/context/factories/abstract.js +38 -0
  108. package/dist/context/factories/abstract.js.map +1 -0
  109. package/dist/context/factories/abstract.mjs +36 -0
  110. package/dist/context/factories/abstract.mjs.map +1 -0
  111. package/dist/context/factories/document.d.ts +11 -0
  112. package/dist/context/factories/document.d.ts.map +1 -0
  113. package/dist/context/factories/document.js +20 -0
  114. package/dist/context/factories/document.js.map +1 -0
  115. package/dist/context/factories/document.mjs +18 -0
  116. package/dist/context/factories/document.mjs.map +1 -0
  117. package/dist/context/factories/index.d.ts +6 -0
  118. package/dist/context/factories/index.d.ts.map +1 -0
  119. package/dist/context/factories/operation.d.ts +11 -0
  120. package/dist/context/factories/operation.d.ts.map +1 -0
  121. package/dist/context/factories/operation.js +20 -0
  122. package/dist/context/factories/operation.js.map +1 -0
  123. package/dist/context/factories/operation.mjs +18 -0
  124. package/dist/context/factories/operation.mjs.map +1 -0
  125. package/dist/context/factories/path-item.d.ts +10 -0
  126. package/dist/context/factories/path-item.d.ts.map +1 -0
  127. package/dist/context/factories/path-item.js +20 -0
  128. package/dist/context/factories/path-item.js.map +1 -0
  129. package/dist/context/factories/path-item.mjs +18 -0
  130. package/dist/context/factories/path-item.mjs.map +1 -0
  131. package/dist/context/factories/path.d.ts +10 -0
  132. package/dist/context/factories/path.d.ts.map +1 -0
  133. package/dist/context/factories/path.js +20 -0
  134. package/dist/context/factories/path.js.map +1 -0
  135. package/dist/context/factories/path.mjs +18 -0
  136. package/dist/context/factories/path.mjs.map +1 -0
  137. package/dist/context/index.d.ts +3 -0
  138. package/dist/context/index.d.ts.map +1 -0
  139. package/dist/context/types.d.ts +28 -0
  140. package/dist/context/types.d.ts.map +1 -0
  141. package/dist/exports.d.ts +35 -0
  142. package/dist/exports.d.ts.map +1 -0
  143. package/dist/exports.js +76 -0
  144. package/dist/exports.js.map +1 -0
  145. package/dist/exports.mjs +74 -0
  146. package/dist/exports.mjs.map +1 -0
  147. package/dist/generator/generator.d.ts +29 -0
  148. package/dist/generator/generator.d.ts.map +1 -0
  149. package/dist/generator/generator.js +85 -0
  150. package/dist/generator/generator.js.map +1 -0
  151. package/dist/generator/generator.mjs +83 -0
  152. package/dist/generator/generator.mjs.map +1 -0
  153. package/dist/generator/index.d.ts +3 -0
  154. package/dist/generator/index.d.ts.map +1 -0
  155. package/dist/generator/types.d.ts +12 -0
  156. package/dist/generator/types.d.ts.map +1 -0
  157. package/dist/index.d.ts +2 -0
  158. package/dist/index.d.ts.map +1 -0
  159. package/dist/index.js +8 -0
  160. package/dist/index.js.map +1 -0
  161. package/dist/index.mjs +2 -0
  162. package/dist/index.mjs.map +1 -0
  163. package/dist/post-processor/component-writer.d.ts +6 -0
  164. package/dist/post-processor/component-writer.d.ts.map +1 -0
  165. package/dist/post-processor/component-writer.js +39 -0
  166. package/dist/post-processor/component-writer.js.map +1 -0
  167. package/dist/post-processor/component-writer.mjs +17 -0
  168. package/dist/post-processor/component-writer.mjs.map +1 -0
  169. package/dist/post-processor/factory.d.ts +5 -0
  170. package/dist/post-processor/factory.d.ts.map +1 -0
  171. package/dist/post-processor/factory.js +14 -0
  172. package/dist/post-processor/factory.js.map +1 -0
  173. package/dist/post-processor/factory.mjs +12 -0
  174. package/dist/post-processor/factory.mjs.map +1 -0
  175. package/dist/post-processor/index.d.ts +4 -0
  176. package/dist/post-processor/index.d.ts.map +1 -0
  177. package/dist/post-processor/types.d.ts +5 -0
  178. package/dist/post-processor/types.d.ts.map +1 -0
  179. package/dist/pre-processor/factory.d.ts +5 -0
  180. package/dist/pre-processor/factory.d.ts.map +1 -0
  181. package/dist/pre-processor/factory.js +10 -0
  182. package/dist/pre-processor/factory.js.map +1 -0
  183. package/dist/pre-processor/factory.mjs +8 -0
  184. package/dist/pre-processor/factory.mjs.map +1 -0
  185. package/dist/pre-processor/index.d.ts +3 -0
  186. package/dist/pre-processor/index.d.ts.map +1 -0
  187. package/dist/pre-processor/types.d.ts +5 -0
  188. package/dist/pre-processor/types.d.ts.map +1 -0
  189. package/dist/registries/factory.d.ts +4 -0
  190. package/dist/registries/factory.d.ts.map +1 -0
  191. package/dist/registries/factory.js +10 -0
  192. package/dist/registries/factory.js.map +1 -0
  193. package/dist/registries/factory.mjs +8 -0
  194. package/dist/registries/factory.mjs.map +1 -0
  195. package/dist/registries/index.d.ts +3 -0
  196. package/dist/registries/index.d.ts.map +1 -0
  197. package/dist/registries/types.d.ts +3 -0
  198. package/dist/registries/types.d.ts.map +1 -0
  199. package/dist/routes/collector.d.ts +29 -0
  200. package/dist/routes/collector.d.ts.map +1 -0
  201. package/dist/routes/collector.js +40 -0
  202. package/dist/routes/collector.js.map +1 -0
  203. package/dist/routes/collector.mjs +38 -0
  204. package/dist/routes/collector.mjs.map +1 -0
  205. package/dist/routes/index.d.ts +7 -0
  206. package/dist/routes/index.d.ts.map +1 -0
  207. package/dist/routes/matcher.d.ts +25 -0
  208. package/dist/routes/matcher.d.ts.map +1 -0
  209. package/dist/routes/matcher.js +24 -0
  210. package/dist/routes/matcher.js.map +1 -0
  211. package/dist/routes/matcher.mjs +22 -0
  212. package/dist/routes/matcher.mjs.map +1 -0
  213. package/dist/routes/providers/abstract.d.ts +35 -0
  214. package/dist/routes/providers/abstract.d.ts.map +1 -0
  215. package/dist/routes/providers/abstract.js +29 -0
  216. package/dist/routes/providers/abstract.js.map +1 -0
  217. package/dist/routes/providers/abstract.mjs +27 -0
  218. package/dist/routes/providers/abstract.mjs.map +1 -0
  219. package/dist/routes/providers/admin.d.ts +6 -0
  220. package/dist/routes/providers/admin.d.ts.map +1 -0
  221. package/dist/routes/providers/admin.js +19 -0
  222. package/dist/routes/providers/admin.js.map +1 -0
  223. package/dist/routes/providers/admin.mjs +17 -0
  224. package/dist/routes/providers/admin.mjs.map +1 -0
  225. package/dist/routes/providers/api.d.ts +22 -0
  226. package/dist/routes/providers/api.d.ts.map +1 -0
  227. package/dist/routes/providers/api.js +35 -0
  228. package/dist/routes/providers/api.js.map +1 -0
  229. package/dist/routes/providers/api.mjs +33 -0
  230. package/dist/routes/providers/api.mjs.map +1 -0
  231. package/dist/routes/providers/index.d.ts +6 -0
  232. package/dist/routes/providers/index.d.ts.map +1 -0
  233. package/dist/routes/providers/plugin.d.ts +23 -0
  234. package/dist/routes/providers/plugin.d.ts.map +1 -0
  235. package/dist/routes/providers/plugin.js +47 -0
  236. package/dist/routes/providers/plugin.js.map +1 -0
  237. package/dist/routes/providers/plugin.mjs +45 -0
  238. package/dist/routes/providers/plugin.mjs.map +1 -0
  239. package/dist/routes/providers/types.d.ts +13 -0
  240. package/dist/routes/providers/types.d.ts.map +1 -0
  241. package/dist/routes/rules/index.d.ts +2 -0
  242. package/dist/routes/rules/index.d.ts.map +1 -0
  243. package/dist/routes/rules/is-of-type.d.ts +3 -0
  244. package/dist/routes/rules/is-of-type.d.ts.map +1 -0
  245. package/dist/routes/rules/is-of-type.js +8 -0
  246. package/dist/routes/rules/is-of-type.js.map +1 -0
  247. package/dist/routes/rules/is-of-type.mjs +6 -0
  248. package/dist/routes/rules/is-of-type.mjs.map +1 -0
  249. package/dist/routes/types.d.ts +6 -0
  250. package/dist/routes/types.d.ts.map +1 -0
  251. package/dist/types.d.ts +14 -0
  252. package/dist/types.d.ts.map +1 -0
  253. package/dist/utils/debug.d.ts +3 -0
  254. package/dist/utils/debug.d.ts.map +1 -0
  255. package/dist/utils/debug.js +15 -0
  256. package/dist/utils/debug.js.map +1 -0
  257. package/dist/utils/debug.mjs +9 -0
  258. package/dist/utils/debug.mjs.map +1 -0
  259. package/dist/utils/index.d.ts +4 -0
  260. package/dist/utils/index.d.ts.map +1 -0
  261. package/dist/utils/timer/factory.d.ts +5 -0
  262. package/dist/utils/timer/factory.d.ts.map +1 -0
  263. package/dist/utils/timer/factory.js +12 -0
  264. package/dist/utils/timer/factory.js.map +1 -0
  265. package/dist/utils/timer/factory.mjs +10 -0
  266. package/dist/utils/timer/factory.mjs.map +1 -0
  267. package/dist/utils/timer/index.d.ts +3 -0
  268. package/dist/utils/timer/index.d.ts.map +1 -0
  269. package/dist/utils/timer/timer.d.ts +14 -0
  270. package/dist/utils/timer/timer.d.ts.map +1 -0
  271. package/dist/utils/timer/timer.js +38 -0
  272. package/dist/utils/timer/timer.js.map +1 -0
  273. package/dist/utils/timer/timer.mjs +36 -0
  274. package/dist/utils/timer/timer.mjs.map +1 -0
  275. package/dist/utils/zod.d.ts +39 -0
  276. package/dist/utils/zod.d.ts.map +1 -0
  277. package/dist/utils/zod.js +87 -0
  278. package/dist/utils/zod.js.map +1 -0
  279. package/dist/utils/zod.mjs +64 -0
  280. package/dist/utils/zod.mjs.map +1 -0
  281. package/package.json +68 -0
package/LICENSE ADDED
@@ -0,0 +1,37 @@
1
+ Copyright (c) 2015-present Strapi Solutions SAS
2
+
3
+ Portions of the Strapi software are licensed as follows:
4
+
5
+ * All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined below.
6
+
7
+ Enterprise License
8
+
9
+ If you or the company you represent has entered into a written agreement referencing the Enterprise Edition of the Strapi source code available at
10
+ https://github.com/strapi/strapi, then such agreement applies to your use of the Enterprise Edition of the Strapi Software. If you or the company you
11
+ represent is using the Enterprise Edition of the Strapi Software in connection with a subscription to our cloud offering, then the agreement you have
12
+ agreed to with respect to our cloud offering and the licenses included in such agreement apply to your use of the Enterprise Edition of the Strapi Software.
13
+ Otherwise, the Strapi Enterprise Software License Agreement (found here https://strapi.io/enterprise-terms) applies to your use of the Enterprise Edition of the Strapi Software.
14
+
15
+ BY ACCESSING OR USING THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE RELEVANT REFERENCED AGREEMENT.
16
+ IF YOU ARE NOT AUTHORIZED TO ACCEPT THESE TERMS ON BEHALF OF THE COMPANY YOU REPRESENT OR IF YOU DO NOT AGREE TO ALL OF THE RELEVANT TERMS AND CONDITIONS REFERENCED AND YOU
17
+ HAVE NOT OTHERWISE EXECUTED A WRITTEN AGREEMENT WITH STRAPI, YOU ARE NOT AUTHORIZED TO ACCESS OR USE OR ALLOW ANY USER TO ACCESS OR USE ANY PART OF
18
+ THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE. YOUR ACCESS RIGHTS ARE CONDITIONAL ON YOUR CONSENT TO THE RELEVANT REFERENCED TERMS TO THE EXCLUSION OF ALL OTHER TERMS;
19
+ IF THE RELEVANT REFERENCED TERMS ARE CONSIDERED AN OFFER BY YOU, ACCEPTANCE IS EXPRESSLY LIMITED TO THE RELEVANT REFERENCED TERMS.
20
+
21
+ * All software outside of the above-mentioned directories or restrictions above is available under the "MIT Expat" license as set forth below.
22
+
23
+ MIT Expat License
24
+
25
+ Permission is hereby granted, free of charge, to any person obtaining a copy
26
+ of this software and associated documentation files (the "Software"), to deal
27
+ in the Software without restriction, including without limitation the rights
28
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
29
+ copies of the Software, and to permit persons to whom the Software is
30
+ furnished to do so, subject to the following conditions:
31
+
32
+ The above copyright notice and this permission notice shall be included in all
33
+ copies or substantial portions of the Software.
34
+
35
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # @strapi/openapi
2
+
3
+ `@strapi/openapi` provides the core OpenAPI generation pipeline used by Strapi.
4
+
5
+ ## Generate a specification
6
+
7
+ You can generate a document from the CLI:
8
+
9
+ ```bash
10
+ strapi openapi generate
11
+ ```
12
+
13
+ This command generates a `content-api` specification by default.
14
+
15
+ ## Expose `/openapi.json` from the server
16
+
17
+ Strapi can expose a generated OpenAPI document over HTTP. Both endpoints are
18
+ disabled by default; opt in per endpoint via `server.openapi`:
19
+
20
+ ```js
21
+ // config/server.js
22
+ module.exports = () => ({
23
+ openapi: {
24
+ 'content-api': {
25
+ // 'disabled' (default) | 'public'
26
+ access: 'public',
27
+ route: {
28
+ path: '/openapi.json',
29
+ },
30
+ cache: {
31
+ enabled: true,
32
+ maxAgeMs: 60_000,
33
+ filePath: '.strapi/openapi/content-api.json',
34
+ },
35
+ },
36
+ admin: {
37
+ // 'disabled' (default) | 'authenticated' ('public' is not allowed)
38
+ access: 'authenticated',
39
+ route: {
40
+ path: '/openapi.json',
41
+ },
42
+ cache: {
43
+ enabled: true,
44
+ maxAgeMs: 60_000,
45
+ filePath: '.strapi/openapi/admin.json',
46
+ },
47
+ },
48
+ },
49
+ });
50
+ ```
51
+
52
+ ### Options
53
+
54
+ - `server.openapi['content-api']`: config for the Content API OpenAPI endpoint.
55
+ - `server.openapi.admin`: config for the Admin API OpenAPI endpoint.
56
+ - `access`: controls exposure and protection in a single setting (default `disabled`). See below.
57
+ - `route.path`: endpoint subpath to register (resolved under `/api` for content-api and under `/admin` for admin by default).
58
+ - `cache.enabled`: enables file-based cache for generated output.
59
+ - `cache.maxAgeMs`: cache validity in milliseconds.
60
+ - `cache.filePath`: output file path for cached spec (absolute or app-root relative).
61
+
62
+ ### Access control
63
+
64
+ A single `access` value per endpoint controls both whether the endpoint exists and how it is protected.
65
+ Access is governed by Strapi's existing auth, not by a bespoke access surface:
66
+
67
+ - `disabled` (default): the endpoint is not registered.
68
+ - `public` (**content-api only**): no authentication — anyone can read the spec.
69
+ - `authenticated` (**admin only**): requires an authenticated admin (any role). Granular
70
+ per-permission RBAC is intentionally left for a later iteration.
71
+
72
+ The content-api endpoint is only available as public for now. The admin endpoint is never public.
73
+ Unsupported access values throw at startup.
74
+
75
+ > **Security note:** a `public` content-api spec describes your entire Content API surface — including
76
+ > content types that are not publicly readable — to anyone. If you need a gated spec, use the admin
77
+ > endpoint with `authenticated`. Review who can reach each endpoint before enabling it.
@@ -0,0 +1,8 @@
1
+ import type { Assembler } from '..';
2
+ export declare class DocumentAssemblerFactory {
3
+ createAll(): Assembler.Document[];
4
+ private _createInfoAssembler;
5
+ private _createMetadataAssembler;
6
+ private _createPathsAssembler;
7
+ }
8
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/assemblers/document/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAMpC,qBAAa,wBAAwB;IACnC,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE;IAQjC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,qBAAqB;CAQ9B"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ require('debug');
4
+ require('node:crypto');
5
+ require('zod/v4');
6
+ var path = require('../../context/factories/path.js');
7
+ var info = require('./info.js');
8
+ var metadata = require('./metadata.js');
9
+ var path$1 = require('./path/path.js');
10
+ var factory = require('./path/factory.js');
11
+ require('./path/path-item/path-item.js');
12
+ require('./path/path-item/operation/operation.js');
13
+ require('./path/path-item/operation/operation-id.js');
14
+ require('./path/path-item/operation/parameters.js');
15
+ require('./path/path-item/operation/tags.js');
16
+
17
+ class DocumentAssemblerFactory {
18
+ createAll() {
19
+ return [
20
+ this._createMetadataAssembler(),
21
+ this._createInfoAssembler(),
22
+ this._createPathsAssembler()
23
+ ];
24
+ }
25
+ _createInfoAssembler() {
26
+ return new info.DocumentInfoAssembler();
27
+ }
28
+ _createMetadataAssembler() {
29
+ return new metadata.DocumentMetadataAssembler();
30
+ }
31
+ _createPathsAssembler(assemblerFactory = new factory.PathAssemblerFactory(), contextFactory = new path.PathContextFactory()) {
32
+ const assemblers = assemblerFactory.createAll();
33
+ return new path$1.DocumentPathsAssembler(assemblers, contextFactory);
34
+ }
35
+ }
36
+
37
+ exports.DocumentAssemblerFactory = DocumentAssemblerFactory;
38
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sources":["../../../src/assemblers/document/factory.ts"],"sourcesContent":["import { PathContextFactory } from '../../context';\n\nimport type { Assembler } from '..';\n\nimport { DocumentInfoAssembler } from './info';\nimport { DocumentMetadataAssembler } from './metadata';\nimport { DocumentPathsAssembler, PathAssemblerFactory } from './path';\n\nexport class DocumentAssemblerFactory {\n createAll(): Assembler.Document[] {\n return [\n this._createMetadataAssembler(),\n this._createInfoAssembler(),\n this._createPathsAssembler(),\n ];\n }\n\n private _createInfoAssembler() {\n return new DocumentInfoAssembler();\n }\n\n private _createMetadataAssembler() {\n return new DocumentMetadataAssembler();\n }\n\n private _createPathsAssembler(\n assemblerFactory: PathAssemblerFactory = new PathAssemblerFactory(),\n contextFactory: PathContextFactory = new PathContextFactory()\n ) {\n const assemblers = assemblerFactory.createAll();\n\n return new DocumentPathsAssembler(assemblers, contextFactory);\n }\n}\n"],"names":["DocumentAssemblerFactory","createAll","_createMetadataAssembler","_createInfoAssembler","_createPathsAssembler","DocumentInfoAssembler","DocumentMetadataAssembler","assemblerFactory","PathAssemblerFactory","contextFactory","PathContextFactory","assemblers","DocumentPathsAssembler"],"mappings":";;;;;;;;;;;;;;;;AAQO,MAAMA,wBAAAA,CAAAA;IACXC,SAAAA,GAAkC;QAChC,OAAO;AACL,YAAA,IAAI,CAACC,wBAAwB,EAAA;AAC7B,YAAA,IAAI,CAACC,oBAAoB,EAAA;AACzB,YAAA,IAAI,CAACC,qBAAqB;AAC3B,SAAA;AACH,IAAA;IAEQD,oBAAAA,GAAuB;AAC7B,QAAA,OAAO,IAAIE,0BAAAA,EAAAA;AACb,IAAA;IAEQH,wBAAAA,GAA2B;AACjC,QAAA,OAAO,IAAII,kCAAAA,EAAAA;AACb,IAAA;AAEQF,IAAAA,qBAAAA,CACNG,mBAAyC,IAAIC,4BAAAA,EAAsB,EACnEC,cAAAA,GAAqC,IAAIC,yBAAoB,EAC7D;QACA,MAAMC,UAAAA,GAAaJ,iBAAiBN,SAAS,EAAA;QAE7C,OAAO,IAAIW,8BAAuBD,UAAAA,EAAYF,cAAAA,CAAAA;AAChD,IAAA;AACF;;;;"}
@@ -0,0 +1,36 @@
1
+ import 'debug';
2
+ import 'node:crypto';
3
+ import 'zod/v4';
4
+ import { PathContextFactory } from '../../context/factories/path.mjs';
5
+ import { DocumentInfoAssembler } from './info.mjs';
6
+ import { DocumentMetadataAssembler } from './metadata.mjs';
7
+ import { DocumentPathsAssembler } from './path/path.mjs';
8
+ import { PathAssemblerFactory } from './path/factory.mjs';
9
+ import './path/path-item/path-item.mjs';
10
+ import './path/path-item/operation/operation.mjs';
11
+ import './path/path-item/operation/operation-id.mjs';
12
+ import './path/path-item/operation/parameters.mjs';
13
+ import './path/path-item/operation/tags.mjs';
14
+
15
+ class DocumentAssemblerFactory {
16
+ createAll() {
17
+ return [
18
+ this._createMetadataAssembler(),
19
+ this._createInfoAssembler(),
20
+ this._createPathsAssembler()
21
+ ];
22
+ }
23
+ _createInfoAssembler() {
24
+ return new DocumentInfoAssembler();
25
+ }
26
+ _createMetadataAssembler() {
27
+ return new DocumentMetadataAssembler();
28
+ }
29
+ _createPathsAssembler(assemblerFactory = new PathAssemblerFactory(), contextFactory = new PathContextFactory()) {
30
+ const assemblers = assemblerFactory.createAll();
31
+ return new DocumentPathsAssembler(assemblers, contextFactory);
32
+ }
33
+ }
34
+
35
+ export { DocumentAssemblerFactory };
36
+ //# sourceMappingURL=factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.mjs","sources":["../../../src/assemblers/document/factory.ts"],"sourcesContent":["import { PathContextFactory } from '../../context';\n\nimport type { Assembler } from '..';\n\nimport { DocumentInfoAssembler } from './info';\nimport { DocumentMetadataAssembler } from './metadata';\nimport { DocumentPathsAssembler, PathAssemblerFactory } from './path';\n\nexport class DocumentAssemblerFactory {\n createAll(): Assembler.Document[] {\n return [\n this._createMetadataAssembler(),\n this._createInfoAssembler(),\n this._createPathsAssembler(),\n ];\n }\n\n private _createInfoAssembler() {\n return new DocumentInfoAssembler();\n }\n\n private _createMetadataAssembler() {\n return new DocumentMetadataAssembler();\n }\n\n private _createPathsAssembler(\n assemblerFactory: PathAssemblerFactory = new PathAssemblerFactory(),\n contextFactory: PathContextFactory = new PathContextFactory()\n ) {\n const assemblers = assemblerFactory.createAll();\n\n return new DocumentPathsAssembler(assemblers, contextFactory);\n }\n}\n"],"names":["DocumentAssemblerFactory","createAll","_createMetadataAssembler","_createInfoAssembler","_createPathsAssembler","DocumentInfoAssembler","DocumentMetadataAssembler","assemblerFactory","PathAssemblerFactory","contextFactory","PathContextFactory","assemblers","DocumentPathsAssembler"],"mappings":";;;;;;;;;;;;;;AAQO,MAAMA,wBAAAA,CAAAA;IACXC,SAAAA,GAAkC;QAChC,OAAO;AACL,YAAA,IAAI,CAACC,wBAAwB,EAAA;AAC7B,YAAA,IAAI,CAACC,oBAAoB,EAAA;AACzB,YAAA,IAAI,CAACC,qBAAqB;AAC3B,SAAA;AACH,IAAA;IAEQD,oBAAAA,GAAuB;AAC7B,QAAA,OAAO,IAAIE,qBAAAA,EAAAA;AACb,IAAA;IAEQH,wBAAAA,GAA2B;AACjC,QAAA,OAAO,IAAII,yBAAAA,EAAAA;AACb,IAAA;AAEQF,IAAAA,qBAAAA,CACNG,mBAAyC,IAAIC,oBAAAA,EAAsB,EACnEC,cAAAA,GAAqC,IAAIC,oBAAoB,EAC7D;QACA,MAAMC,UAAAA,GAAaJ,iBAAiBN,SAAS,EAAA;QAE7C,OAAO,IAAIW,uBAAuBD,UAAAA,EAAYF,cAAAA,CAAAA;AAChD,IAAA;AACF;;;;"}
@@ -0,0 +1,5 @@
1
+ export { DocumentInfoAssembler } from './info';
2
+ export { DocumentMetadataAssembler } from './metadata';
3
+ export { DocumentPathsAssembler } from './path';
4
+ export { DocumentAssemblerFactory } from './factory';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/assemblers/document/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DocumentContext } from '../../types';
2
+ import type { Assembler } from '..';
3
+ export declare class DocumentInfoAssembler implements Assembler.Document {
4
+ assemble(context: DocumentContext): void;
5
+ private _title;
6
+ private _description;
7
+ }
8
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/assemblers/document/info.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AASpC,qBAAa,qBAAsB,YAAW,SAAS,CAAC,QAAQ;IAC9D,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAgBxC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,YAAY;CAGrB"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var debug$1 = require('../../utils/debug.js');
4
+ require('node:crypto');
5
+ require('zod/v4');
6
+
7
+ const debug = debug$1.createDebugger('assembler:info');
8
+ class DocumentInfoAssembler {
9
+ assemble(context) {
10
+ const { name, version } = context.strapi.config.get('info');
11
+ debug(`assembling document's info for %O...`, {
12
+ name,
13
+ version
14
+ });
15
+ const info = {
16
+ title: this._title(name),
17
+ description: this._description(name, version),
18
+ version
19
+ };
20
+ debug(`document's info assembled: %O`, info);
21
+ context.output.data.info = info;
22
+ }
23
+ _title(name) {
24
+ return `${name}`;
25
+ }
26
+ _description(name, version) {
27
+ return `API documentation for ${name} v${version}`;
28
+ }
29
+ }
30
+
31
+ exports.DocumentInfoAssembler = DocumentInfoAssembler;
32
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sources":["../../../src/assemblers/document/info.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst debug = createDebugger('assembler:info');\n\nexport class DocumentInfoAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { name, version } = context.strapi.config.get<StrapiInfoConfig>('info');\n\n debug(`assembling document's info for %O...`, { name, version });\n\n const info: OpenAPIV3_1.InfoObject = {\n title: this._title(name),\n description: this._description(name, version),\n version,\n };\n\n debug(`document's info assembled: %O`, info);\n\n context.output.data.info = info;\n }\n\n private _title(name: string) {\n return `${name}`;\n }\n\n private _description(name: string, version: string) {\n return `API documentation for ${name} v${version}`;\n }\n}\n"],"names":["debug","createDebugger","DocumentInfoAssembler","assemble","context","name","version","strapi","config","get","info","title","_title","description","_description","output","data"],"mappings":";;;;;;AAaA,MAAMA,QAAQC,sBAAAA,CAAe,gBAAA,CAAA;AAEtB,MAAMC,qBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGF,OAAAA,CAAQG,MAAM,CAACC,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;QAEtET,KAAAA,CAAM,CAAC,oCAAoC,CAAC,EAAE;AAAEK,YAAAA,IAAAA;AAAMC,YAAAA;AAAQ,SAAA,CAAA;AAE9D,QAAA,MAAMI,IAAAA,GAA+B;YACnCC,KAAAA,EAAO,IAAI,CAACC,MAAM,CAACP,IAAAA,CAAAA;AACnBQ,YAAAA,WAAAA,EAAa,IAAI,CAACC,YAAY,CAACT,IAAAA,EAAMC,OAAAA,CAAAA;AACrCA,YAAAA;AACF,SAAA;QAEAN,KAAAA,CAAM,CAAC,6BAA6B,CAAC,EAAEU,IAAAA,CAAAA;AAEvCN,QAAAA,OAAAA,CAAQW,MAAM,CAACC,IAAI,CAACN,IAAI,GAAGA,IAAAA;AAC7B,IAAA;AAEQE,IAAAA,MAAAA,CAAOP,IAAY,EAAE;AAC3B,QAAA,OAAO,GAAGA,IAAAA,CAAAA,CAAM;AAClB,IAAA;IAEQS,YAAAA,CAAaT,IAAY,EAAEC,OAAe,EAAE;AAClD,QAAA,OAAO,CAAC,sBAAsB,EAAED,IAAAA,CAAK,EAAE,EAAEC,OAAAA,CAAAA,CAAS;AACpD,IAAA;AACF;;;;"}
@@ -0,0 +1,30 @@
1
+ import { createDebugger } from '../../utils/debug.mjs';
2
+ import 'node:crypto';
3
+ import 'zod/v4';
4
+
5
+ const debug = createDebugger('assembler:info');
6
+ class DocumentInfoAssembler {
7
+ assemble(context) {
8
+ const { name, version } = context.strapi.config.get('info');
9
+ debug(`assembling document's info for %O...`, {
10
+ name,
11
+ version
12
+ });
13
+ const info = {
14
+ title: this._title(name),
15
+ description: this._description(name, version),
16
+ version
17
+ };
18
+ debug(`document's info assembled: %O`, info);
19
+ context.output.data.info = info;
20
+ }
21
+ _title(name) {
22
+ return `${name}`;
23
+ }
24
+ _description(name, version) {
25
+ return `API documentation for ${name} v${version}`;
26
+ }
27
+ }
28
+
29
+ export { DocumentInfoAssembler };
30
+ //# sourceMappingURL=info.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.mjs","sources":["../../../src/assemblers/document/info.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst debug = createDebugger('assembler:info');\n\nexport class DocumentInfoAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { name, version } = context.strapi.config.get<StrapiInfoConfig>('info');\n\n debug(`assembling document's info for %O...`, { name, version });\n\n const info: OpenAPIV3_1.InfoObject = {\n title: this._title(name),\n description: this._description(name, version),\n version,\n };\n\n debug(`document's info assembled: %O`, info);\n\n context.output.data.info = info;\n }\n\n private _title(name: string) {\n return `${name}`;\n }\n\n private _description(name: string, version: string) {\n return `API documentation for ${name} v${version}`;\n }\n}\n"],"names":["debug","createDebugger","DocumentInfoAssembler","assemble","context","name","version","strapi","config","get","info","title","_title","description","_description","output","data"],"mappings":";;;;AAaA,MAAMA,QAAQC,cAAAA,CAAe,gBAAA,CAAA;AAEtB,MAAMC,qBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;AACvC,QAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGF,OAAAA,CAAQG,MAAM,CAACC,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;QAEtET,KAAAA,CAAM,CAAC,oCAAoC,CAAC,EAAE;AAAEK,YAAAA,IAAAA;AAAMC,YAAAA;AAAQ,SAAA,CAAA;AAE9D,QAAA,MAAMI,IAAAA,GAA+B;YACnCC,KAAAA,EAAO,IAAI,CAACC,MAAM,CAACP,IAAAA,CAAAA;AACnBQ,YAAAA,WAAAA,EAAa,IAAI,CAACC,YAAY,CAACT,IAAAA,EAAMC,OAAAA,CAAAA;AACrCA,YAAAA;AACF,SAAA;QAEAN,KAAAA,CAAM,CAAC,6BAA6B,CAAC,EAAEU,IAAAA,CAAAA;AAEvCN,QAAAA,OAAAA,CAAQW,MAAM,CAACC,IAAI,CAACN,IAAI,GAAGA,IAAAA;AAC7B,IAAA;AAEQE,IAAAA,MAAAA,CAAOP,IAAY,EAAE;AAC3B,QAAA,OAAO,GAAGA,IAAAA,CAAAA,CAAM;AAClB,IAAA;IAEQS,YAAAA,CAAaT,IAAY,EAAEC,OAAe,EAAE;AAClD,QAAA,OAAO,CAAC,sBAAsB,EAAED,IAAAA,CAAK,EAAE,EAAEC,OAAAA,CAAAA,CAAS;AACpD,IAAA;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ import type { DocumentContext } from '../../types';
2
+ import type { Assembler } from '..';
3
+ export declare class DocumentMetadataAssembler implements Assembler.Document {
4
+ assemble(context: DocumentContext): void;
5
+ }
6
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/assemblers/document/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAIpC,qBAAa,yBAA0B,YAAW,SAAS,CAAC,QAAQ;IAClE,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;CAkBzC"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var debug$1 = require('../../utils/debug.js');
4
+ require('node:crypto');
5
+ require('zod/v4');
6
+
7
+ const debug = debug$1.createDebugger('assembler:metadata');
8
+ class DocumentMetadataAssembler {
9
+ assemble(context) {
10
+ const { strapi } = context;
11
+ const strapiVersion = strapi.config.get('info.strapi');
12
+ debug(`assembling document's metadata for %O...`, {
13
+ strapiVersion
14
+ });
15
+ const metadata = new Map().set('openapi', '3.1.0').set('x-powered-by', 'strapi').set('x-strapi-version', strapiVersion);
16
+ const metadataObject = Object.fromEntries(metadata);
17
+ debug(`document's metadata assembled: %O`, metadataObject);
18
+ Object.assign(context.output.data, metadataObject);
19
+ }
20
+ }
21
+
22
+ exports.DocumentMetadataAssembler = DocumentMetadataAssembler;
23
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sources":["../../../src/assemblers/document/metadata.ts"],"sourcesContent":["import type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\nconst debug = createDebugger('assembler:metadata');\n\nexport class DocumentMetadataAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { strapi } = context;\n\n const strapiVersion = strapi.config.get<string>('info.strapi');\n\n debug(`assembling document's metadata for %O...`, { strapiVersion });\n\n const metadata = new Map<string, unknown>()\n .set('openapi', '3.1.0')\n .set('x-powered-by', 'strapi')\n .set('x-strapi-version', strapiVersion);\n\n const metadataObject = Object.fromEntries(metadata);\n\n debug(`document's metadata assembled: %O`, metadataObject);\n\n Object.assign(context.output.data, metadataObject);\n }\n}\n"],"names":["debug","createDebugger","DocumentMetadataAssembler","assemble","context","strapi","strapiVersion","config","get","metadata","Map","set","metadataObject","Object","fromEntries","assign","output","data"],"mappings":";;;;;;AAMA,MAAMA,QAAQC,sBAAAA,CAAe,oBAAA,CAAA;AAEtB,MAAMC,yBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;QACvC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAAA;AAEnB,QAAA,MAAME,aAAAA,GAAgBD,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAS,aAAA,CAAA;QAEhDR,KAAAA,CAAM,CAAC,wCAAwC,CAAC,EAAE;AAAEM,YAAAA;AAAc,SAAA,CAAA;AAElE,QAAA,MAAMG,QAAAA,GAAW,IAAIC,GAAAA,EAAAA,CAClBC,GAAG,CAAC,SAAA,EAAW,OAAA,CAAA,CACfA,GAAG,CAAC,cAAA,EAAgB,QAAA,CAAA,CACpBA,GAAG,CAAC,kBAAA,EAAoBL,aAAAA,CAAAA;QAE3B,MAAMM,cAAAA,GAAiBC,MAAAA,CAAOC,WAAW,CAACL,QAAAA,CAAAA;QAE1CT,KAAAA,CAAM,CAAC,iCAAiC,CAAC,EAAEY,cAAAA,CAAAA;AAE3CC,QAAAA,MAAAA,CAAOE,MAAM,CAACX,OAAAA,CAAQY,MAAM,CAACC,IAAI,EAAEL,cAAAA,CAAAA;AACrC,IAAA;AACF;;;;"}
@@ -0,0 +1,21 @@
1
+ import { createDebugger } from '../../utils/debug.mjs';
2
+ import 'node:crypto';
3
+ import 'zod/v4';
4
+
5
+ const debug = createDebugger('assembler:metadata');
6
+ class DocumentMetadataAssembler {
7
+ assemble(context) {
8
+ const { strapi } = context;
9
+ const strapiVersion = strapi.config.get('info.strapi');
10
+ debug(`assembling document's metadata for %O...`, {
11
+ strapiVersion
12
+ });
13
+ const metadata = new Map().set('openapi', '3.1.0').set('x-powered-by', 'strapi').set('x-strapi-version', strapiVersion);
14
+ const metadataObject = Object.fromEntries(metadata);
15
+ debug(`document's metadata assembled: %O`, metadataObject);
16
+ Object.assign(context.output.data, metadataObject);
17
+ }
18
+ }
19
+
20
+ export { DocumentMetadataAssembler };
21
+ //# sourceMappingURL=metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.mjs","sources":["../../../src/assemblers/document/metadata.ts"],"sourcesContent":["import type { DocumentContext } from '../../types';\n\nimport { createDebugger } from '../../utils';\n\nimport type { Assembler } from '..';\n\nconst debug = createDebugger('assembler:metadata');\n\nexport class DocumentMetadataAssembler implements Assembler.Document {\n assemble(context: DocumentContext): void {\n const { strapi } = context;\n\n const strapiVersion = strapi.config.get<string>('info.strapi');\n\n debug(`assembling document's metadata for %O...`, { strapiVersion });\n\n const metadata = new Map<string, unknown>()\n .set('openapi', '3.1.0')\n .set('x-powered-by', 'strapi')\n .set('x-strapi-version', strapiVersion);\n\n const metadataObject = Object.fromEntries(metadata);\n\n debug(`document's metadata assembled: %O`, metadataObject);\n\n Object.assign(context.output.data, metadataObject);\n }\n}\n"],"names":["debug","createDebugger","DocumentMetadataAssembler","assemble","context","strapi","strapiVersion","config","get","metadata","Map","set","metadataObject","Object","fromEntries","assign","output","data"],"mappings":";;;;AAMA,MAAMA,QAAQC,cAAAA,CAAe,oBAAA,CAAA;AAEtB,MAAMC,yBAAAA,CAAAA;AACXC,IAAAA,QAAAA,CAASC,OAAwB,EAAQ;QACvC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAAA;AAEnB,QAAA,MAAME,aAAAA,GAAgBD,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAS,aAAA,CAAA;QAEhDR,KAAAA,CAAM,CAAC,wCAAwC,CAAC,EAAE;AAAEM,YAAAA;AAAc,SAAA,CAAA;AAElE,QAAA,MAAMG,QAAAA,GAAW,IAAIC,GAAAA,EAAAA,CAClBC,GAAG,CAAC,SAAA,EAAW,OAAA,CAAA,CACfA,GAAG,CAAC,cAAA,EAAgB,QAAA,CAAA,CACpBA,GAAG,CAAC,kBAAA,EAAoBL,aAAAA,CAAAA;QAE3B,MAAMM,cAAAA,GAAiBC,MAAAA,CAAOC,WAAW,CAACL,QAAAA,CAAAA;QAE1CT,KAAAA,CAAM,CAAC,iCAAiC,CAAC,EAAEY,cAAAA,CAAAA;AAE3CC,QAAAA,MAAAA,CAAOE,MAAM,CAACX,OAAAA,CAAQY,MAAM,CAACC,IAAI,EAAEL,cAAAA,CAAAA;AACrC,IAAA;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ import type { Assembler } from '../..';
2
+ export declare class PathAssemblerFactory {
3
+ createAll(): Assembler.Path[];
4
+ private _createPathItemAssembler;
5
+ }
6
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/assemblers/document/path/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,qBAAa,oBAAoB;IAC/B,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE;IAI7B,OAAO,CAAC,wBAAwB;CAQjC"}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ require('debug');
4
+ require('node:crypto');
5
+ require('zod/v4');
6
+ var pathItem = require('../../../context/factories/path-item.js');
7
+ var pathItem$1 = require('./path-item/path-item.js');
8
+ var factory = require('./path-item/factory.js');
9
+ require('./path-item/operation/operation.js');
10
+ require('./path-item/operation/operation-id.js');
11
+ require('./path-item/operation/parameters.js');
12
+ require('./path-item/operation/tags.js');
13
+
14
+ class PathAssemblerFactory {
15
+ createAll() {
16
+ return [
17
+ this._createPathItemAssembler()
18
+ ];
19
+ }
20
+ _createPathItemAssembler(assemblerFactory = new factory.PathItemAssemblerFactory(), contextFactory = new pathItem.PathItemContextFactory()) {
21
+ const assemblers = assemblerFactory.createAll();
22
+ return new pathItem$1.PathItemAssembler(assemblers, contextFactory);
23
+ }
24
+ }
25
+
26
+ exports.PathAssemblerFactory = PathAssemblerFactory;
27
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sources":["../../../../src/assemblers/document/path/factory.ts"],"sourcesContent":["import { PathItemContextFactory } from '../../../context';\n\nimport type { Assembler } from '../..';\n\nimport { PathItemAssembler, PathItemAssemblerFactory } from './path-item';\n\nexport class PathAssemblerFactory {\n createAll(): Assembler.Path[] {\n return [this._createPathItemAssembler()];\n }\n\n private _createPathItemAssembler(\n assemblerFactory: PathItemAssemblerFactory = new PathItemAssemblerFactory(),\n contextFactory: PathItemContextFactory = new PathItemContextFactory()\n ) {\n const assemblers = assemblerFactory.createAll();\n\n return new PathItemAssembler(assemblers, contextFactory);\n }\n}\n"],"names":["PathAssemblerFactory","createAll","_createPathItemAssembler","assemblerFactory","PathItemAssemblerFactory","contextFactory","PathItemContextFactory","assemblers","PathItemAssembler"],"mappings":";;;;;;;;;;;;;AAMO,MAAMA,oBAAAA,CAAAA;IACXC,SAAAA,GAA8B;QAC5B,OAAO;AAAC,YAAA,IAAI,CAACC,wBAAwB;AAAG,SAAA;AAC1C,IAAA;AAEQA,IAAAA,wBAAAA,CACNC,mBAA6C,IAAIC,gCAAAA,EAA0B,EAC3EC,cAAAA,GAAyC,IAAIC,iCAAwB,EACrE;QACA,MAAMC,UAAAA,GAAaJ,iBAAiBF,SAAS,EAAA;QAE7C,OAAO,IAAIO,6BAAkBD,UAAAA,EAAYF,cAAAA,CAAAA;AAC3C,IAAA;AACF;;;;"}
@@ -0,0 +1,25 @@
1
+ import 'debug';
2
+ import 'node:crypto';
3
+ import 'zod/v4';
4
+ import { PathItemContextFactory } from '../../../context/factories/path-item.mjs';
5
+ import { PathItemAssembler } from './path-item/path-item.mjs';
6
+ import { PathItemAssemblerFactory } from './path-item/factory.mjs';
7
+ import './path-item/operation/operation.mjs';
8
+ import './path-item/operation/operation-id.mjs';
9
+ import './path-item/operation/parameters.mjs';
10
+ import './path-item/operation/tags.mjs';
11
+
12
+ class PathAssemblerFactory {
13
+ createAll() {
14
+ return [
15
+ this._createPathItemAssembler()
16
+ ];
17
+ }
18
+ _createPathItemAssembler(assemblerFactory = new PathItemAssemblerFactory(), contextFactory = new PathItemContextFactory()) {
19
+ const assemblers = assemblerFactory.createAll();
20
+ return new PathItemAssembler(assemblers, contextFactory);
21
+ }
22
+ }
23
+
24
+ export { PathAssemblerFactory };
25
+ //# sourceMappingURL=factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.mjs","sources":["../../../../src/assemblers/document/path/factory.ts"],"sourcesContent":["import { PathItemContextFactory } from '../../../context';\n\nimport type { Assembler } from '../..';\n\nimport { PathItemAssembler, PathItemAssemblerFactory } from './path-item';\n\nexport class PathAssemblerFactory {\n createAll(): Assembler.Path[] {\n return [this._createPathItemAssembler()];\n }\n\n private _createPathItemAssembler(\n assemblerFactory: PathItemAssemblerFactory = new PathItemAssemblerFactory(),\n contextFactory: PathItemContextFactory = new PathItemContextFactory()\n ) {\n const assemblers = assemblerFactory.createAll();\n\n return new PathItemAssembler(assemblers, contextFactory);\n }\n}\n"],"names":["PathAssemblerFactory","createAll","_createPathItemAssembler","assemblerFactory","PathItemAssemblerFactory","contextFactory","PathItemContextFactory","assemblers","PathItemAssembler"],"mappings":";;;;;;;;;;;AAMO,MAAMA,oBAAAA,CAAAA;IACXC,SAAAA,GAA8B;QAC5B,OAAO;AAAC,YAAA,IAAI,CAACC,wBAAwB;AAAG,SAAA;AAC1C,IAAA;AAEQA,IAAAA,wBAAAA,CACNC,mBAA6C,IAAIC,wBAAAA,EAA0B,EAC3EC,cAAAA,GAAyC,IAAIC,wBAAwB,EACrE;QACA,MAAMC,UAAAA,GAAaJ,iBAAiBF,SAAS,EAAA;QAE7C,OAAO,IAAIO,kBAAkBD,UAAAA,EAAYF,cAAAA,CAAAA;AAC3C,IAAA;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ export { DocumentPathsAssembler } from './path';
2
+ export { PathAssemblerFactory } from './factory';
3
+ export * as PathItem from './path-item';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/assemblers/document/path/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Assembler } from '../../..';
2
+ export declare class PathItemAssemblerFactory {
3
+ createAll(): Assembler.PathItem[];
4
+ private _createOperationAssembler;
5
+ }
6
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/assemblers/document/path/path-item/factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,qBAAa,wBAAwB;IACnC,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE;IAIjC,OAAO,CAAC,yBAAyB;CAQlC"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ require('debug');
4
+ require('node:crypto');
5
+ require('zod/v4');
6
+ var operation = require('../../../../context/factories/operation.js');
7
+ var operation$1 = require('./operation/operation.js');
8
+ var factory = require('./operation/factory.js');
9
+ require('./operation/parameters.js');
10
+ require('./operation/operation-id.js');
11
+ require('./operation/tags.js');
12
+
13
+ class PathItemAssemblerFactory {
14
+ createAll() {
15
+ return [
16
+ this._createOperationAssembler()
17
+ ];
18
+ }
19
+ _createOperationAssembler(assemblerFactory = new factory.OperationAssemblerFactory(), contextFactory = new operation.OperationContextFactory()) {
20
+ const assemblers = assemblerFactory.createAll();
21
+ return new operation$1.OperationAssembler(assemblers, contextFactory);
22
+ }
23
+ }
24
+
25
+ exports.PathItemAssemblerFactory = PathItemAssemblerFactory;
26
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sources":["../../../../../src/assemblers/document/path/path-item/factory.ts"],"sourcesContent":["import { OperationContextFactory } from '../../../../context';\nimport { OperationAssembler, OperationAssemblerFactory } from './operation';\n\nimport type { Assembler } from '../../..';\n\nexport class PathItemAssemblerFactory {\n createAll(): Assembler.PathItem[] {\n return [this._createOperationAssembler()];\n }\n\n private _createOperationAssembler(\n assemblerFactory: OperationAssemblerFactory = new OperationAssemblerFactory(),\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n const assemblers = assemblerFactory.createAll();\n\n return new OperationAssembler(assemblers, contextFactory);\n }\n}\n"],"names":["PathItemAssemblerFactory","createAll","_createOperationAssembler","assemblerFactory","OperationAssemblerFactory","contextFactory","OperationContextFactory","assemblers","OperationAssembler"],"mappings":";;;;;;;;;;;;AAKO,MAAMA,wBAAAA,CAAAA;IACXC,SAAAA,GAAkC;QAChC,OAAO;AAAC,YAAA,IAAI,CAACC,yBAAyB;AAAG,SAAA;AAC3C,IAAA;AAEQA,IAAAA,yBAAAA,CACNC,mBAA8C,IAAIC,iCAAAA,EAA2B,EAC7EC,cAAAA,GAA0C,IAAIC,mCAAyB,EACvE;QACA,MAAMC,UAAAA,GAAaJ,iBAAiBF,SAAS,EAAA;QAE7C,OAAO,IAAIO,+BAAmBD,UAAAA,EAAYF,cAAAA,CAAAA;AAC5C,IAAA;AACF;;;;"}
@@ -0,0 +1,24 @@
1
+ import 'debug';
2
+ import 'node:crypto';
3
+ import 'zod/v4';
4
+ import { OperationContextFactory } from '../../../../context/factories/operation.mjs';
5
+ import { OperationAssembler } from './operation/operation.mjs';
6
+ import { OperationAssemblerFactory } from './operation/factory.mjs';
7
+ import './operation/parameters.mjs';
8
+ import './operation/operation-id.mjs';
9
+ import './operation/tags.mjs';
10
+
11
+ class PathItemAssemblerFactory {
12
+ createAll() {
13
+ return [
14
+ this._createOperationAssembler()
15
+ ];
16
+ }
17
+ _createOperationAssembler(assemblerFactory = new OperationAssemblerFactory(), contextFactory = new OperationContextFactory()) {
18
+ const assemblers = assemblerFactory.createAll();
19
+ return new OperationAssembler(assemblers, contextFactory);
20
+ }
21
+ }
22
+
23
+ export { PathItemAssemblerFactory };
24
+ //# sourceMappingURL=factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.mjs","sources":["../../../../../src/assemblers/document/path/path-item/factory.ts"],"sourcesContent":["import { OperationContextFactory } from '../../../../context';\nimport { OperationAssembler, OperationAssemblerFactory } from './operation';\n\nimport type { Assembler } from '../../..';\n\nexport class PathItemAssemblerFactory {\n createAll(): Assembler.PathItem[] {\n return [this._createOperationAssembler()];\n }\n\n private _createOperationAssembler(\n assemblerFactory: OperationAssemblerFactory = new OperationAssemblerFactory(),\n contextFactory: OperationContextFactory = new OperationContextFactory()\n ) {\n const assemblers = assemblerFactory.createAll();\n\n return new OperationAssembler(assemblers, contextFactory);\n }\n}\n"],"names":["PathItemAssemblerFactory","createAll","_createOperationAssembler","assemblerFactory","OperationAssemblerFactory","contextFactory","OperationContextFactory","assemblers","OperationAssembler"],"mappings":";;;;;;;;;;AAKO,MAAMA,wBAAAA,CAAAA;IACXC,SAAAA,GAAkC;QAChC,OAAO;AAAC,YAAA,IAAI,CAACC,yBAAyB;AAAG,SAAA;AAC3C,IAAA;AAEQA,IAAAA,yBAAAA,CACNC,mBAA8C,IAAIC,yBAAAA,EAA2B,EAC7EC,cAAAA,GAA0C,IAAIC,yBAAyB,EACvE;QACA,MAAMC,UAAAA,GAAaJ,iBAAiBF,SAAS,EAAA;QAE7C,OAAO,IAAIO,mBAAmBD,UAAAA,EAAYF,cAAAA,CAAAA;AAC5C,IAAA;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ export { PathItemAssembler } from './path-item';
2
+ export { PathItemAssemblerFactory } from './factory';
3
+ export { OperationAssembler } from './operation';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/assemblers/document/path/path-item/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { OperationContext } from '../../../../../types';
3
+ import type { Assembler } from '../../../..';
4
+ export declare class BodyAssembler implements Assembler.Operation {
5
+ assemble(context: OperationContext, route: Core.Route): void;
6
+ }
7
+ //# sourceMappingURL=body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../../../../src/assemblers/document/path/path-item/operation/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,aAAc,YAAW,SAAS,CAAC,SAAS;IACvD,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;CAmB7D"}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ require('debug');
4
+ var zod = require('../../../../../utils/zod.js');
5
+
6
+ class BodyAssembler {
7
+ assemble(context, route) {
8
+ const { output } = context;
9
+ const { body } = route.request ?? {};
10
+ // If no `body` property is defined, we don't need to do anything
11
+ if (!body) {
12
+ return;
13
+ }
14
+ const content = {};
15
+ for (const [media, zodSchema] of Object.entries(body)){
16
+ content[media] = {
17
+ schema: zod.zodToOpenAPI(zodSchema)
18
+ };
19
+ }
20
+ output.data.requestBody = {
21
+ content
22
+ };
23
+ }
24
+ }
25
+
26
+ exports.BodyAssembler = BodyAssembler;
27
+ //# sourceMappingURL=body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.js","sources":["../../../../../../src/assemblers/document/path/path-item/operation/body.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport type { OperationContext } from '../../../../../types';\nimport type { Assembler } from '../../../..';\n\nimport { zodToOpenAPI } from '../../../../../utils';\n\nexport class BodyAssembler implements Assembler.Operation {\n assemble(context: OperationContext, route: Core.Route): void {\n const { output } = context;\n const { body } = route.request ?? {};\n\n // If no `body` property is defined, we don't need to do anything\n if (!body) {\n return;\n }\n\n const content: Record<string, OpenAPIV3_1.MediaTypeObject> = {};\n\n for (const [media, zodSchema] of Object.entries(body)) {\n content[media] = {\n schema: zodToOpenAPI(zodSchema) as any,\n };\n }\n\n output.data.requestBody = { content };\n }\n}\n"],"names":["BodyAssembler","assemble","context","route","output","body","request","content","media","zodSchema","Object","entries","schema","zodToOpenAPI","data","requestBody"],"mappings":";;;;;AAQO,MAAMA,aAAAA,CAAAA;IACXC,QAAAA,CAASC,OAAyB,EAAEC,KAAiB,EAAQ;QAC3D,MAAM,EAAEC,MAAM,EAAE,GAAGF,OAAAA;AACnB,QAAA,MAAM,EAAEG,IAAI,EAAE,GAAGF,KAAAA,CAAMG,OAAO,IAAI,EAAC;;AAGnC,QAAA,IAAI,CAACD,IAAAA,EAAM;AACT,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,UAAuD,EAAC;QAE9D,KAAK,MAAM,CAACC,KAAAA,EAAOC,SAAAA,CAAU,IAAIC,MAAAA,CAAOC,OAAO,CAACN,IAAAA,CAAAA,CAAO;YACrDE,OAAO,CAACC,MAAM,GAAG;AACfI,gBAAAA,MAAAA,EAAQC,gBAAAA,CAAaJ,SAAAA;AACvB,aAAA;AACF,QAAA;QAEAL,MAAAA,CAAOU,IAAI,CAACC,WAAW,GAAG;AAAER,YAAAA;AAAQ,SAAA;AACtC,IAAA;AACF;;;;"}