@strapi/plugin-documentation 5.12.1 → 5.12.2

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 (303) hide show
  1. package/dist/admin/{chunks/Settings-Cpj-uI9B.js → components/SettingsForm.js} +7 -52
  2. package/dist/admin/components/SettingsForm.js.map +1 -0
  3. package/dist/admin/{chunks/Settings-DyLMOJEx.mjs → components/SettingsForm.mjs} +7 -52
  4. package/dist/admin/components/SettingsForm.mjs.map +1 -0
  5. package/dist/admin/constants.js +47 -0
  6. package/dist/admin/constants.js.map +1 -0
  7. package/dist/admin/constants.mjs +45 -0
  8. package/dist/admin/constants.mjs.map +1 -0
  9. package/dist/admin/index.js +93 -3
  10. package/dist/admin/index.js.map +1 -1
  11. package/dist/admin/index.mjs +94 -2
  12. package/dist/admin/index.mjs.map +1 -1
  13. package/dist/admin/{chunks/App-DC2H8bJ5.js → pages/App.js} +8 -8
  14. package/dist/admin/pages/App.js.map +1 -0
  15. package/dist/admin/{chunks/App-D6yQIQar.mjs → pages/App.mjs} +4 -4
  16. package/dist/admin/pages/App.mjs.map +1 -0
  17. package/dist/admin/pages/Settings.js +54 -0
  18. package/dist/admin/pages/Settings.js.map +1 -0
  19. package/dist/admin/pages/Settings.mjs +52 -0
  20. package/dist/admin/pages/Settings.mjs.map +1 -0
  21. package/dist/admin/pluginId.js +6 -0
  22. package/dist/admin/pluginId.js.map +1 -0
  23. package/dist/admin/pluginId.mjs +4 -0
  24. package/dist/admin/pluginId.mjs.map +1 -0
  25. package/dist/admin/{chunks/getTrad-AvLNMP3V.js → services/api.js} +1 -5
  26. package/dist/admin/services/api.js.map +1 -0
  27. package/dist/admin/{chunks/getTrad-D9juLfq6.mjs → services/api.mjs} +2 -5
  28. package/dist/admin/services/api.mjs.map +1 -0
  29. package/dist/admin/{chunks/ar-Dix6VU4a.js → translations/ar.json.js} +2 -2
  30. package/dist/admin/translations/ar.json.js.map +1 -0
  31. package/dist/admin/{chunks/ar-Bu09tPI1.mjs → translations/ar.json.mjs} +1 -1
  32. package/dist/admin/translations/ar.json.mjs.map +1 -0
  33. package/dist/admin/{chunks/cs-C6k-mH5i.js → translations/cs.json.js} +2 -2
  34. package/dist/admin/translations/cs.json.js.map +1 -0
  35. package/dist/admin/{chunks/cs-tf-UeGst.mjs → translations/cs.json.mjs} +1 -1
  36. package/dist/admin/translations/cs.json.mjs.map +1 -0
  37. package/dist/admin/{chunks/de-DYskRe8j.js → translations/de.json.js} +2 -2
  38. package/dist/admin/translations/de.json.js.map +1 -0
  39. package/dist/admin/{chunks/de-CMhqnPQP.mjs → translations/de.json.mjs} +1 -1
  40. package/dist/admin/translations/de.json.mjs.map +1 -0
  41. package/dist/admin/{chunks/dk-BYJqzR_M.js → translations/dk.json.js} +2 -2
  42. package/dist/admin/translations/dk.json.js.map +1 -0
  43. package/dist/admin/{chunks/dk-BmQOOeIc.mjs → translations/dk.json.mjs} +1 -1
  44. package/dist/admin/translations/dk.json.mjs.map +1 -0
  45. package/dist/admin/{chunks/en-B90IBmYB.js → translations/en.json.js} +2 -2
  46. package/dist/admin/translations/en.json.js.map +1 -0
  47. package/dist/admin/{chunks/en-Cx8yPuig.mjs → translations/en.json.mjs} +1 -1
  48. package/dist/admin/translations/en.json.mjs.map +1 -0
  49. package/dist/admin/{chunks/es-5WsjlhIl.js → translations/es.json.js} +2 -2
  50. package/dist/admin/translations/es.json.js.map +1 -0
  51. package/dist/admin/{chunks/es-DAdgO3Ey.mjs → translations/es.json.mjs} +1 -1
  52. package/dist/admin/translations/es.json.mjs.map +1 -0
  53. package/dist/admin/{chunks/fr-C-vHEudQ.js → translations/fr.json.js} +2 -2
  54. package/dist/admin/translations/fr.json.js.map +1 -0
  55. package/dist/admin/{chunks/fr-B5fjFqKX.mjs → translations/fr.json.mjs} +1 -1
  56. package/dist/admin/translations/fr.json.mjs.map +1 -0
  57. package/dist/admin/{chunks/id-BKiCYOdS.js → translations/id.json.js} +2 -2
  58. package/dist/admin/translations/id.json.js.map +1 -0
  59. package/dist/admin/{chunks/id-CLApXj97.mjs → translations/id.json.mjs} +1 -1
  60. package/dist/admin/translations/id.json.mjs.map +1 -0
  61. package/dist/admin/{chunks/it-B7SnHLP2.js → translations/it.json.js} +2 -2
  62. package/dist/admin/translations/it.json.js.map +1 -0
  63. package/dist/admin/{chunks/it-C7GcWYBa.mjs → translations/it.json.mjs} +1 -1
  64. package/dist/admin/translations/it.json.mjs.map +1 -0
  65. package/dist/admin/{chunks/ko-CjOasZmz.js → translations/ko.json.js} +2 -2
  66. package/dist/admin/translations/ko.json.js.map +1 -0
  67. package/dist/admin/{chunks/ko-DZvks90a.mjs → translations/ko.json.mjs} +1 -1
  68. package/dist/admin/translations/ko.json.mjs.map +1 -0
  69. package/dist/admin/{chunks/ms-C2TEZHkD.js → translations/ms.json.js} +2 -2
  70. package/dist/admin/translations/ms.json.js.map +1 -0
  71. package/dist/admin/{chunks/ms-Df9gDB9M.mjs → translations/ms.json.mjs} +1 -1
  72. package/dist/admin/translations/ms.json.mjs.map +1 -0
  73. package/dist/admin/{chunks/nl-CLp2dhr9.js → translations/nl.json.js} +2 -2
  74. package/dist/admin/translations/nl.json.js.map +1 -0
  75. package/dist/admin/{chunks/nl-BlmTMaTL.mjs → translations/nl.json.mjs} +1 -1
  76. package/dist/admin/translations/nl.json.mjs.map +1 -0
  77. package/dist/admin/{chunks/pl-C8WRO2pt.js → translations/pl.json.js} +2 -2
  78. package/dist/admin/translations/pl.json.js.map +1 -0
  79. package/dist/admin/{chunks/pl-5iT3b9r4.mjs → translations/pl.json.mjs} +1 -1
  80. package/dist/admin/translations/pl.json.mjs.map +1 -0
  81. package/dist/admin/{chunks/pt-BR-Ds-dLXzD.js → translations/pt-BR.json.js} +2 -2
  82. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  83. package/dist/admin/{chunks/pt-BR-De5jokla.mjs → translations/pt-BR.json.mjs} +1 -1
  84. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  85. package/dist/admin/{chunks/pt-DL-rrjA1.js → translations/pt.json.js} +2 -2
  86. package/dist/admin/translations/pt.json.js.map +1 -0
  87. package/dist/admin/{chunks/pt-BK5YbXpM.mjs → translations/pt.json.mjs} +1 -1
  88. package/dist/admin/translations/pt.json.mjs.map +1 -0
  89. package/dist/admin/{chunks/ru-Cqv4k9my.js → translations/ru.json.js} +2 -2
  90. package/dist/admin/translations/ru.json.js.map +1 -0
  91. package/dist/admin/{chunks/ru-C_16WuLP.mjs → translations/ru.json.mjs} +1 -1
  92. package/dist/admin/translations/ru.json.mjs.map +1 -0
  93. package/dist/admin/{chunks/sk-D6l_EMOT.js → translations/sk.json.js} +2 -2
  94. package/dist/admin/translations/sk.json.js.map +1 -0
  95. package/dist/admin/{chunks/sk-B7RadPe4.mjs → translations/sk.json.mjs} +1 -1
  96. package/dist/admin/translations/sk.json.mjs.map +1 -0
  97. package/dist/admin/{chunks/sv-Xg5gbVO9.js → translations/sv.json.js} +2 -2
  98. package/dist/admin/translations/sv.json.js.map +1 -0
  99. package/dist/admin/{chunks/sv-DK5DOsrV.mjs → translations/sv.json.mjs} +1 -1
  100. package/dist/admin/translations/sv.json.mjs.map +1 -0
  101. package/dist/admin/{chunks/th-Pci1U3n6.js → translations/th.json.js} +2 -2
  102. package/dist/admin/translations/th.json.js.map +1 -0
  103. package/dist/admin/{chunks/th-DNiRgKQH.mjs → translations/th.json.mjs} +1 -1
  104. package/dist/admin/translations/th.json.mjs.map +1 -0
  105. package/dist/admin/{chunks/tr-CBlxk5Of.js → translations/tr.json.js} +2 -2
  106. package/dist/admin/translations/tr.json.js.map +1 -0
  107. package/dist/admin/{chunks/tr-CWX4cUiB.mjs → translations/tr.json.mjs} +1 -1
  108. package/dist/admin/translations/tr.json.mjs.map +1 -0
  109. package/dist/admin/{chunks/uk-BkF_x68T.js → translations/uk.json.js} +2 -2
  110. package/dist/admin/translations/uk.json.js.map +1 -0
  111. package/dist/admin/{chunks/uk-CWOtQQic.mjs → translations/uk.json.mjs} +1 -1
  112. package/dist/admin/translations/uk.json.mjs.map +1 -0
  113. package/dist/admin/{chunks/vi-CAG7iDHR.js → translations/vi.json.js} +2 -2
  114. package/dist/admin/translations/vi.json.js.map +1 -0
  115. package/dist/admin/{chunks/vi-geadDLtq.mjs → translations/vi.json.mjs} +1 -1
  116. package/dist/admin/translations/vi.json.mjs.map +1 -0
  117. package/dist/admin/{chunks/zh-Hans-CtXQdJhw.js → translations/zh-Hans.json.js} +2 -2
  118. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  119. package/dist/admin/{chunks/zh-Hans-fcRf-TLx.mjs → translations/zh-Hans.json.mjs} +1 -1
  120. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  121. package/dist/admin/{chunks/zh-rKHsKNA3.js → translations/zh.json.js} +2 -2
  122. package/dist/admin/translations/zh.json.js.map +1 -0
  123. package/dist/admin/{chunks/zh-E4LX--2j.mjs → translations/zh.json.mjs} +1 -1
  124. package/dist/admin/translations/zh.json.mjs.map +1 -0
  125. package/dist/admin/utils/baseQuery.js +8 -0
  126. package/dist/admin/utils/baseQuery.js.map +1 -0
  127. package/dist/admin/utils/baseQuery.mjs +6 -0
  128. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  129. package/dist/admin/utils/getTrad.js +8 -0
  130. package/dist/admin/utils/getTrad.js.map +1 -0
  131. package/dist/admin/utils/getTrad.mjs +6 -0
  132. package/dist/admin/utils/getTrad.mjs.map +1 -0
  133. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  134. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  135. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  136. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  137. package/dist/server/bootstrap.js +57 -0
  138. package/dist/server/bootstrap.js.map +1 -0
  139. package/dist/server/bootstrap.mjs +55 -0
  140. package/dist/server/bootstrap.mjs.map +1 -0
  141. package/dist/server/config/default-plugin-config.js +88 -0
  142. package/dist/server/config/default-plugin-config.js.map +1 -0
  143. package/dist/server/config/default-plugin-config.mjs +86 -0
  144. package/dist/server/config/default-plugin-config.mjs.map +1 -0
  145. package/dist/server/config/index.js +10 -0
  146. package/dist/server/config/index.js.map +1 -0
  147. package/dist/server/config/index.mjs +8 -0
  148. package/dist/server/config/index.mjs.map +1 -0
  149. package/dist/server/controllers/documentation.js +185 -0
  150. package/dist/server/controllers/documentation.js.map +1 -0
  151. package/dist/server/controllers/documentation.mjs +181 -0
  152. package/dist/server/controllers/documentation.mjs.map +1 -0
  153. package/dist/server/controllers/index.js +10 -0
  154. package/dist/server/controllers/index.js.map +1 -0
  155. package/dist/server/controllers/index.mjs +8 -0
  156. package/dist/server/controllers/index.mjs.map +1 -0
  157. package/dist/server/index.js +12 -1586
  158. package/dist/server/index.js.map +1 -1
  159. package/dist/server/index.mjs +6 -1561
  160. package/dist/server/index.mjs.map +1 -1
  161. package/dist/server/middlewares/documentation.js +27 -0
  162. package/dist/server/middlewares/documentation.js.map +1 -0
  163. package/dist/server/middlewares/documentation.mjs +25 -0
  164. package/dist/server/middlewares/documentation.mjs.map +1 -0
  165. package/dist/server/middlewares/restrict-access.js +23 -0
  166. package/dist/server/middlewares/restrict-access.js.map +1 -0
  167. package/dist/server/middlewares/restrict-access.mjs +21 -0
  168. package/dist/server/middlewares/restrict-access.mjs.map +1 -0
  169. package/dist/server/{chunks/index--0fU1WeK.js → public/index.html.js} +2 -2
  170. package/dist/server/public/index.html.js.map +1 -0
  171. package/dist/server/{chunks/index-Dz3orHaf.mjs → public/index.html.mjs} +1 -1
  172. package/dist/server/public/index.html.mjs.map +1 -0
  173. package/dist/server/{chunks/login-CMPqkCFT.js → public/login.html.js} +2 -2
  174. package/dist/server/public/login.html.js.map +1 -0
  175. package/dist/server/{chunks/login-CYdORE5u.mjs → public/login.html.mjs} +1 -1
  176. package/dist/server/public/login.html.mjs.map +1 -0
  177. package/dist/server/register.js +12 -0
  178. package/dist/server/register.js.map +1 -0
  179. package/dist/server/register.mjs +10 -0
  180. package/dist/server/register.mjs.map +1 -0
  181. package/dist/server/routes/index.js +106 -0
  182. package/dist/server/routes/index.js.map +1 -0
  183. package/dist/server/routes/index.mjs +104 -0
  184. package/dist/server/routes/index.mjs.map +1 -0
  185. package/dist/server/services/documentation.js +182 -0
  186. package/dist/server/services/documentation.js.map +1 -0
  187. package/dist/server/services/documentation.mjs +180 -0
  188. package/dist/server/services/documentation.mjs.map +1 -0
  189. package/dist/server/services/helpers/build-api-endpoint-path.js +162 -0
  190. package/dist/server/services/helpers/build-api-endpoint-path.js.map +1 -0
  191. package/dist/server/services/helpers/build-api-endpoint-path.mjs +141 -0
  192. package/dist/server/services/helpers/build-api-endpoint-path.mjs.map +1 -0
  193. package/dist/server/services/helpers/build-component-schema.js +167 -0
  194. package/dist/server/services/helpers/build-component-schema.js.map +1 -0
  195. package/dist/server/services/helpers/build-component-schema.mjs +165 -0
  196. package/dist/server/services/helpers/build-component-schema.mjs.map +1 -0
  197. package/dist/server/services/helpers/utils/clean-schema-attributes.js +301 -0
  198. package/dist/server/services/helpers/utils/clean-schema-attributes.js.map +1 -0
  199. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs +299 -0
  200. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs.map +1 -0
  201. package/dist/server/services/helpers/utils/get-api-responses.js +88 -0
  202. package/dist/server/services/helpers/utils/get-api-responses.js.map +1 -0
  203. package/dist/server/services/helpers/utils/get-api-responses.mjs +86 -0
  204. package/dist/server/services/helpers/utils/get-api-responses.mjs.map +1 -0
  205. package/dist/server/services/helpers/utils/get-schema-data.js +43 -0
  206. package/dist/server/services/helpers/utils/get-schema-data.js.map +1 -0
  207. package/dist/server/services/helpers/utils/get-schema-data.mjs +41 -0
  208. package/dist/server/services/helpers/utils/get-schema-data.mjs.map +1 -0
  209. package/dist/server/services/helpers/utils/loop-content-type-names.js +40 -0
  210. package/dist/server/services/helpers/utils/loop-content-type-names.js.map +1 -0
  211. package/dist/server/services/helpers/utils/loop-content-type-names.mjs +38 -0
  212. package/dist/server/services/helpers/utils/loop-content-type-names.mjs.map +1 -0
  213. package/dist/server/services/helpers/utils/pascal-case.js +10 -0
  214. package/dist/server/services/helpers/utils/pascal-case.js.map +1 -0
  215. package/dist/server/services/helpers/utils/pascal-case.mjs +8 -0
  216. package/dist/server/services/helpers/utils/pascal-case.mjs.map +1 -0
  217. package/dist/server/services/helpers/utils/query-params.js +109 -0
  218. package/dist/server/services/helpers/utils/query-params.js.map +1 -0
  219. package/dist/server/services/helpers/utils/query-params.mjs +107 -0
  220. package/dist/server/services/helpers/utils/query-params.mjs.map +1 -0
  221. package/dist/server/services/helpers/utils/routes.js +11 -0
  222. package/dist/server/services/helpers/utils/routes.js.map +1 -0
  223. package/dist/server/services/helpers/utils/routes.mjs +9 -0
  224. package/dist/server/services/helpers/utils/routes.mjs.map +1 -0
  225. package/dist/server/services/index.js +13 -0
  226. package/dist/server/services/index.js.map +1 -0
  227. package/dist/server/services/index.mjs +11 -0
  228. package/dist/server/services/index.mjs.map +1 -0
  229. package/dist/server/services/override.js +45 -0
  230. package/dist/server/services/override.js.map +1 -0
  231. package/dist/server/services/override.mjs +43 -0
  232. package/dist/server/services/override.mjs.map +1 -0
  233. package/dist/server/services/utils/get-plugins-that-need-documentation.js +24 -0
  234. package/dist/server/services/utils/get-plugins-that-need-documentation.js.map +1 -0
  235. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs +22 -0
  236. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs.map +1 -0
  237. package/dist/server/utils.js +10 -0
  238. package/dist/server/utils.js.map +1 -0
  239. package/dist/server/utils.mjs +8 -0
  240. package/dist/server/utils.mjs.map +1 -0
  241. package/package.json +6 -6
  242. package/dist/admin/chunks/App-D6yQIQar.mjs.map +0 -1
  243. package/dist/admin/chunks/App-DC2H8bJ5.js.map +0 -1
  244. package/dist/admin/chunks/Settings-Cpj-uI9B.js.map +0 -1
  245. package/dist/admin/chunks/Settings-DyLMOJEx.mjs.map +0 -1
  246. package/dist/admin/chunks/ar-Bu09tPI1.mjs.map +0 -1
  247. package/dist/admin/chunks/ar-Dix6VU4a.js.map +0 -1
  248. package/dist/admin/chunks/cs-C6k-mH5i.js.map +0 -1
  249. package/dist/admin/chunks/cs-tf-UeGst.mjs.map +0 -1
  250. package/dist/admin/chunks/de-CMhqnPQP.mjs.map +0 -1
  251. package/dist/admin/chunks/de-DYskRe8j.js.map +0 -1
  252. package/dist/admin/chunks/dk-BYJqzR_M.js.map +0 -1
  253. package/dist/admin/chunks/dk-BmQOOeIc.mjs.map +0 -1
  254. package/dist/admin/chunks/en-B90IBmYB.js.map +0 -1
  255. package/dist/admin/chunks/en-Cx8yPuig.mjs.map +0 -1
  256. package/dist/admin/chunks/es-5WsjlhIl.js.map +0 -1
  257. package/dist/admin/chunks/es-DAdgO3Ey.mjs.map +0 -1
  258. package/dist/admin/chunks/fr-B5fjFqKX.mjs.map +0 -1
  259. package/dist/admin/chunks/fr-C-vHEudQ.js.map +0 -1
  260. package/dist/admin/chunks/getTrad-AvLNMP3V.js.map +0 -1
  261. package/dist/admin/chunks/getTrad-D9juLfq6.mjs.map +0 -1
  262. package/dist/admin/chunks/id-BKiCYOdS.js.map +0 -1
  263. package/dist/admin/chunks/id-CLApXj97.mjs.map +0 -1
  264. package/dist/admin/chunks/index-BHy3RKs2.mjs +0 -144
  265. package/dist/admin/chunks/index-BHy3RKs2.mjs.map +0 -1
  266. package/dist/admin/chunks/index-BSW-EfNW.js +0 -148
  267. package/dist/admin/chunks/index-BSW-EfNW.js.map +0 -1
  268. package/dist/admin/chunks/it-B7SnHLP2.js.map +0 -1
  269. package/dist/admin/chunks/it-C7GcWYBa.mjs.map +0 -1
  270. package/dist/admin/chunks/ko-CjOasZmz.js.map +0 -1
  271. package/dist/admin/chunks/ko-DZvks90a.mjs.map +0 -1
  272. package/dist/admin/chunks/ms-C2TEZHkD.js.map +0 -1
  273. package/dist/admin/chunks/ms-Df9gDB9M.mjs.map +0 -1
  274. package/dist/admin/chunks/nl-BlmTMaTL.mjs.map +0 -1
  275. package/dist/admin/chunks/nl-CLp2dhr9.js.map +0 -1
  276. package/dist/admin/chunks/pl-5iT3b9r4.mjs.map +0 -1
  277. package/dist/admin/chunks/pl-C8WRO2pt.js.map +0 -1
  278. package/dist/admin/chunks/pt-BK5YbXpM.mjs.map +0 -1
  279. package/dist/admin/chunks/pt-BR-De5jokla.mjs.map +0 -1
  280. package/dist/admin/chunks/pt-BR-Ds-dLXzD.js.map +0 -1
  281. package/dist/admin/chunks/pt-DL-rrjA1.js.map +0 -1
  282. package/dist/admin/chunks/ru-C_16WuLP.mjs.map +0 -1
  283. package/dist/admin/chunks/ru-Cqv4k9my.js.map +0 -1
  284. package/dist/admin/chunks/sk-B7RadPe4.mjs.map +0 -1
  285. package/dist/admin/chunks/sk-D6l_EMOT.js.map +0 -1
  286. package/dist/admin/chunks/sv-DK5DOsrV.mjs.map +0 -1
  287. package/dist/admin/chunks/sv-Xg5gbVO9.js.map +0 -1
  288. package/dist/admin/chunks/th-DNiRgKQH.mjs.map +0 -1
  289. package/dist/admin/chunks/th-Pci1U3n6.js.map +0 -1
  290. package/dist/admin/chunks/tr-CBlxk5Of.js.map +0 -1
  291. package/dist/admin/chunks/tr-CWX4cUiB.mjs.map +0 -1
  292. package/dist/admin/chunks/uk-BkF_x68T.js.map +0 -1
  293. package/dist/admin/chunks/uk-CWOtQQic.mjs.map +0 -1
  294. package/dist/admin/chunks/vi-CAG7iDHR.js.map +0 -1
  295. package/dist/admin/chunks/vi-geadDLtq.mjs.map +0 -1
  296. package/dist/admin/chunks/zh-E4LX--2j.mjs.map +0 -1
  297. package/dist/admin/chunks/zh-Hans-CtXQdJhw.js.map +0 -1
  298. package/dist/admin/chunks/zh-Hans-fcRf-TLx.mjs.map +0 -1
  299. package/dist/admin/chunks/zh-rKHsKNA3.js.map +0 -1
  300. package/dist/server/chunks/index--0fU1WeK.js.map +0 -1
  301. package/dist/server/chunks/index-Dz3orHaf.mjs.map +0 -1
  302. package/dist/server/chunks/login-CMPqkCFT.js.map +0 -1
  303. package/dist/server/chunks/login-CYdORE5u.mjs.map +0 -1
