@strapi/plugin-documentation 4.15.1 → 4.15.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 (122) hide show
  1. package/.eslintignore +1 -2
  2. package/.eslintrc +14 -0
  3. package/dist/_chunks/ar-3945178e.js +24 -0
  4. package/dist/_chunks/ar-3945178e.js.map +1 -0
  5. package/dist/_chunks/ar-a504b634.mjs +24 -0
  6. package/dist/_chunks/ar-a504b634.mjs.map +1 -0
  7. package/dist/_chunks/cs-053272e2.js +25 -0
  8. package/dist/_chunks/cs-053272e2.js.map +1 -0
  9. package/dist/_chunks/cs-feb7f04c.mjs +25 -0
  10. package/dist/_chunks/cs-feb7f04c.mjs.map +1 -0
  11. package/dist/_chunks/de-09853142.js +30 -0
  12. package/dist/_chunks/de-09853142.js.map +1 -0
  13. package/dist/_chunks/de-a33e1fea.mjs +30 -0
  14. package/dist/_chunks/de-a33e1fea.mjs.map +1 -0
  15. package/dist/_chunks/dk-05d66fde.js +43 -0
  16. package/dist/_chunks/dk-05d66fde.js.map +1 -0
  17. package/dist/_chunks/dk-ed9fcdcf.mjs +43 -0
  18. package/dist/_chunks/dk-ed9fcdcf.mjs.map +1 -0
  19. package/dist/_chunks/en-70db76ff.js +43 -0
  20. package/dist/_chunks/en-70db76ff.js.map +1 -0
  21. package/dist/_chunks/en-96395a32.mjs +43 -0
  22. package/dist/_chunks/en-96395a32.mjs.map +1 -0
  23. package/dist/_chunks/es-22de55e3.mjs +43 -0
  24. package/dist/_chunks/es-22de55e3.mjs.map +1 -0
  25. package/dist/_chunks/es-497d8815.js +43 -0
  26. package/dist/_chunks/es-497d8815.js.map +1 -0
  27. package/dist/_chunks/fr-24238f91.js +30 -0
  28. package/dist/_chunks/fr-24238f91.js.map +1 -0
  29. package/dist/_chunks/fr-70c3898d.mjs +30 -0
  30. package/dist/_chunks/fr-70c3898d.mjs.map +1 -0
  31. package/dist/_chunks/id-e9ab0af3.js +28 -0
  32. package/dist/_chunks/id-e9ab0af3.js.map +1 -0
  33. package/dist/_chunks/id-e9e00780.mjs +28 -0
  34. package/dist/_chunks/id-e9e00780.mjs.map +1 -0
  35. package/dist/_chunks/index-1a7e4b90.js +194 -0
  36. package/dist/_chunks/index-1a7e4b90.js.map +1 -0
  37. package/dist/_chunks/index-305e7973.js +169 -0
  38. package/dist/_chunks/index-305e7973.js.map +1 -0
  39. package/dist/_chunks/index-5d9aa19e.mjs +167 -0
  40. package/dist/_chunks/index-5d9aa19e.mjs.map +1 -0
  41. package/dist/_chunks/index-9bbaea3a.js +202 -0
  42. package/dist/_chunks/index-9bbaea3a.js.map +1 -0
  43. package/dist/_chunks/index-b730a8b9.mjs +203 -0
  44. package/dist/_chunks/index-b730a8b9.mjs.map +1 -0
  45. package/dist/_chunks/index-f1bf5533.mjs +173 -0
  46. package/dist/_chunks/index-f1bf5533.mjs.map +1 -0
  47. package/dist/_chunks/it-28ef2963.mjs +30 -0
  48. package/dist/_chunks/it-28ef2963.mjs.map +1 -0
  49. package/dist/_chunks/it-5255d492.js +30 -0
  50. package/dist/_chunks/it-5255d492.js.map +1 -0
  51. package/dist/_chunks/ko-34e7eb26.js +43 -0
  52. package/dist/_chunks/ko-34e7eb26.js.map +1 -0
  53. package/dist/_chunks/ko-a29301ee.mjs +43 -0
  54. package/dist/_chunks/ko-a29301ee.mjs.map +1 -0
  55. package/dist/_chunks/ms-63bb66e1.js +27 -0
  56. package/dist/_chunks/ms-63bb66e1.js.map +1 -0
  57. package/dist/_chunks/ms-87588bdb.mjs +27 -0
  58. package/dist/_chunks/ms-87588bdb.mjs.map +1 -0
  59. package/dist/_chunks/nl-0319020c.js +25 -0
  60. package/dist/_chunks/nl-0319020c.js.map +1 -0
  61. package/dist/_chunks/nl-91bcd809.mjs +25 -0
  62. package/dist/_chunks/nl-91bcd809.mjs.map +1 -0
  63. package/dist/_chunks/pl-2d57c604.js +43 -0
  64. package/dist/_chunks/pl-2d57c604.js.map +1 -0
  65. package/dist/_chunks/pl-7d7fe7b2.mjs +43 -0
  66. package/dist/_chunks/pl-7d7fe7b2.mjs.map +1 -0
  67. package/dist/_chunks/pt-9b66f3d5.mjs +25 -0
  68. package/dist/_chunks/pt-9b66f3d5.mjs.map +1 -0
  69. package/dist/_chunks/pt-BR-0024d4be.mjs +25 -0
  70. package/dist/_chunks/pt-BR-0024d4be.mjs.map +1 -0
  71. package/dist/_chunks/pt-BR-cf80ef96.js +25 -0
  72. package/dist/_chunks/pt-BR-cf80ef96.js.map +1 -0
  73. package/dist/_chunks/pt-b91837bc.js +25 -0
  74. package/dist/_chunks/pt-b91837bc.js.map +1 -0
  75. package/dist/_chunks/ru-468d9a30.mjs +43 -0
  76. package/dist/_chunks/ru-468d9a30.mjs.map +1 -0
  77. package/dist/_chunks/ru-91348271.js +43 -0
  78. package/dist/_chunks/ru-91348271.js.map +1 -0
  79. package/dist/_chunks/sk-01b7713b.mjs +28 -0
  80. package/dist/_chunks/sk-01b7713b.mjs.map +1 -0
  81. package/dist/_chunks/sk-10c03ab1.js +28 -0
  82. package/dist/_chunks/sk-10c03ab1.js.map +1 -0
  83. package/dist/_chunks/sv-7edbe28d.mjs +43 -0
  84. package/dist/_chunks/sv-7edbe28d.mjs.map +1 -0
  85. package/dist/_chunks/sv-e5237308.js +43 -0
  86. package/dist/_chunks/sv-e5237308.js.map +1 -0
  87. package/dist/_chunks/th-200a02f1.js +28 -0
  88. package/dist/_chunks/th-200a02f1.js.map +1 -0
  89. package/dist/_chunks/th-4fcead7f.mjs +28 -0
  90. package/dist/_chunks/th-4fcead7f.mjs.map +1 -0
  91. package/dist/_chunks/tr-8290d257.mjs +43 -0
  92. package/dist/_chunks/tr-8290d257.mjs.map +1 -0
  93. package/dist/_chunks/tr-fd36715f.js +43 -0
  94. package/dist/_chunks/tr-fd36715f.js.map +1 -0
  95. package/dist/_chunks/uk-bf914720.mjs +27 -0
  96. package/dist/_chunks/uk-bf914720.mjs.map +1 -0
  97. package/dist/_chunks/uk-cb462605.js +27 -0
  98. package/dist/_chunks/uk-cb462605.js.map +1 -0
  99. package/dist/_chunks/useDocumentation-f6d239a2.mjs +66 -0
  100. package/dist/_chunks/useDocumentation-f6d239a2.mjs.map +1 -0
  101. package/dist/_chunks/useDocumentation-f789dff3.js +65 -0
  102. package/dist/_chunks/useDocumentation-f789dff3.js.map +1 -0
  103. package/dist/_chunks/vi-d2e2e100.js +28 -0
  104. package/dist/_chunks/vi-d2e2e100.js.map +1 -0
  105. package/dist/_chunks/vi-ddc8357e.mjs +28 -0
  106. package/dist/_chunks/vi-ddc8357e.mjs.map +1 -0
  107. package/dist/_chunks/zh-7b489db7.mjs +43 -0
  108. package/dist/_chunks/zh-7b489db7.mjs.map +1 -0
  109. package/dist/_chunks/zh-8da2191f.js +43 -0
  110. package/dist/_chunks/zh-8da2191f.js.map +1 -0
  111. package/dist/_chunks/zh-Hans-6cefb513.mjs +32 -0
  112. package/dist/_chunks/zh-Hans-6cefb513.mjs.map +1 -0
  113. package/dist/_chunks/zh-Hans-c2e4b737.js +32 -0
  114. package/dist/_chunks/zh-Hans-c2e4b737.js.map +1 -0
  115. package/dist/admin/index.js +6 -0
  116. package/dist/admin/index.js.map +1 -0
  117. package/dist/admin/index.mjs +7 -0
  118. package/dist/admin/index.mjs.map +1 -0
  119. package/package.json +27 -7
  120. package/packup.config.ts +42 -0
  121. package/.eslintrc.js +0 -14
  122. package/strapi-admin.js +0 -3
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ const helperPlugin = require("@strapi/helper-plugin");
3
+ const icons = require("@strapi/icons");
4
+ const __variableDynamicImportRuntimeHelper = (glob, path) => {
5
+ const v = glob[path];
6
+ if (v) {
7
+ return typeof v === "function" ? v() : Promise.resolve(v);
8
+ }
9
+ return new Promise((_, reject) => {
10
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
11
+ });
12
+ };
13
+ const name$1 = "@strapi/plugin-documentation";
14
+ const version = "4.15.2";
15
+ const description = "Create an OpenAPI Document and visualize your API with SWAGGER UI.";
16
+ const repository = {
17
+ type: "git",
18
+ url: "https://github.com/strapi/strapi.git",
19
+ directory: "packages/plugins/documentation"
20
+ };
21
+ const license = "SEE LICENSE IN LICENSE";
22
+ const author = {
23
+ name: "Strapi Solutions SAS",
24
+ email: "hi@strapi.io",
25
+ url: "https://strapi.io"
26
+ };
27
+ const maintainers = [
28
+ {
29
+ name: "Strapi Solutions SAS",
30
+ email: "hi@strapi.io",
31
+ url: "https://strapi.io"
32
+ }
33
+ ];
34
+ const exports$1 = {
35
+ "./strapi-admin": {
36
+ source: "./admin/src/index.js",
37
+ "import": "./dist/admin/index.mjs",
38
+ require: "./dist/admin/index.js",
39
+ "default": "./dist/admin/index.js"
40
+ },
41
+ "./strapi-server": {
42
+ source: "./strapi-server.js",
43
+ require: "./strapi-server.js",
44
+ "default": "./strapi-server.js"
45
+ },
46
+ "./package.json": "./package.json"
47
+ };
48
+ const scripts = {
49
+ build: "pack-up build",
50
+ clean: "run -T rimraf dist",
51
+ lint: "run -T eslint .",
52
+ "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
53
+ "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
54
+ "test:unit": "jest --verbose",
55
+ "test:unit:watch": "run -T jest --watch",
56
+ prepublishOnly: "yarn clean && yarn build",
57
+ watch: "pack-up watch"
58
+ };
59
+ const dependencies = {
60
+ "@strapi/design-system": "1.13.0",
61
+ "@strapi/helper-plugin": "4.15.2",
62
+ "@strapi/icons": "1.13.0",
63
+ "@strapi/utils": "4.15.2",
64
+ bcryptjs: "2.4.3",
65
+ cheerio: "^1.0.0-rc.12",
66
+ formik: "2.4.0",
67
+ "fs-extra": "10.0.0",
68
+ immer: "9.0.19",
69
+ "koa-static": "^5.0.0",
70
+ lodash: "4.17.21",
71
+ "path-to-regexp": "6.2.1",
72
+ "react-helmet": "^6.1.0",
73
+ "react-intl": "6.4.1",
74
+ "react-query": "3.39.3",
75
+ "swagger-ui-dist": "4.19.0",
76
+ yaml: "1.10.2",
77
+ yup: "0.32.9"
78
+ };
79
+ const devDependencies = {
80
+ "@apidevtools/swagger-parser": "^10.1.0",
81
+ "@strapi/pack-up": "4.15.2",
82
+ "@strapi/strapi": "4.15.2",
83
+ "@testing-library/react": "14.0.0",
84
+ "@testing-library/user-event": "14.4.3",
85
+ msw: "1.3.0",
86
+ react: "^18.2.0",
87
+ "react-dom": "^18.2.0",
88
+ "react-router-dom": "5.3.4",
89
+ "styled-components": "5.3.3"
90
+ };
91
+ const peerDependencies = {
92
+ "@strapi/strapi": "^4.0.0",
93
+ react: "^17.0.0 || ^18.0.0",
94
+ "react-dom": "^17.0.0 || ^18.0.0",
95
+ "react-router-dom": "^5.2.0",
96
+ "styled-components": "^5.2.1"
97
+ };
98
+ const engines = {
99
+ node: ">=18.0.0 <=20.x.x",
100
+ npm: ">=6.0.0"
101
+ };
102
+ const strapi = {
103
+ displayName: "Documentation",
104
+ name: "documentation",
105
+ description: "Create an OpenAPI Document and visualize your API with SWAGGER UI.",
106
+ kind: "plugin"
107
+ };
108
+ const gitHead = "bb510893332674e2607f7d335b34dc78c599319a";
109
+ const pluginPkg = {
110
+ name: name$1,
111
+ version,
112
+ description,
113
+ repository,
114
+ license,
115
+ author,
116
+ maintainers,
117
+ exports: exports$1,
118
+ scripts,
119
+ dependencies,
120
+ devDependencies,
121
+ peerDependencies,
122
+ engines,
123
+ strapi,
124
+ gitHead
125
+ };
126
+ const PERMISSIONS = {
127
+ // This permission regards the main component (App) and is used to tell
128
+ // If the plugin link should be displayed in the menu
129
+ // And also if the plugin is accessible. This use case is found when a user types the url of the
130
+ // plugin directly in the browser
131
+ main: [
132
+ { action: "plugin::documentation.read", subject: null },
133
+ { action: "plugin::documentation.settings.regenerate", subject: null },
134
+ { action: "plugin::documentation.settings.update", subject: null }
135
+ ],
136
+ open: [
137
+ { action: "plugin::documentation.read", subject: null },
138
+ { action: "plugin::documentation.settings.regenerate", subject: null }
139
+ ],
140
+ regenerate: [{ action: "plugin::documentation.settings.regenerate", subject: null }],
141
+ update: [{ action: "plugin::documentation.settings.update", subject: null }]
142
+ };
143
+ const pluginId = pluginPkg.name.replace(/^@strapi\/plugin-/i, "");
144
+ const name = pluginPkg.strapi.name;
145
+ const index = {
146
+ register(app) {
147
+ app.addMenuLink({
148
+ to: `/plugins/${pluginId}`,
149
+ icon: icons.Information,
150
+ intlLabel: {
151
+ id: `${pluginId}.plugin.name`,
152
+ defaultMessage: "Documentation"
153
+ },
154
+ permissions: PERMISSIONS.main,
155
+ async Component() {
156
+ const component = await Promise.resolve().then(() => require("./index-305e7973.js"));
157
+ return component;
158
+ }
159
+ });
160
+ app.registerPlugin({
161
+ id: pluginId,
162
+ name
163
+ });
164
+ },
165
+ bootstrap(app) {
166
+ app.addSettingsLink("global", {
167
+ intlLabel: {
168
+ id: `${pluginId}.plugin.name`,
169
+ defaultMessage: "Documentation"
170
+ },
171
+ id: "documentation",
172
+ to: `/settings/${pluginId}`,
173
+ async Component() {
174
+ const component = await Promise.resolve().then(() => require("./index-1a7e4b90.js"));
175
+ return component;
176
+ },
177
+ permissions: PERMISSIONS.main
178
+ });
179
+ },
180
+ async registerTrads({ locales }) {
181
+ const importedTrads = await Promise.all(
182
+ locales.map((locale) => {
183
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => Promise.resolve().then(() => require("./ar-3945178e.js")), "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-053272e2.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-09853142.js")), "./translations/dk.json": () => Promise.resolve().then(() => require("./dk-05d66fde.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-70db76ff.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-497d8815.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-24238f91.js")), "./translations/id.json": () => Promise.resolve().then(() => require("./id-e9ab0af3.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-5255d492.js")), "./translations/ko.json": () => Promise.resolve().then(() => require("./ko-34e7eb26.js")), "./translations/ms.json": () => Promise.resolve().then(() => require("./ms-63bb66e1.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-0319020c.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-2d57c604.js")), "./translations/pt-BR.json": () => Promise.resolve().then(() => require("./pt-BR-cf80ef96.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-b91837bc.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("./ru-91348271.js")), "./translations/sk.json": () => Promise.resolve().then(() => require("./sk-10c03ab1.js")), "./translations/sv.json": () => Promise.resolve().then(() => require("./sv-e5237308.js")), "./translations/th.json": () => Promise.resolve().then(() => require("./th-200a02f1.js")), "./translations/tr.json": () => Promise.resolve().then(() => require("./tr-fd36715f.js")), "./translations/uk.json": () => Promise.resolve().then(() => require("./uk-cb462605.js")), "./translations/vi.json": () => Promise.resolve().then(() => require("./vi-d2e2e100.js")), "./translations/zh-Hans.json": () => Promise.resolve().then(() => require("./zh-Hans-c2e4b737.js")), "./translations/zh.json": () => Promise.resolve().then(() => require("./zh-8da2191f.js")) }), `./translations/${locale}.json`).then(({ default: data }) => {
184
+ return {
185
+ data: helperPlugin.prefixPluginTranslations(data, pluginId),
186
+ locale
187
+ };
188
+ }).catch(() => {
189
+ return {
190
+ data: {},
191
+ locale
192
+ };
193
+ });
194
+ })
195
+ );
196
+ return Promise.resolve(importedTrads);
197
+ }
198
+ };
199
+ exports.PERMISSIONS = PERMISSIONS;
200
+ exports.index = index;
201
+ exports.pluginId = pluginId;
202
+ //# sourceMappingURL=index-9bbaea3a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-9bbaea3a.js","sources":["../../admin/src/constants.js","../../admin/src/pluginId.js","../../admin/src/index.js"],"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","import pluginPkg from '../../package.json';\n\nconst pluginId = pluginPkg.name.replace(/^@strapi\\/plugin-/i, '');\n\nexport default pluginId;\n","// NOTE TO PLUGINS DEVELOPERS:\n// If you modify this file by adding new options to the plugin entry point\n// Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-field-api.md\n// Here's the file: strapi/docs/3.0.0-beta.x/guides/registering-a-field-in-admin.md\n// Also the strapi-generate-plugins/files/admin/src/index.js needs to be updated\n// IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED\nimport { prefixPluginTranslations } from '@strapi/helper-plugin';\nimport { Information } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { PERMISSIONS } from './constants';\nimport pluginId from './pluginId';\n\nconst name = pluginPkg.strapi.name;\n\nexport default {\n register(app) {\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 async Component() {\n const component = await import('./pages/PluginPage');\n\n return component;\n },\n });\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n bootstrap(app) {\n app.addSettingsLink('global', {\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Documentation',\n },\n id: 'documentation',\n to: `/settings/${pluginId}`,\n async Component() {\n const component = await import('./pages/SettingsPage');\n\n return component;\n },\n permissions: PERMISSIONS.main,\n });\n },\n async registerTrads({ locales }) {\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":["Information","prefixPluginTranslations"],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ import { prefixPluginTranslations } from "@strapi/helper-plugin";
2
+ import { Information } from "@strapi/icons";
3
+ const __variableDynamicImportRuntimeHelper = (glob, path) => {
4
+ const v = glob[path];
5
+ if (v) {
6
+ return typeof v === "function" ? v() : Promise.resolve(v);
7
+ }
8
+ return new Promise((_, reject) => {
9
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
10
+ });
11
+ };
12
+ const name$1 = "@strapi/plugin-documentation";
13
+ const version = "4.15.2";
14
+ const description = "Create an OpenAPI Document and visualize your API with SWAGGER UI.";
15
+ const repository = {
16
+ type: "git",
17
+ url: "https://github.com/strapi/strapi.git",
18
+ directory: "packages/plugins/documentation"
19
+ };
20
+ const license = "SEE LICENSE IN LICENSE";
21
+ const author = {
22
+ name: "Strapi Solutions SAS",
23
+ email: "hi@strapi.io",
24
+ url: "https://strapi.io"
25
+ };
26
+ const maintainers = [
27
+ {
28
+ name: "Strapi Solutions SAS",
29
+ email: "hi@strapi.io",
30
+ url: "https://strapi.io"
31
+ }
32
+ ];
33
+ const exports = {
34
+ "./strapi-admin": {
35
+ source: "./admin/src/index.js",
36
+ "import": "./dist/admin/index.mjs",
37
+ require: "./dist/admin/index.js",
38
+ "default": "./dist/admin/index.js"
39
+ },
40
+ "./strapi-server": {
41
+ source: "./strapi-server.js",
42
+ require: "./strapi-server.js",
43
+ "default": "./strapi-server.js"
44
+ },
45
+ "./package.json": "./package.json"
46
+ };
47
+ const scripts = {
48
+ build: "pack-up build",
49
+ clean: "run -T rimraf dist",
50
+ lint: "run -T eslint .",
51
+ "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
52
+ "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
53
+ "test:unit": "jest --verbose",
54
+ "test:unit:watch": "run -T jest --watch",
55
+ prepublishOnly: "yarn clean && yarn build",
56
+ watch: "pack-up watch"
57
+ };
58
+ const dependencies = {
59
+ "@strapi/design-system": "1.13.0",
60
+ "@strapi/helper-plugin": "4.15.2",
61
+ "@strapi/icons": "1.13.0",
62
+ "@strapi/utils": "4.15.2",
63
+ bcryptjs: "2.4.3",
64
+ cheerio: "^1.0.0-rc.12",
65
+ formik: "2.4.0",
66
+ "fs-extra": "10.0.0",
67
+ immer: "9.0.19",
68
+ "koa-static": "^5.0.0",
69
+ lodash: "4.17.21",
70
+ "path-to-regexp": "6.2.1",
71
+ "react-helmet": "^6.1.0",
72
+ "react-intl": "6.4.1",
73
+ "react-query": "3.39.3",
74
+ "swagger-ui-dist": "4.19.0",
75
+ yaml: "1.10.2",
76
+ yup: "0.32.9"
77
+ };
78
+ const devDependencies = {
79
+ "@apidevtools/swagger-parser": "^10.1.0",
80
+ "@strapi/pack-up": "4.15.2",
81
+ "@strapi/strapi": "4.15.2",
82
+ "@testing-library/react": "14.0.0",
83
+ "@testing-library/user-event": "14.4.3",
84
+ msw: "1.3.0",
85
+ react: "^18.2.0",
86
+ "react-dom": "^18.2.0",
87
+ "react-router-dom": "5.3.4",
88
+ "styled-components": "5.3.3"
89
+ };
90
+ const peerDependencies = {
91
+ "@strapi/strapi": "^4.0.0",
92
+ react: "^17.0.0 || ^18.0.0",
93
+ "react-dom": "^17.0.0 || ^18.0.0",
94
+ "react-router-dom": "^5.2.0",
95
+ "styled-components": "^5.2.1"
96
+ };
97
+ const engines = {
98
+ node: ">=18.0.0 <=20.x.x",
99
+ npm: ">=6.0.0"
100
+ };
101
+ const strapi = {
102
+ displayName: "Documentation",
103
+ name: "documentation",
104
+ description: "Create an OpenAPI Document and visualize your API with SWAGGER UI.",
105
+ kind: "plugin"
106
+ };
107
+ const gitHead = "bb510893332674e2607f7d335b34dc78c599319a";
108
+ const pluginPkg = {
109
+ name: name$1,
110
+ version,
111
+ description,
112
+ repository,
113
+ license,
114
+ author,
115
+ maintainers,
116
+ exports,
117
+ scripts,
118
+ dependencies,
119
+ devDependencies,
120
+ peerDependencies,
121
+ engines,
122
+ strapi,
123
+ gitHead
124
+ };
125
+ const PERMISSIONS = {
126
+ // This permission regards the main component (App) and is used to tell
127
+ // If the plugin link should be displayed in the menu
128
+ // And also if the plugin is accessible. This use case is found when a user types the url of the
129
+ // plugin directly in the browser
130
+ main: [
131
+ { action: "plugin::documentation.read", subject: null },
132
+ { action: "plugin::documentation.settings.regenerate", subject: null },
133
+ { action: "plugin::documentation.settings.update", subject: null }
134
+ ],
135
+ open: [
136
+ { action: "plugin::documentation.read", subject: null },
137
+ { action: "plugin::documentation.settings.regenerate", subject: null }
138
+ ],
139
+ regenerate: [{ action: "plugin::documentation.settings.regenerate", subject: null }],
140
+ update: [{ action: "plugin::documentation.settings.update", subject: null }]
141
+ };
142
+ const pluginId = pluginPkg.name.replace(/^@strapi\/plugin-/i, "");
143
+ const name = pluginPkg.strapi.name;
144
+ const index = {
145
+ register(app) {
146
+ app.addMenuLink({
147
+ to: `/plugins/${pluginId}`,
148
+ icon: Information,
149
+ intlLabel: {
150
+ id: `${pluginId}.plugin.name`,
151
+ defaultMessage: "Documentation"
152
+ },
153
+ permissions: PERMISSIONS.main,
154
+ async Component() {
155
+ const component = await import("./index-5d9aa19e.mjs");
156
+ return component;
157
+ }
158
+ });
159
+ app.registerPlugin({
160
+ id: pluginId,
161
+ name
162
+ });
163
+ },
164
+ bootstrap(app) {
165
+ app.addSettingsLink("global", {
166
+ intlLabel: {
167
+ id: `${pluginId}.plugin.name`,
168
+ defaultMessage: "Documentation"
169
+ },
170
+ id: "documentation",
171
+ to: `/settings/${pluginId}`,
172
+ async Component() {
173
+ const component = await import("./index-f1bf5533.mjs");
174
+ return component;
175
+ },
176
+ permissions: PERMISSIONS.main
177
+ });
178
+ },
179
+ async registerTrads({ locales }) {
180
+ const importedTrads = await Promise.all(
181
+ locales.map((locale) => {
182
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-a504b634.mjs"), "./translations/cs.json": () => import("./cs-feb7f04c.mjs"), "./translations/de.json": () => import("./de-a33e1fea.mjs"), "./translations/dk.json": () => import("./dk-ed9fcdcf.mjs"), "./translations/en.json": () => import("./en-96395a32.mjs"), "./translations/es.json": () => import("./es-22de55e3.mjs"), "./translations/fr.json": () => import("./fr-70c3898d.mjs"), "./translations/id.json": () => import("./id-e9e00780.mjs"), "./translations/it.json": () => import("./it-28ef2963.mjs"), "./translations/ko.json": () => import("./ko-a29301ee.mjs"), "./translations/ms.json": () => import("./ms-87588bdb.mjs"), "./translations/nl.json": () => import("./nl-91bcd809.mjs"), "./translations/pl.json": () => import("./pl-7d7fe7b2.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-0024d4be.mjs"), "./translations/pt.json": () => import("./pt-9b66f3d5.mjs"), "./translations/ru.json": () => import("./ru-468d9a30.mjs"), "./translations/sk.json": () => import("./sk-01b7713b.mjs"), "./translations/sv.json": () => import("./sv-7edbe28d.mjs"), "./translations/th.json": () => import("./th-4fcead7f.mjs"), "./translations/tr.json": () => import("./tr-8290d257.mjs"), "./translations/uk.json": () => import("./uk-bf914720.mjs"), "./translations/vi.json": () => import("./vi-ddc8357e.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-6cefb513.mjs"), "./translations/zh.json": () => import("./zh-7b489db7.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
183
+ return {
184
+ data: prefixPluginTranslations(data, pluginId),
185
+ locale
186
+ };
187
+ }).catch(() => {
188
+ return {
189
+ data: {},
190
+ locale
191
+ };
192
+ });
193
+ })
194
+ );
195
+ return Promise.resolve(importedTrads);
196
+ }
197
+ };
198
+ export {
199
+ PERMISSIONS as P,
200
+ index as i,
201
+ pluginId as p
202
+ };
203
+ //# sourceMappingURL=index-b730a8b9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-b730a8b9.mjs","sources":["../../admin/src/constants.js","../../admin/src/pluginId.js","../../admin/src/index.js"],"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","import pluginPkg from '../../package.json';\n\nconst pluginId = pluginPkg.name.replace(/^@strapi\\/plugin-/i, '');\n\nexport default pluginId;\n","// NOTE TO PLUGINS DEVELOPERS:\n// If you modify this file by adding new options to the plugin entry point\n// Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-field-api.md\n// Here's the file: strapi/docs/3.0.0-beta.x/guides/registering-a-field-in-admin.md\n// Also the strapi-generate-plugins/files/admin/src/index.js needs to be updated\n// IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED\nimport { prefixPluginTranslations } from '@strapi/helper-plugin';\nimport { Information } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { PERMISSIONS } from './constants';\nimport pluginId from './pluginId';\n\nconst name = pluginPkg.strapi.name;\n\nexport default {\n register(app) {\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 async Component() {\n const component = await import('./pages/PluginPage');\n\n return component;\n },\n });\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n bootstrap(app) {\n app.addSettingsLink('global', {\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Documentation',\n },\n id: 'documentation',\n to: `/settings/${pluginId}`,\n async Component() {\n const component = await import('./pages/SettingsPage');\n\n return component;\n },\n permissions: PERMISSIONS.main,\n });\n },\n async registerTrads({ locales }) {\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":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Main, HeaderLayout, Button, ContentLayout, Box, Flex, Typography, Grid, GridItem, ToggleInput, TextInput, FieldAction } from "@strapi/design-system";
4
+ import { translatedErrors, useFocusWhenNavigate, useRBAC, LoadingIndicatorPage, Form } from "@strapi/helper-plugin";
5
+ import { Check, Eye, EyeStriked } from "@strapi/icons";
6
+ import { Formik } from "formik";
7
+ import { useIntl } from "react-intl";
8
+ import styled from "styled-components";
9
+ import * as yup from "yup";
10
+ import { P as PERMISSIONS } from "./index-b730a8b9.mjs";
11
+ import { u as useDocumentation, g as getTrad } from "./useDocumentation-f6d239a2.mjs";
12
+ import "react-query";
13
+ const schema = yup.object().shape({
14
+ restrictedAccess: yup.boolean(),
15
+ password: yup.string().when("restrictedAccess", (value, initSchema) => {
16
+ return value ? initSchema.required(translatedErrors.required) : initSchema;
17
+ })
18
+ });
19
+ const SettingsPage = () => {
20
+ useFocusWhenNavigate();
21
+ const { formatMessage } = useIntl();
22
+ const { submit, data, isLoading } = useDocumentation();
23
+ const [passwordShown, setPasswordShown] = useState(false);
24
+ const { allowedActions } = useRBAC(PERMISSIONS);
25
+ const handleUpdateSettingsSubmit = (body) => {
26
+ submit.mutate({
27
+ prefix: data?.prefix,
28
+ body
29
+ });
30
+ };
31
+ return /* @__PURE__ */ jsx(Main, { children: isLoading ? /* @__PURE__ */ jsx(LoadingIndicatorPage, { children: "Plugin settings are loading" }) : /* @__PURE__ */ jsx(
32
+ Formik,
33
+ {
34
+ initialValues: {
35
+ restrictedAccess: data?.documentationAccess.restrictedAccess || false,
36
+ password: ""
37
+ },
38
+ onSubmit: handleUpdateSettingsSubmit,
39
+ validationSchema: schema,
40
+ children: ({
41
+ handleSubmit,
42
+ values,
43
+ handleChange,
44
+ errors,
45
+ setFieldTouched,
46
+ setFieldValue,
47
+ dirty
48
+ }) => {
49
+ return /* @__PURE__ */ jsxs(Form, { noValidate: true, onSubmit: handleSubmit, children: [
50
+ /* @__PURE__ */ jsx(
51
+ HeaderLayout,
52
+ {
53
+ title: formatMessage({
54
+ id: getTrad("plugin.name"),
55
+ defaultMessage: "Documentation"
56
+ }),
57
+ subtitle: formatMessage({
58
+ id: getTrad("pages.SettingsPage.header.description"),
59
+ defaultMessage: "Configure the documentation plugin"
60
+ }),
61
+ primaryAction: /* @__PURE__ */ jsx(
62
+ Button,
63
+ {
64
+ type: "submit",
65
+ startIcon: /* @__PURE__ */ jsx(Check, {}),
66
+ disabled: !dirty && allowedActions.canUpdate,
67
+ children: formatMessage({
68
+ id: getTrad("pages.SettingsPage.Button.save"),
69
+ defaultMessage: "Save"
70
+ })
71
+ }
72
+ )
73
+ }
74
+ ),
75
+ /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(
76
+ Box,
77
+ {
78
+ background: "neutral0",
79
+ hasRadius: true,
80
+ shadow: "filterShadow",
81
+ paddingTop: 6,
82
+ paddingBottom: 6,
83
+ paddingLeft: 7,
84
+ paddingRight: 7,
85
+ children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
86
+ /* @__PURE__ */ jsx(Typography, { variant: "delta", as: "h2", children: formatMessage({
87
+ id: "global.settings",
88
+ defaultMessage: "Settings"
89
+ }) }),
90
+ /* @__PURE__ */ jsxs(Grid, { gap: 4, children: [
91
+ /* @__PURE__ */ jsx(GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsx(
92
+ ToggleInput,
93
+ {
94
+ name: "restrictedAccess",
95
+ label: formatMessage({
96
+ id: getTrad("pages.SettingsPage.toggle.label"),
97
+ defaultMessage: "Restricted Access"
98
+ }),
99
+ hint: formatMessage({
100
+ id: getTrad("pages.SettingsPage.toggle.hint"),
101
+ defaultMessage: "Make the documentation endpoint private"
102
+ }),
103
+ checked: values.restrictedAccess,
104
+ onChange: () => {
105
+ if (values.restrictedAccess === true) {
106
+ setFieldValue("password", "", false);
107
+ setFieldTouched("password", false, false);
108
+ }
109
+ setFieldValue("restrictedAccess", !values.restrictedAccess, false);
110
+ },
111
+ onLabel: "On",
112
+ offLabel: "Off"
113
+ }
114
+ ) }),
115
+ values.restrictedAccess && /* @__PURE__ */ jsx(GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsx(
116
+ TextInput,
117
+ {
118
+ label: formatMessage({
119
+ id: "global.password",
120
+ defaultMessage: "Password"
121
+ }),
122
+ name: "password",
123
+ placeholder: "**********",
124
+ type: passwordShown ? "text" : "password",
125
+ value: values.password,
126
+ onChange: handleChange,
127
+ error: errors.password ? formatMessage({
128
+ id: errors.password,
129
+ defaultMessage: "Invalid value"
130
+ }) : null,
131
+ endAction: /* @__PURE__ */ jsx(
132
+ FieldActionWrapper,
133
+ {
134
+ onClick: (e) => {
135
+ e.stopPropagation();
136
+ setPasswordShown((prev) => !prev);
137
+ },
138
+ label: formatMessage(
139
+ passwordShown ? {
140
+ id: "Auth.form.password.show-password",
141
+ defaultMessage: "Show password"
142
+ } : {
143
+ id: "Auth.form.password.hide-password",
144
+ defaultMessage: "Hide password"
145
+ }
146
+ ),
147
+ children: passwordShown ? /* @__PURE__ */ jsx(Eye, {}) : /* @__PURE__ */ jsx(EyeStriked, {})
148
+ }
149
+ )
150
+ }
151
+ ) })
152
+ ] })
153
+ ] })
154
+ }
155
+ ) })
156
+ ] });
157
+ }
158
+ }
159
+ ) });
160
+ };
161
+ const FieldActionWrapper = styled(FieldAction)`
162
+ svg {
163
+ height: 1rem;
164
+ width: 1rem;
165
+ path {
166
+ fill: ${({ theme }) => theme.colors.neutral600};
167
+ }
168
+ }
169
+ `;
170
+ export {
171
+ SettingsPage as default
172
+ };
173
+ //# sourceMappingURL=index-f1bf5533.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-f1bf5533.mjs","sources":["../../admin/src/pages/SettingsPage/index.js"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n TextInput,\n ToggleInput,\n Typography,\n FieldAction,\n} from '@strapi/design-system';\nimport {\n Form,\n LoadingIndicatorPage,\n useFocusWhenNavigate,\n translatedErrors,\n useRBAC,\n} from '@strapi/helper-plugin';\n// Strapi Icons\nimport { Check, Eye as Show, EyeStriked as Hide } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { PERMISSIONS } from '../../constants';\nimport { useDocumentation } from '../../hooks/useDocumentation';\nimport { getTrad } from '../../utils';\n\nconst schema = yup.object().shape({\n restrictedAccess: yup.boolean(),\n password: yup.string().when('restrictedAccess', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema;\n }),\n});\n\nconst SettingsPage = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { submit, data, isLoading } = useDocumentation();\n const [passwordShown, setPasswordShown] = useState(false);\n const { allowedActions } = useRBAC(PERMISSIONS);\n\n const handleUpdateSettingsSubmit = (body) => {\n submit.mutate({\n prefix: data?.prefix,\n body,\n });\n };\n\n return (\n <Main>\n {isLoading ? (\n <LoadingIndicatorPage>Plugin settings are loading</LoadingIndicatorPage>\n ) : (\n <Formik\n initialValues={{\n restrictedAccess: data?.documentationAccess.restrictedAccess || false,\n password: '',\n }}\n onSubmit={handleUpdateSettingsSubmit}\n validationSchema={schema}\n >\n {({\n handleSubmit,\n values,\n handleChange,\n errors,\n setFieldTouched,\n setFieldValue,\n dirty,\n }) => {\n return (\n <Form noValidate onSubmit={handleSubmit}>\n <HeaderLayout\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: 'Documentation',\n })}\n subtitle={formatMessage({\n id: getTrad('pages.SettingsPage.header.description'),\n defaultMessage: 'Configure the documentation plugin',\n })}\n primaryAction={\n <Button\n type=\"submit\"\n startIcon={<Check />}\n disabled={!dirty && allowedActions.canUpdate}\n >\n {formatMessage({\n id: getTrad('pages.SettingsPage.Button.save'),\n defaultMessage: 'Save',\n })}\n </Button>\n }\n />\n <ContentLayout>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n name=\"restrictedAccess\"\n label={formatMessage({\n id: getTrad('pages.SettingsPage.toggle.label'),\n defaultMessage: 'Restricted Access',\n })}\n hint={formatMessage({\n id: getTrad('pages.SettingsPage.toggle.hint'),\n defaultMessage: 'Make the documentation endpoint private',\n })}\n checked={values.restrictedAccess}\n onChange={() => {\n if (values.restrictedAccess === true) {\n setFieldValue('password', '', false);\n setFieldTouched('password', false, false);\n }\n\n setFieldValue('restrictedAccess', !values.restrictedAccess, false);\n }}\n onLabel=\"On\"\n offLabel=\"Off\"\n />\n </GridItem>\n {values.restrictedAccess && (\n <GridItem col={6} s={12}>\n <TextInput\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n name=\"password\"\n placeholder=\"**********\"\n type={passwordShown ? 'text' : 'password'}\n value={values.password}\n onChange={handleChange}\n error={\n errors.password\n ? formatMessage({\n id: errors.password,\n defaultMessage: 'Invalid value',\n })\n : null\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.stopPropagation();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Show /> : <Hide />}\n </FieldActionWrapper>\n }\n />\n </GridItem>\n )}\n </Grid>\n </Flex>\n </Box>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n )}\n </Main>\n );\n};\n\nconst FieldActionWrapper = styled(FieldAction)`\n svg {\n height: 1rem;\n width: 1rem;\n path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\nexport default SettingsPage;\n"],"names":["Show","Hide"],"mappings":"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"}