@strapi/plugin-documentation 5.12.0 → 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,86 @@
1
+ const defaultConfig = {
2
+ openapi: '3.0.0',
3
+ info: {
4
+ version: '1.0.0',
5
+ title: 'DOCUMENTATION',
6
+ description: '',
7
+ termsOfService: 'YOUR_TERMS_OF_SERVICE_URL',
8
+ contact: {
9
+ name: 'TEAM',
10
+ email: 'contact-email@something.io',
11
+ url: 'mywebsite.io'
12
+ },
13
+ license: {
14
+ name: 'Apache 2.0',
15
+ url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
16
+ }
17
+ },
18
+ 'x-strapi-config': {
19
+ plugins: null,
20
+ mutateDocumentation: null
21
+ },
22
+ servers: [],
23
+ externalDocs: {
24
+ description: 'Find out more',
25
+ url: 'https://docs.strapi.io/developer-docs/latest/getting-started/introduction.html'
26
+ },
27
+ security: [
28
+ {
29
+ bearerAuth: []
30
+ }
31
+ ],
32
+ paths: {},
33
+ components: {
34
+ securitySchemes: {
35
+ bearerAuth: {
36
+ type: 'http',
37
+ scheme: 'bearer',
38
+ bearerFormat: 'JWT'
39
+ }
40
+ },
41
+ schemas: {
42
+ Error: {
43
+ type: 'object',
44
+ required: [
45
+ 'error'
46
+ ],
47
+ properties: {
48
+ data: {
49
+ nullable: true,
50
+ oneOf: [
51
+ {
52
+ type: 'object'
53
+ },
54
+ {
55
+ type: 'array',
56
+ items: {
57
+ type: 'object'
58
+ }
59
+ }
60
+ ]
61
+ },
62
+ error: {
63
+ type: 'object',
64
+ properties: {
65
+ status: {
66
+ type: 'integer'
67
+ },
68
+ name: {
69
+ type: 'string'
70
+ },
71
+ message: {
72
+ type: 'string'
73
+ },
74
+ details: {
75
+ type: 'object'
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ };
84
+
85
+ export { defaultConfig };
86
+ //# sourceMappingURL=default-plugin-config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-plugin-config.mjs","sources":["../../../server/src/config/default-plugin-config.ts"],"sourcesContent":["import type { PluginConfig } from '../types';\n\nexport const defaultConfig: PluginConfig = {\n openapi: '3.0.0',\n info: {\n version: '1.0.0',\n title: 'DOCUMENTATION',\n description: '',\n termsOfService: 'YOUR_TERMS_OF_SERVICE_URL',\n contact: {\n name: 'TEAM',\n email: 'contact-email@something.io',\n url: 'mywebsite.io',\n },\n license: {\n name: 'Apache 2.0',\n url: 'https://www.apache.org/licenses/LICENSE-2.0.html',\n },\n },\n 'x-strapi-config': {\n plugins: null,\n mutateDocumentation: null,\n },\n servers: [],\n externalDocs: {\n description: 'Find out more',\n url: 'https://docs.strapi.io/developer-docs/latest/getting-started/introduction.html',\n },\n security: [\n {\n bearerAuth: [],\n },\n ],\n paths: {},\n components: {\n securitySchemes: {\n bearerAuth: {\n type: 'http',\n scheme: 'bearer',\n bearerFormat: 'JWT',\n },\n },\n schemas: {\n Error: {\n type: 'object',\n required: ['error'],\n properties: {\n data: {\n nullable: true,\n oneOf: [{ type: 'object' }, { type: 'array', items: { type: 'object' } }],\n },\n error: {\n type: 'object',\n properties: {\n status: {\n type: 'integer',\n },\n name: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n details: {\n type: 'object',\n },\n },\n },\n },\n },\n },\n },\n};\n"],"names":["defaultConfig","openapi","info","version","title","description","termsOfService","contact","name","email","url","license","plugins","mutateDocumentation","servers","externalDocs","security","bearerAuth","paths","components","securitySchemes","type","scheme","bearerFormat","schemas","Error","required","properties","data","nullable","oneOf","items","error","status","message","details"],"mappings":"MAEaA,aAA8B,GAAA;IACzCC,OAAS,EAAA,OAAA;IACTC,IAAM,EAAA;QACJC,OAAS,EAAA,OAAA;QACTC,KAAO,EAAA,eAAA;QACPC,WAAa,EAAA,EAAA;QACbC,cAAgB,EAAA,2BAAA;QAChBC,OAAS,EAAA;YACPC,IAAM,EAAA,MAAA;YACNC,KAAO,EAAA,4BAAA;YACPC,GAAK,EAAA;AACP,SAAA;QACAC,OAAS,EAAA;YACPH,IAAM,EAAA,YAAA;YACNE,GAAK,EAAA;AACP;AACF,KAAA;IACA,iBAAmB,EAAA;QACjBE,OAAS,EAAA,IAAA;QACTC,mBAAqB,EAAA;AACvB,KAAA;AACAC,IAAAA,OAAAA,EAAS,EAAE;IACXC,YAAc,EAAA;QACZV,WAAa,EAAA,eAAA;QACbK,GAAK,EAAA;AACP,KAAA;IACAM,QAAU,EAAA;AACR,QAAA;AACEC,YAAAA,UAAAA,EAAY;AACd;AACD,KAAA;AACDC,IAAAA,KAAAA,EAAO,EAAC;IACRC,UAAY,EAAA;QACVC,eAAiB,EAAA;YACfH,UAAY,EAAA;gBACVI,IAAM,EAAA,MAAA;gBACNC,MAAQ,EAAA,QAAA;gBACRC,YAAc,EAAA;AAChB;AACF,SAAA;QACAC,OAAS,EAAA;YACPC,KAAO,EAAA;gBACLJ,IAAM,EAAA,QAAA;gBACNK,QAAU,EAAA;AAAC,oBAAA;AAAQ,iBAAA;gBACnBC,UAAY,EAAA;oBACVC,IAAM,EAAA;wBACJC,QAAU,EAAA,IAAA;wBACVC,KAAO,EAAA;AAAC,4BAAA;gCAAET,IAAM,EAAA;AAAS,6BAAA;AAAG,4BAAA;gCAAEA,IAAM,EAAA,OAAA;gCAASU,KAAO,EAAA;oCAAEV,IAAM,EAAA;AAAS;AAAE;AAAE;AAC3E,qBAAA;oBACAW,KAAO,EAAA;wBACLX,IAAM,EAAA,QAAA;wBACNM,UAAY,EAAA;4BACVM,MAAQ,EAAA;gCACNZ,IAAM,EAAA;AACR,6BAAA;4BACAb,IAAM,EAAA;gCACJa,IAAM,EAAA;AACR,6BAAA;4BACAa,OAAS,EAAA;gCACPb,IAAM,EAAA;AACR,6BAAA;4BACAc,OAAS,EAAA;gCACPd,IAAM,EAAA;AACR;AACF;AACF;AACF;AACF;AACF;AACF;AACF;;;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var defaultPluginConfig = require('./default-plugin-config.js');
4
+
5
+ const config = {
6
+ default: defaultPluginConfig.defaultConfig
7
+ };
8
+
9
+ exports.config = config;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/config/index.ts"],"sourcesContent":["import { defaultConfig } from './default-plugin-config';\n\nexport const config = {\n default: defaultConfig,\n};\n"],"names":["config","default","defaultConfig"],"mappings":";;;;MAEaA,MAAS,GAAA;IACpBC,OAASC,EAAAA;AACX;;;;"}
@@ -0,0 +1,8 @@
1
+ import { defaultConfig } from './default-plugin-config.mjs';
2
+
3
+ const config = {
4
+ default: defaultConfig
5
+ };
6
+
7
+ export { config };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/config/index.ts"],"sourcesContent":["import { defaultConfig } from './default-plugin-config';\n\nexport const config = {\n default: defaultConfig,\n};\n"],"names":["config","default","defaultConfig"],"mappings":";;MAEaA,MAAS,GAAA;IACpBC,OAASC,EAAAA;AACX;;;;"}
@@ -0,0 +1,185 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var bcrypt = require('bcryptjs');
5
+ var fs = require('fs-extra');
6
+ var _ = require('lodash');
7
+ var koaStatic = require('koa-static');
8
+ var utils = require('@strapi/utils');
9
+ var utils$1 = require('../utils.js');
10
+
11
+ function _interopNamespaceDefaultOnly (e) { return Object.freeze({ __proto__: null, default: e }); }
12
+
13
+ const validation = {
14
+ validateSettings: utils.validateYupSchema(utils.yup.object().shape({
15
+ restrictedAccess: utils.yup.boolean(),
16
+ password: utils.yup.string().min(8).matches(/[a-z]/, '${path} must contain at least one lowercase character').matches(/[A-Z]/, '${path} must contain at least one uppercase character').matches(/\d/, '${path} must contain at least one number').when('restrictedAccess', (value, initSchema)=>{
17
+ return value ? initSchema.required('password is required') : initSchema;
18
+ })
19
+ }))
20
+ };
21
+ var documentation = {
22
+ async getInfos (ctx) {
23
+ try {
24
+ const docService = utils$1.getService('documentation');
25
+ const docVersions = docService.getDocumentationVersions();
26
+ const documentationAccess = await docService.getDocumentationAccess();
27
+ ctx.send({
28
+ docVersions,
29
+ currentVersion: docService.getDocumentationVersion(),
30
+ prefix: '/documentation',
31
+ documentationAccess
32
+ });
33
+ } catch (err) {
34
+ strapi.log.error(err);
35
+ ctx.badRequest();
36
+ }
37
+ },
38
+ async index (ctx, next) {
39
+ try {
40
+ /**
41
+ * We don't expose the specs using koa-static or something else due to security reasons.
42
+ * That's why, we need to read the file localy and send the specs through it when we serve the Swagger UI.
43
+ */ const { major, minor, patch } = ctx.params;
44
+ const version = major && minor && patch ? `${major}.${minor}.${patch}` : utils$1.getService('documentation').getDocumentationVersion();
45
+ const openAPISpecsPath = path.join(strapi.dirs.app.extensions, 'documentation', 'documentation', version, 'full_documentation.json');
46
+ try {
47
+ const documentation = fs.readFileSync(openAPISpecsPath, 'utf8');
48
+ const layout = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('../public/index.html.js')); })).default;
49
+ const filledLayout = _.template(layout)({
50
+ backendUrl: strapi.config.server.url,
51
+ spec: JSON.stringify(JSON.parse(documentation))
52
+ });
53
+ try {
54
+ const layoutPath = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public', 'index.html');
55
+ await fs.ensureFile(layoutPath);
56
+ await fs.writeFile(layoutPath, filledLayout);
57
+ // Serve the file.
58
+ ctx.url = path.basename(`${ctx.url}/index.html`);
59
+ try {
60
+ const staticFolder = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public');
61
+ return koaStatic(staticFolder)(ctx, next);
62
+ } catch (e) {
63
+ strapi.log.error(e);
64
+ }
65
+ } catch (e) {
66
+ strapi.log.error(e);
67
+ }
68
+ } catch (e) {
69
+ strapi.log.error(e);
70
+ }
71
+ } catch (e) {
72
+ strapi.log.error(e);
73
+ }
74
+ },
75
+ async loginView (ctx, next) {
76
+ // lazy require cheerio
77
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
78
+ const cheerio = require('cheerio');
79
+ const { error } = ctx.query;
80
+ try {
81
+ const layout = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('../public/login.html.js')); })).default;
82
+ const filledLayout = _.template(layout.toString())({
83
+ actionUrl: `${strapi.config.server.url}/documentation/login`
84
+ });
85
+ const $ = cheerio.load(filledLayout);
86
+ $('.error').text(_.isEmpty(error) ? '' : 'Wrong password...');
87
+ try {
88
+ const layoutPath = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public', 'login.html');
89
+ await fs.ensureFile(layoutPath);
90
+ await fs.writeFile(layoutPath, $.html());
91
+ ctx.url = path.basename(`${ctx.url}/login.html`);
92
+ try {
93
+ const staticFolder = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public');
94
+ return koaStatic(staticFolder)(ctx, next);
95
+ } catch (e) {
96
+ strapi.log.error(e);
97
+ }
98
+ } catch (e) {
99
+ strapi.log.error(e);
100
+ }
101
+ } catch (e) {
102
+ strapi.log.error(e);
103
+ }
104
+ },
105
+ async login (ctx) {
106
+ const { body: { password } } = ctx.request;
107
+ const { password: hash } = await strapi.store({
108
+ type: 'plugin',
109
+ name: 'documentation',
110
+ key: 'config'
111
+ }).get();
112
+ const isValid = await bcrypt.compare(password, hash);
113
+ let querystring = '?error=password';
114
+ if (isValid && ctx.session) {
115
+ ctx.session.documentation = {
116
+ logged: true
117
+ };
118
+ querystring = '';
119
+ }
120
+ ctx.redirect(`${strapi.config.server.url}/documentation${querystring}`);
121
+ },
122
+ async regenerateDoc (ctx) {
123
+ const { version } = ctx.request.body;
124
+ const service = utils$1.getService('documentation');
125
+ const documentationVersions = service.getDocumentationVersions().map((el)=>el.version);
126
+ if (_.isEmpty(version)) {
127
+ return ctx.badRequest('Please provide a version.');
128
+ }
129
+ if (!documentationVersions.includes(version)) {
130
+ return ctx.badRequest('The version you are trying to generate does not exist.');
131
+ }
132
+ try {
133
+ strapi.reload.isWatching = false;
134
+ await service.generateFullDoc(version);
135
+ ctx.send({
136
+ ok: true
137
+ });
138
+ } finally{
139
+ strapi.reload.isWatching = true;
140
+ }
141
+ },
142
+ async deleteDoc (ctx) {
143
+ const { version } = ctx.params;
144
+ const service = utils$1.getService('documentation');
145
+ const documentationVersions = service.getDocumentationVersions().map((el)=>el.version);
146
+ if (_.isEmpty(version)) {
147
+ return ctx.badRequest('Please provide a version.');
148
+ }
149
+ if (!documentationVersions.includes(version)) {
150
+ return ctx.badRequest('The version you are trying to delete does not exist.');
151
+ }
152
+ try {
153
+ strapi.reload.isWatching = false;
154
+ await service.deleteDocumentation(version);
155
+ ctx.send({
156
+ ok: true
157
+ });
158
+ } finally{
159
+ strapi.reload.isWatching = true;
160
+ }
161
+ },
162
+ async updateSettings (ctx) {
163
+ const pluginStore = strapi.store({
164
+ type: 'plugin',
165
+ name: 'documentation'
166
+ });
167
+ const data = await validation.validateSettings(ctx.request.body);
168
+ const config = {
169
+ restrictedAccess: Boolean(data.restrictedAccess)
170
+ };
171
+ if (data.password) {
172
+ config.password = await bcrypt.hash(data.password, 10);
173
+ }
174
+ await pluginStore.set({
175
+ key: 'config',
176
+ value: config
177
+ });
178
+ return ctx.send({
179
+ ok: true
180
+ });
181
+ }
182
+ };
183
+
184
+ module.exports = documentation;
185
+ //# sourceMappingURL=documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.js","sources":["../../../server/src/controllers/documentation.ts"],"sourcesContent":["import path from 'path';\nimport bcrypt from 'bcryptjs';\nimport fs from 'fs-extra';\nimport _ from 'lodash';\nimport koaStatic from 'koa-static';\nimport { yup, validateYupSchema } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\n\nimport { getService } from '../utils';\nimport type { Config } from '../types';\n\nconst validation = {\n validateSettings: validateYupSchema(\n yup.object().shape({\n restrictedAccess: yup.boolean(),\n password: yup\n .string()\n .min(8)\n .matches(/[a-z]/, '${path} must contain at least one lowercase character')\n .matches(/[A-Z]/, '${path} must contain at least one uppercase character')\n .matches(/\\d/, '${path} must contain at least one number')\n .when('restrictedAccess', (value, initSchema) => {\n return value ? initSchema.required('password is required') : initSchema;\n }),\n })\n ),\n};\n\nexport default {\n async getInfos(ctx: Koa.Context) {\n try {\n const docService = getService('documentation');\n const docVersions = docService.getDocumentationVersions();\n const documentationAccess = await docService.getDocumentationAccess();\n\n ctx.send({\n docVersions,\n currentVersion: docService.getDocumentationVersion(),\n prefix: '/documentation',\n documentationAccess,\n });\n } catch (err) {\n strapi.log.error(err);\n ctx.badRequest();\n }\n },\n\n async index(ctx: Koa.Context, next: Koa.Next) {\n try {\n /**\n * We don't expose the specs using koa-static or something else due to security reasons.\n * That's why, we need to read the file localy and send the specs through it when we serve the Swagger UI.\n */\n const { major, minor, patch } = ctx.params;\n const version =\n major && minor && patch\n ? `${major}.${minor}.${patch}`\n : getService('documentation').getDocumentationVersion();\n\n const openAPISpecsPath = path.join(\n strapi.dirs.app.extensions,\n 'documentation',\n 'documentation',\n version,\n 'full_documentation.json'\n );\n\n try {\n const documentation = fs.readFileSync(openAPISpecsPath, 'utf8');\n\n const layout = (await import('../public/index.html')).default;\n\n const filledLayout = _.template(layout)({\n backendUrl: strapi.config.server.url,\n spec: JSON.stringify(JSON.parse(documentation)),\n });\n\n try {\n const layoutPath = path.resolve(\n strapi.dirs.app.extensions,\n 'documentation',\n 'public',\n 'index.html'\n );\n await fs.ensureFile(layoutPath);\n await fs.writeFile(layoutPath, filledLayout);\n\n // Serve the file.\n ctx.url = path.basename(`${ctx.url}/index.html`);\n\n try {\n const staticFolder = path.resolve(\n strapi.dirs.app.extensions,\n 'documentation',\n 'public'\n );\n return koaStatic(staticFolder)(ctx, next);\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n },\n\n async loginView(ctx: Koa.Context, next: Koa.Next) {\n // lazy require cheerio\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const cheerio = require('cheerio');\n\n const { error } = ctx.query;\n\n try {\n const layout = (await import('../public/login.html')).default;\n\n const filledLayout = _.template(layout.toString())({\n actionUrl: `${strapi.config.server.url}/documentation/login`,\n });\n\n const $ = cheerio.load(filledLayout);\n\n $('.error').text(_.isEmpty(error) ? '' : 'Wrong password...');\n\n try {\n const layoutPath = path.resolve(\n strapi.dirs.app.extensions,\n 'documentation',\n 'public',\n 'login.html'\n );\n await fs.ensureFile(layoutPath);\n await fs.writeFile(layoutPath, $.html());\n\n ctx.url = path.basename(`${ctx.url}/login.html`);\n\n try {\n const staticFolder = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public');\n return koaStatic(staticFolder)(ctx, next);\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n },\n\n async login(ctx: Koa.Context) {\n const {\n body: { password },\n } = ctx.request;\n\n const { password: hash } = (await strapi\n .store({ type: 'plugin', name: 'documentation', key: 'config' })\n .get()) as { password: string };\n\n const isValid = await bcrypt.compare(password, hash);\n\n let querystring = '?error=password';\n\n if (isValid && ctx.session) {\n ctx.session.documentation = {\n logged: true,\n };\n\n querystring = '';\n }\n\n ctx.redirect(`${strapi.config.server.url}/documentation${querystring}`);\n },\n\n async regenerateDoc(ctx: Koa.Context) {\n const { version } = ctx.request.body;\n\n const service = getService('documentation');\n\n const documentationVersions = service.getDocumentationVersions().map((el) => el.version);\n\n if (_.isEmpty(version)) {\n return ctx.badRequest('Please provide a version.');\n }\n\n if (!documentationVersions.includes(version)) {\n return ctx.badRequest('The version you are trying to generate does not exist.');\n }\n\n try {\n strapi.reload.isWatching = false;\n await service.generateFullDoc(version);\n ctx.send({ ok: true });\n } finally {\n strapi.reload.isWatching = true;\n }\n },\n\n async deleteDoc(ctx: Koa.Context) {\n const { version } = ctx.params;\n\n const service = getService('documentation');\n\n const documentationVersions = service.getDocumentationVersions().map((el) => el.version);\n\n if (_.isEmpty(version)) {\n return ctx.badRequest('Please provide a version.');\n }\n\n if (!documentationVersions.includes(version)) {\n return ctx.badRequest('The version you are trying to delete does not exist.');\n }\n\n try {\n strapi.reload.isWatching = false;\n await service.deleteDocumentation(version);\n ctx.send({ ok: true });\n } finally {\n strapi.reload.isWatching = true;\n }\n },\n\n async updateSettings(ctx: Koa.Context) {\n const pluginStore = strapi.store({ type: 'plugin', name: 'documentation' });\n\n const data = await validation.validateSettings(ctx.request.body);\n\n const config: Config = {\n restrictedAccess: Boolean(data.restrictedAccess),\n };\n\n if (data.password) {\n config.password = await bcrypt.hash(data.password, 10);\n }\n\n await pluginStore.set({ key: 'config', value: config });\n\n return ctx.send({ ok: true });\n },\n};\n"],"names":["validation","validateSettings","validateYupSchema","yup","object","shape","restrictedAccess","boolean","password","string","min","matches","when","value","initSchema","required","getInfos","ctx","docService","getService","docVersions","getDocumentationVersions","documentationAccess","getDocumentationAccess","send","currentVersion","getDocumentationVersion","prefix","err","strapi","log","error","badRequest","index","next","major","minor","patch","params","version","openAPISpecsPath","path","join","dirs","app","extensions","documentation","fs","readFileSync","layout","default","filledLayout","_","template","backendUrl","config","server","url","spec","JSON","stringify","parse","layoutPath","resolve","ensureFile","writeFile","basename","staticFolder","koaStatic","e","loginView","cheerio","require","query","toString","actionUrl","$","load","text","isEmpty","html","login","body","request","hash","store","type","name","key","get","isValid","bcrypt","compare","querystring","session","logged","redirect","regenerateDoc","service","documentationVersions","map","el","includes","reload","isWatching","generateFullDoc","ok","deleteDoc","deleteDocumentation","updateSettings","pluginStore","data","Boolean","set"],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import path from 'path';
2
+ import bcrypt from 'bcryptjs';
3
+ import fs from 'fs-extra';
4
+ import _ from 'lodash';
5
+ import koaStatic from 'koa-static';
6
+ import { validateYupSchema, yup } from '@strapi/utils';
7
+ import { getService } from '../utils.mjs';
8
+
9
+ const validation = {
10
+ validateSettings: validateYupSchema(yup.object().shape({
11
+ restrictedAccess: yup.boolean(),
12
+ password: yup.string().min(8).matches(/[a-z]/, '${path} must contain at least one lowercase character').matches(/[A-Z]/, '${path} must contain at least one uppercase character').matches(/\d/, '${path} must contain at least one number').when('restrictedAccess', (value, initSchema)=>{
13
+ return value ? initSchema.required('password is required') : initSchema;
14
+ })
15
+ }))
16
+ };
17
+ var documentation = {
18
+ async getInfos (ctx) {
19
+ try {
20
+ const docService = getService('documentation');
21
+ const docVersions = docService.getDocumentationVersions();
22
+ const documentationAccess = await docService.getDocumentationAccess();
23
+ ctx.send({
24
+ docVersions,
25
+ currentVersion: docService.getDocumentationVersion(),
26
+ prefix: '/documentation',
27
+ documentationAccess
28
+ });
29
+ } catch (err) {
30
+ strapi.log.error(err);
31
+ ctx.badRequest();
32
+ }
33
+ },
34
+ async index (ctx, next) {
35
+ try {
36
+ /**
37
+ * We don't expose the specs using koa-static or something else due to security reasons.
38
+ * That's why, we need to read the file localy and send the specs through it when we serve the Swagger UI.
39
+ */ const { major, minor, patch } = ctx.params;
40
+ const version = major && minor && patch ? `${major}.${minor}.${patch}` : getService('documentation').getDocumentationVersion();
41
+ const openAPISpecsPath = path.join(strapi.dirs.app.extensions, 'documentation', 'documentation', version, 'full_documentation.json');
42
+ try {
43
+ const documentation = fs.readFileSync(openAPISpecsPath, 'utf8');
44
+ const layout = (await import('../public/index.html.mjs')).default;
45
+ const filledLayout = _.template(layout)({
46
+ backendUrl: strapi.config.server.url,
47
+ spec: JSON.stringify(JSON.parse(documentation))
48
+ });
49
+ try {
50
+ const layoutPath = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public', 'index.html');
51
+ await fs.ensureFile(layoutPath);
52
+ await fs.writeFile(layoutPath, filledLayout);
53
+ // Serve the file.
54
+ ctx.url = path.basename(`${ctx.url}/index.html`);
55
+ try {
56
+ const staticFolder = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public');
57
+ return koaStatic(staticFolder)(ctx, next);
58
+ } catch (e) {
59
+ strapi.log.error(e);
60
+ }
61
+ } catch (e) {
62
+ strapi.log.error(e);
63
+ }
64
+ } catch (e) {
65
+ strapi.log.error(e);
66
+ }
67
+ } catch (e) {
68
+ strapi.log.error(e);
69
+ }
70
+ },
71
+ async loginView (ctx, next) {
72
+ // lazy require cheerio
73
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
74
+ const cheerio = require('cheerio');
75
+ const { error } = ctx.query;
76
+ try {
77
+ const layout = (await import('../public/login.html.mjs')).default;
78
+ const filledLayout = _.template(layout.toString())({
79
+ actionUrl: `${strapi.config.server.url}/documentation/login`
80
+ });
81
+ const $ = cheerio.load(filledLayout);
82
+ $('.error').text(_.isEmpty(error) ? '' : 'Wrong password...');
83
+ try {
84
+ const layoutPath = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public', 'login.html');
85
+ await fs.ensureFile(layoutPath);
86
+ await fs.writeFile(layoutPath, $.html());
87
+ ctx.url = path.basename(`${ctx.url}/login.html`);
88
+ try {
89
+ const staticFolder = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public');
90
+ return koaStatic(staticFolder)(ctx, next);
91
+ } catch (e) {
92
+ strapi.log.error(e);
93
+ }
94
+ } catch (e) {
95
+ strapi.log.error(e);
96
+ }
97
+ } catch (e) {
98
+ strapi.log.error(e);
99
+ }
100
+ },
101
+ async login (ctx) {
102
+ const { body: { password } } = ctx.request;
103
+ const { password: hash } = await strapi.store({
104
+ type: 'plugin',
105
+ name: 'documentation',
106
+ key: 'config'
107
+ }).get();
108
+ const isValid = await bcrypt.compare(password, hash);
109
+ let querystring = '?error=password';
110
+ if (isValid && ctx.session) {
111
+ ctx.session.documentation = {
112
+ logged: true
113
+ };
114
+ querystring = '';
115
+ }
116
+ ctx.redirect(`${strapi.config.server.url}/documentation${querystring}`);
117
+ },
118
+ async regenerateDoc (ctx) {
119
+ const { version } = ctx.request.body;
120
+ const service = getService('documentation');
121
+ const documentationVersions = service.getDocumentationVersions().map((el)=>el.version);
122
+ if (_.isEmpty(version)) {
123
+ return ctx.badRequest('Please provide a version.');
124
+ }
125
+ if (!documentationVersions.includes(version)) {
126
+ return ctx.badRequest('The version you are trying to generate does not exist.');
127
+ }
128
+ try {
129
+ strapi.reload.isWatching = false;
130
+ await service.generateFullDoc(version);
131
+ ctx.send({
132
+ ok: true
133
+ });
134
+ } finally{
135
+ strapi.reload.isWatching = true;
136
+ }
137
+ },
138
+ async deleteDoc (ctx) {
139
+ const { version } = ctx.params;
140
+ const service = getService('documentation');
141
+ const documentationVersions = service.getDocumentationVersions().map((el)=>el.version);
142
+ if (_.isEmpty(version)) {
143
+ return ctx.badRequest('Please provide a version.');
144
+ }
145
+ if (!documentationVersions.includes(version)) {
146
+ return ctx.badRequest('The version you are trying to delete does not exist.');
147
+ }
148
+ try {
149
+ strapi.reload.isWatching = false;
150
+ await service.deleteDocumentation(version);
151
+ ctx.send({
152
+ ok: true
153
+ });
154
+ } finally{
155
+ strapi.reload.isWatching = true;
156
+ }
157
+ },
158
+ async updateSettings (ctx) {
159
+ const pluginStore = strapi.store({
160
+ type: 'plugin',
161
+ name: 'documentation'
162
+ });
163
+ const data = await validation.validateSettings(ctx.request.body);
164
+ const config = {
165
+ restrictedAccess: Boolean(data.restrictedAccess)
166
+ };
167
+ if (data.password) {
168
+ config.password = await bcrypt.hash(data.password, 10);
169
+ }
170
+ await pluginStore.set({
171
+ key: 'config',
172
+ value: config
173
+ });
174
+ return ctx.send({
175
+ ok: true
176
+ });
177
+ }
178
+ };
179
+
180
+ export { documentation as default };
181
+ //# sourceMappingURL=documentation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation.mjs","sources":["../../../server/src/controllers/documentation.ts"],"sourcesContent":["import path from 'path';\nimport bcrypt from 'bcryptjs';\nimport fs from 'fs-extra';\nimport _ from 'lodash';\nimport koaStatic from 'koa-static';\nimport { yup, validateYupSchema } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\n\nimport { getService } from '../utils';\nimport type { Config } from '../types';\n\nconst validation = {\n validateSettings: validateYupSchema(\n yup.object().shape({\n restrictedAccess: yup.boolean(),\n password: yup\n .string()\n .min(8)\n .matches(/[a-z]/, '${path} must contain at least one lowercase character')\n .matches(/[A-Z]/, '${path} must contain at least one uppercase character')\n .matches(/\\d/, '${path} must contain at least one number')\n .when('restrictedAccess', (value, initSchema) => {\n return value ? initSchema.required('password is required') : initSchema;\n }),\n })\n ),\n};\n\nexport default {\n async getInfos(ctx: Koa.Context) {\n try {\n const docService = getService('documentation');\n const docVersions = docService.getDocumentationVersions();\n const documentationAccess = await docService.getDocumentationAccess();\n\n ctx.send({\n docVersions,\n currentVersion: docService.getDocumentationVersion(),\n prefix: '/documentation',\n documentationAccess,\n });\n } catch (err) {\n strapi.log.error(err);\n ctx.badRequest();\n }\n },\n\n async index(ctx: Koa.Context, next: Koa.Next) {\n try {\n /**\n * We don't expose the specs using koa-static or something else due to security reasons.\n * That's why, we need to read the file localy and send the specs through it when we serve the Swagger UI.\n */\n const { major, minor, patch } = ctx.params;\n const version =\n major && minor && patch\n ? `${major}.${minor}.${patch}`\n : getService('documentation').getDocumentationVersion();\n\n const openAPISpecsPath = path.join(\n strapi.dirs.app.extensions,\n 'documentation',\n 'documentation',\n version,\n 'full_documentation.json'\n );\n\n try {\n const documentation = fs.readFileSync(openAPISpecsPath, 'utf8');\n\n const layout = (await import('../public/index.html')).default;\n\n const filledLayout = _.template(layout)({\n backendUrl: strapi.config.server.url,\n spec: JSON.stringify(JSON.parse(documentation)),\n });\n\n try {\n const layoutPath = path.resolve(\n strapi.dirs.app.extensions,\n 'documentation',\n 'public',\n 'index.html'\n );\n await fs.ensureFile(layoutPath);\n await fs.writeFile(layoutPath, filledLayout);\n\n // Serve the file.\n ctx.url = path.basename(`${ctx.url}/index.html`);\n\n try {\n const staticFolder = path.resolve(\n strapi.dirs.app.extensions,\n 'documentation',\n 'public'\n );\n return koaStatic(staticFolder)(ctx, next);\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n },\n\n async loginView(ctx: Koa.Context, next: Koa.Next) {\n // lazy require cheerio\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const cheerio = require('cheerio');\n\n const { error } = ctx.query;\n\n try {\n const layout = (await import('../public/login.html')).default;\n\n const filledLayout = _.template(layout.toString())({\n actionUrl: `${strapi.config.server.url}/documentation/login`,\n });\n\n const $ = cheerio.load(filledLayout);\n\n $('.error').text(_.isEmpty(error) ? '' : 'Wrong password...');\n\n try {\n const layoutPath = path.resolve(\n strapi.dirs.app.extensions,\n 'documentation',\n 'public',\n 'login.html'\n );\n await fs.ensureFile(layoutPath);\n await fs.writeFile(layoutPath, $.html());\n\n ctx.url = path.basename(`${ctx.url}/login.html`);\n\n try {\n const staticFolder = path.resolve(strapi.dirs.app.extensions, 'documentation', 'public');\n return koaStatic(staticFolder)(ctx, next);\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n } catch (e) {\n strapi.log.error(e);\n }\n },\n\n async login(ctx: Koa.Context) {\n const {\n body: { password },\n } = ctx.request;\n\n const { password: hash } = (await strapi\n .store({ type: 'plugin', name: 'documentation', key: 'config' })\n .get()) as { password: string };\n\n const isValid = await bcrypt.compare(password, hash);\n\n let querystring = '?error=password';\n\n if (isValid && ctx.session) {\n ctx.session.documentation = {\n logged: true,\n };\n\n querystring = '';\n }\n\n ctx.redirect(`${strapi.config.server.url}/documentation${querystring}`);\n },\n\n async regenerateDoc(ctx: Koa.Context) {\n const { version } = ctx.request.body;\n\n const service = getService('documentation');\n\n const documentationVersions = service.getDocumentationVersions().map((el) => el.version);\n\n if (_.isEmpty(version)) {\n return ctx.badRequest('Please provide a version.');\n }\n\n if (!documentationVersions.includes(version)) {\n return ctx.badRequest('The version you are trying to generate does not exist.');\n }\n\n try {\n strapi.reload.isWatching = false;\n await service.generateFullDoc(version);\n ctx.send({ ok: true });\n } finally {\n strapi.reload.isWatching = true;\n }\n },\n\n async deleteDoc(ctx: Koa.Context) {\n const { version } = ctx.params;\n\n const service = getService('documentation');\n\n const documentationVersions = service.getDocumentationVersions().map((el) => el.version);\n\n if (_.isEmpty(version)) {\n return ctx.badRequest('Please provide a version.');\n }\n\n if (!documentationVersions.includes(version)) {\n return ctx.badRequest('The version you are trying to delete does not exist.');\n }\n\n try {\n strapi.reload.isWatching = false;\n await service.deleteDocumentation(version);\n ctx.send({ ok: true });\n } finally {\n strapi.reload.isWatching = true;\n }\n },\n\n async updateSettings(ctx: Koa.Context) {\n const pluginStore = strapi.store({ type: 'plugin', name: 'documentation' });\n\n const data = await validation.validateSettings(ctx.request.body);\n\n const config: Config = {\n restrictedAccess: Boolean(data.restrictedAccess),\n };\n\n if (data.password) {\n config.password = await bcrypt.hash(data.password, 10);\n }\n\n await pluginStore.set({ key: 'config', value: config });\n\n return ctx.send({ ok: true });\n },\n};\n"],"names":["validation","validateSettings","validateYupSchema","yup","object","shape","restrictedAccess","boolean","password","string","min","matches","when","value","initSchema","required","getInfos","ctx","docService","getService","docVersions","getDocumentationVersions","documentationAccess","getDocumentationAccess","send","currentVersion","getDocumentationVersion","prefix","err","strapi","log","error","badRequest","index","next","major","minor","patch","params","version","openAPISpecsPath","path","join","dirs","app","extensions","documentation","fs","readFileSync","layout","default","filledLayout","_","template","backendUrl","config","server","url","spec","JSON","stringify","parse","layoutPath","resolve","ensureFile","writeFile","basename","staticFolder","koaStatic","e","loginView","cheerio","require","query","toString","actionUrl","$","load","text","isEmpty","html","login","body","request","hash","store","type","name","key","get","isValid","bcrypt","compare","querystring","session","logged","redirect","regenerateDoc","service","documentationVersions","map","el","includes","reload","isWatching","generateFullDoc","ok","deleteDoc","deleteDocumentation","updateSettings","pluginStore","data","Boolean","set"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var documentation = require('./documentation.js');
4
+
5
+ var controllers = {
6
+ documentation
7
+ };
8
+
9
+ module.exports = controllers;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import documentation from './documentation';\n\nexport default {\n documentation,\n};\n"],"names":["documentation"],"mappings":";;;;AAEA,kBAAe;AACbA,IAAAA;AACF,CAAE;;;;"}
@@ -0,0 +1,8 @@
1
+ import documentation from './documentation.mjs';
2
+
3
+ var controllers = {
4
+ documentation
5
+ };
6
+
7
+ export { controllers as default };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import documentation from './documentation';\n\nexport default {\n documentation,\n};\n"],"names":["documentation"],"mappings":";;AAEA,kBAAe;AACbA,IAAAA;AACF,CAAE;;;;"}