@strapi/plugin-documentation 0.0.0-experimental.62ebf57bb35846666febb5ee2078fe02fe990f57 → 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 (500) hide show
  1. package/README.md +2 -3
  2. package/dist/admin/components/SettingsForm.js +203 -0
  3. package/dist/admin/components/SettingsForm.js.map +1 -0
  4. package/dist/admin/components/SettingsForm.mjs +180 -0
  5. package/dist/admin/components/SettingsForm.mjs.map +1 -0
  6. package/dist/admin/constants.js +47 -0
  7. package/dist/admin/constants.js.map +1 -0
  8. package/dist/admin/constants.mjs +45 -0
  9. package/dist/admin/constants.mjs.map +1 -0
  10. package/dist/admin/index.js +96 -5
  11. package/dist/admin/index.js.map +1 -1
  12. package/dist/admin/index.mjs +91 -5
  13. package/dist/admin/index.mjs.map +1 -1
  14. package/dist/admin/pages/App.js +254 -0
  15. package/dist/admin/pages/App.js.map +1 -0
  16. package/dist/admin/pages/App.mjs +232 -0
  17. package/dist/admin/pages/App.mjs.map +1 -0
  18. package/dist/admin/pages/Settings.js +54 -0
  19. package/dist/admin/pages/Settings.js.map +1 -0
  20. package/dist/admin/pages/Settings.mjs +52 -0
  21. package/dist/admin/pages/Settings.mjs.map +1 -0
  22. package/dist/admin/pluginId.js +6 -0
  23. package/dist/admin/pluginId.js.map +1 -0
  24. package/dist/admin/pluginId.mjs +4 -0
  25. package/dist/admin/pluginId.mjs.map +1 -0
  26. package/dist/admin/services/api.js +55 -0
  27. package/dist/admin/services/api.js.map +1 -0
  28. package/dist/admin/services/api.mjs +50 -0
  29. package/dist/admin/services/api.mjs.map +1 -0
  30. package/dist/admin/src/components/SettingsForm.d.ts +8 -0
  31. package/dist/admin/src/constants.d.ts +18 -0
  32. package/dist/admin/src/index.d.ts +15 -0
  33. package/dist/admin/src/pages/App.d.ts +2 -0
  34. package/dist/admin/src/pages/Settings.d.ts +2 -0
  35. package/dist/admin/src/pages/tests/App.test.d.ts +1 -0
  36. package/dist/admin/src/pages/tests/Settings.test.d.ts +1 -0
  37. package/dist/admin/src/pluginId.d.ts +1 -0
  38. package/dist/admin/src/services/api.d.ts +13 -0
  39. package/dist/admin/src/types.d.ts +16 -0
  40. package/dist/admin/src/utils/baseQuery.d.ts +5 -0
  41. package/dist/admin/src/utils/getTrad.d.ts +1 -0
  42. package/dist/admin/src/utils/index.d.ts +2 -0
  43. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +2 -0
  44. package/dist/admin/translations/ar.json.js +25 -0
  45. package/dist/admin/translations/ar.json.js.map +1 -0
  46. package/dist/admin/translations/ar.json.mjs +23 -0
  47. package/dist/admin/translations/ar.json.mjs.map +1 -0
  48. package/dist/admin/translations/cs.json.js +47 -0
  49. package/dist/admin/translations/cs.json.js.map +1 -0
  50. package/dist/admin/translations/cs.json.mjs +45 -0
  51. package/dist/admin/translations/cs.json.mjs.map +1 -0
  52. package/dist/admin/translations/da.json.js +44 -0
  53. package/dist/admin/translations/da.json.js.map +1 -0
  54. package/dist/admin/translations/da.json.mjs +42 -0
  55. package/dist/admin/translations/da.json.mjs.map +1 -0
  56. package/dist/admin/translations/de.json.js +47 -0
  57. package/dist/admin/translations/de.json.js.map +1 -0
  58. package/dist/admin/translations/de.json.mjs +45 -0
  59. package/dist/admin/translations/de.json.mjs.map +1 -0
  60. package/dist/admin/translations/en.json.js +47 -0
  61. package/dist/admin/translations/en.json.js.map +1 -0
  62. package/dist/admin/translations/en.json.mjs +45 -0
  63. package/dist/admin/translations/en.json.mjs.map +1 -0
  64. package/dist/admin/translations/es.json.js +47 -0
  65. package/dist/admin/translations/es.json.js.map +1 -0
  66. package/dist/admin/translations/es.json.mjs +45 -0
  67. package/dist/admin/translations/es.json.mjs.map +1 -0
  68. package/dist/admin/translations/fr.json.js +31 -0
  69. package/dist/admin/translations/fr.json.js.map +1 -0
  70. package/dist/admin/translations/fr.json.mjs +29 -0
  71. package/dist/admin/translations/fr.json.mjs.map +1 -0
  72. package/dist/admin/translations/id.json.js +29 -0
  73. package/dist/admin/translations/id.json.js.map +1 -0
  74. package/dist/admin/translations/id.json.mjs +27 -0
  75. package/dist/admin/translations/id.json.mjs.map +1 -0
  76. package/dist/admin/translations/it.json.js +31 -0
  77. package/dist/admin/translations/it.json.js.map +1 -0
  78. package/dist/admin/translations/it.json.mjs +29 -0
  79. package/dist/admin/translations/it.json.mjs.map +1 -0
  80. package/dist/admin/translations/ko.json.js +44 -0
  81. package/dist/admin/translations/ko.json.js.map +1 -0
  82. package/dist/admin/translations/ko.json.mjs +42 -0
  83. package/dist/admin/translations/ko.json.mjs.map +1 -0
  84. package/dist/admin/translations/ms.json.js +28 -0
  85. package/dist/admin/translations/ms.json.js.map +1 -0
  86. package/dist/admin/translations/ms.json.mjs +26 -0
  87. package/dist/admin/translations/ms.json.mjs.map +1 -0
  88. package/dist/admin/translations/nl.json.js +26 -0
  89. package/dist/admin/translations/nl.json.js.map +1 -0
  90. package/dist/admin/translations/nl.json.mjs +24 -0
  91. package/dist/admin/translations/nl.json.mjs.map +1 -0
  92. package/dist/admin/translations/pl.json.js +47 -0
  93. package/dist/admin/translations/pl.json.js.map +1 -0
  94. package/dist/admin/translations/pl.json.mjs +45 -0
  95. package/dist/admin/translations/pl.json.mjs.map +1 -0
  96. package/dist/admin/translations/pt-BR.json.js +26 -0
  97. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  98. package/dist/admin/translations/pt-BR.json.mjs +24 -0
  99. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  100. package/dist/admin/translations/pt.json.js +26 -0
  101. package/dist/admin/translations/pt.json.js.map +1 -0
  102. package/dist/admin/translations/pt.json.mjs +24 -0
  103. package/dist/admin/translations/pt.json.mjs.map +1 -0
  104. package/dist/admin/translations/ru.json.js +47 -0
  105. package/dist/admin/translations/ru.json.js.map +1 -0
  106. package/dist/admin/translations/ru.json.mjs +45 -0
  107. package/dist/admin/translations/ru.json.mjs.map +1 -0
  108. package/dist/admin/translations/sk.json.js +47 -0
  109. package/dist/admin/translations/sk.json.js.map +1 -0
  110. package/dist/admin/translations/sk.json.mjs +45 -0
  111. package/dist/admin/translations/sk.json.mjs.map +1 -0
  112. package/dist/admin/translations/sv.json.js +44 -0
  113. package/dist/admin/translations/sv.json.js.map +1 -0
  114. package/dist/admin/translations/sv.json.mjs +42 -0
  115. package/dist/admin/translations/sv.json.mjs.map +1 -0
  116. package/dist/admin/translations/th.json.js +29 -0
  117. package/dist/admin/translations/th.json.js.map +1 -0
  118. package/dist/admin/translations/th.json.mjs +27 -0
  119. package/dist/admin/translations/th.json.mjs.map +1 -0
  120. package/dist/admin/translations/tr.json.js +44 -0
  121. package/dist/admin/translations/tr.json.js.map +1 -0
  122. package/dist/admin/translations/tr.json.mjs +42 -0
  123. package/dist/admin/translations/tr.json.mjs.map +1 -0
  124. package/dist/admin/translations/uk.json.js +47 -0
  125. package/dist/admin/translations/uk.json.js.map +1 -0
  126. package/dist/admin/translations/uk.json.mjs +45 -0
  127. package/dist/admin/translations/uk.json.mjs.map +1 -0
  128. package/dist/admin/translations/vi.json.js +29 -0
  129. package/dist/admin/translations/vi.json.js.map +1 -0
  130. package/dist/admin/translations/vi.json.mjs +27 -0
  131. package/dist/admin/translations/vi.json.mjs.map +1 -0
  132. package/dist/admin/translations/zh-Hans.json.js +33 -0
  133. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  134. package/dist/admin/translations/zh-Hans.json.mjs +31 -0
  135. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  136. package/dist/admin/translations/zh.json.js +44 -0
  137. package/dist/admin/translations/zh.json.js.map +1 -0
  138. package/dist/admin/translations/zh.json.mjs +42 -0
  139. package/dist/admin/translations/zh.json.mjs.map +1 -0
  140. package/dist/admin/utils/baseQuery.js +8 -0
  141. package/dist/admin/utils/baseQuery.js.map +1 -0
  142. package/dist/admin/utils/baseQuery.mjs +6 -0
  143. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  144. package/dist/admin/utils/getTrad.js +8 -0
  145. package/dist/admin/utils/getTrad.js.map +1 -0
  146. package/dist/admin/utils/getTrad.mjs +6 -0
  147. package/dist/admin/utils/getTrad.mjs.map +1 -0
  148. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  149. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  150. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  151. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  152. package/dist/server/bootstrap.js +57 -0
  153. package/dist/server/bootstrap.js.map +1 -0
  154. package/dist/server/bootstrap.mjs +55 -0
  155. package/dist/server/bootstrap.mjs.map +1 -0
  156. package/dist/server/config/default-plugin-config.js +88 -0
  157. package/dist/server/config/default-plugin-config.js.map +1 -0
  158. package/dist/server/config/default-plugin-config.mjs +86 -0
  159. package/dist/server/config/default-plugin-config.mjs.map +1 -0
  160. package/dist/server/config/index.js +10 -0
  161. package/dist/server/config/index.js.map +1 -0
  162. package/dist/server/config/index.mjs +8 -0
  163. package/dist/server/config/index.mjs.map +1 -0
  164. package/dist/server/controllers/documentation.js +194 -0
  165. package/dist/server/controllers/documentation.js.map +1 -0
  166. package/dist/server/controllers/documentation.mjs +182 -0
  167. package/dist/server/controllers/documentation.mjs.map +1 -0
  168. package/dist/server/controllers/index.js +10 -0
  169. package/dist/server/controllers/index.js.map +1 -0
  170. package/dist/server/controllers/index.mjs +8 -0
  171. package/dist/server/controllers/index.mjs.map +1 -0
  172. package/dist/server/index.js +20 -0
  173. package/dist/server/index.js.map +1 -0
  174. package/dist/server/index.mjs +18 -0
  175. package/dist/server/index.mjs.map +1 -0
  176. package/dist/server/middlewares/documentation.js +33 -0
  177. package/dist/server/middlewares/documentation.js.map +1 -0
  178. package/dist/server/middlewares/documentation.mjs +25 -0
  179. package/dist/server/middlewares/documentation.mjs.map +1 -0
  180. package/dist/server/middlewares/restrict-access.js +23 -0
  181. package/dist/server/middlewares/restrict-access.js.map +1 -0
  182. package/dist/server/middlewares/restrict-access.mjs +21 -0
  183. package/dist/server/middlewares/restrict-access.mjs.map +1 -0
  184. package/dist/server/public/index.html.js +6 -0
  185. package/dist/server/public/index.html.js.map +1 -0
  186. package/dist/server/public/index.html.mjs +4 -0
  187. package/dist/server/public/index.html.mjs.map +1 -0
  188. package/dist/server/public/login.html.js +6 -0
  189. package/dist/server/public/login.html.js.map +1 -0
  190. package/dist/server/public/login.html.mjs +4 -0
  191. package/dist/server/public/login.html.mjs.map +1 -0
  192. package/dist/server/register.js +12 -0
  193. package/dist/server/register.js.map +1 -0
  194. package/dist/server/register.mjs +10 -0
  195. package/dist/server/register.mjs.map +1 -0
  196. package/dist/server/routes/index.js +106 -0
  197. package/dist/server/routes/index.js.map +1 -0
  198. package/dist/server/routes/index.mjs +104 -0
  199. package/dist/server/routes/index.mjs.map +1 -0
  200. package/dist/server/services/documentation.js +193 -0
  201. package/dist/server/services/documentation.js.map +1 -0
  202. package/dist/server/services/documentation.mjs +186 -0
  203. package/dist/server/services/documentation.mjs.map +1 -0
  204. package/dist/server/services/helpers/build-api-endpoint-path.js +166 -0
  205. package/dist/server/services/helpers/build-api-endpoint-path.js.map +1 -0
  206. package/dist/server/services/helpers/build-api-endpoint-path.mjs +141 -0
  207. package/dist/server/services/helpers/build-api-endpoint-path.mjs.map +1 -0
  208. package/dist/server/services/helpers/build-component-schema.js +178 -0
  209. package/dist/server/services/helpers/build-component-schema.js.map +1 -0
  210. package/dist/server/services/helpers/build-component-schema.mjs +172 -0
  211. package/dist/server/services/helpers/build-component-schema.mjs.map +1 -0
  212. package/dist/server/services/helpers/utils/clean-schema-attributes.js +315 -0
  213. package/dist/server/services/helpers/utils/clean-schema-attributes.js.map +1 -0
  214. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs +313 -0
  215. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs.map +1 -0
  216. package/dist/server/services/helpers/utils/get-api-responses.js +88 -0
  217. package/dist/server/services/helpers/utils/get-api-responses.js.map +1 -0
  218. package/dist/server/services/helpers/utils/get-api-responses.mjs +86 -0
  219. package/dist/server/services/helpers/utils/get-api-responses.mjs.map +1 -0
  220. package/dist/server/services/helpers/utils/get-schema-data.js +57 -0
  221. package/dist/server/services/helpers/utils/get-schema-data.js.map +1 -0
  222. package/dist/server/services/helpers/utils/get-schema-data.mjs +55 -0
  223. package/dist/server/services/helpers/utils/get-schema-data.mjs.map +1 -0
  224. package/dist/server/services/helpers/utils/loop-content-type-names.js +44 -0
  225. package/dist/server/services/helpers/utils/loop-content-type-names.js.map +1 -0
  226. package/dist/server/services/helpers/utils/loop-content-type-names.mjs +38 -0
  227. package/dist/server/services/helpers/utils/loop-content-type-names.mjs.map +1 -0
  228. package/dist/server/services/helpers/utils/pascal-case.js +14 -0
  229. package/dist/server/services/helpers/utils/pascal-case.js.map +1 -0
  230. package/dist/server/services/helpers/utils/pascal-case.mjs +8 -0
  231. package/dist/server/services/helpers/utils/pascal-case.mjs.map +1 -0
  232. package/dist/server/services/helpers/utils/query-params.js +109 -0
  233. package/dist/server/services/helpers/utils/query-params.js.map +1 -0
  234. package/dist/server/services/helpers/utils/query-params.mjs +107 -0
  235. package/dist/server/services/helpers/utils/query-params.mjs.map +1 -0
  236. package/dist/server/services/helpers/utils/routes.js +11 -0
  237. package/dist/server/services/helpers/utils/routes.js.map +1 -0
  238. package/dist/server/services/helpers/utils/routes.mjs +9 -0
  239. package/dist/server/services/helpers/utils/routes.mjs.map +1 -0
  240. package/dist/server/services/index.js +13 -0
  241. package/dist/server/services/index.js.map +1 -0
  242. package/dist/server/services/index.mjs +11 -0
  243. package/dist/server/services/index.mjs.map +1 -0
  244. package/dist/server/services/override.js +45 -0
  245. package/dist/server/services/override.js.map +1 -0
  246. package/dist/server/services/override.mjs +43 -0
  247. package/dist/server/services/override.mjs.map +1 -0
  248. package/dist/server/services/utils/get-plugins-that-need-documentation.js +24 -0
  249. package/dist/server/services/utils/get-plugins-that-need-documentation.js.map +1 -0
  250. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs +22 -0
  251. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs.map +1 -0
  252. package/dist/server/src/bootstrap.d.ts +5 -0
  253. package/dist/server/src/bootstrap.d.ts.map +1 -0
  254. package/dist/server/src/config/default-plugin-config.d.ts +3 -0
  255. package/dist/server/src/config/default-plugin-config.d.ts.map +1 -0
  256. package/dist/server/src/config/index.d.ts +4 -0
  257. package/dist/server/src/config/index.d.ts.map +1 -0
  258. package/dist/server/src/controllers/documentation.d.ts +12 -0
  259. package/dist/server/src/controllers/documentation.d.ts.map +1 -0
  260. package/dist/server/src/controllers/index.d.ts +13 -0
  261. package/dist/server/src/controllers/index.d.ts.map +1 -0
  262. package/dist/server/src/index.d.ts +90 -0
  263. package/dist/server/src/index.d.ts.map +1 -0
  264. package/dist/server/src/middlewares/documentation.d.ts +5 -0
  265. package/dist/server/src/middlewares/documentation.d.ts.map +1 -0
  266. package/dist/server/src/middlewares/restrict-access.d.ts +4 -0
  267. package/dist/server/src/middlewares/restrict-access.d.ts.map +1 -0
  268. package/dist/server/src/register.d.ts +5 -0
  269. package/dist/server/src/register.d.ts.map +1 -0
  270. package/dist/server/src/routes/index.d.ts +35 -0
  271. package/dist/server/src/routes/index.d.ts.map +1 -0
  272. package/dist/server/src/services/__mocks__/mock-content-types.d.ts +449 -0
  273. package/dist/server/src/services/__mocks__/mock-content-types.d.ts.map +1 -0
  274. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts +592 -0
  275. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts.map +1 -0
  276. package/dist/server/src/services/documentation.d.ts +36 -0
  277. package/dist/server/src/services/documentation.d.ts.map +1 -0
  278. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts +7 -0
  279. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts.map +1 -0
  280. package/dist/server/src/services/helpers/build-component-schema.d.ts +4 -0
  281. package/dist/server/src/services/helpers/build-component-schema.d.ts.map +1 -0
  282. package/dist/server/src/services/helpers/index.d.ts +4 -0
  283. package/dist/server/src/services/helpers/index.d.ts.map +1 -0
  284. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts +15 -0
  285. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts.map +1 -0
  286. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts +15 -0
  287. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts.map +1 -0
  288. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts +12 -0
  289. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts.map +1 -0
  290. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts +7 -0
  291. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts.map +1 -0
  292. package/dist/server/src/services/helpers/utils/pascal-case.d.ts +3 -0
  293. package/dist/server/src/services/helpers/utils/pascal-case.d.ts.map +1 -0
  294. package/dist/server/src/services/helpers/utils/query-params.d.ts +4 -0
  295. package/dist/server/src/services/helpers/utils/query-params.d.ts.map +1 -0
  296. package/dist/server/src/services/helpers/utils/routes.d.ts +3 -0
  297. package/dist/server/src/services/helpers/utils/routes.d.ts.map +1 -0
  298. package/dist/server/src/services/index.d.ts +43 -0
  299. package/dist/server/src/services/index.d.ts.map +1 -0
  300. package/dist/server/src/services/override.d.ts +21 -0
  301. package/dist/server/src/services/override.d.ts.map +1 -0
  302. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts +4 -0
  303. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts.map +1 -0
  304. package/dist/server/src/types.d.ts +28 -0
  305. package/dist/server/src/types.d.ts.map +1 -0
  306. package/dist/server/src/utils.d.ts +12 -0
  307. package/dist/server/src/utils.d.ts.map +1 -0
  308. package/dist/server/utils.js +10 -0
  309. package/dist/server/utils.js.map +1 -0
  310. package/dist/server/utils.mjs +8 -0
  311. package/dist/server/utils.mjs.map +1 -0
  312. package/dist/tests/server.d.ts +2 -0
  313. package/package.json +61 -38
  314. package/.eslintignore +0 -1
  315. package/.eslintrc +0 -17
  316. package/admin/src/constants.js +0 -17
  317. package/admin/src/hooks/useDocumentation.js +0 -77
  318. package/admin/src/index.js +0 -76
  319. package/admin/src/pages/PluginPage/index.jsx +0 -230
  320. package/admin/src/pages/PluginPage/tests/index.test.jsx +0 -206
  321. package/admin/src/pages/SettingsPage/index.jsx +0 -211
  322. package/admin/src/pages/SettingsPage/tests/index.test.jsx +0 -124
  323. package/admin/src/pluginId.js +0 -5
  324. package/admin/src/translations/ar.json +0 -20
  325. package/admin/src/translations/cs.json +0 -21
  326. package/admin/src/translations/de.json +0 -26
  327. package/admin/src/translations/dk.json +0 -39
  328. package/admin/src/translations/en.json +0 -39
  329. package/admin/src/translations/es.json +0 -39
  330. package/admin/src/translations/fr.json +0 -26
  331. package/admin/src/translations/id.json +0 -24
  332. package/admin/src/translations/it.json +0 -26
  333. package/admin/src/translations/ko.json +0 -39
  334. package/admin/src/translations/ms.json +0 -23
  335. package/admin/src/translations/nl.json +0 -21
  336. package/admin/src/translations/pl.json +0 -39
  337. package/admin/src/translations/pt-BR.json +0 -21
  338. package/admin/src/translations/pt.json +0 -21
  339. package/admin/src/translations/ru.json +0 -39
  340. package/admin/src/translations/sk.json +0 -24
  341. package/admin/src/translations/sv.json +0 -39
  342. package/admin/src/translations/th.json +0 -24
  343. package/admin/src/translations/tr.json +0 -39
  344. package/admin/src/translations/uk.json +0 -23
  345. package/admin/src/translations/vi.json +0 -24
  346. package/admin/src/translations/zh-Hans.json +0 -28
  347. package/admin/src/translations/zh.json +0 -39
  348. package/admin/src/utils/getTrad.js +0 -5
  349. package/admin/src/utils/index.js +0 -2
  350. package/dist/_chunks/ar-4yWQcJB-.js +0 -24
  351. package/dist/_chunks/ar-4yWQcJB-.js.map +0 -1
  352. package/dist/_chunks/ar-dlnabvQE.mjs +0 -24
  353. package/dist/_chunks/ar-dlnabvQE.mjs.map +0 -1
  354. package/dist/_chunks/cs-knLCHelx.js +0 -25
  355. package/dist/_chunks/cs-knLCHelx.js.map +0 -1
  356. package/dist/_chunks/cs-x2Pr-Y38.mjs +0 -25
  357. package/dist/_chunks/cs-x2Pr-Y38.mjs.map +0 -1
  358. package/dist/_chunks/de-10J3uf4y.mjs +0 -30
  359. package/dist/_chunks/de-10J3uf4y.mjs.map +0 -1
  360. package/dist/_chunks/de-D0HJjv1r.js +0 -30
  361. package/dist/_chunks/de-D0HJjv1r.js.map +0 -1
  362. package/dist/_chunks/dk-OGCIxZ4f.js +0 -43
  363. package/dist/_chunks/dk-OGCIxZ4f.js.map +0 -1
  364. package/dist/_chunks/dk-_8JEfZdj.mjs +0 -43
  365. package/dist/_chunks/dk-_8JEfZdj.mjs.map +0 -1
  366. package/dist/_chunks/en-V4ac9UMW.mjs +0 -43
  367. package/dist/_chunks/en-V4ac9UMW.mjs.map +0 -1
  368. package/dist/_chunks/en-YgFnjikD.js +0 -43
  369. package/dist/_chunks/en-YgFnjikD.js.map +0 -1
  370. package/dist/_chunks/es-5fRDaTSK.js +0 -43
  371. package/dist/_chunks/es-5fRDaTSK.js.map +0 -1
  372. package/dist/_chunks/es-f_rfLY5r.mjs +0 -43
  373. package/dist/_chunks/es-f_rfLY5r.mjs.map +0 -1
  374. package/dist/_chunks/fr-L2xRpd2l.mjs +0 -30
  375. package/dist/_chunks/fr-L2xRpd2l.mjs.map +0 -1
  376. package/dist/_chunks/fr-qviymkcR.js +0 -30
  377. package/dist/_chunks/fr-qviymkcR.js.map +0 -1
  378. package/dist/_chunks/id-caKGgafZ.js +0 -28
  379. package/dist/_chunks/id-caKGgafZ.js.map +0 -1
  380. package/dist/_chunks/id-l-r-lPDE.mjs +0 -28
  381. package/dist/_chunks/id-l-r-lPDE.mjs.map +0 -1
  382. package/dist/_chunks/index-0Psmd6mH.js +0 -169
  383. package/dist/_chunks/index-0Psmd6mH.js.map +0 -1
  384. package/dist/_chunks/index-4A--h4wV.mjs +0 -200
  385. package/dist/_chunks/index-4A--h4wV.mjs.map +0 -1
  386. package/dist/_chunks/index-4Lb4OA-2.mjs +0 -173
  387. package/dist/_chunks/index-4Lb4OA-2.mjs.map +0 -1
  388. package/dist/_chunks/index-KO2LyVtS.js +0 -199
  389. package/dist/_chunks/index-KO2LyVtS.js.map +0 -1
  390. package/dist/_chunks/index-U-tAamSt.js +0 -194
  391. package/dist/_chunks/index-U-tAamSt.js.map +0 -1
  392. package/dist/_chunks/index-rLNpelbE.mjs +0 -167
  393. package/dist/_chunks/index-rLNpelbE.mjs.map +0 -1
  394. package/dist/_chunks/it-e3T319Va.js +0 -30
  395. package/dist/_chunks/it-e3T319Va.js.map +0 -1
  396. package/dist/_chunks/it-nCSZoaet.mjs +0 -30
  397. package/dist/_chunks/it-nCSZoaet.mjs.map +0 -1
  398. package/dist/_chunks/ko-nWCOH-TF.js +0 -43
  399. package/dist/_chunks/ko-nWCOH-TF.js.map +0 -1
  400. package/dist/_chunks/ko-pUwRxmfG.mjs +0 -43
  401. package/dist/_chunks/ko-pUwRxmfG.mjs.map +0 -1
  402. package/dist/_chunks/ms-8e8SEhhY.mjs +0 -27
  403. package/dist/_chunks/ms-8e8SEhhY.mjs.map +0 -1
  404. package/dist/_chunks/ms-CSGAOmvV.js +0 -27
  405. package/dist/_chunks/ms-CSGAOmvV.js.map +0 -1
  406. package/dist/_chunks/nl-82NK6g7v.js +0 -25
  407. package/dist/_chunks/nl-82NK6g7v.js.map +0 -1
  408. package/dist/_chunks/nl-RjdbZWuM.mjs +0 -25
  409. package/dist/_chunks/nl-RjdbZWuM.mjs.map +0 -1
  410. package/dist/_chunks/pl-UMuW3iDh.js +0 -43
  411. package/dist/_chunks/pl-UMuW3iDh.js.map +0 -1
  412. package/dist/_chunks/pl-sh4sAKA8.mjs +0 -43
  413. package/dist/_chunks/pl-sh4sAKA8.mjs.map +0 -1
  414. package/dist/_chunks/pt-2sEtQifY.js +0 -25
  415. package/dist/_chunks/pt-2sEtQifY.js.map +0 -1
  416. package/dist/_chunks/pt-BR-G0-nWgFV.js +0 -25
  417. package/dist/_chunks/pt-BR-G0-nWgFV.js.map +0 -1
  418. package/dist/_chunks/pt-BR-uX3O_t0X.mjs +0 -25
  419. package/dist/_chunks/pt-BR-uX3O_t0X.mjs.map +0 -1
  420. package/dist/_chunks/pt-GqKRRnNe.mjs +0 -25
  421. package/dist/_chunks/pt-GqKRRnNe.mjs.map +0 -1
  422. package/dist/_chunks/ru-dQr7xFOb.mjs +0 -43
  423. package/dist/_chunks/ru-dQr7xFOb.mjs.map +0 -1
  424. package/dist/_chunks/ru-wJyWus4I.js +0 -43
  425. package/dist/_chunks/ru-wJyWus4I.js.map +0 -1
  426. package/dist/_chunks/sk-mcEz1PMW.js +0 -28
  427. package/dist/_chunks/sk-mcEz1PMW.js.map +0 -1
  428. package/dist/_chunks/sk-nreoyD6V.mjs +0 -28
  429. package/dist/_chunks/sk-nreoyD6V.mjs.map +0 -1
  430. package/dist/_chunks/sv-V86KaP9y.js +0 -43
  431. package/dist/_chunks/sv-V86KaP9y.js.map +0 -1
  432. package/dist/_chunks/sv-kIUD_46v.mjs +0 -43
  433. package/dist/_chunks/sv-kIUD_46v.mjs.map +0 -1
  434. package/dist/_chunks/th-IcmZ0Yif.mjs +0 -28
  435. package/dist/_chunks/th-IcmZ0Yif.mjs.map +0 -1
  436. package/dist/_chunks/th-pZN4HdUY.js +0 -28
  437. package/dist/_chunks/th-pZN4HdUY.js.map +0 -1
  438. package/dist/_chunks/tr-CkXew0gQ.mjs +0 -43
  439. package/dist/_chunks/tr-CkXew0gQ.mjs.map +0 -1
  440. package/dist/_chunks/tr-fCijT6nA.js +0 -43
  441. package/dist/_chunks/tr-fCijT6nA.js.map +0 -1
  442. package/dist/_chunks/uk-E8Js7gDb.mjs +0 -27
  443. package/dist/_chunks/uk-E8Js7gDb.mjs.map +0 -1
  444. package/dist/_chunks/uk-TEHpQuls.js +0 -27
  445. package/dist/_chunks/uk-TEHpQuls.js.map +0 -1
  446. package/dist/_chunks/useDocumentation-0Rztpbjg.mjs +0 -66
  447. package/dist/_chunks/useDocumentation-0Rztpbjg.mjs.map +0 -1
  448. package/dist/_chunks/useDocumentation-ffVG-mHB.js +0 -65
  449. package/dist/_chunks/useDocumentation-ffVG-mHB.js.map +0 -1
  450. package/dist/_chunks/vi-Nxtm0xZz.js +0 -28
  451. package/dist/_chunks/vi-Nxtm0xZz.js.map +0 -1
  452. package/dist/_chunks/vi-k1R3Y3mS.mjs +0 -28
  453. package/dist/_chunks/vi-k1R3Y3mS.mjs.map +0 -1
  454. package/dist/_chunks/zh-Hans-FdUTcggu.mjs +0 -32
  455. package/dist/_chunks/zh-Hans-FdUTcggu.mjs.map +0 -1
  456. package/dist/_chunks/zh-Hans-tFSnVett.js +0 -32
  457. package/dist/_chunks/zh-Hans-tFSnVett.js.map +0 -1
  458. package/dist/_chunks/zh-Vd3mfBR-.mjs +0 -43
  459. package/dist/_chunks/zh-Vd3mfBR-.mjs.map +0 -1
  460. package/dist/_chunks/zh-bgauBZz8.js +0 -43
  461. package/dist/_chunks/zh-bgauBZz8.js.map +0 -1
  462. package/jest.config.front.js +0 -7
  463. package/jest.config.js +0 -6
  464. package/packup.config.ts +0 -22
  465. package/server/bootstrap.js +0 -54
  466. package/server/config/default-plugin-config.js +0 -35
  467. package/server/config/index.js +0 -7
  468. package/server/controllers/documentation.js +0 -241
  469. package/server/controllers/index.js +0 -7
  470. package/server/index.js +0 -17
  471. package/server/middlewares/documentation.js +0 -25
  472. package/server/middlewares/index.js +0 -7
  473. package/server/middlewares/restrict-access.js +0 -24
  474. package/server/public/index.html +0 -70
  475. package/server/public/login.html +0 -145
  476. package/server/register.js +0 -11
  477. package/server/routes/index.js +0 -84
  478. package/server/services/__mocks__/mock-content-types.js +0 -269
  479. package/server/services/__mocks__/mock-strapi-data.js +0 -183
  480. package/server/services/__tests__/build-component-schema.test.js +0 -761
  481. package/server/services/__tests__/documentation.test.js +0 -481
  482. package/server/services/__tests__/override.test.js +0 -85
  483. package/server/services/documentation.js +0 -247
  484. package/server/services/helpers/build-api-endpoint-path.js +0 -186
  485. package/server/services/helpers/build-component-schema.js +0 -254
  486. package/server/services/helpers/index.js +0 -9
  487. package/server/services/helpers/utils/clean-schema-attributes.js +0 -246
  488. package/server/services/helpers/utils/get-api-responses.js +0 -105
  489. package/server/services/helpers/utils/get-schema-data.js +0 -32
  490. package/server/services/helpers/utils/loop-content-type-names.js +0 -55
  491. package/server/services/helpers/utils/pascal-case.js +0 -9
  492. package/server/services/helpers/utils/query-params.js +0 -106
  493. package/server/services/helpers/utils/routes.js +0 -10
  494. package/server/services/index.js +0 -9
  495. package/server/services/override.js +0 -52
  496. package/server/services/utils/default-openapi-components.js +0 -40
  497. package/server/services/utils/get-plugins-that-need-documentation.js +0 -24
  498. package/strapi-server.js +0 -3
  499. package/tests/server.js +0 -37
  500. package/tests/setup.js +0 -15
