@strapi/plugin-documentation 5.0.0-beta.0 → 5.0.0-beta.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 (184) hide show
  1. package/README.md +0 -1
  2. package/dist/_chunks/{index-D1KkfApT.js → App-Dsqz1mTz.js} +74 -22
  3. package/dist/_chunks/App-Dsqz1mTz.js.map +1 -0
  4. package/dist/_chunks/{index-7xstUX8_.mjs → App-mrzd5Xqj.mjs} +49 -16
  5. package/dist/_chunks/App-mrzd5Xqj.mjs.map +1 -0
  6. package/dist/_chunks/{index-VpLAJXMs.mjs → Settings-8v7IbdtY.mjs} +64 -33
  7. package/dist/_chunks/Settings-8v7IbdtY.mjs.map +1 -0
  8. package/dist/_chunks/{index-NbPCucJl.js → Settings-wdLQpouP.js} +69 -37
  9. package/dist/_chunks/Settings-wdLQpouP.js.map +1 -0
  10. package/dist/_chunks/getTrad-SeEDjZbP.mjs +6 -0
  11. package/dist/_chunks/getTrad-SeEDjZbP.mjs.map +1 -0
  12. package/dist/_chunks/getTrad-xlpeC9HP.js +5 -0
  13. package/dist/_chunks/getTrad-xlpeC9HP.js.map +1 -0
  14. package/{server/public/index.html → dist/_chunks/index-MKWIGajW.mjs} +9 -4
  15. package/dist/_chunks/index-MKWIGajW.mjs.map +1 -0
  16. package/dist/_chunks/index-WbbYm9_u.js +75 -0
  17. package/dist/_chunks/index-WbbYm9_u.js.map +1 -0
  18. package/dist/_chunks/{index-r7HsQTou.js → index-_yYcImHU.js} +126 -119
  19. package/dist/_chunks/index-_yYcImHU.js.map +1 -0
  20. package/dist/_chunks/{index-NvJ4m2q5.mjs → index-mXCyE3EQ.mjs} +128 -121
  21. package/dist/_chunks/index-mXCyE3EQ.mjs.map +1 -0
  22. package/dist/_chunks/login-HAajOKpu.js +150 -0
  23. package/dist/_chunks/login-HAajOKpu.js.map +1 -0
  24. package/{server/public/login.html → dist/_chunks/login-slUa679p.mjs} +6 -1
  25. package/dist/_chunks/login-slUa679p.mjs.map +1 -0
  26. package/dist/admin/index.js +1 -1
  27. package/dist/admin/index.mjs +2 -2
  28. package/dist/admin/src/components/SettingsForm.d.ts +8 -0
  29. package/dist/admin/src/constants.d.ts +18 -0
  30. package/dist/admin/src/index.d.ts +14 -0
  31. package/dist/admin/src/pages/App.d.ts +2 -0
  32. package/dist/admin/src/pages/Settings.d.ts +2 -0
  33. package/dist/admin/src/pluginId.d.ts +1 -0
  34. package/dist/admin/src/services/api.d.ts +25 -0
  35. package/dist/admin/src/types.d.ts +16 -0
  36. package/dist/admin/src/utils/baseQuery.d.ts +20 -0
  37. package/dist/admin/src/utils/getTrad.d.ts +1 -0
  38. package/dist/admin/src/utils/index.d.ts +2 -0
  39. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +2 -0
  40. package/dist/server/index.js +1263 -0
  41. package/dist/server/index.js.map +1 -0
  42. package/dist/server/index.mjs +1238 -0
  43. package/dist/server/index.mjs.map +1 -0
  44. package/dist/server/src/bootstrap.d.ts +5 -0
  45. package/dist/server/src/bootstrap.d.ts.map +1 -0
  46. package/dist/server/src/config/default-plugin-config.d.ts +3 -0
  47. package/dist/server/src/config/default-plugin-config.d.ts.map +1 -0
  48. package/dist/server/src/config/index.d.ts +4 -0
  49. package/dist/server/src/config/index.d.ts.map +1 -0
  50. package/dist/server/src/controllers/documentation.d.ts +12 -0
  51. package/dist/server/src/controllers/documentation.d.ts.map +1 -0
  52. package/dist/server/src/controllers/index.d.ts +14 -0
  53. package/dist/server/src/controllers/index.d.ts.map +1 -0
  54. package/dist/server/src/index.d.ts +91 -0
  55. package/dist/server/src/index.d.ts.map +1 -0
  56. package/dist/server/src/middlewares/documentation.d.ts +5 -0
  57. package/dist/server/src/middlewares/documentation.d.ts.map +1 -0
  58. package/dist/server/src/middlewares/restrict-access.d.ts +4 -0
  59. package/dist/server/src/middlewares/restrict-access.d.ts.map +1 -0
  60. package/dist/server/src/register.d.ts +5 -0
  61. package/dist/server/src/register.d.ts.map +1 -0
  62. package/dist/server/src/routes/index.d.ts +36 -0
  63. package/dist/server/src/routes/index.d.ts.map +1 -0
  64. package/dist/server/src/services/__mocks__/mock-content-types.d.ts +449 -0
  65. package/dist/server/src/services/__mocks__/mock-content-types.d.ts.map +1 -0
  66. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts +592 -0
  67. package/dist/server/src/services/__mocks__/mock-strapi-data.d.ts.map +1 -0
  68. package/dist/server/src/services/documentation.d.ts +36 -0
  69. package/dist/server/src/services/documentation.d.ts.map +1 -0
  70. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts +7 -0
  71. package/dist/server/src/services/helpers/build-api-endpoint-path.d.ts.map +1 -0
  72. package/dist/server/src/services/helpers/build-component-schema.d.ts +4 -0
  73. package/dist/server/src/services/helpers/build-component-schema.d.ts.map +1 -0
  74. package/dist/server/src/services/helpers/index.d.ts +4 -0
  75. package/dist/server/src/services/helpers/index.d.ts.map +1 -0
  76. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts +15 -0
  77. package/dist/server/src/services/helpers/utils/clean-schema-attributes.d.ts.map +1 -0
  78. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts +15 -0
  79. package/dist/server/src/services/helpers/utils/get-api-responses.d.ts.map +1 -0
  80. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts +12 -0
  81. package/dist/server/src/services/helpers/utils/get-schema-data.d.ts.map +1 -0
  82. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts +7 -0
  83. package/dist/server/src/services/helpers/utils/loop-content-type-names.d.ts.map +1 -0
  84. package/dist/server/src/services/helpers/utils/pascal-case.d.ts +3 -0
  85. package/dist/server/src/services/helpers/utils/pascal-case.d.ts.map +1 -0
  86. package/dist/server/src/services/helpers/utils/query-params.d.ts +4 -0
  87. package/dist/server/src/services/helpers/utils/query-params.d.ts.map +1 -0
  88. package/dist/server/src/services/helpers/utils/routes.d.ts +3 -0
  89. package/dist/server/src/services/helpers/utils/routes.d.ts.map +1 -0
  90. package/dist/server/src/services/index.d.ts +43 -0
  91. package/dist/server/src/services/index.d.ts.map +1 -0
  92. package/dist/server/src/services/override.d.ts +21 -0
  93. package/dist/server/src/services/override.d.ts.map +1 -0
  94. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts +4 -0
  95. package/dist/server/src/services/utils/get-plugins-that-need-documentation.d.ts.map +1 -0
  96. package/dist/server/src/types.d.ts +28 -0
  97. package/dist/server/src/types.d.ts.map +1 -0
  98. package/dist/server/src/utils.d.ts +12 -0
  99. package/dist/server/src/utils.d.ts.map +1 -0
  100. package/package.json +33 -16
  101. package/strapi-server.js +1 -1
  102. package/.eslintignore +0 -1
  103. package/.eslintrc +0 -17
  104. package/admin/src/constants.js +0 -17
  105. package/admin/src/hooks/useDocumentation.js +0 -81
  106. package/admin/src/index.js +0 -62
  107. package/admin/src/pages/PluginPage/index.jsx +0 -212
  108. package/admin/src/pages/PluginPage/tests/index.test.jsx +0 -160
  109. package/admin/src/pages/SettingsPage/index.jsx +0 -202
  110. package/admin/src/pages/SettingsPage/tests/index.test.jsx +0 -72
  111. package/admin/src/pluginId.js +0 -5
  112. package/admin/src/translations/ar.json +0 -20
  113. package/admin/src/translations/cs.json +0 -21
  114. package/admin/src/translations/de.json +0 -26
  115. package/admin/src/translations/dk.json +0 -39
  116. package/admin/src/translations/en.json +0 -39
  117. package/admin/src/translations/es.json +0 -39
  118. package/admin/src/translations/fr.json +0 -26
  119. package/admin/src/translations/id.json +0 -24
  120. package/admin/src/translations/it.json +0 -26
  121. package/admin/src/translations/ko.json +0 -39
  122. package/admin/src/translations/ms.json +0 -23
  123. package/admin/src/translations/nl.json +0 -21
  124. package/admin/src/translations/pl.json +0 -39
  125. package/admin/src/translations/pt-BR.json +0 -21
  126. package/admin/src/translations/pt.json +0 -21
  127. package/admin/src/translations/ru.json +0 -39
  128. package/admin/src/translations/sk.json +0 -24
  129. package/admin/src/translations/sv.json +0 -39
  130. package/admin/src/translations/th.json +0 -24
  131. package/admin/src/translations/tr.json +0 -39
  132. package/admin/src/translations/uk.json +0 -23
  133. package/admin/src/translations/vi.json +0 -24
  134. package/admin/src/translations/zh-Hans.json +0 -28
  135. package/admin/src/translations/zh.json +0 -39
  136. package/admin/src/utils/getTrad.js +0 -5
  137. package/admin/src/utils/index.js +0 -2
  138. package/admin/src/utils/prefixPluginTranslations.js +0 -13
  139. package/dist/_chunks/index-7xstUX8_.mjs.map +0 -1
  140. package/dist/_chunks/index-D1KkfApT.js.map +0 -1
  141. package/dist/_chunks/index-NbPCucJl.js.map +0 -1
  142. package/dist/_chunks/index-NvJ4m2q5.mjs.map +0 -1
  143. package/dist/_chunks/index-VpLAJXMs.mjs.map +0 -1
  144. package/dist/_chunks/index-r7HsQTou.js.map +0 -1
  145. package/dist/_chunks/useDocumentation-6Ks-_Ms6.mjs +0 -68
  146. package/dist/_chunks/useDocumentation-6Ks-_Ms6.mjs.map +0 -1
  147. package/dist/_chunks/useDocumentation-S0e4mU-U.js +0 -67
  148. package/dist/_chunks/useDocumentation-S0e4mU-U.js.map +0 -1
  149. package/jest.config.front.js +0 -7
  150. package/jest.config.js +0 -6
  151. package/packup.config.ts +0 -22
  152. package/server/bootstrap.js +0 -54
  153. package/server/config/default-plugin-config.js +0 -35
  154. package/server/config/index.js +0 -7
  155. package/server/controllers/documentation.js +0 -241
  156. package/server/controllers/index.js +0 -7
  157. package/server/index.js +0 -17
  158. package/server/middlewares/documentation.js +0 -25
  159. package/server/middlewares/index.js +0 -7
  160. package/server/middlewares/restrict-access.js +0 -24
  161. package/server/register.js +0 -11
  162. package/server/routes/index.js +0 -84
  163. package/server/services/__mocks__/mock-content-types.js +0 -264
  164. package/server/services/__mocks__/mock-strapi-data.js +0 -183
  165. package/server/services/__tests__/build-component-schema.test.js +0 -761
  166. package/server/services/__tests__/documentation.test.js +0 -481
  167. package/server/services/__tests__/override.test.js +0 -85
  168. package/server/services/documentation.js +0 -246
  169. package/server/services/helpers/build-api-endpoint-path.js +0 -186
  170. package/server/services/helpers/build-component-schema.js +0 -254
  171. package/server/services/helpers/index.js +0 -9
  172. package/server/services/helpers/utils/clean-schema-attributes.js +0 -246
  173. package/server/services/helpers/utils/get-api-responses.js +0 -105
  174. package/server/services/helpers/utils/get-schema-data.js +0 -32
  175. package/server/services/helpers/utils/loop-content-type-names.js +0 -55
  176. package/server/services/helpers/utils/pascal-case.js +0 -9
  177. package/server/services/helpers/utils/query-params.js +0 -105
  178. package/server/services/helpers/utils/routes.js +0 -10
  179. package/server/services/index.js +0 -9
  180. package/server/services/override.js +0 -52
  181. package/server/services/utils/default-openapi-components.js +0 -40
  182. package/server/services/utils/get-plugins-that-need-documentation.js +0 -24
  183. package/tests/server.js +0 -37
  184. package/tests/setup.js +0 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-_yYcImHU.js","sources":["../../admin/src/constants.ts","../../admin/src/pluginId.ts","../../admin/src/utils/baseQuery.ts","../../admin/src/services/api.ts","../../admin/src/utils/prefixPluginTranslations.ts","../../admin/src/index.ts"],"sourcesContent":["export const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::documentation.read', subject: null },\n { action: 'plugin::documentation.settings.regenerate', subject: null },\n { action: 'plugin::documentation.settings.update', subject: null },\n ],\n open: [\n { action: 'plugin::documentation.read', subject: null },\n { action: 'plugin::documentation.settings.regenerate', subject: null },\n ],\n regenerate: [{ action: 'plugin::documentation.settings.regenerate', subject: null }],\n update: [{ action: 'plugin::documentation.settings.update', subject: null }],\n};\n","export const pluginId = 'documentation';\n","import { SerializedError } from '@reduxjs/toolkit';\nimport { BaseQueryFn } from '@reduxjs/toolkit/query';\nimport { getFetchClient, ApiError } from '@strapi/strapi/admin';\nimport { isAxiosError, type AxiosRequestConfig } from 'axios';\n\n/* -------------------------------------------------------------------------------------------------\n * Axios data\n * -----------------------------------------------------------------------------------------------*/\nexport interface QueryArguments {\n url: string;\n method?: AxiosRequestConfig['method'];\n data?: AxiosRequestConfig['data'];\n config?: AxiosRequestConfig;\n}\n\nexport interface UnknownApiError {\n name: 'UnknownError';\n message: string;\n details?: unknown;\n status?: number;\n}\n\nexport type BaseQueryError = ApiError | UnknownApiError;\n\nconst axiosBaseQuery =\n (config: AxiosRequestConfig): BaseQueryFn<string | QueryArguments, unknown, BaseQueryError> =>\n async (query, { signal }) => {\n try {\n const { get, post, del, put } = getFetchClient(config);\n\n if (typeof query === 'string') {\n const result = await get(query, { signal });\n return { data: result.data };\n } else {\n const { url, method = 'GET', data, config } = query;\n\n if (method === 'POST') {\n const result = await post(url, data, { ...config, signal });\n return { data: result.data };\n }\n\n if (method === 'DELETE') {\n const result = await del(url, { ...config, signal });\n return { data: result.data };\n }\n\n if (method === 'PUT') {\n const result = await put(url, data, { ...config, signal });\n return { data: result.data };\n }\n\n /**\n * Default is GET.\n */\n const result = await get(url, { ...config, signal });\n return { data: result.data };\n }\n } catch (err) {\n /**\n * Handle error of type AxiosError\n *\n * This format mimics what we want from an AxiosError which is what the\n * rest of the app works with, except this format is \"serializable\" since\n * it goes into the redux store.\n *\n * NOTE – passing the whole response will highlight this \"serializability\" issue.\n */\n\n if (isAxiosError(err)) {\n if (\n typeof err.response?.data === 'object' &&\n err.response?.data !== null &&\n 'error' in err.response?.data\n ) {\n /**\n * This will most likely be ApiError\n */\n return { data: undefined, error: err.response?.data.error };\n } else {\n return {\n data: undefined,\n error: {\n name: 'UnknownError',\n message: 'There was an unknown error response from the API',\n details: err.response?.data,\n status: err.response?.status,\n } as UnknownApiError,\n };\n }\n }\n\n const error = err as Error;\n return {\n data: undefined,\n error: {\n name: error.name,\n message: error.message,\n stack: error.stack,\n } satisfies SerializedError,\n };\n }\n };\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { axiosBaseQuery, isBaseQueryError };\n","import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { DocumentInfos } from '../types';\nimport { axiosBaseQuery } from '../utils/baseQuery';\n\ntype SettingsInput = {\n restrictedAccess: boolean;\n password: string;\n};\n\nconst api = createApi({\n reducerPath: 'plugin::documentation',\n baseQuery: axiosBaseQuery({\n baseURL: '/documentation',\n }),\n tagTypes: ['DocumentInfos'],\n endpoints: (builder) => {\n return {\n getInfos: builder.query<DocumentInfos, void>({\n query: () => '/getInfos',\n providesTags: ['DocumentInfos'],\n }),\n\n deleteVersion: builder.mutation<void, { version: string }>({\n query: ({ version }) => ({\n url: `/deleteDoc/${version}`,\n method: 'DELETE',\n }),\n invalidatesTags: ['DocumentInfos'],\n }),\n\n updateSettings: builder.mutation<void, { body: SettingsInput }>({\n query: ({ body }) => ({\n url: `/updateSettings`,\n method: 'PUT',\n data: body,\n }),\n invalidatesTags: ['DocumentInfos'],\n }),\n\n regenerateDoc: builder.mutation<void, { version: string }>({\n query: ({ version }) => ({\n url: `/regenerateDoc`,\n method: 'POST',\n data: { version },\n }),\n }),\n };\n },\n});\n\nexport { api };\n\nexport const {\n useGetInfosQuery,\n useDeleteVersionMutation,\n useUpdateSettingsMutation,\n useRegenerateDocMutation,\n} = api;\n","const prefixPluginTranslations = (trad: Record<string, string>, pluginId?: string) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce(\n (acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n },\n {} as Record<string, string>\n );\n};\n\nexport { prefixPluginTranslations };\n","import { Information } from '@strapi/icons';\n\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { api } from './services/api';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Information,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Documentation',\n },\n permissions: PERMISSIONS.main,\n Component: async () => {\n const { App } = await import('./pages/App');\n return App;\n },\n });\n\n app.addMiddlewares([() => api.middleware]);\n\n app.addReducers({\n [api.reducerPath]: api.reducer,\n });\n\n app.registerPlugin({\n id: pluginId,\n name: pluginId,\n });\n },\n bootstrap(app: any) {\n app.addSettingsLink('global', {\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Documentation',\n },\n id: 'documentation',\n to: pluginId,\n Component: async () => {\n const { SettingsPage } = await import('./pages/Settings');\n return SettingsPage;\n },\n permissions: PERMISSIONS.main,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n"],"names":["getFetchClient","config","result","isAxiosError","createApi","pluginId","Information"],"mappings":";;;;;;;;;;;;;;AAAO,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzB,MAAM;AAAA,IACJ,EAAE,QAAQ,8BAA8B,SAAS,KAAK;AAAA,IACtD,EAAE,QAAQ,6CAA6C,SAAS,KAAK;AAAA,IACrE,EAAE,QAAQ,yCAAyC,SAAS,KAAK;AAAA,EACnE;AAAA,EACA,MAAM;AAAA,IACJ,EAAE,QAAQ,8BAA8B,SAAS,KAAK;AAAA,IACtD,EAAE,QAAQ,6CAA6C,SAAS,KAAK;AAAA,EACvE;AAAA,EACA,YAAY,CAAC,EAAE,QAAQ,6CAA6C,SAAS,MAAM;AAAA,EACnF,QAAQ,CAAC,EAAE,QAAQ,yCAAyC,SAAS,MAAM;AAC7E;AChBO,MAAM,WAAW;ACwBxB,MAAM,iBACJ,CAAC,WACD,OAAO,OAAO,EAAE,aAAa;AACvB,MAAA;AACF,UAAM,EAAE,KAAK,MAAM,KAAK,QAAQA,MAAAA,eAAe,MAAM;AAEjD,QAAA,OAAO,UAAU,UAAU;AAC7B,YAAM,SAAS,MAAM,IAAI,OAAO,EAAE,OAAQ,CAAA;AACnC,aAAA,EAAE,MAAM,OAAO;IAAK,OACtB;AACL,YAAM,EAAE,KAAK,SAAS,OAAO,MAAM,QAAAC,QAAW,IAAA;AAE9C,UAAI,WAAW,QAAQ;AACfC,cAAAA,UAAS,MAAM,KAAK,KAAK,MAAM,EAAE,GAAGD,SAAQ,OAAA,CAAQ;AACnD,eAAA,EAAE,MAAMC,QAAO;MACxB;AAEA,UAAI,WAAW,UAAU;AACjBA,cAAAA,UAAS,MAAM,IAAI,KAAK,EAAE,GAAGD,SAAQ,QAAQ;AAC5C,eAAA,EAAE,MAAMC,QAAO;MACxB;AAEA,UAAI,WAAW,OAAO;AACdA,cAAAA,UAAS,MAAM,IAAI,KAAK,MAAM,EAAE,GAAGD,SAAQ,OAAA,CAAQ;AAClD,eAAA,EAAE,MAAMC,QAAO;MACxB;AAKM,YAAA,SAAS,MAAM,IAAI,KAAK,EAAE,GAAGD,SAAQ,QAAQ;AAC5C,aAAA,EAAE,MAAM,OAAO;IACxB;AAAA,WACO,KAAK;AAWR,QAAAE,MAAAA,aAAa,GAAG,GAAG;AACrB,UACE,OAAO,IAAI,UAAU,SAAS,YAC9B,IAAI,UAAU,SAAS,QACvB,WAAW,IAAI,UAAU,MACzB;AAIA,eAAO,EAAE,MAAM,QAAW,OAAO,IAAI,UAAU,KAAK;MAAM,OACrD;AACE,eAAA;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,IAAI,UAAU;AAAA,YACvB,QAAQ,IAAI,UAAU;AAAA,UACxB;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAEA,UAAM,QAAQ;AACP,WAAA;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,QACf,OAAO,MAAM;AAAA,MACf;AAAA,IAAA;AAAA,EAEJ;AACF;AAEI,MAAA,mBAAmB,CAAC,UAAqE;AAC7F,SAAO,MAAM,SAAS;AACxB;AC/FA,MAAM,MAAMC,MAAAA,UAAU;AAAA,EACpB,aAAa;AAAA,EACb,WAAW,eAAe;AAAA,IACxB,SAAS;AAAA,EAAA,CACV;AAAA,EACD,UAAU,CAAC,eAAe;AAAA,EAC1B,WAAW,CAAC,YAAY;AACf,WAAA;AAAA,MACL,UAAU,QAAQ,MAA2B;AAAA,QAC3C,OAAO,MAAM;AAAA,QACb,cAAc,CAAC,eAAe;AAAA,MAAA,CAC/B;AAAA,MAED,eAAe,QAAQ,SAAoC;AAAA,QACzD,OAAO,CAAC,EAAE,eAAe;AAAA,UACvB,KAAK,cAAc,OAAO;AAAA,UAC1B,QAAQ;AAAA,QAAA;AAAA,QAEV,iBAAiB,CAAC,eAAe;AAAA,MAAA,CAClC;AAAA,MAED,gBAAgB,QAAQ,SAAwC;AAAA,QAC9D,OAAO,CAAC,EAAE,YAAY;AAAA,UACpB,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,MAAM;AAAA,QAAA;AAAA,QAER,iBAAiB,CAAC,eAAe;AAAA,MAAA,CAClC;AAAA,MAED,eAAe,QAAQ,SAAoC;AAAA,QACzD,OAAO,CAAC,EAAE,eAAe;AAAA,UACvB,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,MAAM,EAAE,QAAQ;AAAA,QAAA;AAAA,MAClB,CACD;AAAA,IAAA;AAAA,EAEL;AACF,CAAC;AAIY,MAAA;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;AC1DJ,MAAM,2BAA2B,CAAC,MAA8BC,cAAsB;AACpF,MAAI,CAACA,WAAU;AACP,UAAA,IAAI,UAAU,yBAAyB;AAAA,EAC/C;AAEO,SAAA,OAAO,KAAK,IAAI,EAAE;AAAA,IACvB,CAAC,KAAK,YAAY;AAChB,UAAI,GAAGA,SAAQ,IAAI,OAAO,EAAE,IAAI,KAAK,OAAO;AAErC,aAAA;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EAAA;AAEL;ACLA,MAAe,QAAA;AAAA,EACb,SAAS,KAAU;AACjB,QAAI,YAAY;AAAA,MACd,IAAI,WAAW,QAAQ;AAAA,MACvB,MAAMC,MAAA;AAAA,MACN,WAAW;AAAA,QACT,IAAI,GAAG,QAAQ;AAAA,QACf,gBAAgB;AAAA,MAClB;AAAA,MACA,aAAa,YAAY;AAAA,MACzB,WAAW,YAAY;AACrB,cAAM,EAAE,IAAA,IAAQ,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,mBAAa,CAAA;AACnC,eAAA;AAAA,MACT;AAAA,IAAA,CACD;AAED,QAAI,eAAe,CAAC,MAAM,IAAI,UAAU,CAAC;AAEzC,QAAI,YAAY;AAAA,MACd,CAAC,IAAI,WAAW,GAAG,IAAI;AAAA,IAAA,CACxB;AAED,QAAI,eAAe;AAAA,MACjB,IAAI;AAAA,MACJ,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAAA,EACA,UAAU,KAAU;AAClB,QAAI,gBAAgB,UAAU;AAAA,MAC5B,WAAW;AAAA,QACT,IAAI,GAAG,QAAQ;AAAA,QACf,gBAAgB;AAAA,MAClB;AAAA,MACA,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,WAAW,YAAY;AACrB,cAAM,EAAE,aAAA,IAAiB,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,wBAAkB,CAAA;AACjD,eAAA;AAAA,MACT;AAAA,MACA,aAAa,YAAY;AAAA,IAAA,CAC1B;AAAA,EACH;AAAA,EACA,MAAM,cAAc,EAAE,WAAkC;AAChD,UAAA,gBAAgB,MAAM,QAAQ;AAAA,MAClC,QAAQ,IAAI,CAAC,WAAW;AACf,eAAA,qCAA+B,uBAAA,OAAA,EAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,qCAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,qCAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,qCAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,6BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,qBAAA,CAAA,GAAA,0BAAA,MAAA,qCAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,qCAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,IAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,kBAAA,CAAA,GAAA,+BAAA,MAAA,qCAAA,uBAAA,CAAA,GAAA,0BAAA,MAAA,qCAAA,kBAAA,CAAA,EAAA,CAAA,GAAA,kBAAA,MAAA,OAAA,EACnC,KAAK,CAAC,EAAE,SAAS,KAAA,MAAW;AACpB,iBAAA;AAAA,YACL,MAAM,yBAAyB,MAAM,QAAQ;AAAA,YAC7C;AAAA,UAAA;AAAA,QACF,CACD,EACA,MAAM,MAAM;AACJ,iBAAA;AAAA,YACL,MAAM,CAAC;AAAA,YACP;AAAA,UAAA;AAAA,QACF,CACD;AAAA,MAAA,CACJ;AAAA,IAAA;AAGI,WAAA,QAAQ,QAAQ,aAAa;AAAA,EACtC;AACF;;;;;;;;;"}
@@ -1,4 +1,7 @@
1
1
  import { Information } from "@strapi/icons";
2
+ import { createApi } from "@reduxjs/toolkit/query/react";
3
+ import { getFetchClient } from "@strapi/strapi/admin";
4
+ import { isAxiosError } from "axios";
2
5
  const __variableDynamicImportRuntimeHelper = (glob, path) => {
3
6
  const v = glob[path];
4
7
  if (v) {
@@ -8,115 +11,6 @@ const __variableDynamicImportRuntimeHelper = (glob, path) => {
8
11
  (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
9
12
  });
10
13
  };
11
- const name$1 = "@strapi/plugin-documentation";
12
- const version = "5.0.0-alpha.4";
13
- const description = "Create an OpenAPI Document and visualize your API with SWAGGER UI.";
14
- const repository = {
15
- type: "git",
16
- url: "https://github.com/strapi/strapi.git",
17
- directory: "packages/plugins/documentation"
18
- };
19
- const license = "SEE LICENSE IN LICENSE";
20
- const author = {
21
- name: "Strapi Solutions SAS",
22
- email: "hi@strapi.io",
23
- url: "https://strapi.io"
24
- };
25
- const maintainers = [
26
- {
27
- name: "Strapi Solutions SAS",
28
- email: "hi@strapi.io",
29
- url: "https://strapi.io"
30
- }
31
- ];
32
- const exports = {
33
- "./strapi-admin": {
34
- source: "./admin/src/index.js",
35
- "import": "./dist/admin/index.mjs",
36
- require: "./dist/admin/index.js",
37
- "default": "./dist/admin/index.js"
38
- },
39
- "./strapi-server": {
40
- source: "./strapi-server.js",
41
- require: "./strapi-server.js",
42
- "default": "./strapi-server.js"
43
- },
44
- "./package.json": "./package.json"
45
- };
46
- const scripts = {
47
- build: "pack-up build",
48
- clean: "run -T rimraf dist",
49
- lint: "run -T eslint .",
50
- "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
51
- "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
52
- "test:unit": "jest --verbose",
53
- "test:unit:watch": "run -T jest --watch",
54
- watch: "pack-up watch"
55
- };
56
- const dependencies = {
57
- "@strapi/design-system": "1.16.0",
58
- "@strapi/icons": "1.16.0",
59
- "@strapi/utils": "5.0.0-alpha.4",
60
- bcryptjs: "2.4.3",
61
- cheerio: "^1.0.0-rc.12",
62
- formik: "2.4.5",
63
- "fs-extra": "10.1.0",
64
- immer: "9.0.21",
65
- "koa-static": "^5.0.0",
66
- lodash: "4.17.21",
67
- "path-to-regexp": "6.2.1",
68
- "react-helmet": "^6.1.0",
69
- "react-intl": "6.6.2",
70
- "react-query": "3.39.3",
71
- "swagger-ui-dist": "4.19.0",
72
- yaml: "1.10.2",
73
- yup: "0.32.9"
74
- };
75
- const devDependencies = {
76
- "@apidevtools/swagger-parser": "^10.1.0",
77
- "@strapi/pack-up": "5.0.0-alpha.4",
78
- "@strapi/strapi": "5.0.0-alpha.4",
79
- "@testing-library/react": "14.0.0",
80
- "@testing-library/user-event": "14.4.3",
81
- msw: "1.3.0",
82
- react: "^18.2.0",
83
- "react-dom": "^18.2.0",
84
- "react-router-dom": "6.22.3",
85
- "styled-components": "5.3.11"
86
- };
87
- const peerDependencies = {
88
- "@strapi/strapi": "^4.0.0",
89
- react: "^17.0.0 || ^18.0.0",
90
- "react-dom": "^17.0.0 || ^18.0.0",
91
- "react-router-dom": "^6.0.0",
92
- "styled-components": "^5.2.1"
93
- };
94
- const engines = {
95
- node: ">=18.0.0 <=20.x.x",
96
- npm: ">=6.0.0"
97
- };
98
- const strapi = {
99
- displayName: "Documentation",
100
- name: "documentation",
101
- description: "Create an OpenAPI Document and visualize your API with SWAGGER UI.",
102
- kind: "plugin"
103
- };
104
- const pluginPkg = {
105
- name: name$1,
106
- version,
107
- description,
108
- repository,
109
- license,
110
- author,
111
- maintainers,
112
- exports,
113
- scripts,
114
- dependencies,
115
- devDependencies,
116
- peerDependencies,
117
- engines,
118
- strapi
119
- };
120
14
  const PERMISSIONS = {
121
15
  // This permission regards the main component (App) and is used to tell
122
16
  // If the plugin link should be displayed in the menu
@@ -134,17 +28,115 @@ const PERMISSIONS = {
134
28
  regenerate: [{ action: "plugin::documentation.settings.regenerate", subject: null }],
135
29
  update: [{ action: "plugin::documentation.settings.update", subject: null }]
136
30
  };
137
- const pluginId = pluginPkg.name.replace(/^@strapi\/plugin-/i, "");
31
+ const pluginId = "documentation";
32
+ const axiosBaseQuery = (config) => async (query, { signal }) => {
33
+ try {
34
+ const { get, post, del, put } = getFetchClient(config);
35
+ if (typeof query === "string") {
36
+ const result = await get(query, { signal });
37
+ return { data: result.data };
38
+ } else {
39
+ const { url, method = "GET", data, config: config2 } = query;
40
+ if (method === "POST") {
41
+ const result2 = await post(url, data, { ...config2, signal });
42
+ return { data: result2.data };
43
+ }
44
+ if (method === "DELETE") {
45
+ const result2 = await del(url, { ...config2, signal });
46
+ return { data: result2.data };
47
+ }
48
+ if (method === "PUT") {
49
+ const result2 = await put(url, data, { ...config2, signal });
50
+ return { data: result2.data };
51
+ }
52
+ const result = await get(url, { ...config2, signal });
53
+ return { data: result.data };
54
+ }
55
+ } catch (err) {
56
+ if (isAxiosError(err)) {
57
+ if (typeof err.response?.data === "object" && err.response?.data !== null && "error" in err.response?.data) {
58
+ return { data: void 0, error: err.response?.data.error };
59
+ } else {
60
+ return {
61
+ data: void 0,
62
+ error: {
63
+ name: "UnknownError",
64
+ message: "There was an unknown error response from the API",
65
+ details: err.response?.data,
66
+ status: err.response?.status
67
+ }
68
+ };
69
+ }
70
+ }
71
+ const error = err;
72
+ return {
73
+ data: void 0,
74
+ error: {
75
+ name: error.name,
76
+ message: error.message,
77
+ stack: error.stack
78
+ }
79
+ };
80
+ }
81
+ };
82
+ const isBaseQueryError = (error) => {
83
+ return error.name !== void 0;
84
+ };
85
+ const api = createApi({
86
+ reducerPath: "plugin::documentation",
87
+ baseQuery: axiosBaseQuery({
88
+ baseURL: "/documentation"
89
+ }),
90
+ tagTypes: ["DocumentInfos"],
91
+ endpoints: (builder) => {
92
+ return {
93
+ getInfos: builder.query({
94
+ query: () => "/getInfos",
95
+ providesTags: ["DocumentInfos"]
96
+ }),
97
+ deleteVersion: builder.mutation({
98
+ query: ({ version }) => ({
99
+ url: `/deleteDoc/${version}`,
100
+ method: "DELETE"
101
+ }),
102
+ invalidatesTags: ["DocumentInfos"]
103
+ }),
104
+ updateSettings: builder.mutation({
105
+ query: ({ body }) => ({
106
+ url: `/updateSettings`,
107
+ method: "PUT",
108
+ data: body
109
+ }),
110
+ invalidatesTags: ["DocumentInfos"]
111
+ }),
112
+ regenerateDoc: builder.mutation({
113
+ query: ({ version }) => ({
114
+ url: `/regenerateDoc`,
115
+ method: "POST",
116
+ data: { version }
117
+ })
118
+ })
119
+ };
120
+ }
121
+ });
122
+ const {
123
+ useGetInfosQuery,
124
+ useDeleteVersionMutation,
125
+ useUpdateSettingsMutation,
126
+ useRegenerateDocMutation
127
+ } = api;
138
128
  const prefixPluginTranslations = (trad, pluginId2) => {
139
129
  if (!pluginId2) {
140
130
  throw new TypeError("pluginId can't be empty");
141
131
  }
142
- return Object.keys(trad).reduce((acc, current) => {
143
- acc[`${pluginId2}.${current}`] = trad[current];
144
- return acc;
145
- }, {});
132
+ return Object.keys(trad).reduce(
133
+ (acc, current) => {
134
+ acc[`${pluginId2}.${current}`] = trad[current];
135
+ return acc;
136
+ },
137
+ {}
138
+ );
146
139
  };
147
- const name = pluginPkg.strapi.name;
148
140
  const index = {
149
141
  register(app) {
150
142
  app.addMenuLink({
@@ -155,11 +147,18 @@ const index = {
155
147
  defaultMessage: "Documentation"
156
148
  },
157
149
  permissions: PERMISSIONS.main,
158
- Component: () => import("./index-7xstUX8_.mjs")
150
+ Component: async () => {
151
+ const { App } = await import("./App-mrzd5Xqj.mjs");
152
+ return App;
153
+ }
154
+ });
155
+ app.addMiddlewares([() => api.middleware]);
156
+ app.addReducers({
157
+ [api.reducerPath]: api.reducer
159
158
  });
160
159
  app.registerPlugin({
161
160
  id: pluginId,
162
- name
161
+ name: pluginId
163
162
  });
164
163
  },
165
164
  bootstrap(app) {
@@ -170,7 +169,10 @@ const index = {
170
169
  },
171
170
  id: "documentation",
172
171
  to: pluginId,
173
- Component: () => import("./index-VpLAJXMs.mjs"),
172
+ Component: async () => {
173
+ const { SettingsPage } = await import("./Settings-8v7IbdtY.mjs");
174
+ return SettingsPage;
175
+ },
174
176
  permissions: PERMISSIONS.main
175
177
  });
176
178
  },
@@ -195,7 +197,12 @@ const index = {
195
197
  };
196
198
  export {
197
199
  PERMISSIONS as P,
198
- index as i,
199
- pluginId as p
200
+ useRegenerateDocMutation as a,
201
+ useDeleteVersionMutation as b,
202
+ useUpdateSettingsMutation as c,
203
+ index as d,
204
+ isBaseQueryError as i,
205
+ pluginId as p,
206
+ useGetInfosQuery as u
200
207
  };
201
- //# sourceMappingURL=index-NvJ4m2q5.mjs.map
208
+ //# sourceMappingURL=index-mXCyE3EQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-mXCyE3EQ.mjs","sources":["../../admin/src/constants.ts","../../admin/src/pluginId.ts","../../admin/src/utils/baseQuery.ts","../../admin/src/services/api.ts","../../admin/src/utils/prefixPluginTranslations.ts","../../admin/src/index.ts"],"sourcesContent":["export const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::documentation.read', subject: null },\n { action: 'plugin::documentation.settings.regenerate', subject: null },\n { action: 'plugin::documentation.settings.update', subject: null },\n ],\n open: [\n { action: 'plugin::documentation.read', subject: null },\n { action: 'plugin::documentation.settings.regenerate', subject: null },\n ],\n regenerate: [{ action: 'plugin::documentation.settings.regenerate', subject: null }],\n update: [{ action: 'plugin::documentation.settings.update', subject: null }],\n};\n","export const pluginId = 'documentation';\n","import { SerializedError } from '@reduxjs/toolkit';\nimport { BaseQueryFn } from '@reduxjs/toolkit/query';\nimport { getFetchClient, ApiError } from '@strapi/strapi/admin';\nimport { isAxiosError, type AxiosRequestConfig } from 'axios';\n\n/* -------------------------------------------------------------------------------------------------\n * Axios data\n * -----------------------------------------------------------------------------------------------*/\nexport interface QueryArguments {\n url: string;\n method?: AxiosRequestConfig['method'];\n data?: AxiosRequestConfig['data'];\n config?: AxiosRequestConfig;\n}\n\nexport interface UnknownApiError {\n name: 'UnknownError';\n message: string;\n details?: unknown;\n status?: number;\n}\n\nexport type BaseQueryError = ApiError | UnknownApiError;\n\nconst axiosBaseQuery =\n (config: AxiosRequestConfig): BaseQueryFn<string | QueryArguments, unknown, BaseQueryError> =>\n async (query, { signal }) => {\n try {\n const { get, post, del, put } = getFetchClient(config);\n\n if (typeof query === 'string') {\n const result = await get(query, { signal });\n return { data: result.data };\n } else {\n const { url, method = 'GET', data, config } = query;\n\n if (method === 'POST') {\n const result = await post(url, data, { ...config, signal });\n return { data: result.data };\n }\n\n if (method === 'DELETE') {\n const result = await del(url, { ...config, signal });\n return { data: result.data };\n }\n\n if (method === 'PUT') {\n const result = await put(url, data, { ...config, signal });\n return { data: result.data };\n }\n\n /**\n * Default is GET.\n */\n const result = await get(url, { ...config, signal });\n return { data: result.data };\n }\n } catch (err) {\n /**\n * Handle error of type AxiosError\n *\n * This format mimics what we want from an AxiosError which is what the\n * rest of the app works with, except this format is \"serializable\" since\n * it goes into the redux store.\n *\n * NOTE – passing the whole response will highlight this \"serializability\" issue.\n */\n\n if (isAxiosError(err)) {\n if (\n typeof err.response?.data === 'object' &&\n err.response?.data !== null &&\n 'error' in err.response?.data\n ) {\n /**\n * This will most likely be ApiError\n */\n return { data: undefined, error: err.response?.data.error };\n } else {\n return {\n data: undefined,\n error: {\n name: 'UnknownError',\n message: 'There was an unknown error response from the API',\n details: err.response?.data,\n status: err.response?.status,\n } as UnknownApiError,\n };\n }\n }\n\n const error = err as Error;\n return {\n data: undefined,\n error: {\n name: error.name,\n message: error.message,\n stack: error.stack,\n } satisfies SerializedError,\n };\n }\n };\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { axiosBaseQuery, isBaseQueryError };\n","import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { DocumentInfos } from '../types';\nimport { axiosBaseQuery } from '../utils/baseQuery';\n\ntype SettingsInput = {\n restrictedAccess: boolean;\n password: string;\n};\n\nconst api = createApi({\n reducerPath: 'plugin::documentation',\n baseQuery: axiosBaseQuery({\n baseURL: '/documentation',\n }),\n tagTypes: ['DocumentInfos'],\n endpoints: (builder) => {\n return {\n getInfos: builder.query<DocumentInfos, void>({\n query: () => '/getInfos',\n providesTags: ['DocumentInfos'],\n }),\n\n deleteVersion: builder.mutation<void, { version: string }>({\n query: ({ version }) => ({\n url: `/deleteDoc/${version}`,\n method: 'DELETE',\n }),\n invalidatesTags: ['DocumentInfos'],\n }),\n\n updateSettings: builder.mutation<void, { body: SettingsInput }>({\n query: ({ body }) => ({\n url: `/updateSettings`,\n method: 'PUT',\n data: body,\n }),\n invalidatesTags: ['DocumentInfos'],\n }),\n\n regenerateDoc: builder.mutation<void, { version: string }>({\n query: ({ version }) => ({\n url: `/regenerateDoc`,\n method: 'POST',\n data: { version },\n }),\n }),\n };\n },\n});\n\nexport { api };\n\nexport const {\n useGetInfosQuery,\n useDeleteVersionMutation,\n useUpdateSettingsMutation,\n useRegenerateDocMutation,\n} = api;\n","const prefixPluginTranslations = (trad: Record<string, string>, pluginId?: string) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce(\n (acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n },\n {} as Record<string, string>\n );\n};\n\nexport { prefixPluginTranslations };\n","import { Information } from '@strapi/icons';\n\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { api } from './services/api';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Information,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Documentation',\n },\n permissions: PERMISSIONS.main,\n Component: async () => {\n const { App } = await import('./pages/App');\n return App;\n },\n });\n\n app.addMiddlewares([() => api.middleware]);\n\n app.addReducers({\n [api.reducerPath]: api.reducer,\n });\n\n app.registerPlugin({\n id: pluginId,\n name: pluginId,\n });\n },\n bootstrap(app: any) {\n app.addSettingsLink('global', {\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Documentation',\n },\n id: 'documentation',\n to: pluginId,\n Component: async () => {\n const { SettingsPage } = await import('./pages/Settings');\n return SettingsPage;\n },\n permissions: PERMISSIONS.main,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n"],"names":["config","result","pluginId"],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const login = `<!DOCTYPE html>
4
+ <html>
5
+ <head>
6
+ <title>Login - Documentation</title>
7
+ <link href="https://fonts.googleapis.com/css?family=Lato:400,700" rel="stylesheet" />
8
+ <style>
9
+ html {
10
+ font-size: 62.5%;
11
+ height: 100%;
12
+ margin: 0;
13
+ padding: 0;
14
+ }
15
+
16
+ body {
17
+ height: 100%;
18
+ margin: 0;
19
+ background-color: #ffffff;
20
+ font-family: 'Lato';
21
+ font-size: 1.4rem;
22
+ font-weight: 400;
23
+ text-rendering: optimizeLegibility;
24
+ -webkit-font-smoothing: antialiased;
25
+ -moz-osx-font-smoothing: grayscale;
26
+ }
27
+
28
+ .login {
29
+ height: 100%;
30
+ background-color: #f6f9fc;
31
+ }
32
+
33
+ .login .login-form {
34
+ height: calc(100% - 70px);
35
+ padding: 68px 0 0;
36
+ text-align: center;
37
+ }
38
+
39
+ .login .login-form form {
40
+ position: relative;
41
+ max-width: 460px;
42
+ padding: 26px 30px;
43
+ margin: 55px auto 0;
44
+ background-color: #ffffff;
45
+ border-radius: 3px;
46
+ box-shadow: 0px 2px 4px rgba(91, 107, 174, 0.15);
47
+ text-align: center;
48
+ }
49
+
50
+ .login .login-form form:before {
51
+ position: absolute;
52
+ content: '';
53
+ top: 0px;
54
+ left: 0;
55
+ display: inline-block;
56
+ width: 100%;
57
+ height: 2px;
58
+ background-color: #2b66cc;
59
+ }
60
+
61
+ .login .login-form form .error {
62
+ display: block;
63
+ color: #ff4e00;
64
+ padding-bottom: 20px;
65
+ }
66
+
67
+ .login .login-form .sub-title {
68
+ margin-top: 35px;
69
+ font-size: 1.6rem;
70
+ font-weight: 400;
71
+ }
72
+
73
+ .login .login-form .logo {
74
+ max-height: 40px;
75
+ }
76
+
77
+ .login .login-form form label {
78
+ display: block;
79
+ margin-bottom: 18px;
80
+ width: 100%;
81
+ text-align: left;
82
+ font-weight: 600;
83
+ }
84
+
85
+ .login .login-form form input {
86
+ outline: none;
87
+ width: calc(100% - 30px);
88
+ height: 36px;
89
+ padding: 0 15px;
90
+ border: 1px solid #ececec;
91
+ border-radius: 2px;
92
+ margin-bottom: 20px;
93
+ line-height: 36px;
94
+ text-align: left;
95
+ }
96
+
97
+ .login .login-form form input[type='submit'] {
98
+ cursor: pointer;
99
+ display: inline-block;
100
+ width: auto;
101
+ margin: 12px auto 0;
102
+ padding: 0 75px;
103
+ background: transparent;
104
+ border-radius: 36px;
105
+ border: 1px solid #2b66cc;
106
+ color: #2b66cc;
107
+ text-transform: uppercase;
108
+ font-size: 1.4rem;
109
+ font-weight: 700;
110
+ transition: all 0.2s ease-out;
111
+ }
112
+
113
+ .login .login-form form input[type='submit']:hover {
114
+ background: #2b66cc;
115
+ color: #ffffff;
116
+ }
117
+ </style>
118
+ </head>
119
+ <body>
120
+ <div class="login">
121
+ <section class="login-form">
122
+ <div class="container">
123
+ <div class="row">
124
+ <div class="col-lg-6 col-lg-offset-3 col-md-12">
125
+ <img
126
+ alt="Strapi logo"
127
+ class="logo"
128
+ src="https://strapi.io/assets/images/logo_login.png"
129
+ />
130
+ <h2 class="sub-title">Enter the password to access the documentation.</h2>
131
+ <form method="post" action="<%=actionUrl%>">
132
+ <span class="error">Wrong password...</span>
133
+ <label>Password</label>
134
+ <input
135
+ type="password"
136
+ name="password"
137
+ placeholder="&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;"
138
+ />
139
+ <input type="submit" value="Login" />
140
+ </form>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </section>
145
+ </div>
146
+ </body>
147
+ </html>
148
+ `;
149
+ exports.default = login;
150
+ //# sourceMappingURL=login-HAajOKpu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-HAajOKpu.js","sources":["../../server/src/public/login.html?raw"],"sourcesContent":["export default \"<!DOCTYPE html>\\n<html>\\n <head>\\n <title>Login - Documentation</title>\\n <link href=\\\"https://fonts.googleapis.com/css?family=Lato:400,700\\\" rel=\\\"stylesheet\\\" />\\n <style>\\n html {\\n font-size: 62.5%;\\n height: 100%;\\n margin: 0;\\n padding: 0;\\n }\\n\\n body {\\n height: 100%;\\n margin: 0;\\n background-color: #ffffff;\\n font-family: 'Lato';\\n font-size: 1.4rem;\\n font-weight: 400;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n }\\n\\n .login {\\n height: 100%;\\n background-color: #f6f9fc;\\n }\\n\\n .login .login-form {\\n height: calc(100% - 70px);\\n padding: 68px 0 0;\\n text-align: center;\\n }\\n\\n .login .login-form form {\\n position: relative;\\n max-width: 460px;\\n padding: 26px 30px;\\n margin: 55px auto 0;\\n background-color: #ffffff;\\n border-radius: 3px;\\n box-shadow: 0px 2px 4px rgba(91, 107, 174, 0.15);\\n text-align: center;\\n }\\n\\n .login .login-form form:before {\\n position: absolute;\\n content: '';\\n top: 0px;\\n left: 0;\\n display: inline-block;\\n width: 100%;\\n height: 2px;\\n background-color: #2b66cc;\\n }\\n\\n .login .login-form form .error {\\n display: block;\\n color: #ff4e00;\\n padding-bottom: 20px;\\n }\\n\\n .login .login-form .sub-title {\\n margin-top: 35px;\\n font-size: 1.6rem;\\n font-weight: 400;\\n }\\n\\n .login .login-form .logo {\\n max-height: 40px;\\n }\\n\\n .login .login-form form label {\\n display: block;\\n margin-bottom: 18px;\\n width: 100%;\\n text-align: left;\\n font-weight: 600;\\n }\\n\\n .login .login-form form input {\\n outline: none;\\n width: calc(100% - 30px);\\n height: 36px;\\n padding: 0 15px;\\n border: 1px solid #ececec;\\n border-radius: 2px;\\n margin-bottom: 20px;\\n line-height: 36px;\\n text-align: left;\\n }\\n\\n .login .login-form form input[type='submit'] {\\n cursor: pointer;\\n display: inline-block;\\n width: auto;\\n margin: 12px auto 0;\\n padding: 0 75px;\\n background: transparent;\\n border-radius: 36px;\\n border: 1px solid #2b66cc;\\n color: #2b66cc;\\n text-transform: uppercase;\\n font-size: 1.4rem;\\n font-weight: 700;\\n transition: all 0.2s ease-out;\\n }\\n\\n .login .login-form form input[type='submit']:hover {\\n background: #2b66cc;\\n color: #ffffff;\\n }\\n </style>\\n </head>\\n <body>\\n <div class=\\\"login\\\">\\n <section class=\\\"login-form\\\">\\n <div class=\\\"container\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-lg-6 col-lg-offset-3 col-md-12\\\">\\n <img\\n alt=\\\"Strapi logo\\\"\\n class=\\\"logo\\\"\\n src=\\\"https://strapi.io/assets/images/logo_login.png\\\"\\n />\\n <h2 class=\\\"sub-title\\\">Enter the password to access the documentation.</h2>\\n <form method=\\\"post\\\" action=\\\"<%=actionUrl%>\\\">\\n <span class=\\\"error\\\">Wrong password...</span>\\n <label>Password</label>\\n <input\\n type=\\\"password\\\"\\n name=\\\"password\\\"\\n placeholder=\\\"&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;\\\"\\n />\\n <input type=\\\"submit\\\" value=\\\"Login\\\" />\\n </form>\\n </div>\\n </div>\\n </div>\\n </section>\\n </div>\\n </body>\\n</html>\\n\""],"names":[],"mappings":";;AAAA,MAAe,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html>
1
+ const login = `<!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
4
  <title>Login - Documentation</title>
@@ -143,3 +143,8 @@
143
143
  </div>
144
144
  </body>
145
145
  </html>
146
+ `;
147
+ export {
148
+ login as default
149
+ };
150
+ //# sourceMappingURL=login-slUa679p.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-slUa679p.mjs","sources":["../../server/src/public/login.html?raw"],"sourcesContent":["export default \"<!DOCTYPE html>\\n<html>\\n <head>\\n <title>Login - Documentation</title>\\n <link href=\\\"https://fonts.googleapis.com/css?family=Lato:400,700\\\" rel=\\\"stylesheet\\\" />\\n <style>\\n html {\\n font-size: 62.5%;\\n height: 100%;\\n margin: 0;\\n padding: 0;\\n }\\n\\n body {\\n height: 100%;\\n margin: 0;\\n background-color: #ffffff;\\n font-family: 'Lato';\\n font-size: 1.4rem;\\n font-weight: 400;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n }\\n\\n .login {\\n height: 100%;\\n background-color: #f6f9fc;\\n }\\n\\n .login .login-form {\\n height: calc(100% - 70px);\\n padding: 68px 0 0;\\n text-align: center;\\n }\\n\\n .login .login-form form {\\n position: relative;\\n max-width: 460px;\\n padding: 26px 30px;\\n margin: 55px auto 0;\\n background-color: #ffffff;\\n border-radius: 3px;\\n box-shadow: 0px 2px 4px rgba(91, 107, 174, 0.15);\\n text-align: center;\\n }\\n\\n .login .login-form form:before {\\n position: absolute;\\n content: '';\\n top: 0px;\\n left: 0;\\n display: inline-block;\\n width: 100%;\\n height: 2px;\\n background-color: #2b66cc;\\n }\\n\\n .login .login-form form .error {\\n display: block;\\n color: #ff4e00;\\n padding-bottom: 20px;\\n }\\n\\n .login .login-form .sub-title {\\n margin-top: 35px;\\n font-size: 1.6rem;\\n font-weight: 400;\\n }\\n\\n .login .login-form .logo {\\n max-height: 40px;\\n }\\n\\n .login .login-form form label {\\n display: block;\\n margin-bottom: 18px;\\n width: 100%;\\n text-align: left;\\n font-weight: 600;\\n }\\n\\n .login .login-form form input {\\n outline: none;\\n width: calc(100% - 30px);\\n height: 36px;\\n padding: 0 15px;\\n border: 1px solid #ececec;\\n border-radius: 2px;\\n margin-bottom: 20px;\\n line-height: 36px;\\n text-align: left;\\n }\\n\\n .login .login-form form input[type='submit'] {\\n cursor: pointer;\\n display: inline-block;\\n width: auto;\\n margin: 12px auto 0;\\n padding: 0 75px;\\n background: transparent;\\n border-radius: 36px;\\n border: 1px solid #2b66cc;\\n color: #2b66cc;\\n text-transform: uppercase;\\n font-size: 1.4rem;\\n font-weight: 700;\\n transition: all 0.2s ease-out;\\n }\\n\\n .login .login-form form input[type='submit']:hover {\\n background: #2b66cc;\\n color: #ffffff;\\n }\\n </style>\\n </head>\\n <body>\\n <div class=\\\"login\\\">\\n <section class=\\\"login-form\\\">\\n <div class=\\\"container\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-lg-6 col-lg-offset-3 col-md-12\\\">\\n <img\\n alt=\\\"Strapi logo\\\"\\n class=\\\"logo\\\"\\n src=\\\"https://strapi.io/assets/images/logo_login.png\\\"\\n />\\n <h2 class=\\\"sub-title\\\">Enter the password to access the documentation.</h2>\\n <form method=\\\"post\\\" action=\\\"<%=actionUrl%>\\\">\\n <span class=\\\"error\\\">Wrong password...</span>\\n <label>Password</label>\\n <input\\n type=\\\"password\\\"\\n name=\\\"password\\\"\\n placeholder=\\\"&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;&#x2022;\\\"\\n />\\n <input type=\\\"submit\\\" value=\\\"Login\\\" />\\n </form>\\n </div>\\n </div>\\n </div>\\n </section>\\n </div>\\n </body>\\n</html>\\n\""],"names":[],"mappings":"AAAA,MAAe,QAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const index = require("../_chunks/index-r7HsQTou.js");
2
+ const index = require("../_chunks/index-_yYcImHU.js");
3
3
  require("@strapi/icons");
4
4
  module.exports = index.index;
5
5
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- import { i } from "../_chunks/index-NvJ4m2q5.mjs";
1
+ import { d } from "../_chunks/index-mXCyE3EQ.mjs";
2
2
  import "@strapi/icons";
3
3
  export {
4
- i as default
4
+ d as default
5
5
  };
6
6
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,8 @@
1
+ import { FormikHelpers } from 'formik';
2
+ import { DocumentInfos, SettingsInput } from '../types';
3
+ type SettingsFormProps = {
4
+ data?: DocumentInfos;
5
+ onSubmit: (body: SettingsInput, formik: FormikHelpers<SettingsInput>) => Promise<void>;
6
+ };
7
+ export declare const SettingsForm: ({ data, onSubmit }: SettingsFormProps) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,18 @@
1
+ export declare const PERMISSIONS: {
2
+ main: {
3
+ action: string;
4
+ subject: null;
5
+ }[];
6
+ open: {
7
+ action: string;
8
+ subject: null;
9
+ }[];
10
+ regenerate: {
11
+ action: string;
12
+ subject: null;
13
+ }[];
14
+ update: {
15
+ action: string;
16
+ subject: null;
17
+ }[];
18
+ };
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ register(app: any): void;
3
+ bootstrap(app: any): void;
4
+ registerTrads({ locales }: {
5
+ locales: string[];
6
+ }): Promise<({
7
+ data: Record<string, string>;
8
+ locale: string;
9
+ } | {
10
+ data: {};
11
+ locale: string;
12
+ })[]>;
13
+ };
14
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const App: () => import("react/jsx-runtime").JSX.Element;
2
+ export { App };
@@ -0,0 +1,2 @@
1
+ declare const SettingsPage: () => import("react/jsx-runtime").JSX.Element;
2
+ export { SettingsPage };
@@ -0,0 +1 @@
1
+ export declare const pluginId = "documentation";
@@ -0,0 +1,25 @@
1
+ import { DocumentInfos } from '../types';
2
+ type SettingsInput = {
3
+ restrictedAccess: boolean;
4
+ password: string;
5
+ };
6
+ declare const api: import("@reduxjs/toolkit/query/react").Api<import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, {
7
+ getInfos: import("@reduxjs/toolkit/query/react").QueryDefinition<void, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", DocumentInfos, "plugin::documentation">;
8
+ deleteVersion: import("@reduxjs/toolkit/query/react").MutationDefinition<{
9
+ version: string;
10
+ }, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", void, "plugin::documentation">;
11
+ updateSettings: import("@reduxjs/toolkit/query/react").MutationDefinition<{
12
+ body: SettingsInput;
13
+ }, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", void, "plugin::documentation">;
14
+ regenerateDoc: import("@reduxjs/toolkit/query/react").MutationDefinition<{
15
+ version: string;
16
+ }, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", void, "plugin::documentation">;
17
+ }, "plugin::documentation", "DocumentInfos", typeof import("@reduxjs/toolkit/query/react").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
18
+ export { api };
19
+ export declare const useGetInfosQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query/react").QueryDefinition<void, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", DocumentInfos, "plugin::documentation">>, useDeleteVersionMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query/react").MutationDefinition<{
20
+ version: string;
21
+ }, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", void, "plugin::documentation">>, useUpdateSettingsMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query/react").MutationDefinition<{
22
+ body: SettingsInput;
23
+ }, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", void, "plugin::documentation">>, useRegenerateDocMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query/react").MutationDefinition<{
24
+ version: string;
25
+ }, import("@reduxjs/toolkit/query/react").BaseQueryFn<string | import("../utils/baseQuery").QueryArguments, unknown, import("../utils/baseQuery").BaseQueryError>, "DocumentInfos", void, "plugin::documentation">>;