@strapi/plugin-documentation 0.0.0-experimental.62ce06180fe9a772eaeb3d43d238b26644f39f7c → 0.0.0-experimental.6340da17068c3bed7fb006e7bcc554c71129e282

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 (396) hide show
  1. package/LICENSE +18 -3
  2. package/README.md +2 -2
  3. package/dist/admin/components/SettingsForm.js +203 -0
  4. package/dist/admin/components/SettingsForm.js.map +1 -0
  5. package/dist/admin/components/SettingsForm.mjs +180 -0
  6. package/dist/admin/components/SettingsForm.mjs.map +1 -0
  7. package/dist/admin/constants.js +47 -0
  8. package/dist/admin/constants.js.map +1 -0
  9. package/dist/admin/constants.mjs +45 -0
  10. package/dist/admin/constants.mjs.map +1 -0
  11. package/dist/admin/index.js +96 -4
  12. package/dist/admin/index.js.map +1 -1
  13. package/dist/admin/index.mjs +91 -4
  14. package/dist/admin/index.mjs.map +1 -1
  15. package/dist/admin/pages/App.js +254 -0
  16. package/dist/admin/pages/App.js.map +1 -0
  17. package/dist/admin/pages/App.mjs +232 -0
  18. package/dist/admin/pages/App.mjs.map +1 -0
  19. package/dist/admin/pages/Settings.js +54 -0
  20. package/dist/admin/pages/Settings.js.map +1 -0
  21. package/dist/admin/pages/Settings.mjs +52 -0
  22. package/dist/admin/pages/Settings.mjs.map +1 -0
  23. package/dist/admin/pluginId.js +6 -0
  24. package/dist/admin/pluginId.js.map +1 -0
  25. package/dist/admin/pluginId.mjs +4 -0
  26. package/dist/admin/pluginId.mjs.map +1 -0
  27. package/dist/admin/services/api.js +55 -0
  28. package/dist/admin/services/api.js.map +1 -0
  29. package/dist/admin/services/api.mjs +50 -0
  30. package/dist/admin/services/api.mjs.map +1 -0
  31. package/dist/admin/src/index.d.ts +3 -2
  32. package/dist/admin/src/pages/tests/App.test.d.ts +1 -0
  33. package/dist/admin/src/pages/tests/Settings.test.d.ts +1 -0
  34. package/dist/admin/src/services/api.d.ts +4 -4
  35. package/dist/admin/translations/ar.json.js +25 -0
  36. package/dist/admin/translations/ar.json.js.map +1 -0
  37. package/dist/admin/translations/ar.json.mjs +23 -0
  38. package/dist/admin/translations/ar.json.mjs.map +1 -0
  39. package/dist/admin/translations/cs.json.js +47 -0
  40. package/dist/admin/translations/cs.json.js.map +1 -0
  41. package/dist/admin/translations/cs.json.mjs +45 -0
  42. package/dist/admin/translations/cs.json.mjs.map +1 -0
  43. package/dist/admin/translations/da.json.js +44 -0
  44. package/dist/admin/translations/da.json.js.map +1 -0
  45. package/dist/admin/translations/da.json.mjs +42 -0
  46. package/dist/admin/translations/da.json.mjs.map +1 -0
  47. package/dist/admin/translations/de.json.js +47 -0
  48. package/dist/admin/translations/de.json.js.map +1 -0
  49. package/dist/admin/translations/de.json.mjs +45 -0
  50. package/dist/admin/translations/de.json.mjs.map +1 -0
  51. package/dist/admin/translations/en.json.js +47 -0
  52. package/dist/admin/translations/en.json.js.map +1 -0
  53. package/dist/admin/translations/en.json.mjs +45 -0
  54. package/dist/admin/translations/en.json.mjs.map +1 -0
  55. package/dist/admin/translations/es.json.js +47 -0
  56. package/dist/admin/translations/es.json.js.map +1 -0
  57. package/dist/admin/translations/es.json.mjs +45 -0
  58. package/dist/admin/translations/es.json.mjs.map +1 -0
  59. package/dist/admin/translations/fr.json.js +31 -0
  60. package/dist/admin/translations/fr.json.js.map +1 -0
  61. package/dist/admin/translations/fr.json.mjs +29 -0
  62. package/dist/admin/translations/fr.json.mjs.map +1 -0
  63. package/dist/admin/translations/id.json.js +29 -0
  64. package/dist/admin/translations/id.json.js.map +1 -0
  65. package/dist/admin/translations/id.json.mjs +27 -0
  66. package/dist/admin/translations/id.json.mjs.map +1 -0
  67. package/dist/admin/translations/it.json.js +31 -0
  68. package/dist/admin/translations/it.json.js.map +1 -0
  69. package/dist/admin/translations/it.json.mjs +29 -0
  70. package/dist/admin/translations/it.json.mjs.map +1 -0
  71. package/dist/admin/translations/ko.json.js +44 -0
  72. package/dist/admin/translations/ko.json.js.map +1 -0
  73. package/dist/admin/translations/ko.json.mjs +42 -0
  74. package/dist/admin/translations/ko.json.mjs.map +1 -0
  75. package/dist/admin/translations/ms.json.js +28 -0
  76. package/dist/admin/translations/ms.json.js.map +1 -0
  77. package/dist/admin/translations/ms.json.mjs +26 -0
  78. package/dist/admin/translations/ms.json.mjs.map +1 -0
  79. package/dist/admin/translations/nl.json.js +26 -0
  80. package/dist/admin/translations/nl.json.js.map +1 -0
  81. package/dist/admin/translations/nl.json.mjs +24 -0
  82. package/dist/admin/translations/nl.json.mjs.map +1 -0
  83. package/dist/admin/translations/pl.json.js +47 -0
  84. package/dist/admin/translations/pl.json.js.map +1 -0
  85. package/dist/admin/translations/pl.json.mjs +45 -0
  86. package/dist/admin/translations/pl.json.mjs.map +1 -0
  87. package/dist/admin/translations/pt-BR.json.js +26 -0
  88. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  89. package/dist/admin/translations/pt-BR.json.mjs +24 -0
  90. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  91. package/dist/admin/translations/pt.json.js +26 -0
  92. package/dist/admin/translations/pt.json.js.map +1 -0
  93. package/dist/admin/translations/pt.json.mjs +24 -0
  94. package/dist/admin/translations/pt.json.mjs.map +1 -0
  95. package/dist/admin/translations/ru.json.js +47 -0
  96. package/dist/admin/translations/ru.json.js.map +1 -0
  97. package/dist/admin/translations/ru.json.mjs +45 -0
  98. package/dist/admin/translations/ru.json.mjs.map +1 -0
  99. package/dist/admin/translations/sk.json.js +47 -0
  100. package/dist/admin/translations/sk.json.js.map +1 -0
  101. package/dist/admin/translations/sk.json.mjs +45 -0
  102. package/dist/admin/translations/sk.json.mjs.map +1 -0
  103. package/dist/admin/translations/sv.json.js +44 -0
  104. package/dist/admin/translations/sv.json.js.map +1 -0
  105. package/dist/admin/translations/sv.json.mjs +42 -0
  106. package/dist/admin/translations/sv.json.mjs.map +1 -0
  107. package/dist/admin/translations/th.json.js +29 -0
  108. package/dist/admin/translations/th.json.js.map +1 -0
  109. package/dist/admin/translations/th.json.mjs +27 -0
  110. package/dist/admin/translations/th.json.mjs.map +1 -0
  111. package/dist/admin/translations/tr.json.js +44 -0
  112. package/dist/admin/translations/tr.json.js.map +1 -0
  113. package/dist/admin/translations/tr.json.mjs +42 -0
  114. package/dist/admin/translations/tr.json.mjs.map +1 -0
  115. package/dist/admin/translations/uk.json.js +47 -0
  116. package/dist/admin/translations/uk.json.js.map +1 -0
  117. package/dist/admin/translations/uk.json.mjs +45 -0
  118. package/dist/admin/translations/uk.json.mjs.map +1 -0
  119. package/dist/admin/translations/vi.json.js +29 -0
  120. package/dist/admin/translations/vi.json.js.map +1 -0
  121. package/dist/admin/translations/vi.json.mjs +27 -0
  122. package/dist/admin/translations/vi.json.mjs.map +1 -0
  123. package/dist/admin/translations/zh-Hans.json.js +33 -0
  124. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  125. package/dist/admin/translations/zh-Hans.json.mjs +31 -0
  126. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  127. package/dist/admin/translations/zh.json.js +44 -0
  128. package/dist/admin/translations/zh.json.js.map +1 -0
  129. package/dist/admin/translations/zh.json.mjs +42 -0
  130. package/dist/admin/translations/zh.json.mjs.map +1 -0
  131. package/dist/admin/utils/baseQuery.js +8 -0
  132. package/dist/admin/utils/baseQuery.js.map +1 -0
  133. package/dist/admin/utils/baseQuery.mjs +6 -0
  134. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  135. package/dist/admin/utils/getTrad.js +8 -0
  136. package/dist/admin/utils/getTrad.js.map +1 -0
  137. package/dist/admin/utils/getTrad.mjs +6 -0
  138. package/dist/admin/utils/getTrad.mjs.map +1 -0
  139. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  140. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  141. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  142. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  143. package/dist/server/bootstrap.js +57 -0
  144. package/dist/server/bootstrap.js.map +1 -0
  145. package/dist/server/bootstrap.mjs +55 -0
  146. package/dist/server/bootstrap.mjs.map +1 -0
  147. package/dist/server/config/default-plugin-config.js +88 -0
  148. package/dist/server/config/default-plugin-config.js.map +1 -0
  149. package/dist/server/config/default-plugin-config.mjs +86 -0
  150. package/dist/server/config/default-plugin-config.mjs.map +1 -0
  151. package/dist/server/config/index.js +10 -0
  152. package/dist/server/config/index.js.map +1 -0
  153. package/dist/server/config/index.mjs +8 -0
  154. package/dist/server/config/index.mjs.map +1 -0
  155. package/dist/server/controllers/documentation.js +194 -0
  156. package/dist/server/controllers/documentation.js.map +1 -0
  157. package/dist/server/controllers/documentation.mjs +182 -0
  158. package/dist/server/controllers/documentation.mjs.map +1 -0
  159. package/dist/server/controllers/index.js +10 -0
  160. package/dist/server/controllers/index.js.map +1 -0
  161. package/dist/server/controllers/index.mjs +8 -0
  162. package/dist/server/controllers/index.mjs.map +1 -0
  163. package/dist/server/index.js +18 -1261
  164. package/dist/server/index.js.map +1 -1
  165. package/dist/server/index.mjs +17 -1237
  166. package/dist/server/index.mjs.map +1 -1
  167. package/dist/server/middlewares/documentation.js +33 -0
  168. package/dist/server/middlewares/documentation.js.map +1 -0
  169. package/dist/server/middlewares/documentation.mjs +25 -0
  170. package/dist/server/middlewares/documentation.mjs.map +1 -0
  171. package/dist/server/middlewares/restrict-access.js +23 -0
  172. package/dist/server/middlewares/restrict-access.js.map +1 -0
  173. package/dist/server/middlewares/restrict-access.mjs +21 -0
  174. package/dist/server/middlewares/restrict-access.mjs.map +1 -0
  175. package/dist/server/public/index.html.js +6 -0
  176. package/dist/server/public/index.html.js.map +1 -0
  177. package/dist/server/public/index.html.mjs +4 -0
  178. package/dist/server/public/index.html.mjs.map +1 -0
  179. package/dist/server/public/login.html.js +6 -0
  180. package/dist/server/public/login.html.js.map +1 -0
  181. package/dist/server/public/login.html.mjs +4 -0
  182. package/dist/server/public/login.html.mjs.map +1 -0
  183. package/dist/server/register.js +12 -0
  184. package/dist/server/register.js.map +1 -0
  185. package/dist/server/register.mjs +10 -0
  186. package/dist/server/register.mjs.map +1 -0
  187. package/dist/server/routes/index.js +106 -0
  188. package/dist/server/routes/index.js.map +1 -0
  189. package/dist/server/routes/index.mjs +104 -0
  190. package/dist/server/routes/index.mjs.map +1 -0
  191. package/dist/server/services/documentation.js +193 -0
  192. package/dist/server/services/documentation.js.map +1 -0
  193. package/dist/server/services/documentation.mjs +186 -0
  194. package/dist/server/services/documentation.mjs.map +1 -0
  195. package/dist/server/services/helpers/build-api-endpoint-path.js +166 -0
  196. package/dist/server/services/helpers/build-api-endpoint-path.js.map +1 -0
  197. package/dist/server/services/helpers/build-api-endpoint-path.mjs +141 -0
  198. package/dist/server/services/helpers/build-api-endpoint-path.mjs.map +1 -0
  199. package/dist/server/services/helpers/build-component-schema.js +178 -0
  200. package/dist/server/services/helpers/build-component-schema.js.map +1 -0
  201. package/dist/server/services/helpers/build-component-schema.mjs +172 -0
  202. package/dist/server/services/helpers/build-component-schema.mjs.map +1 -0
  203. package/dist/server/services/helpers/utils/clean-schema-attributes.js +315 -0
  204. package/dist/server/services/helpers/utils/clean-schema-attributes.js.map +1 -0
  205. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs +313 -0
  206. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs.map +1 -0
  207. package/dist/server/services/helpers/utils/get-api-responses.js +88 -0
  208. package/dist/server/services/helpers/utils/get-api-responses.js.map +1 -0
  209. package/dist/server/services/helpers/utils/get-api-responses.mjs +86 -0
  210. package/dist/server/services/helpers/utils/get-api-responses.mjs.map +1 -0
  211. package/dist/server/services/helpers/utils/get-schema-data.js +57 -0
  212. package/dist/server/services/helpers/utils/get-schema-data.js.map +1 -0
  213. package/dist/server/services/helpers/utils/get-schema-data.mjs +55 -0
  214. package/dist/server/services/helpers/utils/get-schema-data.mjs.map +1 -0
  215. package/dist/server/services/helpers/utils/loop-content-type-names.js +44 -0
  216. package/dist/server/services/helpers/utils/loop-content-type-names.js.map +1 -0
  217. package/dist/server/services/helpers/utils/loop-content-type-names.mjs +38 -0
  218. package/dist/server/services/helpers/utils/loop-content-type-names.mjs.map +1 -0
  219. package/dist/server/services/helpers/utils/pascal-case.js +14 -0
  220. package/dist/server/services/helpers/utils/pascal-case.js.map +1 -0
  221. package/dist/server/services/helpers/utils/pascal-case.mjs +8 -0
  222. package/dist/server/services/helpers/utils/pascal-case.mjs.map +1 -0
  223. package/dist/server/services/helpers/utils/query-params.js +109 -0
  224. package/dist/server/services/helpers/utils/query-params.js.map +1 -0
  225. package/dist/server/services/helpers/utils/query-params.mjs +107 -0
  226. package/dist/server/services/helpers/utils/query-params.mjs.map +1 -0
  227. package/dist/server/services/helpers/utils/routes.js +11 -0
  228. package/dist/server/services/helpers/utils/routes.js.map +1 -0
  229. package/dist/server/services/helpers/utils/routes.mjs +9 -0
  230. package/dist/server/services/helpers/utils/routes.mjs.map +1 -0
  231. package/dist/server/services/index.js +13 -0
  232. package/dist/server/services/index.js.map +1 -0
  233. package/dist/server/services/index.mjs +11 -0
  234. package/dist/server/services/index.mjs.map +1 -0
  235. package/dist/server/services/override.js +45 -0
  236. package/dist/server/services/override.js.map +1 -0
  237. package/dist/server/services/override.mjs +43 -0
  238. package/dist/server/services/override.mjs.map +1 -0
  239. package/dist/server/services/utils/get-plugins-that-need-documentation.js +24 -0
  240. package/dist/server/services/utils/get-plugins-that-need-documentation.js.map +1 -0
  241. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs +22 -0
  242. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs.map +1 -0
  243. package/dist/server/src/bootstrap.d.ts.map +1 -1
  244. package/dist/server/src/controllers/documentation.d.ts +2 -2
  245. package/dist/server/src/controllers/documentation.d.ts.map +1 -1
  246. package/dist/server/src/controllers/index.d.ts +2 -3
  247. package/dist/server/src/controllers/index.d.ts.map +1 -1
  248. package/dist/server/src/index.d.ts +5 -6
  249. package/dist/server/src/index.d.ts.map +1 -1
  250. package/dist/server/src/middlewares/documentation.d.ts.map +1 -1
  251. package/dist/server/src/middlewares/restrict-access.d.ts.map +1 -1
  252. package/dist/server/src/routes/index.d.ts +0 -1
  253. package/dist/server/src/routes/index.d.ts.map +1 -1
  254. package/dist/server/src/services/documentation.d.ts.map +1 -1
  255. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts.map +1 -1
  256. package/dist/server/src/services/helpers/build-component-schema.d.ts.map +1 -1
  257. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts +1 -1
  258. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts.map +1 -1
  259. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts.map +1 -1
  260. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts.map +1 -1
  261. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts.map +1 -1
  262. package/dist/server/src/services/helpers/utils/pascal-case.d.ts.map +1 -1
  263. package/dist/server/src/services/helpers/utils/query-params.d.ts.map +1 -1
  264. package/dist/server/src/services/helpers/utils/routes.d.ts.map +1 -1
  265. package/dist/server/src/services/index.d.ts +3 -3
  266. package/dist/server/src/services/index.d.ts.map +1 -1
  267. package/dist/server/src/services/override.d.ts.map +1 -1
  268. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts.map +1 -1
  269. package/dist/server/src/utils.d.ts.map +1 -1
  270. package/dist/server/utils.js +10 -0
  271. package/dist/server/utils.js.map +1 -0
  272. package/dist/server/utils.mjs +8 -0
  273. package/dist/server/utils.mjs.map +1 -0
  274. package/dist/tests/server.d.ts +2 -0
  275. package/package.json +35 -31
  276. package/dist/_chunks/App-Cmiagsr-.js +0 -203
  277. package/dist/_chunks/App-Cmiagsr-.js.map +0 -1
  278. package/dist/_chunks/App-pk6g9tYL.mjs +0 -184
  279. package/dist/_chunks/App-pk6g9tYL.mjs.map +0 -1
  280. package/dist/_chunks/Settings-CqLmbMfv.mjs +0 -223
  281. package/dist/_chunks/Settings-CqLmbMfv.mjs.map +0 -1
  282. package/dist/_chunks/Settings-MmkmHoxg.js +0 -243
  283. package/dist/_chunks/Settings-MmkmHoxg.js.map +0 -1
  284. package/dist/_chunks/ar-CkqTE6jh.js +0 -24
  285. package/dist/_chunks/ar-CkqTE6jh.js.map +0 -1
  286. package/dist/_chunks/ar-ckp9T43y.mjs +0 -24
  287. package/dist/_chunks/ar-ckp9T43y.mjs.map +0 -1
  288. package/dist/_chunks/cs-BbyKo6Hc.js +0 -25
  289. package/dist/_chunks/cs-BbyKo6Hc.js.map +0 -1
  290. package/dist/_chunks/cs-ciLYCxgd.mjs +0 -25
  291. package/dist/_chunks/cs-ciLYCxgd.mjs.map +0 -1
  292. package/dist/_chunks/de-CHwC0A85.js +0 -30
  293. package/dist/_chunks/de-CHwC0A85.js.map +0 -1
  294. package/dist/_chunks/de-DqkAUMvP.mjs +0 -30
  295. package/dist/_chunks/de-DqkAUMvP.mjs.map +0 -1
  296. package/dist/_chunks/dk-DgCq8mF-.mjs +0 -43
  297. package/dist/_chunks/dk-DgCq8mF-.mjs.map +0 -1
  298. package/dist/_chunks/dk-qlI2J6S0.js +0 -43
  299. package/dist/_chunks/dk-qlI2J6S0.js.map +0 -1
  300. package/dist/_chunks/en-Cfq2Inmo.js +0 -43
  301. package/dist/_chunks/en-Cfq2Inmo.js.map +0 -1
  302. package/dist/_chunks/en-DfCC9sZn.mjs +0 -43
  303. package/dist/_chunks/en-DfCC9sZn.mjs.map +0 -1
  304. package/dist/_chunks/es-CEiXVnsb.mjs +0 -43
  305. package/dist/_chunks/es-CEiXVnsb.mjs.map +0 -1
  306. package/dist/_chunks/es-DH1GVZe7.js +0 -43
  307. package/dist/_chunks/es-DH1GVZe7.js.map +0 -1
  308. package/dist/_chunks/fr-B1x-Nj5w.js +0 -30
  309. package/dist/_chunks/fr-B1x-Nj5w.js.map +0 -1
  310. package/dist/_chunks/fr-BlX-v4UF.mjs +0 -30
  311. package/dist/_chunks/fr-BlX-v4UF.mjs.map +0 -1
  312. package/dist/_chunks/getTrad-AjYeGjZg.mjs +0 -51
  313. package/dist/_chunks/getTrad-AjYeGjZg.mjs.map +0 -1
  314. package/dist/_chunks/getTrad-CPA7x4Cg.js +0 -50
  315. package/dist/_chunks/getTrad-CPA7x4Cg.js.map +0 -1
  316. package/dist/_chunks/id-CPOl6_EU.mjs +0 -28
  317. package/dist/_chunks/id-CPOl6_EU.mjs.map +0 -1
  318. package/dist/_chunks/id-D3yFE72d.js +0 -28
  319. package/dist/_chunks/id-D3yFE72d.js.map +0 -1
  320. package/dist/_chunks/index-BTFWrNiz.mjs +0 -75
  321. package/dist/_chunks/index-BTFWrNiz.mjs.map +0 -1
  322. package/dist/_chunks/index-Bjeq6z8p.js +0 -100
  323. package/dist/_chunks/index-Bjeq6z8p.js.map +0 -1
  324. package/dist/_chunks/index-CEoG11hQ.mjs +0 -101
  325. package/dist/_chunks/index-CEoG11hQ.mjs.map +0 -1
  326. package/dist/_chunks/index-CYcTK1eg.js +0 -75
  327. package/dist/_chunks/index-CYcTK1eg.js.map +0 -1
  328. package/dist/_chunks/it-DWJI563z.mjs +0 -30
  329. package/dist/_chunks/it-DWJI563z.mjs.map +0 -1
  330. package/dist/_chunks/it-WuNBIqG8.js +0 -30
  331. package/dist/_chunks/it-WuNBIqG8.js.map +0 -1
  332. package/dist/_chunks/ko-CFzSHayG.mjs +0 -43
  333. package/dist/_chunks/ko-CFzSHayG.mjs.map +0 -1
  334. package/dist/_chunks/ko-De5iYa_O.js +0 -43
  335. package/dist/_chunks/ko-De5iYa_O.js.map +0 -1
  336. package/dist/_chunks/login-EQSKn2h7.js +0 -150
  337. package/dist/_chunks/login-EQSKn2h7.js.map +0 -1
  338. package/dist/_chunks/login-KS59cQ6U.mjs +0 -150
  339. package/dist/_chunks/login-KS59cQ6U.mjs.map +0 -1
  340. package/dist/_chunks/ms-CUgPFo4U.mjs +0 -27
  341. package/dist/_chunks/ms-CUgPFo4U.mjs.map +0 -1
  342. package/dist/_chunks/ms-DQfa3FDx.js +0 -27
  343. package/dist/_chunks/ms-DQfa3FDx.js.map +0 -1
  344. package/dist/_chunks/nl-BZHlqphk.js +0 -25
  345. package/dist/_chunks/nl-BZHlqphk.js.map +0 -1
  346. package/dist/_chunks/nl-B_7CHwVD.mjs +0 -25
  347. package/dist/_chunks/nl-B_7CHwVD.mjs.map +0 -1
  348. package/dist/_chunks/pl-DDl5i_mP.js +0 -43
  349. package/dist/_chunks/pl-DDl5i_mP.js.map +0 -1
  350. package/dist/_chunks/pl-DwLr8sw9.mjs +0 -43
  351. package/dist/_chunks/pl-DwLr8sw9.mjs.map +0 -1
  352. package/dist/_chunks/pt-4GQ8ermL.js +0 -25
  353. package/dist/_chunks/pt-4GQ8ermL.js.map +0 -1
  354. package/dist/_chunks/pt-BR-D24CJ0qp.js +0 -25
  355. package/dist/_chunks/pt-BR-D24CJ0qp.js.map +0 -1
  356. package/dist/_chunks/pt-BR-MVXc6V9P.mjs +0 -25
  357. package/dist/_chunks/pt-BR-MVXc6V9P.mjs.map +0 -1
  358. package/dist/_chunks/pt-C2N9fdeh.mjs +0 -25
  359. package/dist/_chunks/pt-C2N9fdeh.mjs.map +0 -1
  360. package/dist/_chunks/ru-BddeNlU0.mjs +0 -43
  361. package/dist/_chunks/ru-BddeNlU0.mjs.map +0 -1
  362. package/dist/_chunks/ru-QwZYcU6K.js +0 -43
  363. package/dist/_chunks/ru-QwZYcU6K.js.map +0 -1
  364. package/dist/_chunks/sk-BmT4uZTG.mjs +0 -28
  365. package/dist/_chunks/sk-BmT4uZTG.mjs.map +0 -1
  366. package/dist/_chunks/sk-DgAXilB1.js +0 -28
  367. package/dist/_chunks/sk-DgAXilB1.js.map +0 -1
  368. package/dist/_chunks/sv-CCLcAo3U.js +0 -43
  369. package/dist/_chunks/sv-CCLcAo3U.js.map +0 -1
  370. package/dist/_chunks/sv-D_-KBtcw.mjs +0 -43
  371. package/dist/_chunks/sv-D_-KBtcw.mjs.map +0 -1
  372. package/dist/_chunks/th-BhgV1BbW.js +0 -28
  373. package/dist/_chunks/th-BhgV1BbW.js.map +0 -1
  374. package/dist/_chunks/th-DkuoSGii.mjs +0 -28
  375. package/dist/_chunks/th-DkuoSGii.mjs.map +0 -1
  376. package/dist/_chunks/tr-BysnAErC.js +0 -43
  377. package/dist/_chunks/tr-BysnAErC.js.map +0 -1
  378. package/dist/_chunks/tr-l-xxK4Yk.mjs +0 -43
  379. package/dist/_chunks/tr-l-xxK4Yk.mjs.map +0 -1
  380. package/dist/_chunks/uk-CNlbntFx.js +0 -27
  381. package/dist/_chunks/uk-CNlbntFx.js.map +0 -1
  382. package/dist/_chunks/uk-Cpmsxyku.mjs +0 -27
  383. package/dist/_chunks/uk-Cpmsxyku.mjs.map +0 -1
  384. package/dist/_chunks/vi-ClWGrFm9.mjs +0 -28
  385. package/dist/_chunks/vi-ClWGrFm9.mjs.map +0 -1
  386. package/dist/_chunks/vi-_ib0GmNl.js +0 -28
  387. package/dist/_chunks/vi-_ib0GmNl.js.map +0 -1
  388. package/dist/_chunks/zh-Glkg1L2g.mjs +0 -43
  389. package/dist/_chunks/zh-Glkg1L2g.mjs.map +0 -1
  390. package/dist/_chunks/zh-Hans-L_5U2KqC.js +0 -32
  391. package/dist/_chunks/zh-Hans-L_5U2KqC.js.map +0 -1
  392. package/dist/_chunks/zh-Hans-XLMwjASk.mjs +0 -32
  393. package/dist/_chunks/zh-Hans-XLMwjASk.mjs.map +0 -1
  394. package/dist/_chunks/zh-aEZZdkOu.js +0 -43
  395. package/dist/_chunks/zh-aEZZdkOu.js.map +0 -1
  396. package/strapi-server.js +0 -3
