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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/README.md +2 -3
  2. package/dist/admin/components/SettingsForm.js +203 -0
  3. package/dist/admin/components/SettingsForm.js.map +1 -0
  4. package/dist/admin/components/SettingsForm.mjs +180 -0
  5. package/dist/admin/components/SettingsForm.mjs.map +1 -0
  6. package/dist/admin/constants.js +47 -0
  7. package/dist/admin/constants.js.map +1 -0
  8. package/dist/admin/constants.mjs +45 -0
  9. package/dist/admin/constants.mjs.map +1 -0
  10. package/dist/admin/index.js +96 -5
  11. package/dist/admin/index.js.map +1 -1
  12. package/dist/admin/index.mjs +91 -5
  13. package/dist/admin/index.mjs.map +1 -1
  14. package/dist/admin/pages/App.js +254 -0
  15. package/dist/admin/pages/App.js.map +1 -0
  16. package/dist/admin/pages/App.mjs +232 -0
  17. package/dist/admin/pages/App.mjs.map +1 -0
  18. package/dist/admin/pages/Settings.js +54 -0
  19. package/dist/admin/pages/Settings.js.map +1 -0
  20. package/dist/admin/pages/Settings.mjs +52 -0
  21. package/dist/admin/pages/Settings.mjs.map +1 -0
  22. package/dist/admin/pluginId.js +6 -0
  23. package/dist/admin/pluginId.js.map +1 -0
  24. package/dist/admin/pluginId.mjs +4 -0
  25. package/dist/admin/pluginId.mjs.map +1 -0
  26. package/dist/admin/services/api.js +55 -0
  27. package/dist/admin/services/api.js.map +1 -0
  28. package/dist/admin/services/api.mjs +50 -0
  29. package/dist/admin/services/api.mjs.map +1 -0
  30. package/dist/admin/src/components/SettingsForm.d.ts +8 -0
  31. package/dist/admin/src/constants.d.ts +18 -0
  32. package/dist/admin/src/index.d.ts +15 -0
  33. package/dist/admin/src/pages/App.d.ts +2 -0
  34. package/dist/admin/src/pages/Settings.d.ts +2 -0
  35. package/dist/admin/src/pages/tests/App.test.d.ts +1 -0
  36. package/dist/admin/src/pages/tests/Settings.test.d.ts +1 -0
  37. package/dist/admin/src/pluginId.d.ts +1 -0
  38. package/dist/admin/src/services/api.d.ts +13 -0
  39. package/dist/admin/src/types.d.ts +16 -0
  40. package/dist/admin/src/utils/baseQuery.d.ts +5 -0
  41. package/dist/admin/src/utils/getTrad.d.ts +1 -0
  42. package/dist/admin/src/utils/index.d.ts +2 -0
  43. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +2 -0
  44. package/dist/admin/translations/ar.json.js +25 -0
  45. package/dist/admin/translations/ar.json.js.map +1 -0
  46. package/dist/admin/translations/ar.json.mjs +23 -0
  47. package/dist/admin/translations/ar.json.mjs.map +1 -0
  48. package/dist/admin/translations/cs.json.js +47 -0
  49. package/dist/admin/translations/cs.json.js.map +1 -0
  50. package/dist/admin/translations/cs.json.mjs +45 -0
  51. package/dist/admin/translations/cs.json.mjs.map +1 -0
  52. package/dist/admin/translations/da.json.js +44 -0
  53. package/dist/admin/translations/da.json.js.map +1 -0
  54. package/dist/admin/translations/da.json.mjs +42 -0
  55. package/dist/admin/translations/da.json.mjs.map +1 -0
  56. package/dist/admin/translations/de.json.js +47 -0
  57. package/dist/admin/translations/de.json.js.map +1 -0
  58. package/dist/admin/translations/de.json.mjs +45 -0
  59. package/dist/admin/translations/de.json.mjs.map +1 -0
  60. package/dist/admin/translations/en.json.js +47 -0
  61. package/dist/admin/translations/en.json.js.map +1 -0
  62. package/dist/admin/translations/en.json.mjs +45 -0
  63. package/dist/admin/translations/en.json.mjs.map +1 -0
  64. package/dist/admin/translations/es.json.js +47 -0
  65. package/dist/admin/translations/es.json.js.map +1 -0
  66. package/dist/admin/translations/es.json.mjs +45 -0
  67. package/dist/admin/translations/es.json.mjs.map +1 -0
  68. package/dist/admin/translations/fr.json.js +31 -0
  69. package/dist/admin/translations/fr.json.js.map +1 -0
  70. package/dist/admin/translations/fr.json.mjs +29 -0
  71. package/dist/admin/translations/fr.json.mjs.map +1 -0
  72. package/dist/admin/translations/id.json.js +29 -0
  73. package/dist/admin/translations/id.json.js.map +1 -0
  74. package/dist/admin/translations/id.json.mjs +27 -0
  75. package/dist/admin/translations/id.json.mjs.map +1 -0
  76. package/dist/admin/translations/it.json.js +31 -0
  77. package/dist/admin/translations/it.json.js.map +1 -0
  78. package/dist/admin/translations/it.json.mjs +29 -0
  79. package/dist/admin/translations/it.json.mjs.map +1 -0
  80. package/dist/admin/translations/ko.json.js +44 -0
  81. package/dist/admin/translations/ko.json.js.map +1 -0
  82. package/dist/admin/translations/ko.json.mjs +42 -0
  83. package/dist/admin/translations/ko.json.mjs.map +1 -0
  84. package/dist/admin/translations/ms.json.js +28 -0
  85. package/dist/admin/translations/ms.json.js.map +1 -0
  86. package/dist/admin/translations/ms.json.mjs +26 -0
  87. package/dist/admin/translations/ms.json.mjs.map +1 -0
  88. package/dist/admin/translations/nl.json.js +26 -0
  89. package/dist/admin/translations/nl.json.js.map +1 -0
  90. package/dist/admin/translations/nl.json.mjs +24 -0
  91. package/dist/admin/translations/nl.json.mjs.map +1 -0
  92. package/dist/admin/translations/pl.json.js +47 -0
  93. package/dist/admin/translations/pl.json.js.map +1 -0
  94. package/dist/admin/translations/pl.json.mjs +45 -0
  95. package/dist/admin/translations/pl.json.mjs.map +1 -0
  96. package/dist/admin/translations/pt-BR.json.js +26 -0
  97. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  98. package/dist/admin/translations/pt-BR.json.mjs +24 -0
  99. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  100. package/dist/admin/translations/pt.json.js +26 -0
  101. package/dist/admin/translations/pt.json.js.map +1 -0
  102. package/dist/admin/translations/pt.json.mjs +24 -0
  103. package/dist/admin/translations/pt.json.mjs.map +1 -0
  104. package/dist/admin/translations/ru.json.js +47 -0
  105. package/dist/admin/translations/ru.json.js.map +1 -0
  106. package/dist/admin/translations/ru.json.mjs +45 -0
  107. package/dist/admin/translations/ru.json.mjs.map +1 -0
  108. package/dist/admin/translations/sk.json.js +47 -0
  109. package/dist/admin/translations/sk.json.js.map +1 -0
  110. package/dist/admin/translations/sk.json.mjs +45 -0
  111. package/dist/admin/translations/sk.json.mjs.map +1 -0
  112. package/dist/admin/translations/sv.json.js +44 -0
  113. package/dist/admin/translations/sv.json.js.map +1 -0
  114. package/dist/admin/translations/sv.json.mjs +42 -0
  115. package/dist/admin/translations/sv.json.mjs.map +1 -0
  116. package/dist/admin/translations/th.json.js +29 -0
  117. package/dist/admin/translations/th.json.js.map +1 -0
  118. package/dist/admin/translations/th.json.mjs +27 -0
  119. package/dist/admin/translations/th.json.mjs.map +1 -0
  120. package/dist/admin/translations/tr.json.js +44 -0
  121. package/dist/admin/translations/tr.json.js.map +1 -0
  122. package/dist/admin/translations/tr.json.mjs +42 -0
  123. package/dist/admin/translations/tr.json.mjs.map +1 -0
  124. package/dist/admin/translations/uk.json.js +47 -0
  125. package/dist/admin/translations/uk.json.js.map +1 -0
  126. package/dist/admin/translations/uk.json.mjs +45 -0
  127. package/dist/admin/translations/uk.json.mjs.map +1 -0
  128. package/dist/admin/translations/vi.json.js +29 -0
  129. package/dist/admin/translations/vi.json.js.map +1 -0
  130. package/dist/admin/translations/vi.json.mjs +27 -0
  131. package/dist/admin/translations/vi.json.mjs.map +1 -0
  132. package/dist/admin/translations/zh-Hans.json.js +33 -0
  133. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  134. package/dist/admin/translations/zh-Hans.json.mjs +31 -0
  135. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  136. package/dist/admin/translations/zh.json.js +44 -0
  137. package/dist/admin/translations/zh.json.js.map +1 -0
  138. package/dist/admin/translations/zh.json.mjs +42 -0
  139. package/dist/admin/translations/zh.json.mjs.map +1 -0
  140. package/dist/admin/utils/baseQuery.js +8 -0
  141. package/dist/admin/utils/baseQuery.js.map +1 -0
  142. package/dist/admin/utils/baseQuery.mjs +6 -0
  143. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  144. package/dist/admin/utils/getTrad.js +8 -0
  145. package/dist/admin/utils/getTrad.js.map +1 -0
  146. package/dist/admin/utils/getTrad.mjs +6 -0
  147. package/dist/admin/utils/getTrad.mjs.map +1 -0
  148. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  149. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  150. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  151. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  152. package/dist/server/bootstrap.js +57 -0
  153. package/dist/server/bootstrap.js.map +1 -0
  154. package/dist/server/bootstrap.mjs +55 -0
  155. package/dist/server/bootstrap.mjs.map +1 -0
  156. package/dist/server/config/default-plugin-config.js +88 -0
  157. package/dist/server/config/default-plugin-config.js.map +1 -0
  158. package/dist/server/config/default-plugin-config.mjs +86 -0
  159. package/dist/server/config/default-plugin-config.mjs.map +1 -0
  160. package/dist/server/config/index.js +10 -0
  161. package/dist/server/config/index.js.map +1 -0
  162. package/dist/server/config/index.mjs +8 -0
  163. package/dist/server/config/index.mjs.map +1 -0
  164. package/dist/server/controllers/documentation.js +194 -0
  165. package/dist/server/controllers/documentation.js.map +1 -0
  166. package/dist/server/controllers/documentation.mjs +182 -0
  167. package/dist/server/controllers/documentation.mjs.map +1 -0
  168. package/dist/server/controllers/index.js +10 -0
  169. package/dist/server/controllers/index.js.map +1 -0
  170. package/dist/server/controllers/index.mjs +8 -0
  171. package/dist/server/controllers/index.mjs.map +1 -0
  172. package/dist/server/index.js +20 -0
  173. package/dist/server/index.js.map +1 -0
  174. package/dist/server/index.mjs +18 -0
  175. package/dist/server/index.mjs.map +1 -0
  176. package/dist/server/middlewares/documentation.js +33 -0
  177. package/dist/server/middlewares/documentation.js.map +1 -0
  178. package/dist/server/middlewares/documentation.mjs +25 -0
  179. package/dist/server/middlewares/documentation.mjs.map +1 -0
  180. package/dist/server/middlewares/restrict-access.js +23 -0
  181. package/dist/server/middlewares/restrict-access.js.map +1 -0
  182. package/dist/server/middlewares/restrict-access.mjs +21 -0
  183. package/dist/server/middlewares/restrict-access.mjs.map +1 -0
  184. package/dist/server/public/index.html.js +6 -0
  185. package/dist/server/public/index.html.js.map +1 -0
  186. package/dist/server/public/index.html.mjs +4 -0
  187. package/dist/server/public/index.html.mjs.map +1 -0
  188. package/dist/server/public/login.html.js +6 -0
  189. package/dist/server/public/login.html.js.map +1 -0
  190. package/dist/server/public/login.html.mjs +4 -0
  191. package/dist/server/public/login.html.mjs.map +1 -0
  192. package/dist/server/register.js +12 -0
  193. package/dist/server/register.js.map +1 -0
  194. package/dist/server/register.mjs +10 -0
  195. package/dist/server/register.mjs.map +1 -0
  196. package/dist/server/routes/index.js +106 -0
  197. package/dist/server/routes/index.js.map +1 -0
  198. package/dist/server/routes/index.mjs +104 -0
  199. package/dist/server/routes/index.mjs.map +1 -0
  200. package/dist/server/services/documentation.js +193 -0
  201. package/dist/server/services/documentation.js.map +1 -0
  202. package/dist/server/services/documentation.mjs +186 -0
  203. package/dist/server/services/documentation.mjs.map +1 -0
  204. package/dist/server/services/helpers/build-api-endpoint-path.js +166 -0
  205. package/dist/server/services/helpers/build-api-endpoint-path.js.map +1 -0
  206. package/dist/server/services/helpers/build-api-endpoint-path.mjs +141 -0
  207. package/dist/server/services/helpers/build-api-endpoint-path.mjs.map +1 -0
  208. package/dist/server/services/helpers/build-component-schema.js +178 -0
  209. package/dist/server/services/helpers/build-component-schema.js.map +1 -0
  210. package/dist/server/services/helpers/build-component-schema.mjs +172 -0
  211. package/dist/server/services/helpers/build-component-schema.mjs.map +1 -0
  212. package/dist/server/services/helpers/utils/clean-schema-attributes.js +315 -0
  213. package/dist/server/services/helpers/utils/clean-schema-attributes.js.map +1 -0
  214. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs +313 -0
  215. package/dist/server/services/helpers/utils/clean-schema-attributes.mjs.map +1 -0
  216. package/dist/server/services/helpers/utils/get-api-responses.js +88 -0
  217. package/dist/server/services/helpers/utils/get-api-responses.js.map +1 -0
  218. package/dist/server/services/helpers/utils/get-api-responses.mjs +86 -0
  219. package/dist/server/services/helpers/utils/get-api-responses.mjs.map +1 -0
  220. package/dist/server/services/helpers/utils/get-schema-data.js +57 -0
  221. package/dist/server/services/helpers/utils/get-schema-data.js.map +1 -0
  222. package/dist/server/services/helpers/utils/get-schema-data.mjs +55 -0
  223. package/dist/server/services/helpers/utils/get-schema-data.mjs.map +1 -0
  224. package/dist/server/services/helpers/utils/loop-content-type-names.js +44 -0
  225. package/dist/server/services/helpers/utils/loop-content-type-names.js.map +1 -0
  226. package/dist/server/services/helpers/utils/loop-content-type-names.mjs +38 -0
  227. package/dist/server/services/helpers/utils/loop-content-type-names.mjs.map +1 -0
  228. package/dist/server/services/helpers/utils/pascal-case.js +14 -0
  229. package/dist/server/services/helpers/utils/pascal-case.js.map +1 -0
  230. package/dist/server/services/helpers/utils/pascal-case.mjs +8 -0
  231. package/dist/server/services/helpers/utils/pascal-case.mjs.map +1 -0
  232. package/dist/server/services/helpers/utils/query-params.js +109 -0
  233. package/dist/server/services/helpers/utils/query-params.js.map +1 -0
  234. package/dist/server/services/helpers/utils/query-params.mjs +107 -0
  235. package/dist/server/services/helpers/utils/query-params.mjs.map +1 -0
  236. package/dist/server/services/helpers/utils/routes.js +11 -0
  237. package/dist/server/services/helpers/utils/routes.js.map +1 -0
  238. package/dist/server/services/helpers/utils/routes.mjs +9 -0
  239. package/dist/server/services/helpers/utils/routes.mjs.map +1 -0
  240. package/dist/server/services/index.js +13 -0
  241. package/dist/server/services/index.js.map +1 -0
  242. package/dist/server/services/index.mjs +11 -0
  243. package/dist/server/services/index.mjs.map +1 -0
  244. package/dist/server/services/override.js +45 -0
  245. package/dist/server/services/override.js.map +1 -0
  246. package/dist/server/services/override.mjs +43 -0
  247. package/dist/server/services/override.mjs.map +1 -0
  248. package/dist/server/services/utils/get-plugins-that-need-documentation.js +24 -0
  249. package/dist/server/services/utils/get-plugins-that-need-documentation.js.map +1 -0
  250. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs +22 -0
  251. package/dist/server/services/utils/get-plugins-that-need-documentation.mjs.map +1 -0
  252. package/dist/server/src/bootstrap.d.ts +5 -0
  253. package/dist/server/src/bootstrap.d.ts.map +1 -0
  254. package/dist/server/src/config/default-plugin-config.d.ts +3 -0
  255. package/dist/server/src/config/default-plugin-config.d.ts.map +1 -0
  256. package/dist/server/src/config/index.d.ts +4 -0
  257. package/dist/server/src/config/index.d.ts.map +1 -0
  258. package/dist/server/src/controllers/documentation.d.ts +12 -0
  259. package/dist/server/src/controllers/documentation.d.ts.map +1 -0
  260. package/dist/server/src/controllers/index.d.ts +13 -0
  261. package/dist/server/src/controllers/index.d.ts.map +1 -0
  262. package/dist/server/src/index.d.ts +90 -0
  263. package/dist/server/src/index.d.ts.map +1 -0
  264. package/dist/server/src/middlewares/documentation.d.ts +5 -0
  265. package/dist/server/src/middlewares/documentation.d.ts.map +1 -0
  266. package/dist/server/src/middlewares/restrict-access.d.ts +4 -0
  267. package/dist/server/src/middlewares/restrict-access.d.ts.map +1 -0
  268. package/dist/server/src/register.d.ts +5 -0
  269. package/dist/server/src/register.d.ts.map +1 -0
  270. package/dist/server/src/routes/index.d.ts +35 -0
  271. package/dist/server/src/routes/index.d.ts.map +1 -0
  272. package/dist/server/src/services/__mocks__/mock-content-types.d.ts +449 -0
  273. package/dist/server/src/services/__mocks__/mock-content-types.d.ts.map +1 -0
  274. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts +592 -0
  275. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts.map +1 -0
  276. package/dist/server/src/services/documentation.d.ts +36 -0
  277. package/dist/server/src/services/documentation.d.ts.map +1 -0
  278. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts +7 -0
  279. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts.map +1 -0
  280. package/dist/server/src/services/helpers/build-component-schema.d.ts +4 -0
  281. package/dist/server/src/services/helpers/build-component-schema.d.ts.map +1 -0
  282. package/dist/server/src/services/helpers/index.d.ts +4 -0
  283. package/dist/server/src/services/helpers/index.d.ts.map +1 -0
  284. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts +15 -0
  285. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts.map +1 -0
  286. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts +15 -0
  287. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts.map +1 -0
  288. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts +12 -0
  289. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts.map +1 -0
  290. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts +7 -0
  291. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts.map +1 -0
  292. package/dist/server/src/services/helpers/utils/pascal-case.d.ts +3 -0
  293. package/dist/server/src/services/helpers/utils/pascal-case.d.ts.map +1 -0
  294. package/dist/server/src/services/helpers/utils/query-params.d.ts +4 -0
  295. package/dist/server/src/services/helpers/utils/query-params.d.ts.map +1 -0
  296. package/dist/server/src/services/helpers/utils/routes.d.ts +3 -0
  297. package/dist/server/src/services/helpers/utils/routes.d.ts.map +1 -0
  298. package/dist/server/src/services/index.d.ts +43 -0
  299. package/dist/server/src/services/index.d.ts.map +1 -0
  300. package/dist/server/src/services/override.d.ts +21 -0
  301. package/dist/server/src/services/override.d.ts.map +1 -0
  302. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts +4 -0
  303. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts.map +1 -0
  304. package/dist/server/src/types.d.ts +28 -0
  305. package/dist/server/src/types.d.ts.map +1 -0
  306. package/dist/server/src/utils.d.ts +12 -0
  307. package/dist/server/src/utils.d.ts.map +1 -0
  308. package/dist/server/utils.js +10 -0
  309. package/dist/server/utils.js.map +1 -0
  310. package/dist/server/utils.mjs +8 -0
  311. package/dist/server/utils.mjs.map +1 -0
  312. package/dist/tests/server.d.ts +2 -0
  313. package/package.json +61 -38
  314. package/.eslintignore +0 -1
  315. package/.eslintrc +0 -17
  316. package/admin/src/constants.js +0 -17
  317. package/admin/src/hooks/useDocumentation.js +0 -77
  318. package/admin/src/index.js +0 -76
  319. package/admin/src/pages/PluginPage/index.jsx +0 -230
  320. package/admin/src/pages/PluginPage/tests/index.test.jsx +0 -206
  321. package/admin/src/pages/SettingsPage/index.jsx +0 -211
  322. package/admin/src/pages/SettingsPage/tests/index.test.jsx +0 -124
  323. package/admin/src/pluginId.js +0 -5
  324. package/admin/src/translations/ar.json +0 -20
  325. package/admin/src/translations/cs.json +0 -21
  326. package/admin/src/translations/de.json +0 -26
  327. package/admin/src/translations/dk.json +0 -39
  328. package/admin/src/translations/en.json +0 -39
  329. package/admin/src/translations/es.json +0 -39
  330. package/admin/src/translations/fr.json +0 -26
  331. package/admin/src/translations/id.json +0 -24
  332. package/admin/src/translations/it.json +0 -26
  333. package/admin/src/translations/ko.json +0 -39
  334. package/admin/src/translations/ms.json +0 -23
  335. package/admin/src/translations/nl.json +0 -21
  336. package/admin/src/translations/pl.json +0 -39
  337. package/admin/src/translations/pt-BR.json +0 -21
  338. package/admin/src/translations/pt.json +0 -21
  339. package/admin/src/translations/ru.json +0 -39
  340. package/admin/src/translations/sk.json +0 -24
  341. package/admin/src/translations/sv.json +0 -39
  342. package/admin/src/translations/th.json +0 -24
  343. package/admin/src/translations/tr.json +0 -39
  344. package/admin/src/translations/uk.json +0 -23
  345. package/admin/src/translations/vi.json +0 -24
  346. package/admin/src/translations/zh-Hans.json +0 -28
  347. package/admin/src/translations/zh.json +0 -39
  348. package/admin/src/utils/getTrad.js +0 -5
  349. package/admin/src/utils/index.js +0 -2
  350. package/dist/_chunks/ar-4yWQcJB-.js +0 -24
  351. package/dist/_chunks/ar-4yWQcJB-.js.map +0 -1
  352. package/dist/_chunks/ar-dlnabvQE.mjs +0 -24
  353. package/dist/_chunks/ar-dlnabvQE.mjs.map +0 -1
  354. package/dist/_chunks/cs-knLCHelx.js +0 -25
  355. package/dist/_chunks/cs-knLCHelx.js.map +0 -1
  356. package/dist/_chunks/cs-x2Pr-Y38.mjs +0 -25
  357. package/dist/_chunks/cs-x2Pr-Y38.mjs.map +0 -1
  358. package/dist/_chunks/de-10J3uf4y.mjs +0 -30
  359. package/dist/_chunks/de-10J3uf4y.mjs.map +0 -1
  360. package/dist/_chunks/de-D0HJjv1r.js +0 -30
  361. package/dist/_chunks/de-D0HJjv1r.js.map +0 -1
  362. package/dist/_chunks/dk-OGCIxZ4f.js +0 -43
  363. package/dist/_chunks/dk-OGCIxZ4f.js.map +0 -1
  364. package/dist/_chunks/dk-_8JEfZdj.mjs +0 -43
  365. package/dist/_chunks/dk-_8JEfZdj.mjs.map +0 -1
  366. package/dist/_chunks/en-V4ac9UMW.mjs +0 -43
  367. package/dist/_chunks/en-V4ac9UMW.mjs.map +0 -1
  368. package/dist/_chunks/en-YgFnjikD.js +0 -43
  369. package/dist/_chunks/en-YgFnjikD.js.map +0 -1
  370. package/dist/_chunks/es-5fRDaTSK.js +0 -43
  371. package/dist/_chunks/es-5fRDaTSK.js.map +0 -1
  372. package/dist/_chunks/es-f_rfLY5r.mjs +0 -43
  373. package/dist/_chunks/es-f_rfLY5r.mjs.map +0 -1
  374. package/dist/_chunks/fr-L2xRpd2l.mjs +0 -30
  375. package/dist/_chunks/fr-L2xRpd2l.mjs.map +0 -1
  376. package/dist/_chunks/fr-qviymkcR.js +0 -30
  377. package/dist/_chunks/fr-qviymkcR.js.map +0 -1
  378. package/dist/_chunks/id-caKGgafZ.js +0 -28
  379. package/dist/_chunks/id-caKGgafZ.js.map +0 -1
  380. package/dist/_chunks/id-l-r-lPDE.mjs +0 -28
  381. package/dist/_chunks/id-l-r-lPDE.mjs.map +0 -1
  382. package/dist/_chunks/index-0Psmd6mH.js +0 -169
  383. package/dist/_chunks/index-0Psmd6mH.js.map +0 -1
  384. package/dist/_chunks/index-4A--h4wV.mjs +0 -200
  385. package/dist/_chunks/index-4A--h4wV.mjs.map +0 -1
  386. package/dist/_chunks/index-4Lb4OA-2.mjs +0 -173
  387. package/dist/_chunks/index-4Lb4OA-2.mjs.map +0 -1
  388. package/dist/_chunks/index-KO2LyVtS.js +0 -199
  389. package/dist/_chunks/index-KO2LyVtS.js.map +0 -1
  390. package/dist/_chunks/index-U-tAamSt.js +0 -194
  391. package/dist/_chunks/index-U-tAamSt.js.map +0 -1
  392. package/dist/_chunks/index-rLNpelbE.mjs +0 -167
  393. package/dist/_chunks/index-rLNpelbE.mjs.map +0 -1
  394. package/dist/_chunks/it-e3T319Va.js +0 -30
  395. package/dist/_chunks/it-e3T319Va.js.map +0 -1
  396. package/dist/_chunks/it-nCSZoaet.mjs +0 -30
  397. package/dist/_chunks/it-nCSZoaet.mjs.map +0 -1
  398. package/dist/_chunks/ko-nWCOH-TF.js +0 -43
  399. package/dist/_chunks/ko-nWCOH-TF.js.map +0 -1
  400. package/dist/_chunks/ko-pUwRxmfG.mjs +0 -43
  401. package/dist/_chunks/ko-pUwRxmfG.mjs.map +0 -1
  402. package/dist/_chunks/ms-8e8SEhhY.mjs +0 -27
  403. package/dist/_chunks/ms-8e8SEhhY.mjs.map +0 -1
  404. package/dist/_chunks/ms-CSGAOmvV.js +0 -27
  405. package/dist/_chunks/ms-CSGAOmvV.js.map +0 -1
  406. package/dist/_chunks/nl-82NK6g7v.js +0 -25
  407. package/dist/_chunks/nl-82NK6g7v.js.map +0 -1
  408. package/dist/_chunks/nl-RjdbZWuM.mjs +0 -25
  409. package/dist/_chunks/nl-RjdbZWuM.mjs.map +0 -1
  410. package/dist/_chunks/pl-UMuW3iDh.js +0 -43
  411. package/dist/_chunks/pl-UMuW3iDh.js.map +0 -1
  412. package/dist/_chunks/pl-sh4sAKA8.mjs +0 -43
  413. package/dist/_chunks/pl-sh4sAKA8.mjs.map +0 -1
  414. package/dist/_chunks/pt-2sEtQifY.js +0 -25
  415. package/dist/_chunks/pt-2sEtQifY.js.map +0 -1
  416. package/dist/_chunks/pt-BR-G0-nWgFV.js +0 -25
  417. package/dist/_chunks/pt-BR-G0-nWgFV.js.map +0 -1
  418. package/dist/_chunks/pt-BR-uX3O_t0X.mjs +0 -25
  419. package/dist/_chunks/pt-BR-uX3O_t0X.mjs.map +0 -1
  420. package/dist/_chunks/pt-GqKRRnNe.mjs +0 -25
  421. package/dist/_chunks/pt-GqKRRnNe.mjs.map +0 -1
  422. package/dist/_chunks/ru-dQr7xFOb.mjs +0 -43
  423. package/dist/_chunks/ru-dQr7xFOb.mjs.map +0 -1
  424. package/dist/_chunks/ru-wJyWus4I.js +0 -43
  425. package/dist/_chunks/ru-wJyWus4I.js.map +0 -1
  426. package/dist/_chunks/sk-mcEz1PMW.js +0 -28
  427. package/dist/_chunks/sk-mcEz1PMW.js.map +0 -1
  428. package/dist/_chunks/sk-nreoyD6V.mjs +0 -28
  429. package/dist/_chunks/sk-nreoyD6V.mjs.map +0 -1
  430. package/dist/_chunks/sv-V86KaP9y.js +0 -43
  431. package/dist/_chunks/sv-V86KaP9y.js.map +0 -1
  432. package/dist/_chunks/sv-kIUD_46v.mjs +0 -43
  433. package/dist/_chunks/sv-kIUD_46v.mjs.map +0 -1
  434. package/dist/_chunks/th-IcmZ0Yif.mjs +0 -28
  435. package/dist/_chunks/th-IcmZ0Yif.mjs.map +0 -1
  436. package/dist/_chunks/th-pZN4HdUY.js +0 -28
  437. package/dist/_chunks/th-pZN4HdUY.js.map +0 -1
  438. package/dist/_chunks/tr-CkXew0gQ.mjs +0 -43
  439. package/dist/_chunks/tr-CkXew0gQ.mjs.map +0 -1
  440. package/dist/_chunks/tr-fCijT6nA.js +0 -43
  441. package/dist/_chunks/tr-fCijT6nA.js.map +0 -1
  442. package/dist/_chunks/uk-E8Js7gDb.mjs +0 -27
  443. package/dist/_chunks/uk-E8Js7gDb.mjs.map +0 -1
  444. package/dist/_chunks/uk-TEHpQuls.js +0 -27
  445. package/dist/_chunks/uk-TEHpQuls.js.map +0 -1
  446. package/dist/_chunks/useDocumentation-0Rztpbjg.mjs +0 -66
  447. package/dist/_chunks/useDocumentation-0Rztpbjg.mjs.map +0 -1
  448. package/dist/_chunks/useDocumentation-ffVG-mHB.js +0 -65
  449. package/dist/_chunks/useDocumentation-ffVG-mHB.js.map +0 -1
  450. package/dist/_chunks/vi-Nxtm0xZz.js +0 -28
  451. package/dist/_chunks/vi-Nxtm0xZz.js.map +0 -1
  452. package/dist/_chunks/vi-k1R3Y3mS.mjs +0 -28
  453. package/dist/_chunks/vi-k1R3Y3mS.mjs.map +0 -1
  454. package/dist/_chunks/zh-Hans-FdUTcggu.mjs +0 -32
  455. package/dist/_chunks/zh-Hans-FdUTcggu.mjs.map +0 -1
  456. package/dist/_chunks/zh-Hans-tFSnVett.js +0 -32
  457. package/dist/_chunks/zh-Hans-tFSnVett.js.map +0 -1
  458. package/dist/_chunks/zh-Vd3mfBR-.mjs +0 -43
  459. package/dist/_chunks/zh-Vd3mfBR-.mjs.map +0 -1
  460. package/dist/_chunks/zh-bgauBZz8.js +0 -43
  461. package/dist/_chunks/zh-bgauBZz8.js.map +0 -1
  462. package/jest.config.front.js +0 -7
  463. package/jest.config.js +0 -6
  464. package/packup.config.ts +0 -22
  465. package/server/bootstrap.js +0 -54
  466. package/server/config/default-plugin-config.js +0 -35
  467. package/server/config/index.js +0 -7
  468. package/server/controllers/documentation.js +0 -241
  469. package/server/controllers/index.js +0 -7
  470. package/server/index.js +0 -17
  471. package/server/middlewares/documentation.js +0 -25
  472. package/server/middlewares/index.js +0 -7
  473. package/server/middlewares/restrict-access.js +0 -24
  474. package/server/public/index.html +0 -70
  475. package/server/public/login.html +0 -145
  476. package/server/register.js +0 -11
  477. package/server/routes/index.js +0 -84
  478. package/server/services/__mocks__/mock-content-types.js +0 -269
  479. package/server/services/__mocks__/mock-strapi-data.js +0 -183
  480. package/server/services/__tests__/build-component-schema.test.js +0 -761
  481. package/server/services/__tests__/documentation.test.js +0 -481
  482. package/server/services/__tests__/override.test.js +0 -85
  483. package/server/services/documentation.js +0 -247
  484. package/server/services/helpers/build-api-endpoint-path.js +0 -186
  485. package/server/services/helpers/build-component-schema.js +0 -254
  486. package/server/services/helpers/index.js +0 -9
  487. package/server/services/helpers/utils/clean-schema-attributes.js +0 -246
  488. package/server/services/helpers/utils/get-api-responses.js +0 -105
  489. package/server/services/helpers/utils/get-schema-data.js +0 -32
  490. package/server/services/helpers/utils/loop-content-type-names.js +0 -55
  491. package/server/services/helpers/utils/pascal-case.js +0 -9
  492. package/server/services/helpers/utils/query-params.js +0 -106
  493. package/server/services/helpers/utils/routes.js +0 -10
  494. package/server/services/index.js +0 -9
  495. package/server/services/override.js +0 -52
  496. package/server/services/utils/default-openapi-components.js +0 -40
  497. package/server/services/utils/get-plugins-that-need-documentation.js +0 -24
  498. package/strapi-server.js +0 -3
  499. package/tests/server.js +0 -37
  500. package/tests/setup.js +0 -15