@@ -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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"}
@@ -0,0 +1,313 @@
1
+ import getSchemaData from './get-schema-data.mjs';
2
+ import pascalCase from './pascal-case.mjs';
3
+
4
+ /**
5
+ * @description - Convert attribute component names to OpenAPI component names
6
+ *
7
+ * @returns OpenAPI component name
8
+ */ const convertComponentName = (component, isRef = false)=>{
9
+ const cleanComponentName = `${pascalCase(component)}Component`;
10
+ if (isRef) {
11
+ return `#/components/schemas/${cleanComponentName}`;
12
+ }
13
+ return cleanComponentName;
14
+ };
15
+ /**
16
+ * @description - Converts types found on attributes to OpenAPI acceptable data types
17
+ *
18
+ * @returns Attributes using OpenAPI acceptable data types
19
+ */ const cleanSchemaAttributes = (attributes, { typeMap = new Map(), isRequest = false, didAddStrapiComponentsToSchemas })=>{
20
+ const schemaAttributes = {};
21
+ for (const prop of Object.keys(attributes)){
22
+ const attribute = attributes[prop];
23
+ switch(attribute.type){
24
+ case 'password':
25
+ {
26
+ if (!isRequest) {
27
+ break;
28
+ }
29
+ schemaAttributes[prop] = {
30
+ type: 'string',
31
+ format: 'password',
32
+ example: '*******'
33
+ };
34
+ break;
35
+ }
36
+ case 'email':
37
+ {
38
+ schemaAttributes[prop] = {
39
+ type: 'string',
40
+ format: 'email'
41
+ };
42
+ break;
43
+ }
44
+ case 'string':
45
+ case 'text':
46
+ case 'richtext':
47
+ {
48
+ schemaAttributes[prop] = {
49
+ type: 'string'
50
+ };
51
+ break;
52
+ }
53
+ case 'timestamp':
54
+ {
55
+ schemaAttributes[prop] = {
56
+ type: 'string',
57
+ format: 'timestamp',
58
+ example: Date.now()
59
+ };
60
+ break;
61
+ }
62
+ case 'time':
63
+ {
64
+ schemaAttributes[prop] = {
65
+ type: 'string',
66
+ format: 'time',
67
+ example: '12:54.000'
68
+ };
69
+ break;
70
+ }
71
+ case 'date':
72
+ {
73
+ schemaAttributes[prop] = {
74
+ type: 'string',
75
+ format: 'date'
76
+ };
77
+ break;
78
+ }
79
+ case 'datetime':
80
+ {
81
+ schemaAttributes[prop] = {
82
+ type: 'string',
83
+ format: 'date-time'
84
+ };
85
+ break;
86
+ }
87
+ case 'boolean':
88
+ {
89
+ schemaAttributes[prop] = {
90
+ type: 'boolean'
91
+ };
92
+ break;
93
+ }
94
+ case 'enumeration':
95
+ {
96
+ schemaAttributes[prop] = {
97
+ type: 'string',
98
+ enum: [
99
+ ...attribute.enum
100
+ ]
101
+ };
102
+ break;
103
+ }
104
+ case 'decimal':
105
+ case 'float':
106
+ {
107
+ schemaAttributes[prop] = {
108
+ type: 'number',
109
+ format: 'float'
110
+ };
111
+ break;
112
+ }
113
+ case 'integer':
114
+ {
115
+ schemaAttributes[prop] = {
116
+ type: 'integer'
117
+ };
118
+ break;
119
+ }
120
+ case 'biginteger':
121
+ {
122
+ schemaAttributes[prop] = {
123
+ type: 'string',
124
+ pattern: '^\\d*$',
125
+ example: '123456789'
126
+ };
127
+ break;
128
+ }
129
+ case 'json':
130
+ case 'blocks':
131
+ {
132
+ schemaAttributes[prop] = {};
133
+ break;
134
+ }
135
+ case 'uid':
136
+ {
137
+ schemaAttributes[prop] = {
138
+ type: 'string'
139
+ };
140
+ break;
141
+ }
142
+ case 'component':
143
+ {
144
+ const componentAttributes = strapi.components[attribute.component].attributes;
145
+ const rawComponentSchema = {
146
+ type: 'object',
147
+ properties: {
148
+ ...isRequest ? {} : {
149
+ id: {
150
+ oneOf: [
151
+ {
152
+ type: 'string'
153
+ },
154
+ {
155
+ type: 'number'
156
+ }
157
+ ]
158
+ }
159
+ },
160
+ ...cleanSchemaAttributes(componentAttributes, {
161
+ typeMap,
162
+ isRequest,
163
+ didAddStrapiComponentsToSchemas
164
+ })
165
+ }
166
+ };
167
+ const refComponentSchema = {
168
+ $ref: convertComponentName(attribute.component, true)
169
+ };
170
+ const componentExists = didAddStrapiComponentsToSchemas(convertComponentName(attribute.component), rawComponentSchema);
171
+ const finalComponentSchema = componentExists ? refComponentSchema : rawComponentSchema;
172
+ if (attribute.repeatable) {
173
+ schemaAttributes[prop] = {
174
+ type: 'array',
175
+ items: finalComponentSchema
176
+ };
177
+ } else {
178
+ schemaAttributes[prop] = finalComponentSchema;
179
+ }
180
+ break;
181
+ }
182
+ case 'dynamiczone':
183
+ {
184
+ const components = attribute.components.map((component)=>{
185
+ const componentAttributes = strapi.components[component].attributes;
186
+ const rawComponentSchema = {
187
+ type: 'object',
188
+ properties: {
189
+ ...isRequest ? {} : {
190
+ id: {
191
+ oneOf: [
192
+ {
193
+ type: 'string'
194
+ },
195
+ {
196
+ type: 'number'
197
+ }
198
+ ]
199
+ }
200
+ },
201
+ __component: {
202
+ type: 'string',
203
+ enum: [
204
+ component
205
+ ]
206
+ },
207
+ ...cleanSchemaAttributes(componentAttributes, {
208
+ typeMap,
209
+ isRequest,
210
+ didAddStrapiComponentsToSchemas
211
+ })
212
+ }
213
+ };
214
+ const refComponentSchema = {
215
+ $ref: convertComponentName(component, true)
216
+ };
217
+ const componentExists = didAddStrapiComponentsToSchemas(convertComponentName(component), rawComponentSchema);
218
+ const finalComponentSchema = componentExists ? refComponentSchema : rawComponentSchema;
219
+ return finalComponentSchema;
220
+ });
221
+ let discriminator;
222
+ if (components.every((component)=>Object.hasOwn(component, '$ref'))) {
223
+ discriminator = {
224
+ propertyName: '__component',
225
+ mapping: attribute.components.reduce((acc, component)=>{
226
+ acc[component] = convertComponentName(component, true);
227
+ return acc;
228
+ }, {})
229
+ };
230
+ }
231
+ schemaAttributes[prop] = {
232
+ type: 'array',
233
+ items: {
234
+ anyOf: components
235
+ },
236
+ discriminator
237
+ };
238
+ break;
239
+ }
240
+ case 'media':
241
+ {
242
+ const imageAttributes = strapi.contentType('plugin::upload.file').attributes;
243
+ const isListOfEntities = attribute.multiple ?? false;
244
+ if (isRequest) {
245
+ const oneOfType = {
246
+ oneOf: [
247
+ {
248
+ type: 'integer'
249
+ },
250
+ {
251
+ type: 'string'
252
+ }
253
+ ],
254
+ example: 'string or id'
255
+ };
256
+ schemaAttributes[prop] = isListOfEntities ? {
257
+ type: 'array',
258
+ items: oneOfType
259
+ } : oneOfType;
260
+ break;
261
+ }
262
+ schemaAttributes[prop] = getSchemaData(isListOfEntities, cleanSchemaAttributes(imageAttributes, {
263
+ typeMap,
264
+ didAddStrapiComponentsToSchemas
265
+ }));
266
+ break;
267
+ }
268
+ case 'relation':
269
+ {
270
+ const isListOfEntities = attribute.relation.includes('ToMany');
271
+ if (isRequest) {
272
+ const oneOfType = {
273
+ oneOf: [
274
+ {
275
+ type: 'integer'
276
+ },
277
+ {
278
+ type: 'string'
279
+ }
280
+ ],
281
+ example: 'string or id'
282
+ };
283
+ schemaAttributes[prop] = isListOfEntities ? {
284
+ type: 'array',
285
+ items: oneOfType
286
+ } : oneOfType;
287
+ break;
288
+ }
289
+ if (!('target' in attribute) || !attribute.target || typeMap.has(attribute.target)) {
290
+ schemaAttributes[prop] = getSchemaData(isListOfEntities, {});
291
+ break;
292
+ }
293
+ typeMap.set(attribute.target, true);
294
+ const targetAttributes = strapi.contentType(attribute.target).attributes;
295
+ schemaAttributes[prop] = getSchemaData(isListOfEntities, cleanSchemaAttributes(targetAttributes, {
296
+ typeMap,
297
+ isRequest,
298
+ didAddStrapiComponentsToSchemas
299
+ }));
300
+ break;
301
+ }
302
+ default:
303
+ {
304
+ // @ts-expect-error - This is a catch all for any other types
305
+ throw new Error(`Invalid type ${attribute.type} while generating open api schema.`);
306
+ }
307
+ }
308
+ }
309
+ return schemaAttributes;
310
+ };
311
+
312
+ export { cleanSchemaAttributes as default };
313
+ //# sourceMappingURL=clean-schema-attributes.mjs.map