@@ -0,0 +1,172 @@
1
+ import _ from 'lodash';
2
+ import cleanSchemaAttributes from './utils/clean-schema-attributes.mjs';
3
+ import loopContentTypeNames from './utils/loop-content-type-names.mjs';
4
+ import pascalCase from './utils/pascal-case.mjs';
5
+ import { hasFindMethod } from './utils/routes.mjs';
6
+
7
+ const getRequiredAttributes = (allAttributes)=>{
8
+ const requiredAttributes = [];
9
+ for(const key in allAttributes){
10
+ if (allAttributes[key].required) {
11
+ requiredAttributes.push(key);
12
+ }
13
+ }
14
+ return requiredAttributes;
15
+ };
16
+ /**
17
+ * @description Get all open api schema objects for a given content type
18
+ *
19
+ * @param {object} apiInfo
20
+ * @property {string} apiInfo.uniqueName - Api name | Api name + Content type name
21
+ * @property {object} apiInfo.attributes - Attributes on content type
22
+ * @property {object} apiInfo.routeInfo - The routes for the api
23
+ *
24
+ * @returns {object} Open API schemas
25
+ */ const getAllSchemasForContentType = ({ routeInfo, attributes, uniqueName })=>{
26
+ // Store response and request schemas in an object
27
+ let strapiComponentSchemas = {};
28
+ const schemas = {};
29
+ const typeName = pascalCase(uniqueName);
30
+ // adds a ComponentSchema to the Schemas so it can be used as Ref
31
+ const didAddStrapiComponentsToSchemas = (schemaName, schema)=>{
32
+ if (!Object.keys(schema) || !Object.keys(schema.properties)) return false;
33
+ // Add the Strapi components to the schema
34
+ strapiComponentSchemas = {
35
+ ...strapiComponentSchemas,
36
+ [schemaName]: schema
37
+ };
38
+ return true;
39
+ };
40
+ // Get all the route methods
41
+ const routeMethods = routeInfo.routes.map((route)=>route.method);
42
+ const attributesToOmit = [
43
+ 'createdAt',
44
+ 'updatedAt',
45
+ 'publishedAt',
46
+ 'publishedBy',
47
+ 'updatedBy',
48
+ 'createdBy'
49
+ ];
50
+ const attributesForRequest = _.omit(attributes, attributesToOmit);
51
+ // Get a list of required attribute names
52
+ const requiredRequestAttributes = getRequiredAttributes(attributesForRequest);
53
+ // Build the request schemas when the route has POST or PUT methods
54
+ if (routeMethods.includes('POST') || routeMethods.includes('PUT')) {
55
+ // Build localization requests schemas
56
+ // Build the request schema
57
+ Object.assign(schemas, {
58
+ [`${typeName}Request`]: {
59
+ type: 'object',
60
+ required: [
61
+ 'data'
62
+ ],
63
+ properties: {
64
+ data: {
65
+ ...requiredRequestAttributes.length && {
66
+ required: requiredRequestAttributes
67
+ },
68
+ type: 'object',
69
+ properties: cleanSchemaAttributes(attributesForRequest, {
70
+ isRequest: true,
71
+ didAddStrapiComponentsToSchemas
72
+ })
73
+ }
74
+ }
75
+ }
76
+ });
77
+ }
78
+ // Check for routes that need to return a list
79
+ const hasListOfEntities = routeInfo.routes.filter((route)=>hasFindMethod(route.handler)).length;
80
+ if (hasListOfEntities) {
81
+ // Build the list response schema
82
+ Object.assign(schemas, {
83
+ [`${typeName}ListResponse`]: {
84
+ type: 'object',
85
+ properties: {
86
+ data: {
87
+ type: 'array',
88
+ items: {
89
+ $ref: `#/components/schemas/${typeName}`
90
+ }
91
+ },
92
+ meta: {
93
+ type: 'object',
94
+ properties: {
95
+ pagination: {
96
+ type: 'object',
97
+ properties: {
98
+ page: {
99
+ type: 'integer'
100
+ },
101
+ pageSize: {
102
+ type: 'integer',
103
+ minimum: 25
104
+ },
105
+ pageCount: {
106
+ type: 'integer',
107
+ maximum: 1
108
+ },
109
+ total: {
110
+ type: 'integer'
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ });
119
+ }
120
+ const requiredAttributes = getRequiredAttributes(attributes);
121
+ // Build the response schema
122
+ Object.assign(schemas, {
123
+ [`${typeName}`]: {
124
+ type: 'object',
125
+ ...requiredAttributes.length && {
126
+ required: requiredAttributes
127
+ },
128
+ properties: {
129
+ id: {
130
+ oneOf: [
131
+ {
132
+ type: 'string'
133
+ },
134
+ {
135
+ type: 'number'
136
+ }
137
+ ]
138
+ },
139
+ documentId: {
140
+ type: 'string'
141
+ },
142
+ ...cleanSchemaAttributes(attributes, {
143
+ didAddStrapiComponentsToSchemas
144
+ })
145
+ }
146
+ },
147
+ [`${typeName}Response`]: {
148
+ type: 'object',
149
+ properties: {
150
+ data: {
151
+ $ref: `#/components/schemas/${typeName}`
152
+ },
153
+ meta: {
154
+ type: 'object'
155
+ }
156
+ }
157
+ }
158
+ });
159
+ return {
160
+ ...schemas,
161
+ ...strapiComponentSchemas
162
+ };
163
+ };
164
+ const buildComponentSchema = (api)=>{
165
+ // A reusable loop for building paths and component schemas
166
+ // Uses the api param to build a new set of params for each content type
167
+ // Passes these new params to the function provided
168
+ return loopContentTypeNames(api, getAllSchemasForContentType);
169
+ };
170
+
171
+ export { buildComponentSchema as default };
172
+ //# sourceMappingURL=build-component-schema.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-component-schema.mjs","sources":["../../../../server/src/services/helpers/build-component-schema.ts"],"sourcesContent":["import _ from 'lodash';\n\nimport type { OpenAPIV3 } from 'openapi-types';\nimport type { Core, Struct } from '@strapi/types';\n\nimport cleanSchemaAttributes from './utils/clean-schema-attributes';\nimport loopContentTypeNames from './utils/loop-content-type-names';\nimport pascalCase from './utils/pascal-case';\nimport { hasFindMethod } from './utils/routes';\n\nimport type { Api, ApiInfo } from '../../types';\n\nconst getRequiredAttributes = (allAttributes: Struct.SchemaAttributes) => {\n const requiredAttributes: string[] = [];\n\n for (const key in allAttributes) {\n if (allAttributes[key].required) {\n requiredAttributes.push(key);\n }\n }\n\n return requiredAttributes;\n};\n\n/**\n * @description Get all open api schema objects for a given content type\n *\n * @param {object} apiInfo\n * @property {string} apiInfo.uniqueName - Api name | Api name + Content type name\n * @property {object} apiInfo.attributes - Attributes on content type\n * @property {object} apiInfo.routeInfo - The routes for the api\n *\n * @returns {object} Open API schemas\n */\nconst getAllSchemasForContentType = ({ routeInfo, attributes, uniqueName }: ApiInfo) => {\n // Store response and request schemas in an object\n let strapiComponentSchemas = {};\n const schemas: OpenAPIV3.ComponentsObject = {};\n const typeName = pascalCase(uniqueName);\n\n // adds a ComponentSchema to the Schemas so it can be used as Ref\n const didAddStrapiComponentsToSchemas = (schemaName: string, schema: OpenAPIV3.SchemaObject) => {\n if (!Object.keys(schema) || !Object.keys(schema.properties!)) return false;\n\n // Add the Strapi components to the schema\n strapiComponentSchemas = {\n ...strapiComponentSchemas,\n [schemaName]: schema,\n };\n\n return true;\n };\n\n // Get all the route methods\n const routeMethods = routeInfo.routes.map((route: Core.Route) => route.method);\n\n const attributesToOmit = [\n 'createdAt',\n 'updatedAt',\n 'publishedAt',\n 'publishedBy',\n 'updatedBy',\n 'createdBy',\n ];\n\n const attributesForRequest = _.omit(attributes, attributesToOmit);\n // Get a list of required attribute names\n const requiredRequestAttributes = getRequiredAttributes(attributesForRequest);\n // Build the request schemas when the route has POST or PUT methods\n if (routeMethods.includes('POST') || routeMethods.includes('PUT')) {\n // Build localization requests schemas\n\n // Build the request schema\n Object.assign(schemas, {\n [`${typeName}Request`]: {\n type: 'object',\n required: ['data'],\n properties: {\n data: {\n ...(requiredRequestAttributes.length && { required: requiredRequestAttributes }),\n type: 'object',\n properties: cleanSchemaAttributes(attributesForRequest, {\n isRequest: true,\n didAddStrapiComponentsToSchemas,\n }),\n },\n },\n },\n });\n }\n\n // Check for routes that need to return a list\n const hasListOfEntities = routeInfo.routes.filter((route: Core.Route) =>\n hasFindMethod(route.handler)\n ).length;\n\n if (hasListOfEntities) {\n // Build the list response schema\n Object.assign(schemas, {\n [`${typeName}ListResponse`]: {\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: `#/components/schemas/${typeName}`,\n },\n },\n meta: {\n type: 'object',\n properties: {\n pagination: {\n type: 'object',\n properties: {\n page: { type: 'integer' },\n pageSize: { type: 'integer', minimum: 25 },\n pageCount: { type: 'integer', maximum: 1 },\n total: { type: 'integer' },\n },\n },\n },\n },\n },\n },\n });\n }\n\n const requiredAttributes = getRequiredAttributes(attributes);\n // Build the response schema\n Object.assign(schemas, {\n [`${typeName}`]: {\n type: 'object',\n ...(requiredAttributes.length && { required: requiredAttributes }),\n properties: {\n id: { oneOf: [{ type: 'string' }, { type: 'number' }] },\n documentId: { type: 'string' },\n ...cleanSchemaAttributes(attributes, { didAddStrapiComponentsToSchemas }),\n },\n },\n\n [`${typeName}Response`]: {\n type: 'object',\n properties: {\n data: {\n $ref: `#/components/schemas/${typeName}`,\n },\n meta: { type: 'object' },\n },\n },\n });\n\n return { ...schemas, ...strapiComponentSchemas };\n};\n\nconst buildComponentSchema = (api: Api) => {\n // A reusable loop for building paths and component schemas\n // Uses the api param to build a new set of params for each content type\n // Passes these new params to the function provided\n return loopContentTypeNames(api, getAllSchemasForContentType);\n};\n\nexport default buildComponentSchema;\n"],"names":["getRequiredAttributes","allAttributes","requiredAttributes","key","required","push","getAllSchemasForContentType","routeInfo","attributes","uniqueName","strapiComponentSchemas","schemas","typeName","pascalCase","didAddStrapiComponentsToSchemas","schemaName","schema","Object","keys","properties","routeMethods","routes","map","route","method","attributesToOmit","attributesForRequest","_","omit","requiredRequestAttributes","includes","assign","type","data","length","cleanSchemaAttributes","isRequest","hasListOfEntities","filter","hasFindMethod","handler","items","$ref","meta","pagination","page","pageSize","minimum","pageCount","maximum","total","id","oneOf","documentId","buildComponentSchema","api","loopContentTypeNames"],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ 'use strict';
2
+
3
+ var getSchemaData = require('./get-schema-data.js');
4
+ var pascalCase = require('./pascal-case.js');
5
+
6
+ /**
7
+ * @description - Convert attribute component names to OpenAPI component names
8
+ *
9
+ * @returns OpenAPI component name
10
+ */ const convertComponentName = (component, isRef = false)=>{
11
+ const cleanComponentName = `${pascalCase(component)}Component`;
12
+ if (isRef) {
13
+ return `#/components/schemas/${cleanComponentName}`;
14
+ }
15
+ return cleanComponentName;
16
+ };
17
+ /**
18
+ * @description - Converts types found on attributes to OpenAPI acceptable data types
19
+ *
20
+ * @returns Attributes using OpenAPI acceptable data types
21
+ */ const cleanSchemaAttributes = (attributes, { typeMap = new Map(), isRequest = false, didAddStrapiComponentsToSchemas })=>{
22
+ const schemaAttributes = {};
23
+ for (const prop of Object.keys(attributes)){
24
+ const attribute = attributes[prop];
25
+ switch(attribute.type){
26
+ case 'password':
27
+ {
28
+ if (!isRequest) {
29
+ break;
30
+ }
31
+ schemaAttributes[prop] = {
32
+ type: 'string',
33
+ format: 'password',
34
+ example: '*******'
35
+ };
36
+ break;
37
+ }
38
+ case 'email':
39
+ {
40
+ schemaAttributes[prop] = {
41
+ type: 'string',
42
+ format: 'email'
43
+ };
44
+ break;
45
+ }
46
+ case 'string':
47
+ case 'text':
48
+ case 'richtext':
49
+ {
50
+ schemaAttributes[prop] = {
51
+ type: 'string'
52
+ };
53
+ break;
54
+ }
55
+ case 'timestamp':
56
+ {
57
+ schemaAttributes[prop] = {
58
+ type: 'string',
59
+ format: 'timestamp',
60
+ example: Date.now()
61
+ };
62
+ break;
63
+ }
64
+ case 'time':
65
+ {
66
+ schemaAttributes[prop] = {
67
+ type: 'string',
68
+ format: 'time',
69
+ example: '12:54.000'
70
+ };
71
+ break;
72
+ }
73
+ case 'date':
74
+ {
75
+ schemaAttributes[prop] = {
76
+ type: 'string',
77
+ format: 'date'
78
+ };
79
+ break;
80
+ }
81
+ case 'datetime':
82
+ {
83
+ schemaAttributes[prop] = {
84
+ type: 'string',
85
+ format: 'date-time'
86
+ };
87
+ break;
88
+ }
89
+ case 'boolean':
90
+ {
91
+ schemaAttributes[prop] = {
92
+ type: 'boolean'
93
+ };
94
+ break;
95
+ }
96
+ case 'enumeration':
97
+ {
98
+ schemaAttributes[prop] = {
99
+ type: 'string',
100
+ enum: [
101
+ ...attribute.enum
102
+ ]
103
+ };
104
+ break;
105
+ }
106
+ case 'decimal':
107
+ case 'float':
108
+ {
109
+ schemaAttributes[prop] = {
110
+ type: 'number',
111
+ format: 'float'
112
+ };
113
+ break;
114
+ }
115
+ case 'integer':
116
+ {
117
+ schemaAttributes[prop] = {
118
+ type: 'integer'
119
+ };
120
+ break;
121
+ }
122
+ case 'biginteger':
123
+ {
124
+ schemaAttributes[prop] = {
125
+ type: 'string',
126
+ pattern: '^\\d*$',
127
+ example: '123456789'
128
+ };
129
+ break;
130
+ }
131
+ case 'json':
132
+ case 'blocks':
133
+ {
134
+ schemaAttributes[prop] = {};
135
+ break;
136
+ }
137
+ case 'uid':
138
+ {
139
+ schemaAttributes[prop] = {
140
+ type: 'string'
141
+ };
142
+ break;
143
+ }
144
+ case 'component':
145
+ {
146
+ const componentAttributes = strapi.components[attribute.component].attributes;
147
+ const rawComponentSchema = {
148
+ type: 'object',
149
+ properties: {
150
+ ...isRequest ? {} : {
151
+ id: {
152
+ oneOf: [
153
+ {
154
+ type: 'string'
155
+ },
156
+ {
157
+ type: 'number'
158
+ }
159
+ ]
160
+ }
161
+ },
162
+ ...cleanSchemaAttributes(componentAttributes, {
163
+ typeMap,
164
+ isRequest,
165
+ didAddStrapiComponentsToSchemas
166
+ })
167
+ }
168
+ };
169
+ const refComponentSchema = {
170
+ $ref: convertComponentName(attribute.component, true)
171
+ };
172
+ const componentExists = didAddStrapiComponentsToSchemas(convertComponentName(attribute.component), rawComponentSchema);
173
+ const finalComponentSchema = componentExists ? refComponentSchema : rawComponentSchema;
174
+ if (attribute.repeatable) {
175
+ schemaAttributes[prop] = {
176
+ type: 'array',
177
+ items: finalComponentSchema
178
+ };
179
+ } else {
180
+ schemaAttributes[prop] = finalComponentSchema;
181
+ }
182
+ break;
183
+ }
184
+ case 'dynamiczone':
185
+ {
186
+ const components = attribute.components.map((component)=>{
187
+ const componentAttributes = strapi.components[component].attributes;
188
+ const rawComponentSchema = {
189
+ type: 'object',
190
+ properties: {
191
+ ...isRequest ? {} : {
192
+ id: {
193
+ oneOf: [
194
+ {
195
+ type: 'string'
196
+ },
197
+ {
198
+ type: 'number'
199
+ }
200
+ ]
201
+ }
202
+ },
203
+ __component: {
204
+ type: 'string',
205
+ enum: [
206
+ component
207
+ ]
208
+ },
209
+ ...cleanSchemaAttributes(componentAttributes, {
210
+ typeMap,
211
+ isRequest,
212
+ didAddStrapiComponentsToSchemas
213
+ })
214
+ }
215
+ };
216
+ const refComponentSchema = {
217
+ $ref: convertComponentName(component, true)
218
+ };
219
+ const componentExists = didAddStrapiComponentsToSchemas(convertComponentName(component), rawComponentSchema);
220
+ const finalComponentSchema = componentExists ? refComponentSchema : rawComponentSchema;
221
+ return finalComponentSchema;
222
+ });
223
+ let discriminator;
224
+ if (components.every((component)=>Object.hasOwn(component, '$ref'))) {
225
+ discriminator = {
226
+ propertyName: '__component',
227
+ mapping: attribute.components.reduce((acc, component)=>{
228
+ acc[component] = convertComponentName(component, true);
229
+ return acc;
230
+ }, {})
231
+ };
232
+ }
233
+ schemaAttributes[prop] = {
234
+ type: 'array',
235
+ items: {
236
+ anyOf: components
237
+ },
238
+ discriminator
239
+ };
240
+ break;
241
+ }
242
+ case 'media':
243
+ {
244
+ const imageAttributes = strapi.contentType('plugin::upload.file').attributes;
245
+ const isListOfEntities = attribute.multiple ?? false;
246
+ if (isRequest) {
247
+ const oneOfType = {
248
+ oneOf: [
249
+ {
250
+ type: 'integer'
251
+ },
252
+ {
253
+ type: 'string'
254
+ }
255
+ ],
256
+ example: 'string or id'
257
+ };
258
+ schemaAttributes[prop] = isListOfEntities ? {
259
+ type: 'array',
260
+ items: oneOfType
261
+ } : oneOfType;
262
+ break;
263
+ }
264
+ schemaAttributes[prop] = getSchemaData(isListOfEntities, cleanSchemaAttributes(imageAttributes, {
265
+ typeMap,
266
+ didAddStrapiComponentsToSchemas
267
+ }));
268
+ break;
269
+ }
270
+ case 'relation':
271
+ {
272
+ const isListOfEntities = attribute.relation.includes('ToMany');
273
+ if (isRequest) {
274
+ const oneOfType = {
275
+ oneOf: [
276
+ {
277
+ type: 'integer'
278
+ },
279
+ {
280
+ type: 'string'
281
+ }
282
+ ],
283
+ example: 'string or id'
284
+ };
285
+ schemaAttributes[prop] = isListOfEntities ? {
286
+ type: 'array',
287
+ items: oneOfType
288
+ } : oneOfType;
289
+ break;
290
+ }
291
+ if (!('target' in attribute) || !attribute.target || typeMap.has(attribute.target)) {
292
+ schemaAttributes[prop] = getSchemaData(isListOfEntities, {});
293
+ break;
294
+ }
295
+ typeMap.set(attribute.target, true);
296
+ const targetAttributes = strapi.contentType(attribute.target).attributes;
297
+ schemaAttributes[prop] = getSchemaData(isListOfEntities, cleanSchemaAttributes(targetAttributes, {
298
+ typeMap,
299
+ isRequest,
300
+ didAddStrapiComponentsToSchemas
301
+ }));
302
+ break;
303
+ }
304
+ default:
305
+ {
306
+ // @ts-expect-error - This is a catch all for any other types
307
+ throw new Error(`Invalid type ${attribute.type} while generating open api schema.`);
308
+ }
309
+ }
310
+ }
311
+ return schemaAttributes;
312
+ };
313
+
314
+ module.exports = cleanSchemaAttributes;
315
+ //# sourceMappingURL=clean-schema-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-schema-attributes.js","sources":["../../../../../server/src/services/helpers/utils/clean-schema-attributes.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\nimport type { OpenAPIV3 } from 'openapi-types';\n\nimport getSchemaData from './get-schema-data';\nimport pascalCase from './pascal-case';\n\ninterface Options {\n typeMap?: Map<string, boolean>;\n isRequest?: boolean;\n didAddStrapiComponentsToSchemas: (name: string, schema: object) => boolean;\n}\n\n/**\n * @description - Convert attribute component names to OpenAPI component names\n *\n * @returns OpenAPI component name\n */\nconst convertComponentName = (component: string, isRef = false): string => {\n const cleanComponentName = `${pascalCase(component)}Component`;\n\n if (isRef) {\n return `#/components/schemas/${cleanComponentName}`;\n }\n return cleanComponentName;\n};\n\n/**\n * @description - Converts types found on attributes to OpenAPI acceptable data types\n *\n * @returns Attributes using OpenAPI acceptable data types\n */\nconst cleanSchemaAttributes = (\n attributes: Struct.SchemaAttributes,\n { typeMap = new Map(), isRequest = false, didAddStrapiComponentsToSchemas }: Options\n): Record<string, OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject> => {\n const schemaAttributes: Record<string, OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject> = {};\n\n for (const prop of Object.keys(attributes)) {\n const attribute = attributes[prop];\n\n switch (attribute.type) {\n case 'password': {\n if (!isRequest) {\n break;\n }\n\n schemaAttributes[prop] = { type: 'string', format: 'password', example: '*******' };\n break;\n }\n case 'email': {\n schemaAttributes[prop] = { type: 'string', format: 'email' };\n break;\n }\n case 'string':\n case 'text':\n case 'richtext': {\n schemaAttributes[prop] = { type: 'string' };\n break;\n }\n case 'timestamp': {\n schemaAttributes[prop] = { type: 'string', format: 'timestamp', example: Date.now() };\n break;\n }\n case 'time': {\n schemaAttributes[prop] = { type: 'string', format: 'time', example: '12:54.000' };\n break;\n }\n case 'date': {\n schemaAttributes[prop] = { type: 'string', format: 'date' };\n break;\n }\n case 'datetime': {\n schemaAttributes[prop] = { type: 'string', format: 'date-time' };\n break;\n }\n case 'boolean': {\n schemaAttributes[prop] = { type: 'boolean' };\n break;\n }\n case 'enumeration': {\n schemaAttributes[prop] = { type: 'string', enum: [...attribute.enum] };\n break;\n }\n case 'decimal':\n case 'float': {\n schemaAttributes[prop] = { type: 'number', format: 'float' };\n break;\n }\n case 'integer': {\n schemaAttributes[prop] = { type: 'integer' };\n break;\n }\n case 'biginteger': {\n schemaAttributes[prop] = { type: 'string', pattern: '^\\\\d*$', example: '123456789' };\n break;\n }\n case 'json':\n case 'blocks': {\n schemaAttributes[prop] = {};\n break;\n }\n case 'uid': {\n schemaAttributes[prop] = { type: 'string' };\n break;\n }\n case 'component': {\n const componentAttributes = strapi.components[attribute.component].attributes;\n const rawComponentSchema: OpenAPIV3.SchemaObject = {\n type: 'object',\n properties: {\n ...(isRequest ? {} : { id: { oneOf: [{ type: 'string' }, { type: 'number' }] } }),\n ...cleanSchemaAttributes(componentAttributes, {\n typeMap,\n isRequest,\n didAddStrapiComponentsToSchemas,\n }),\n },\n };\n\n const refComponentSchema: OpenAPIV3.ReferenceObject = {\n $ref: convertComponentName(attribute.component, true),\n };\n\n const componentExists = didAddStrapiComponentsToSchemas(\n convertComponentName(attribute.component),\n rawComponentSchema\n );\n\n const finalComponentSchema = componentExists ? refComponentSchema : rawComponentSchema;\n if (attribute.repeatable) {\n schemaAttributes[prop] = {\n type: 'array',\n items: finalComponentSchema,\n };\n } else {\n schemaAttributes[prop] = finalComponentSchema;\n }\n break;\n }\n case 'dynamiczone': {\n const components = attribute.components.map((component) => {\n const componentAttributes = strapi.components[component].attributes;\n const rawComponentSchema: OpenAPIV3.SchemaObject = {\n type: 'object',\n properties: {\n ...(isRequest ? {} : { id: { oneOf: [{ type: 'string' }, { type: 'number' }] } }),\n __component: { type: 'string', enum: [component] },\n ...cleanSchemaAttributes(componentAttributes, {\n typeMap,\n isRequest,\n didAddStrapiComponentsToSchemas,\n }),\n },\n };\n\n const refComponentSchema: OpenAPIV3.ReferenceObject = {\n $ref: convertComponentName(component, true),\n };\n\n const componentExists = didAddStrapiComponentsToSchemas(\n convertComponentName(component),\n rawComponentSchema\n );\n const finalComponentSchema = componentExists ? refComponentSchema : rawComponentSchema;\n return finalComponentSchema;\n });\n let discriminator: OpenAPIV3.DiscriminatorObject | undefined;\n if (components.every((component) => Object.hasOwn(component, '$ref'))) {\n discriminator = {\n propertyName: '__component',\n mapping: attribute.components.reduce(\n (acc, component) => {\n acc[component] = convertComponentName(component, true);\n return acc;\n },\n {} as {\n [value: string]: string;\n }\n ),\n };\n }\n\n schemaAttributes[prop] = {\n type: 'array',\n items: {\n anyOf: components,\n },\n discriminator,\n };\n break;\n }\n case 'media': {\n const imageAttributes = strapi.contentType('plugin::upload.file').attributes;\n const isListOfEntities = attribute.multiple ?? false;\n\n if (isRequest) {\n const oneOfType: OpenAPIV3.SchemaObject = {\n oneOf: [{ type: 'integer' }, { type: 'string' }],\n example: 'string or id',\n };\n\n schemaAttributes[prop] = isListOfEntities\n ? { type: 'array', items: oneOfType }\n : oneOfType;\n break;\n }\n\n schemaAttributes[prop] = getSchemaData(\n isListOfEntities,\n cleanSchemaAttributes(imageAttributes, { typeMap, didAddStrapiComponentsToSchemas })\n );\n break;\n }\n\n case 'relation': {\n const isListOfEntities = attribute.relation.includes('ToMany');\n\n if (isRequest) {\n const oneOfType: OpenAPIV3.SchemaObject = {\n oneOf: [{ type: 'integer' }, { type: 'string' }],\n example: 'string or id',\n };\n\n schemaAttributes[prop] = isListOfEntities\n ? { type: 'array', items: oneOfType }\n : oneOfType;\n break;\n }\n\n if (!('target' in attribute) || !attribute.target || typeMap.has(attribute.target)) {\n schemaAttributes[prop] = getSchemaData(isListOfEntities, {});\n\n break;\n }\n\n typeMap.set(attribute.target, true);\n const targetAttributes = strapi.contentType(attribute.target).attributes;\n\n schemaAttributes[prop] = getSchemaData(\n isListOfEntities,\n cleanSchemaAttributes(targetAttributes, {\n typeMap,\n isRequest,\n didAddStrapiComponentsToSchemas,\n })\n );\n\n break;\n }\n default: {\n // @ts-expect-error - This is a catch all for any other types\n throw new Error(`Invalid type ${attribute.type} while generating open api schema.`);\n }\n }\n }\n\n return schemaAttributes;\n};\n\nexport default cleanSchemaAttributes;\n"],"names":["convertComponentName","component","isRef","cleanComponentName","pascalCase","cleanSchemaAttributes","attributes","typeMap","Map","isRequest","didAddStrapiComponentsToSchemas","schemaAttributes","prop","Object","keys","attribute","type","format","example","Date","now","enum","pattern","componentAttributes","strapi","components","rawComponentSchema","properties","id","oneOf","refComponentSchema","$ref","componentExists","finalComponentSchema","repeatable","items","map","__component","discriminator","every","hasOwn","propertyName","mapping","reduce","acc","anyOf","imageAttributes","contentType","isListOfEntities","multiple","oneOfType","getSchemaData","relation","includes","target","has","set","targetAttributes","Error"],"mappings":"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"}