@@ -0,0 +1,104 @@
1
+ import restrictAccess from '../middlewares/restrict-access.mjs';
2
+
3
+ var routes = [
4
+ {
5
+ method: 'GET',
6
+ path: '/',
7
+ handler: 'documentation.index',
8
+ config: {
9
+ auth: false,
10
+ middlewares: [
11
+ restrictAccess
12
+ ]
13
+ }
14
+ },
15
+ {
16
+ method: 'GET',
17
+ path: '/v:major(\\d+).:minor(\\d+).:patch(\\d+)',
18
+ handler: 'documentation.index',
19
+ config: {
20
+ auth: false,
21
+ middlewares: [
22
+ restrictAccess
23
+ ]
24
+ }
25
+ },
26
+ {
27
+ method: 'GET',
28
+ path: '/login',
29
+ handler: 'documentation.loginView',
30
+ config: {
31
+ auth: false
32
+ }
33
+ },
34
+ {
35
+ method: 'POST',
36
+ path: '/login',
37
+ handler: 'documentation.login',
38
+ config: {
39
+ auth: false
40
+ }
41
+ },
42
+ {
43
+ method: 'GET',
44
+ path: '/getInfos',
45
+ handler: 'documentation.getInfos',
46
+ config: {
47
+ policies: [
48
+ {
49
+ name: 'admin::hasPermissions',
50
+ config: {
51
+ actions: [
52
+ 'plugin::documentation.read'
53
+ ]
54
+ }
55
+ }
56
+ ]
57
+ }
58
+ },
59
+ {
60
+ method: 'POST',
61
+ path: '/regenerateDoc',
62
+ handler: 'documentation.regenerateDoc',
63
+ config: {
64
+ policies: [
65
+ {
66
+ name: 'admin::hasPermissions',
67
+ config: {
68
+ actions: [
69
+ 'plugin::documentation.settings.regenerate'
70
+ ]
71
+ }
72
+ }
73
+ ]
74
+ }
75
+ },
76
+ {
77
+ method: 'PUT',
78
+ path: '/updateSettings',
79
+ handler: 'documentation.updateSettings',
80
+ config: {
81
+ policies: [
82
+ {
83
+ name: 'admin::hasPermissions',
84
+ config: {
85
+ actions: [
86
+ 'plugin::documentation.settings.update'
87
+ ]
88
+ }
89
+ }
90
+ ]
91
+ }
92
+ },
93
+ {
94
+ method: 'DELETE',
95
+ path: '/deleteDoc/:version',
96
+ handler: 'documentation.deleteDoc',
97
+ config: {
98
+ policies: []
99
+ }
100
+ }
101
+ ];
102
+
103
+ export { routes as default };
104
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import restrictAccess from '../middlewares/restrict-access';\n\nexport default [\n {\n method: 'GET',\n path: '/',\n handler: 'documentation.index',\n config: {\n auth: false,\n middlewares: [restrictAccess],\n },\n },\n {\n method: 'GET',\n path: '/v:major(\\\\d+).:minor(\\\\d+).:patch(\\\\d+)',\n handler: 'documentation.index',\n config: {\n auth: false,\n middlewares: [restrictAccess],\n },\n },\n {\n method: 'GET',\n path: '/login',\n handler: 'documentation.loginView',\n config: {\n auth: false,\n },\n },\n {\n method: 'POST',\n path: '/login',\n handler: 'documentation.login',\n config: {\n auth: false,\n },\n },\n {\n method: 'GET',\n path: '/getInfos',\n handler: 'documentation.getInfos',\n config: {\n policies: [\n { name: 'admin::hasPermissions', config: { actions: ['plugin::documentation.read'] } },\n ],\n },\n },\n {\n method: 'POST',\n path: '/regenerateDoc',\n handler: 'documentation.regenerateDoc',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: { actions: ['plugin::documentation.settings.regenerate'] },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/updateSettings',\n handler: 'documentation.updateSettings',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: { actions: ['plugin::documentation.settings.update'] },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/deleteDoc/:version',\n handler: 'documentation.deleteDoc',\n config: {\n policies: [],\n },\n },\n];\n"],"names":["method","path","handler","config","auth","middlewares","restrictAccess","policies","name","actions"],"mappings":";;AAEA,aAAe;AACb,IAAA;QACEA,MAAQ,EAAA,KAAA;QACRC,IAAM,EAAA,GAAA;QACNC,OAAS,EAAA,qBAAA;QACTC,MAAQ,EAAA;YACNC,IAAM,EAAA,KAAA;YACNC,WAAa,EAAA;AAACC,gBAAAA;AAAe;AAC/B;AACF,KAAA;AACA,IAAA;QACEN,MAAQ,EAAA,KAAA;QACRC,IAAM,EAAA,0CAAA;QACNC,OAAS,EAAA,qBAAA;QACTC,MAAQ,EAAA;YACNC,IAAM,EAAA,KAAA;YACNC,WAAa,EAAA;AAACC,gBAAAA;AAAe;AAC/B;AACF,KAAA;AACA,IAAA;QACEN,MAAQ,EAAA,KAAA;QACRC,IAAM,EAAA,QAAA;QACNC,OAAS,EAAA,yBAAA;QACTC,MAAQ,EAAA;YACNC,IAAM,EAAA;AACR;AACF,KAAA;AACA,IAAA;QACEJ,MAAQ,EAAA,MAAA;QACRC,IAAM,EAAA,QAAA;QACNC,OAAS,EAAA,qBAAA;QACTC,MAAQ,EAAA;YACNC,IAAM,EAAA;AACR;AACF,KAAA;AACA,IAAA;QACEJ,MAAQ,EAAA,KAAA;QACRC,IAAM,EAAA,WAAA;QACNC,OAAS,EAAA,wBAAA;QACTC,MAAQ,EAAA;YACNI,QAAU,EAAA;AACR,gBAAA;oBAAEC,IAAM,EAAA,uBAAA;oBAAyBL,MAAQ,EAAA;wBAAEM,OAAS,EAAA;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACET,MAAQ,EAAA,MAAA;QACRC,IAAM,EAAA,gBAAA;QACNC,OAAS,EAAA,6BAAA;QACTC,MAAQ,EAAA;YACNI,QAAU,EAAA;AACR,gBAAA;oBACEC,IAAM,EAAA,uBAAA;oBACNL,MAAQ,EAAA;wBAAEM,OAAS,EAAA;AAAC,4BAAA;AAA4C;AAAC;AACnE;AACD;AACH;AACF,KAAA;AACA,IAAA;QACET,MAAQ,EAAA,KAAA;QACRC,IAAM,EAAA,iBAAA;QACNC,OAAS,EAAA,8BAAA;QACTC,MAAQ,EAAA;YACNI,QAAU,EAAA;AACR,gBAAA;oBACEC,IAAM,EAAA,uBAAA;oBACNL,MAAQ,EAAA;wBAAEM,OAAS,EAAA;AAAC,4BAAA;AAAwC;AAAC;AAC/D;AACD;AACH;AACF,KAAA;AACA,IAAA;QACET,MAAQ,EAAA,QAAA;QACRC,IAAM,EAAA,qBAAA;QACNC,OAAS,EAAA,yBAAA;QACTC,MAAQ,EAAA;AACNI,YAAAA,QAAAA,EAAU;AACZ;AACF;CACD;;;;"}
@@ -0,0 +1,182 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var fs = require('fs-extra');
5
+ var immer = require('immer');
6
+ var buildApiEndpointPath = require('./helpers/build-api-endpoint-path.js');
7
+ var buildComponentSchema = require('./helpers/build-component-schema.js');
8
+ var getPluginsThatNeedDocumentation = require('./utils/get-plugins-that-need-documentation.js');
9
+ var utils = require('../utils.js');
10
+
11
+ const createService = ({ strapi })=>{
12
+ const config = strapi.config.get('plugin::documentation');
13
+ const pluginsThatNeedDocumentation = getPluginsThatNeedDocumentation.getPluginsThatNeedDocumentation(config);
14
+ const overrideService = utils.getService('override');
15
+ return {
16
+ getDocumentationVersion () {
17
+ return config.info.version;
18
+ },
19
+ getFullDocumentationPath () {
20
+ return path.join(strapi.dirs.app.extensions, 'documentation', 'documentation');
21
+ },
22
+ getDocumentationVersions () {
23
+ return fs.readdirSync(this.getFullDocumentationPath()).map((version)=>{
24
+ try {
25
+ const filePath = path.resolve(this.getFullDocumentationPath(), version, 'full_documentation.json');
26
+ const doc = JSON.parse(fs.readFileSync(filePath).toString());
27
+ const generatedDate = doc.info['x-generation-date'];
28
+ return {
29
+ version,
30
+ generatedDate,
31
+ url: ''
32
+ };
33
+ } catch (err) {
34
+ return null;
35
+ }
36
+ }).filter((x)=>x);
37
+ },
38
+ /**
39
+ * Returns settings stored in core-store
40
+ */ async getDocumentationAccess () {
41
+ const { restrictedAccess } = await strapi.store({
42
+ environment: '',
43
+ type: 'plugin',
44
+ name: 'documentation',
45
+ key: 'config'
46
+ }).get();
47
+ return {
48
+ restrictedAccess
49
+ };
50
+ },
51
+ getApiDocumentationPath (api) {
52
+ if (api.getter === 'plugin') {
53
+ return path.join(strapi.dirs.app.extensions, api.name, 'documentation');
54
+ }
55
+ return path.join(strapi.dirs.app.api, api.name, 'documentation');
56
+ },
57
+ async deleteDocumentation (version) {
58
+ const apis = this.getPluginAndApiInfo();
59
+ for (const api of apis){
60
+ await fs.remove(path.join(this.getApiDocumentationPath(api), version));
61
+ }
62
+ await fs.remove(path.join(this.getFullDocumentationPath(), version));
63
+ },
64
+ getPluginAndApiInfo () {
65
+ const pluginsToDocument = pluginsThatNeedDocumentation.map((plugin)=>{
66
+ return {
67
+ name: plugin,
68
+ getter: 'plugin',
69
+ ctNames: Object.keys(strapi.plugin(plugin).contentTypes)
70
+ };
71
+ });
72
+ const apisToDocument = Object.keys(strapi.apis).map((api)=>{
73
+ return {
74
+ name: api,
75
+ getter: 'api',
76
+ ctNames: Object.keys(strapi.api(api).contentTypes)
77
+ };
78
+ });
79
+ return [
80
+ ...apisToDocument,
81
+ ...pluginsToDocument
82
+ ];
83
+ },
84
+ /**
85
+ * @description - Creates the Swagger json files
86
+ */ async generateFullDoc (versionOpt) {
87
+ const version = versionOpt ?? this.getDocumentationVersion();
88
+ const apis = this.getPluginAndApiInfo();
89
+ const apisThatNeedGeneratedDocumentation = apis.filter(({ name })=>!overrideService.isEnabled(name));
90
+ // Initialize the generated documentation with defaults
91
+ const generatedDocumentation = await immer.produce(config, async (draft)=>{
92
+ if (draft.servers?.length === 0) {
93
+ // When no servers found set the defaults
94
+ const serverUrl = strapi.config.get('server.absoluteUrl');
95
+ const apiPath = strapi.config.get('api.rest.prefix');
96
+ draft.servers = [
97
+ {
98
+ url: `${serverUrl}${apiPath}`,
99
+ description: 'Development server'
100
+ }
101
+ ];
102
+ }
103
+ if (!draft.components) {
104
+ draft.components = {};
105
+ }
106
+ // Set the generated date
107
+ draft.info['x-generation-date'] = new Date().toISOString();
108
+ // Set the plugins that need documentation
109
+ draft['x-strapi-config'].plugins = pluginsThatNeedDocumentation;
110
+ // Delete the mutateDocumentation key from the config so it doesn't end up in the spec
111
+ delete draft['x-strapi-config'].mutateDocumentation;
112
+ // Generate the documentation for each api and update the generatedDocumentation
113
+ for (const api of apisThatNeedGeneratedDocumentation){
114
+ const newApiPath = buildApiEndpointPath(api);
115
+ const generatedSchemas = buildComponentSchema(api);
116
+ if (generatedSchemas) {
117
+ draft.components.schemas = {
118
+ ...draft.components.schemas,
119
+ ...generatedSchemas
120
+ };
121
+ }
122
+ if (newApiPath) {
123
+ draft.paths = {
124
+ ...draft.paths,
125
+ ...newApiPath
126
+ };
127
+ }
128
+ }
129
+ // When overrides are present update the generatedDocumentation
130
+ if (overrideService.registeredOverrides.length > 0) {
131
+ overrideService.registeredOverrides.forEach((override)=>{
132
+ // Only run the overrrides when no override version is provided,
133
+ // or when the generated documentation version matches the override version
134
+ if (!override?.info?.version || override.info.version === version) {
135
+ if (override.tags) {
136
+ // Merge override tags with the generated tags
137
+ draft.tags = draft.tags || [];
138
+ draft.tags.push(...override.tags);
139
+ }
140
+ if (override.paths) {
141
+ // Merge override paths with the generated paths
142
+ // The override will add a new path or replace the value of an existing path
143
+ draft.paths = {
144
+ ...draft.paths,
145
+ ...override.paths
146
+ };
147
+ }
148
+ if (override.components) {
149
+ const keys = Object.keys(override.components);
150
+ keys.forEach((overrideKey)=>{
151
+ draft.components = draft.components || {};
152
+ const overrideValue = override.components?.[overrideKey];
153
+ const originalValue = draft.components?.[overrideKey];
154
+ Object.assign(draft.components, {
155
+ [overrideKey]: {
156
+ ...originalValue,
157
+ ...overrideValue
158
+ }
159
+ });
160
+ });
161
+ }
162
+ }
163
+ });
164
+ }
165
+ });
166
+ // Escape hatch, allow the user to provide a mutateDocumentation function that can alter any part of
167
+ // the generated documentation before it is written to the file system
168
+ const userMutatesDocumentation = config['x-strapi-config'].mutateDocumentation;
169
+ const finalDocumentation = userMutatesDocumentation ? immer.produce(generatedDocumentation, userMutatesDocumentation) : generatedDocumentation;
170
+ // Get the file path for the final documentation
171
+ const fullDocJsonPath = path.join(this.getFullDocumentationPath(), version, 'full_documentation.json');
172
+ // Write the documentation to the file system
173
+ await fs.ensureFile(fullDocJsonPath);
174
+ await fs.writeJson(fullDocJsonPath, finalDocumentation, {
175
+ spaces: 2
176
+ });
177
+ }
178
+ };
179
+ };
180
+
181
+ module.exports = createService;
182
+ //# sourceMappingURL=documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.js","sources":["../../../server/src/services/documentation.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport { produce } from 'immer';\nimport type { Core } from '@strapi/types';\n\nimport { builApiEndpointPath, buildComponentSchema } from './helpers';\nimport { getPluginsThatNeedDocumentation } from './utils/get-plugins-that-need-documentation';\nimport { getService } from '../utils';\n\nimport type { Config, PluginConfig } from '../types';\n\nexport type Version = {\n version: string;\n generatedDate: string;\n url: string;\n};\n\nexport type DocumentationService = ReturnType<typeof createService>;\n\nconst createService = ({ strapi }: { strapi: Core.Strapi }) => {\n const config = strapi.config.get('plugin::documentation') as PluginConfig;\n const pluginsThatNeedDocumentation = getPluginsThatNeedDocumentation(config);\n const overrideService = getService('override');\n\n return {\n getDocumentationVersion() {\n return config.info.version;\n },\n\n getFullDocumentationPath() {\n return path.join(strapi.dirs.app.extensions, 'documentation', 'documentation');\n },\n\n getDocumentationVersions(): Version[] {\n return fs\n .readdirSync(this.getFullDocumentationPath())\n .map((version) => {\n try {\n const filePath = path.resolve(\n this.getFullDocumentationPath(),\n version,\n 'full_documentation.json'\n );\n\n const doc = JSON.parse(fs.readFileSync(filePath).toString());\n\n const generatedDate = doc.info['x-generation-date'];\n\n return { version, generatedDate, url: '' };\n } catch (err) {\n return null;\n }\n })\n .filter((x) => x) as Version[];\n },\n\n /**\n * Returns settings stored in core-store\n */\n async getDocumentationAccess() {\n const { restrictedAccess } = (await strapi.store!({\n environment: '',\n type: 'plugin',\n name: 'documentation',\n key: 'config',\n }).get()) as Config;\n\n return { restrictedAccess };\n },\n\n getApiDocumentationPath(api: { name: string; getter: string }) {\n if (api.getter === 'plugin') {\n return path.join(strapi.dirs.app.extensions, api.name, 'documentation');\n }\n\n return path.join(strapi.dirs.app.api, api.name, 'documentation');\n },\n\n async deleteDocumentation(version: string) {\n const apis = this.getPluginAndApiInfo();\n for (const api of apis) {\n await fs.remove(path.join(this.getApiDocumentationPath(api), version));\n }\n\n await fs.remove(path.join(this.getFullDocumentationPath(), version));\n },\n\n getPluginAndApiInfo() {\n const pluginsToDocument = pluginsThatNeedDocumentation.map((plugin) => {\n return {\n name: plugin,\n getter: 'plugin',\n ctNames: Object.keys(strapi.plugin(plugin).contentTypes),\n };\n });\n\n const apisToDocument = Object.keys(strapi.apis).map((api) => {\n return {\n name: api,\n getter: 'api',\n ctNames: Object.keys(strapi.api(api).contentTypes),\n };\n });\n\n return [...apisToDocument, ...pluginsToDocument];\n },\n\n /**\n * @description - Creates the Swagger json files\n */\n async generateFullDoc(versionOpt?: string) {\n const version = versionOpt ?? this.getDocumentationVersion();\n\n const apis = this.getPluginAndApiInfo();\n const apisThatNeedGeneratedDocumentation = apis.filter(\n ({ name }) => !overrideService.isEnabled(name)\n );\n\n // Initialize the generated documentation with defaults\n const generatedDocumentation = await produce(config, async (draft) => {\n if (draft.servers?.length === 0) {\n // When no servers found set the defaults\n const serverUrl = strapi.config.get('server.absoluteUrl');\n const apiPath = strapi.config.get('api.rest.prefix');\n draft.servers = [\n {\n url: `${serverUrl}${apiPath}`,\n description: 'Development server',\n },\n ];\n }\n\n if (!draft.components) {\n draft.components = {};\n }\n\n // Set the generated date\n draft.info['x-generation-date'] = new Date().toISOString();\n // Set the plugins that need documentation\n draft['x-strapi-config'].plugins = pluginsThatNeedDocumentation;\n\n // Delete the mutateDocumentation key from the config so it doesn't end up in the spec\n delete draft['x-strapi-config'].mutateDocumentation;\n\n // Generate the documentation for each api and update the generatedDocumentation\n for (const api of apisThatNeedGeneratedDocumentation) {\n const newApiPath = builApiEndpointPath(api);\n const generatedSchemas = buildComponentSchema(api);\n\n if (generatedSchemas) {\n draft.components.schemas = { ...draft.components.schemas, ...generatedSchemas };\n }\n\n if (newApiPath) {\n draft.paths = { ...draft.paths, ...newApiPath };\n }\n }\n\n // When overrides are present update the generatedDocumentation\n if (overrideService.registeredOverrides.length > 0) {\n overrideService.registeredOverrides.forEach((override: Partial<PluginConfig>) => {\n // Only run the overrrides when no override version is provided,\n // or when the generated documentation version matches the override version\n if (!override?.info?.version || override.info.version === version) {\n if (override.tags) {\n // Merge override tags with the generated tags\n draft.tags = draft.tags || [];\n draft.tags.push(...override.tags);\n }\n\n if (override.paths) {\n // Merge override paths with the generated paths\n // The override will add a new path or replace the value of an existing path\n draft.paths = { ...draft.paths, ...override.paths };\n }\n\n if (override.components) {\n const keys = Object.keys(override.components) as Array<\n keyof typeof override.components\n >;\n\n keys.forEach((overrideKey) => {\n draft.components = draft.components || {};\n\n const overrideValue = override.components?.[overrideKey];\n const originalValue = draft.components?.[overrideKey];\n\n Object.assign(draft.components, {\n [overrideKey]: {\n ...originalValue,\n ...overrideValue,\n },\n });\n });\n }\n }\n });\n }\n });\n\n // Escape hatch, allow the user to provide a mutateDocumentation function that can alter any part of\n // the generated documentation before it is written to the file system\n const userMutatesDocumentation = config['x-strapi-config'].mutateDocumentation;\n\n const finalDocumentation = userMutatesDocumentation\n ? produce(generatedDocumentation, userMutatesDocumentation)\n : generatedDocumentation;\n\n // Get the file path for the final documentation\n const fullDocJsonPath = path.join(\n this.getFullDocumentationPath(),\n version,\n 'full_documentation.json'\n );\n // Write the documentation to the file system\n await fs.ensureFile(fullDocJsonPath);\n await fs.writeJson(fullDocJsonPath, finalDocumentation, { spaces: 2 });\n },\n };\n};\n\nexport default createService;\n"],"names":["createService","strapi","config","get","pluginsThatNeedDocumentation","getPluginsThatNeedDocumentation","overrideService","getService","getDocumentationVersion","info","version","getFullDocumentationPath","path","join","dirs","app","extensions","getDocumentationVersions","fs","readdirSync","map","filePath","resolve","doc","JSON","parse","readFileSync","toString","generatedDate","url","err","filter","x","getDocumentationAccess","restrictedAccess","store","environment","type","name","key","getApiDocumentationPath","api","getter","deleteDocumentation","apis","getPluginAndApiInfo","remove","pluginsToDocument","plugin","ctNames","Object","keys","contentTypes","apisToDocument","generateFullDoc","versionOpt","apisThatNeedGeneratedDocumentation","isEnabled","generatedDocumentation","produce","draft","servers","length","serverUrl","apiPath","description","components","Date","toISOString","plugins","mutateDocumentation","newApiPath","builApiEndpointPath","generatedSchemas","buildComponentSchema","schemas","paths","registeredOverrides","forEach","override","tags","push","overrideKey","overrideValue","originalValue","assign","userMutatesDocumentation","finalDocumentation","fullDocJsonPath","ensureFile","writeJson","spaces"],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { produce } from 'immer';
4
+ import buildApiEndpointPath from './helpers/build-api-endpoint-path.mjs';
5
+ import buildComponentSchema from './helpers/build-component-schema.mjs';
6
+ import { getPluginsThatNeedDocumentation } from './utils/get-plugins-that-need-documentation.mjs';
7
+ import { getService } from '../utils.mjs';
8
+
9
+ const createService = ({ strapi })=>{
10
+ const config = strapi.config.get('plugin::documentation');
11
+ const pluginsThatNeedDocumentation = getPluginsThatNeedDocumentation(config);
12
+ const overrideService = getService('override');
13
+ return {
14
+ getDocumentationVersion () {
15
+ return config.info.version;
16
+ },
17
+ getFullDocumentationPath () {
18
+ return path.join(strapi.dirs.app.extensions, 'documentation', 'documentation');
19
+ },
20
+ getDocumentationVersions () {
21
+ return fs.readdirSync(this.getFullDocumentationPath()).map((version)=>{
22
+ try {
23
+ const filePath = path.resolve(this.getFullDocumentationPath(), version, 'full_documentation.json');
24
+ const doc = JSON.parse(fs.readFileSync(filePath).toString());
25
+ const generatedDate = doc.info['x-generation-date'];
26
+ return {
27
+ version,
28
+ generatedDate,
29
+ url: ''
30
+ };
31
+ } catch (err) {
32
+ return null;
33
+ }
34
+ }).filter((x)=>x);
35
+ },
36
+ /**
37
+ * Returns settings stored in core-store
38
+ */ async getDocumentationAccess () {
39
+ const { restrictedAccess } = await strapi.store({
40
+ environment: '',
41
+ type: 'plugin',
42
+ name: 'documentation',
43
+ key: 'config'
44
+ }).get();
45
+ return {
46
+ restrictedAccess
47
+ };
48
+ },
49
+ getApiDocumentationPath (api) {
50
+ if (api.getter === 'plugin') {
51
+ return path.join(strapi.dirs.app.extensions, api.name, 'documentation');
52
+ }
53
+ return path.join(strapi.dirs.app.api, api.name, 'documentation');
54
+ },
55
+ async deleteDocumentation (version) {
56
+ const apis = this.getPluginAndApiInfo();
57
+ for (const api of apis){
58
+ await fs.remove(path.join(this.getApiDocumentationPath(api), version));
59
+ }
60
+ await fs.remove(path.join(this.getFullDocumentationPath(), version));
61
+ },
62
+ getPluginAndApiInfo () {
63
+ const pluginsToDocument = pluginsThatNeedDocumentation.map((plugin)=>{
64
+ return {
65
+ name: plugin,
66
+ getter: 'plugin',
67
+ ctNames: Object.keys(strapi.plugin(plugin).contentTypes)
68
+ };
69
+ });
70
+ const apisToDocument = Object.keys(strapi.apis).map((api)=>{
71
+ return {
72
+ name: api,
73
+ getter: 'api',
74
+ ctNames: Object.keys(strapi.api(api).contentTypes)
75
+ };
76
+ });
77
+ return [
78
+ ...apisToDocument,
79
+ ...pluginsToDocument
80
+ ];
81
+ },
82
+ /**
83
+ * @description - Creates the Swagger json files
84
+ */ async generateFullDoc (versionOpt) {
85
+ const version = versionOpt ?? this.getDocumentationVersion();
86
+ const apis = this.getPluginAndApiInfo();
87
+ const apisThatNeedGeneratedDocumentation = apis.filter(({ name })=>!overrideService.isEnabled(name));
88
+ // Initialize the generated documentation with defaults
89
+ const generatedDocumentation = await produce(config, async (draft)=>{
90
+ if (draft.servers?.length === 0) {
91
+ // When no servers found set the defaults
92
+ const serverUrl = strapi.config.get('server.absoluteUrl');
93
+ const apiPath = strapi.config.get('api.rest.prefix');
94
+ draft.servers = [
95
+ {
96
+ url: `${serverUrl}${apiPath}`,
97
+ description: 'Development server'
98
+ }
99
+ ];
100
+ }
101
+ if (!draft.components) {
102
+ draft.components = {};
103
+ }
104
+ // Set the generated date
105
+ draft.info['x-generation-date'] = new Date().toISOString();
106
+ // Set the plugins that need documentation
107
+ draft['x-strapi-config'].plugins = pluginsThatNeedDocumentation;
108
+ // Delete the mutateDocumentation key from the config so it doesn't end up in the spec
109
+ delete draft['x-strapi-config'].mutateDocumentation;
110
+ // Generate the documentation for each api and update the generatedDocumentation
111
+ for (const api of apisThatNeedGeneratedDocumentation){
112
+ const newApiPath = buildApiEndpointPath(api);
113
+ const generatedSchemas = buildComponentSchema(api);
114
+ if (generatedSchemas) {
115
+ draft.components.schemas = {
116
+ ...draft.components.schemas,
117
+ ...generatedSchemas
118
+ };
119
+ }
120
+ if (newApiPath) {
121
+ draft.paths = {
122
+ ...draft.paths,
123
+ ...newApiPath
124
+ };
125
+ }
126
+ }
127
+ // When overrides are present update the generatedDocumentation
128
+ if (overrideService.registeredOverrides.length > 0) {
129
+ overrideService.registeredOverrides.forEach((override)=>{
130
+ // Only run the overrrides when no override version is provided,
131
+ // or when the generated documentation version matches the override version
132
+ if (!override?.info?.version || override.info.version === version) {
133
+ if (override.tags) {
134
+ // Merge override tags with the generated tags
135
+ draft.tags = draft.tags || [];
136
+ draft.tags.push(...override.tags);
137
+ }
138
+ if (override.paths) {
139
+ // Merge override paths with the generated paths
140
+ // The override will add a new path or replace the value of an existing path
141
+ draft.paths = {
142
+ ...draft.paths,
143
+ ...override.paths
144
+ };
145
+ }
146
+ if (override.components) {
147
+ const keys = Object.keys(override.components);
148
+ keys.forEach((overrideKey)=>{
149
+ draft.components = draft.components || {};
150
+ const overrideValue = override.components?.[overrideKey];
151
+ const originalValue = draft.components?.[overrideKey];
152
+ Object.assign(draft.components, {
153
+ [overrideKey]: {
154
+ ...originalValue,
155
+ ...overrideValue
156
+ }
157
+ });
158
+ });
159
+ }
160
+ }
161
+ });
162
+ }
163
+ });
164
+ // Escape hatch, allow the user to provide a mutateDocumentation function that can alter any part of
165
+ // the generated documentation before it is written to the file system
166
+ const userMutatesDocumentation = config['x-strapi-config'].mutateDocumentation;
167
+ const finalDocumentation = userMutatesDocumentation ? produce(generatedDocumentation, userMutatesDocumentation) : generatedDocumentation;
168
+ // Get the file path for the final documentation
169
+ const fullDocJsonPath = path.join(this.getFullDocumentationPath(), version, 'full_documentation.json');
170
+ // Write the documentation to the file system
171
+ await fs.ensureFile(fullDocJsonPath);
172
+ await fs.writeJson(fullDocJsonPath, finalDocumentation, {
173
+ spaces: 2
174
+ });
175
+ }
176
+ };
177
+ };
178
+
179
+ export { createService as default };
180
+ //# sourceMappingURL=documentation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.mjs","sources":["../../../server/src/services/documentation.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport { produce } from 'immer';\nimport type { Core } from '@strapi/types';\n\nimport { builApiEndpointPath, buildComponentSchema } from './helpers';\nimport { getPluginsThatNeedDocumentation } from './utils/get-plugins-that-need-documentation';\nimport { getService } from '../utils';\n\nimport type { Config, PluginConfig } from '../types';\n\nexport type Version = {\n version: string;\n generatedDate: string;\n url: string;\n};\n\nexport type DocumentationService = ReturnType<typeof createService>;\n\nconst createService = ({ strapi }: { strapi: Core.Strapi }) => {\n const config = strapi.config.get('plugin::documentation') as PluginConfig;\n const pluginsThatNeedDocumentation = getPluginsThatNeedDocumentation(config);\n const overrideService = getService('override');\n\n return {\n getDocumentationVersion() {\n return config.info.version;\n },\n\n getFullDocumentationPath() {\n return path.join(strapi.dirs.app.extensions, 'documentation', 'documentation');\n },\n\n getDocumentationVersions(): Version[] {\n return fs\n .readdirSync(this.getFullDocumentationPath())\n .map((version) => {\n try {\n const filePath = path.resolve(\n this.getFullDocumentationPath(),\n version,\n 'full_documentation.json'\n );\n\n const doc = JSON.parse(fs.readFileSync(filePath).toString());\n\n const generatedDate = doc.info['x-generation-date'];\n\n return { version, generatedDate, url: '' };\n } catch (err) {\n return null;\n }\n })\n .filter((x) => x) as Version[];\n },\n\n /**\n * Returns settings stored in core-store\n */\n async getDocumentationAccess() {\n const { restrictedAccess } = (await strapi.store!({\n environment: '',\n type: 'plugin',\n name: 'documentation',\n key: 'config',\n }).get()) as Config;\n\n return { restrictedAccess };\n },\n\n getApiDocumentationPath(api: { name: string; getter: string }) {\n if (api.getter === 'plugin') {\n return path.join(strapi.dirs.app.extensions, api.name, 'documentation');\n }\n\n return path.join(strapi.dirs.app.api, api.name, 'documentation');\n },\n\n async deleteDocumentation(version: string) {\n const apis = this.getPluginAndApiInfo();\n for (const api of apis) {\n await fs.remove(path.join(this.getApiDocumentationPath(api), version));\n }\n\n await fs.remove(path.join(this.getFullDocumentationPath(), version));\n },\n\n getPluginAndApiInfo() {\n const pluginsToDocument = pluginsThatNeedDocumentation.map((plugin) => {\n return {\n name: plugin,\n getter: 'plugin',\n ctNames: Object.keys(strapi.plugin(plugin).contentTypes),\n };\n });\n\n const apisToDocument = Object.keys(strapi.apis).map((api) => {\n return {\n name: api,\n getter: 'api',\n ctNames: Object.keys(strapi.api(api).contentTypes),\n };\n });\n\n return [...apisToDocument, ...pluginsToDocument];\n },\n\n /**\n * @description - Creates the Swagger json files\n */\n async generateFullDoc(versionOpt?: string) {\n const version = versionOpt ?? this.getDocumentationVersion();\n\n const apis = this.getPluginAndApiInfo();\n const apisThatNeedGeneratedDocumentation = apis.filter(\n ({ name }) => !overrideService.isEnabled(name)\n );\n\n // Initialize the generated documentation with defaults\n const generatedDocumentation = await produce(config, async (draft) => {\n if (draft.servers?.length === 0) {\n // When no servers found set the defaults\n const serverUrl = strapi.config.get('server.absoluteUrl');\n const apiPath = strapi.config.get('api.rest.prefix');\n draft.servers = [\n {\n url: `${serverUrl}${apiPath}`,\n description: 'Development server',\n },\n ];\n }\n\n if (!draft.components) {\n draft.components = {};\n }\n\n // Set the generated date\n draft.info['x-generation-date'] = new Date().toISOString();\n // Set the plugins that need documentation\n draft['x-strapi-config'].plugins = pluginsThatNeedDocumentation;\n\n // Delete the mutateDocumentation key from the config so it doesn't end up in the spec\n delete draft['x-strapi-config'].mutateDocumentation;\n\n // Generate the documentation for each api and update the generatedDocumentation\n for (const api of apisThatNeedGeneratedDocumentation) {\n const newApiPath = builApiEndpointPath(api);\n const generatedSchemas = buildComponentSchema(api);\n\n if (generatedSchemas) {\n draft.components.schemas = { ...draft.components.schemas, ...generatedSchemas };\n }\n\n if (newApiPath) {\n draft.paths = { ...draft.paths, ...newApiPath };\n }\n }\n\n // When overrides are present update the generatedDocumentation\n if (overrideService.registeredOverrides.length > 0) {\n overrideService.registeredOverrides.forEach((override: Partial<PluginConfig>) => {\n // Only run the overrrides when no override version is provided,\n // or when the generated documentation version matches the override version\n if (!override?.info?.version || override.info.version === version) {\n if (override.tags) {\n // Merge override tags with the generated tags\n draft.tags = draft.tags || [];\n draft.tags.push(...override.tags);\n }\n\n if (override.paths) {\n // Merge override paths with the generated paths\n // The override will add a new path or replace the value of an existing path\n draft.paths = { ...draft.paths, ...override.paths };\n }\n\n if (override.components) {\n const keys = Object.keys(override.components) as Array<\n keyof typeof override.components\n >;\n\n keys.forEach((overrideKey) => {\n draft.components = draft.components || {};\n\n const overrideValue = override.components?.[overrideKey];\n const originalValue = draft.components?.[overrideKey];\n\n Object.assign(draft.components, {\n [overrideKey]: {\n ...originalValue,\n ...overrideValue,\n },\n });\n });\n }\n }\n });\n }\n });\n\n // Escape hatch, allow the user to provide a mutateDocumentation function that can alter any part of\n // the generated documentation before it is written to the file system\n const userMutatesDocumentation = config['x-strapi-config'].mutateDocumentation;\n\n const finalDocumentation = userMutatesDocumentation\n ? produce(generatedDocumentation, userMutatesDocumentation)\n : generatedDocumentation;\n\n // Get the file path for the final documentation\n const fullDocJsonPath = path.join(\n this.getFullDocumentationPath(),\n version,\n 'full_documentation.json'\n );\n // Write the documentation to the file system\n await fs.ensureFile(fullDocJsonPath);\n await fs.writeJson(fullDocJsonPath, finalDocumentation, { spaces: 2 });\n },\n };\n};\n\nexport default createService;\n"],"names":["createService","strapi","config","get","pluginsThatNeedDocumentation","getPluginsThatNeedDocumentation","overrideService","getService","getDocumentationVersion","info","version","getFullDocumentationPath","path","join","dirs","app","extensions","getDocumentationVersions","fs","readdirSync","map","filePath","resolve","doc","JSON","parse","readFileSync","toString","generatedDate","url","err","filter","x","getDocumentationAccess","restrictedAccess","store","environment","type","name","key","getApiDocumentationPath","api","getter","deleteDocumentation","apis","getPluginAndApiInfo","remove","pluginsToDocument","plugin","ctNames","Object","keys","contentTypes","apisToDocument","generateFullDoc","versionOpt","apisThatNeedGeneratedDocumentation","isEnabled","generatedDocumentation","produce","draft","servers","length","serverUrl","apiPath","description","components","Date","toISOString","plugins","mutateDocumentation","newApiPath","builApiEndpointPath","generatedSchemas","buildComponentSchema","schemas","paths","registeredOverrides","forEach","override","tags","push","overrideKey","overrideValue","originalValue","assign","userMutatesDocumentation","finalDocumentation","fullDocJsonPath","ensureFile","writeJson","spaces"],"mappings":"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"}