@@ -1,230 +0,0 @@
1
- import React, { useState } from 'react';
2
-
3
- import {
4
- Box,
5
- LinkButton,
6
- ContentLayout,
7
- Flex,
8
- HeaderLayout,
9
- IconButton,
10
- Layout,
11
- Main,
12
- Table,
13
- Tbody,
14
- Td,
15
- Th,
16
- Thead,
17
- Tr,
18
- Typography,
19
- } from '@strapi/design-system';
20
- import {
21
- AnErrorOccurred,
22
- ConfirmDialog,
23
- EmptyStateLayout,
24
- LoadingIndicatorPage,
25
- useFocusWhenNavigate,
26
- useRBAC,
27
- } from '@strapi/helper-plugin';
28
- import { Eye as Show, Refresh as Reload, Trash } from '@strapi/icons';
29
- import { Helmet } from 'react-helmet';
30
- import { useIntl } from 'react-intl';
31
- import styled from 'styled-components';
32
-
33
- import { PERMISSIONS } from '../../constants';
34
- import { useDocumentation } from '../../hooks/useDocumentation';
35
- import { getTrad } from '../../utils';
36
-
37
- const PluginPage = () => {
38
- useFocusWhenNavigate();
39
- const { formatMessage } = useIntl();
40
- const { data, isLoading, isError, remove, regenerate } = useDocumentation();
41
- const [showConfirmDelete, setShowConfirmDelete] = useState(false);
42
- const [isConfirmButtonLoading, setIsConfirmButtonLoading] = useState(false);
43
- const [versionToDelete, setVersionToDelete] = useState();
44
- const { allowedActions } = useRBAC(PERMISSIONS);
45
-
46
- const colCount = 4;
47
- const rowCount = (data?.docVersions?.length || 0) + 1;
48
-
49
- const handleRegenerateDoc = (version) => {
50
- regenerate.mutate({ version, prefix: data?.prefix });
51
- };
52
-
53
- const handleShowConfirmDelete = () => {
54
- setShowConfirmDelete(!showConfirmDelete);
55
- };
56
-
57
- const handleConfirmDelete = async () => {
58
- setIsConfirmButtonLoading(true);
59
- await remove.mutateAsync({ prefix: data?.prefix, version: versionToDelete });
60
- setShowConfirmDelete(!showConfirmDelete);
61
- setIsConfirmButtonLoading(false);
62
- };
63
-
64
- const handleClickDelete = (version) => {
65
- setVersionToDelete(version);
66
- setShowConfirmDelete(!showConfirmDelete);
67
- };
68
-
69
- const title = formatMessage({
70
- id: getTrad('plugin.name'),
71
- defaultMessage: 'Documentation',
72
- });
73
-
74
- if (isError) {
75
- return (
76
- <Layout>
77
- <ContentLayout>
78
- <Box paddingTop={8}>
79
- <AnErrorOccurred />
80
- </Box>
81
- </ContentLayout>
82
- </Layout>
83
- );
84
- }
85
-
86
- return (
87
- <Layout>
88
- <Helmet title={title} />
89
- <Main aria-busy={isLoading}>
90
- <HeaderLayout
91
- title={title}
92
- subtitle={formatMessage({
93
- id: getTrad('pages.PluginPage.header.description'),
94
- defaultMessage: 'Configure the documentation plugin',
95
- })}
96
- primaryAction={
97
- <OpenDocLink
98
- disabled={!allowedActions.canOpen || !data?.currentVersion || !data?.prefix}
99
- href={createDocumentationHref(`${data?.prefix}/v${data?.currentVersion}`)}
100
- startIcon={<Show />}
101
- >
102
- {formatMessage({
103
- id: getTrad('pages.PluginPage.Button.open'),
104
- defaultMessage: 'Open Documentation',
105
- })}
106
- </OpenDocLink>
107
- }
108
- />
109
- <ContentLayout>
110
- {isLoading && <LoadingIndicatorPage>Plugin is loading</LoadingIndicatorPage>}
111
- {data?.docVersions.length ? (
112
- <Table colCount={colCount} rowCount={rowCount}>
113
- <Thead>
114
- <Tr>
115
- <Th>
116
- <Typography variant="sigma" textColor="neutral600">
117
- {formatMessage({
118
- id: getTrad('pages.PluginPage.table.version'),
119
- defaultMessage: 'Version',
120
- })}
121
- </Typography>
122
- </Th>
123
- <Th>
124
- <Typography variant="sigma" textColor="neutral600">
125
- {formatMessage({
126
- id: getTrad('pages.PluginPage.table.generated'),
127
- defaultMessage: 'Last Generated',
128
- })}
129
- </Typography>
130
- </Th>
131
- </Tr>
132
- </Thead>
133
- <Tbody>
134
- {data.docVersions
135
- .sort((a, b) => (a.generatedDate < b.generatedDate ? 1 : -1))
136
- .map((doc) => (
137
- <Tr key={doc.version}>
138
- <Td width="50%">
139
- <Typography>{doc.version}</Typography>
140
- </Td>
141
- <Td width="50%">
142
- <Typography>{doc.generatedDate}</Typography>
143
- </Td>
144
- <Td>
145
- <Flex justifyContent="end" onClick={(e) => e.stopPropagation()}>
146
- <IconButton
147
- forwardedAs="a"
148
- disabled={!allowedActions.canOpen}
149
- href={createDocumentationHref(`${data.prefix}/v${doc.version}`)}
150
- noBorder
151
- icon={<Show />}
152
- target="_blank"
153
- rel="noopener noreferrer"
154
- label={formatMessage(
155
- {
156
- id: getTrad('pages.PluginPage.table.icon.show'),
157
- defaultMessage: 'Open {target}',
158
- },
159
- { target: `${doc.version}` }
160
- )}
161
- />
162
- {allowedActions.canRegenerate ? (
163
- <IconButton
164
- onClick={() => handleRegenerateDoc(doc.version)}
165
- noBorder
166
- icon={<Reload />}
167
- label={formatMessage(
168
- {
169
- id: getTrad('pages.PluginPage.table.icon.regenerate'),
170
- defaultMessage: 'Regenerate {target}',
171
- },
172
- { target: `${doc.version}` }
173
- )}
174
- />
175
- ) : null}
176
- {allowedActions.canUpdate && doc.version !== data.currentVersion ? (
177
- <IconButton
178
- onClick={() => handleClickDelete(doc.version)}
179
- noBorder
180
- icon={<Trash />}
181
- label={formatMessage(
182
- {
183
- id: 'global.delete-target',
184
- defaultMessage: 'Delete {target}',
185
- },
186
- { target: `${doc.version}` }
187
- )}
188
- />
189
- ) : null}
190
- </Flex>
191
- </Td>
192
- </Tr>
193
- ))}
194
- </Tbody>
195
- </Table>
196
- ) : (
197
- <EmptyStateLayout />
198
- )}
199
- </ContentLayout>
200
- <ConfirmDialog
201
- isConfirmButtonLoading={isConfirmButtonLoading}
202
- onConfirm={handleConfirmDelete}
203
- onToggleDialog={handleShowConfirmDelete}
204
- isOpen={showConfirmDelete}
205
- />
206
- </Main>
207
- </Layout>
208
- );
209
- };
210
-
211
- /**
212
- * TODO: should this be fixed in the DS?
213
- */
214
- const OpenDocLink = styled(LinkButton)`
215
- text-decoration: none;
216
- `;
217
-
218
- const createDocumentationHref = (path) => {
219
- if (path.startsWith('http')) {
220
- return path;
221
- }
222
-
223
- if (path.startsWith('/')) {
224
- return `${window.strapi.backendURL}${path}`;
225
- }
226
-
227
- return `${window.strapi.backendURL}/${path}`;
228
- };
229
-
230
- export default PluginPage;
@@ -1,206 +0,0 @@
1
- import React from 'react';
2
-
3
- import { fixtures } from '@strapi/admin-test-utils';
4
- import { lightTheme, ThemeProvider } from '@strapi/design-system';
5
- import { NotificationsProvider, RBACContext } from '@strapi/helper-plugin';
6
- import { render as renderRTL, waitFor } from '@testing-library/react';
7
- import userEvent from '@testing-library/user-event';
8
- import { IntlProvider } from 'react-intl';
9
- import { QueryClient, QueryClientProvider } from 'react-query';
10
- import { MemoryRouter } from 'react-router-dom';
11
-
12
- import PluginPage from '../index';
13
-
14
- const render = ({ permissions } = { permissions: fixtures.permissions.allPermissions }) => ({
15
- ...renderRTL(<PluginPage />, {
16
- wrapper({ children }) {
17
- const client = new QueryClient({
18
- defaultOptions: {
19
- queries: {
20
- retry: false,
21
- },
22
- },
23
- });
24
-
25
- // eslint-disable-next-line react-hooks/rules-of-hooks
26
- const rbacContextValue = React.useMemo(
27
- () => ({
28
- allPermissions: permissions,
29
- }),
30
- []
31
- );
32
-
33
- return (
34
- <MemoryRouter>
35
- <ThemeProvider theme={lightTheme}>
36
- <QueryClientProvider client={client}>
37
- <IntlProvider locale="en" messages={{}} textComponent="span">
38
- <NotificationsProvider>
39
- <RBACContext.Provider value={rbacContextValue}>{children}</RBACContext.Provider>
40
- </NotificationsProvider>
41
- </IntlProvider>
42
- </QueryClientProvider>
43
- </ThemeProvider>
44
- </MemoryRouter>
45
- );
46
- },
47
- }),
48
- user: userEvent.setup(),
49
- });
50
-
51
- const versions = ['2.0.0', '1.2.0', '1.0.0'];
52
-
53
- describe('PluginPage', () => {
54
- it('render the plugin page correctly', async () => {
55
- const { getByRole, queryByText, getByText } = render();
56
-
57
- expect(getByRole('heading', { name: 'Documentation' })).toBeInTheDocument();
58
- expect(getByText('Configure the documentation plugin')).toBeInTheDocument();
59
- expect(queryByText('Plugin is loading')).toBeInTheDocument();
60
- expect(getByRole('link', { name: 'Open Documentation' })).toHaveAttribute(
61
- 'aria-disabled',
62
- 'true'
63
- );
64
-
65
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
66
-
67
- expect(getByRole('heading', { name: 'Documentation' })).toBeInTheDocument();
68
- expect(getByText('Configure the documentation plugin')).toBeInTheDocument();
69
- expect(getByRole('link', { name: 'Open Documentation' })).toBeInTheDocument();
70
-
71
- expect(getByRole('grid')).toBeInTheDocument();
72
- expect(getByRole('gridcell', { name: 'Version' })).toBeInTheDocument();
73
- expect(getByRole('gridcell', { name: 'Last Generated' })).toBeInTheDocument();
74
-
75
- versions.forEach((version) => {
76
- expect(getByRole('gridcell', { name: version })).toBeInTheDocument();
77
- expect(getByRole('link', { name: `Open ${version}` })).toBeInTheDocument();
78
- expect(getByRole('button', { name: `Regenerate ${version}` })).toBeInTheDocument();
79
-
80
- /**
81
- * You can't delete the original version
82
- */
83
- if (version !== '1.0.0') {
84
- expect(getByRole('button', { name: `Delete ${version}` })).toBeInTheDocument();
85
- }
86
- });
87
- });
88
-
89
- describe('actions', () => {
90
- it('should open the documentation', async () => {
91
- const { getByRole, queryByText, user } = render();
92
-
93
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
94
-
95
- expect(getByRole('link', { name: 'Open Documentation' })).toHaveAttribute(
96
- 'href',
97
- 'http://localhost:1337/documentation/v1.0.0'
98
- );
99
-
100
- await user.click(getByRole('link', { name: 'Open Documentation' }));
101
-
102
- versions.forEach((version) => {
103
- expect(getByRole('link', { name: `Open ${version}` })).toHaveAttribute(
104
- 'href',
105
- `http://localhost:1337/documentation/v${version}`
106
- );
107
- });
108
- });
109
-
110
- it('should regenerate the documentation', async () => {
111
- const { getByRole, queryByText, user, getByText } = render();
112
-
113
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
114
-
115
- expect(getByRole('button', { name: 'Regenerate 2.0.0' })).toBeInTheDocument();
116
-
117
- await user.click(getByRole('button', { name: 'Regenerate 2.0.0' }));
118
-
119
- expect(getByText('Successfully generated documentation')).toBeInTheDocument();
120
- });
121
-
122
- it('should delete the documentation', async () => {
123
- const { getByRole, queryByText, user, getByText } = render();
124
-
125
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
126
-
127
- expect(getByRole('button', { name: 'Delete 2.0.0' })).toBeInTheDocument();
128
-
129
- await user.click(getByRole('button', { name: 'Delete 2.0.0' }));
130
-
131
- expect(getByRole('dialog', { name: 'Confirmation' })).toBeInTheDocument();
132
- expect(getByRole('button', { name: 'Confirm' })).toBeInTheDocument();
133
- expect(getByRole('button', { name: 'Cancel' })).toBeInTheDocument();
134
-
135
- await user.click(getByRole('button', { name: 'Confirm' }));
136
-
137
- expect(getByText('Successfully deleted documentation')).toBeInTheDocument();
138
- });
139
- });
140
-
141
- describe('permissions', () => {
142
- it("should always disable the 'Open Documentation' link if the user cannot open", async () => {
143
- const { getByRole, queryByText } = render({
144
- permissions: [],
145
- });
146
-
147
- expect(queryByText('Plugin is loading')).toBeInTheDocument();
148
- expect(getByRole('link', { name: 'Open Documentation' })).toHaveAttribute(
149
- 'aria-disabled',
150
- 'true'
151
- );
152
-
153
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
154
-
155
- expect(getByRole('link', { name: 'Open Documentation' })).toHaveAttribute(
156
- 'aria-disabled',
157
- 'true'
158
- );
159
- });
160
-
161
- it('should disabled the open documentation version link in the table if the user cannot open', async () => {
162
- const { getByRole, queryByText } = render({
163
- permissions: [],
164
- });
165
-
166
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
167
-
168
- versions.forEach((version) => {
169
- expect(getByRole('gridcell', { name: version })).toBeInTheDocument();
170
-
171
- expect(getByRole('link', { name: `Open ${version}` })).toHaveAttribute(
172
- 'aria-disabled',
173
- 'true'
174
- );
175
- });
176
- });
177
-
178
- it('should not render the regenerate buttons if the user cannot regenerate', async () => {
179
- const { queryByRole, getByRole, queryByText } = render({
180
- permissions: [],
181
- });
182
-
183
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
184
-
185
- versions.forEach((version) => {
186
- expect(getByRole('gridcell', { name: version })).toBeInTheDocument();
187
-
188
- expect(queryByRole('button', { name: `Regenerate ${version}` })).not.toBeInTheDocument();
189
- });
190
- });
191
-
192
- it('should not render the delete buttons if the user cannot delete', async () => {
193
- const { queryByRole, getByRole, queryByText } = render({
194
- permissions: [],
195
- });
196
-
197
- await waitFor(() => expect(queryByText('Plugin is loading')).not.toBeInTheDocument());
198
-
199
- versions.forEach((version) => {
200
- expect(getByRole('gridcell', { name: version })).toBeInTheDocument();
201
-
202
- expect(queryByRole('button', { name: `Delete ${version}` })).not.toBeInTheDocument();
203
- });
204
- });
205
- });
206
- });
@@ -1,211 +0,0 @@
1
- import React, { useState } from 'react';
2
-
3
- import {
4
- Box,
5
- Button,
6
- ContentLayout,
7
- Flex,
8
- Grid,
9
- GridItem,
10
- HeaderLayout,
11
- Main,
12
- TextInput,
13
- ToggleInput,
14
- Typography,
15
- FieldAction,
16
- } from '@strapi/design-system';
17
- import {
18
- Form,
19
- LoadingIndicatorPage,
20
- useFocusWhenNavigate,
21
- translatedErrors,
22
- useRBAC,
23
- } from '@strapi/helper-plugin';
24
- // Strapi Icons
25
- import { Check, Eye as Show, EyeStriked as Hide } from '@strapi/icons';
26
- import { Formik } from 'formik';
27
- import { useIntl } from 'react-intl';
28
- import styled from 'styled-components';
29
- import * as yup from 'yup';
30
-
31
- import { PERMISSIONS } from '../../constants';
32
- import { useDocumentation } from '../../hooks/useDocumentation';
33
- import { getTrad } from '../../utils';
34
-
35
- const schema = yup.object().shape({
36
- restrictedAccess: yup.boolean(),
37
- password: yup.string().when('restrictedAccess', (value, initSchema) => {
38
- return value ? initSchema.required(translatedErrors.required) : initSchema;
39
- }),
40
- });
41
-
42
- const SettingsPage = () => {
43
- useFocusWhenNavigate();
44
- const { formatMessage } = useIntl();
45
- const { submit, data, isLoading } = useDocumentation();
46
- const [passwordShown, setPasswordShown] = useState(false);
47
- const { allowedActions } = useRBAC(PERMISSIONS);
48
-
49
- const handleUpdateSettingsSubmit = (body) => {
50
- submit.mutate({
51
- prefix: data?.prefix,
52
- body,
53
- });
54
- };
55
-
56
- return (
57
- <Main>
58
- {isLoading ? (
59
- <LoadingIndicatorPage>Plugin settings are loading</LoadingIndicatorPage>
60
- ) : (
61
- <Formik
62
- initialValues={{
63
- restrictedAccess: data?.documentationAccess.restrictedAccess || false,
64
- password: '',
65
- }}
66
- onSubmit={handleUpdateSettingsSubmit}
67
- validationSchema={schema}
68
- >
69
- {({
70
- handleSubmit,
71
- values,
72
- handleChange,
73
- errors,
74
- setFieldTouched,
75
- setFieldValue,
76
- dirty,
77
- }) => {
78
- return (
79
- <Form noValidate onSubmit={handleSubmit}>
80
- <HeaderLayout
81
- title={formatMessage({
82
- id: getTrad('plugin.name'),
83
- defaultMessage: 'Documentation',
84
- })}
85
- subtitle={formatMessage({
86
- id: getTrad('pages.SettingsPage.header.description'),
87
- defaultMessage: 'Configure the documentation plugin',
88
- })}
89
- primaryAction={
90
- <Button
91
- type="submit"
92
- startIcon={<Check />}
93
- disabled={!dirty && allowedActions.canUpdate}
94
- >
95
- {formatMessage({
96
- id: getTrad('pages.SettingsPage.Button.save'),
97
- defaultMessage: 'Save',
98
- })}
99
- </Button>
100
- }
101
- />
102
- <ContentLayout>
103
- <Box
104
- background="neutral0"
105
- hasRadius
106
- shadow="filterShadow"
107
- paddingTop={6}
108
- paddingBottom={6}
109
- paddingLeft={7}
110
- paddingRight={7}
111
- >
112
- <Flex direction="column" alignItems="stretch" gap={4}>
113
- <Typography variant="delta" as="h2">
114
- {formatMessage({
115
- id: 'global.settings',
116
- defaultMessage: 'Settings',
117
- })}
118
- </Typography>
119
- <Grid gap={4}>
120
- <GridItem col={6} s={12}>
121
- <ToggleInput
122
- name="restrictedAccess"
123
- label={formatMessage({
124
- id: getTrad('pages.SettingsPage.toggle.label'),
125
- defaultMessage: 'Restricted Access',
126
- })}
127
- hint={formatMessage({
128
- id: getTrad('pages.SettingsPage.toggle.hint'),
129
- defaultMessage: 'Make the documentation endpoint private',
130
- })}
131
- checked={values.restrictedAccess}
132
- onChange={() => {
133
- if (values.restrictedAccess === true) {
134
- setFieldValue('password', '', false);
135
- setFieldTouched('password', false, false);
136
- }
137
-
138
- setFieldValue('restrictedAccess', !values.restrictedAccess, false);
139
- }}
140
- onLabel="On"
141
- offLabel="Off"
142
- />
143
- </GridItem>
144
- {values.restrictedAccess && (
145
- <GridItem col={6} s={12}>
146
- <TextInput
147
- label={formatMessage({
148
- id: 'global.password',
149
- defaultMessage: 'Password',
150
- })}
151
- name="password"
152
- placeholder="**********"
153
- type={passwordShown ? 'text' : 'password'}
154
- value={values.password}
155
- onChange={handleChange}
156
- error={
157
- errors.password
158
- ? formatMessage({
159
- id: errors.password,
160
- defaultMessage: 'Invalid value',
161
- })
162
- : null
163
- }
164
- endAction={
165
- <FieldActionWrapper
166
- onClick={(e) => {
167
- e.stopPropagation();
168
- setPasswordShown((prev) => !prev);
169
- }}
170
- label={formatMessage(
171
- passwordShown
172
- ? {
173
- id: 'Auth.form.password.show-password',
174
- defaultMessage: 'Show password',
175
- }
176
- : {
177
- id: 'Auth.form.password.hide-password',
178
- defaultMessage: 'Hide password',
179
- }
180
- )}
181
- >
182
- {passwordShown ? <Show /> : <Hide />}
183
- </FieldActionWrapper>
184
- }
185
- />
186
- </GridItem>
187
- )}
188
- </Grid>
189
- </Flex>
190
- </Box>
191
- </ContentLayout>
192
- </Form>
193
- );
194
- }}
195
- </Formik>
196
- )}
197
- </Main>
198
- );
199
- };
200
-
201
- const FieldActionWrapper = styled(FieldAction)`
202
- svg {
203
- height: 1rem;
204
- width: 1rem;
205
- path {
206
- fill: ${({ theme }) => theme.colors.neutral600};
207
- }
208
- }
209
- `;
210
-
211
- export default SettingsPage;