@strapi/strapi 5.8.1 → 5.10.0

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 (293) hide show
  1. package/dist/admin-test.js +11 -8
  2. package/dist/admin-test.js.map +1 -1
  3. package/dist/admin-test.mjs +1 -1
  4. package/dist/admin-test.mjs.map +1 -1
  5. package/dist/admin.js +36 -42
  6. package/dist/admin.js.map +1 -1
  7. package/dist/admin.mjs +28 -35
  8. package/dist/admin.mjs.map +1 -1
  9. package/dist/chunks/aliases-Ca20Yntz.js +80 -0
  10. package/dist/chunks/aliases-Ca20Yntz.js.map +1 -0
  11. package/dist/chunks/aliases-DQ51KexN.mjs +76 -0
  12. package/dist/chunks/aliases-DQ51KexN.mjs.map +1 -0
  13. package/dist/chunks/build-3I6A92J1.js +59 -0
  14. package/dist/chunks/build-3I6A92J1.js.map +1 -0
  15. package/dist/chunks/build-BqigoS45.mjs +85 -0
  16. package/dist/chunks/build-BqigoS45.mjs.map +1 -0
  17. package/dist/chunks/build-CWUlYFQo.js +87 -0
  18. package/dist/chunks/build-CWUlYFQo.js.map +1 -0
  19. package/dist/chunks/build-gBR43Dth.mjs +57 -0
  20. package/dist/chunks/build-gBR43Dth.mjs.map +1 -0
  21. package/dist/chunks/config-5tFWkbOi.js +154 -0
  22. package/dist/chunks/config-5tFWkbOi.js.map +1 -0
  23. package/dist/chunks/config-BSlsDIVc.mjs +243 -0
  24. package/dist/chunks/config-BSlsDIVc.mjs.map +1 -0
  25. package/dist/chunks/config-CLeubzgx.mjs +150 -0
  26. package/dist/chunks/config-CLeubzgx.mjs.map +1 -0
  27. package/dist/chunks/config-CQ94iNYq.js +247 -0
  28. package/dist/chunks/config-CQ94iNYq.js.map +1 -0
  29. package/dist/chunks/index-DtHH3PFG.mjs +3160 -0
  30. package/dist/chunks/index-DtHH3PFG.mjs.map +1 -0
  31. package/dist/chunks/index-kv_K5f7_.js +3185 -0
  32. package/dist/chunks/index-kv_K5f7_.js.map +1 -0
  33. package/dist/chunks/watch-B7qfL21s.js +146 -0
  34. package/dist/chunks/watch-B7qfL21s.js.map +1 -0
  35. package/dist/chunks/watch-BBDpuCFC.js +133 -0
  36. package/dist/chunks/watch-BBDpuCFC.js.map +1 -0
  37. package/dist/chunks/watch-Bhd-75O5.mjs +131 -0
  38. package/dist/chunks/watch-Bhd-75O5.mjs.map +1 -0
  39. package/dist/chunks/watch-CJr1UoWF.mjs +144 -0
  40. package/dist/chunks/watch-CJr1UoWF.mjs.map +1 -0
  41. package/dist/cli/commands/plugin/init/files/typescript.d.ts +20 -7
  42. package/dist/cli/commands/plugin/init/files/typescript.d.ts.map +1 -1
  43. package/dist/cli/commands/version.d.ts.map +1 -1
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli.js +50 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/cli.mjs +43 -0
  48. package/dist/cli.mjs.map +1 -0
  49. package/dist/index.js +11 -8
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +1 -1
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/node/core/errors.d.ts.map +1 -1
  54. package/dist/node/create-build-context.d.ts +1 -1
  55. package/dist/node/create-build-context.d.ts.map +1 -1
  56. package/dist/node/vite/watch.d.ts.map +1 -1
  57. package/package.json +26 -26
  58. package/dist/cli/commands/admin/create-user.js +0 -91
  59. package/dist/cli/commands/admin/create-user.js.map +0 -1
  60. package/dist/cli/commands/admin/create-user.mjs +0 -88
  61. package/dist/cli/commands/admin/create-user.mjs.map +0 -1
  62. package/dist/cli/commands/admin/reset-user-password.js +0 -47
  63. package/dist/cli/commands/admin/reset-user-password.js.map +0 -1
  64. package/dist/cli/commands/admin/reset-user-password.mjs +0 -44
  65. package/dist/cli/commands/admin/reset-user-password.mjs.map +0 -1
  66. package/dist/cli/commands/build.js +0 -24
  67. package/dist/cli/commands/build.js.map +0 -1
  68. package/dist/cli/commands/build.mjs +0 -24
  69. package/dist/cli/commands/build.mjs.map +0 -1
  70. package/dist/cli/commands/components/list.js +0 -27
  71. package/dist/cli/commands/components/list.js.map +0 -1
  72. package/dist/cli/commands/components/list.mjs +0 -24
  73. package/dist/cli/commands/components/list.mjs.map +0 -1
  74. package/dist/cli/commands/configuration/dump.js +0 -43
  75. package/dist/cli/commands/configuration/dump.js.map +0 -1
  76. package/dist/cli/commands/configuration/dump.mjs +0 -41
  77. package/dist/cli/commands/configuration/dump.mjs.map +0 -1
  78. package/dist/cli/commands/configuration/restore.js +0 -142
  79. package/dist/cli/commands/configuration/restore.js.map +0 -1
  80. package/dist/cli/commands/configuration/restore.mjs +0 -139
  81. package/dist/cli/commands/configuration/restore.mjs.map +0 -1
  82. package/dist/cli/commands/console.js +0 -29
  83. package/dist/cli/commands/console.js.map +0 -1
  84. package/dist/cli/commands/console.mjs +0 -27
  85. package/dist/cli/commands/console.mjs.map +0 -1
  86. package/dist/cli/commands/content-types/list.js +0 -27
  87. package/dist/cli/commands/content-types/list.js.map +0 -1
  88. package/dist/cli/commands/content-types/list.mjs +0 -24
  89. package/dist/cli/commands/content-types/list.mjs.map +0 -1
  90. package/dist/cli/commands/controllers/list.js +0 -27
  91. package/dist/cli/commands/controllers/list.js.map +0 -1
  92. package/dist/cli/commands/controllers/list.mjs +0 -24
  93. package/dist/cli/commands/controllers/list.mjs.map +0 -1
  94. package/dist/cli/commands/develop.js +0 -29
  95. package/dist/cli/commands/develop.js.map +0 -1
  96. package/dist/cli/commands/develop.mjs +0 -27
  97. package/dist/cli/commands/develop.mjs.map +0 -1
  98. package/dist/cli/commands/export/action.js +0 -118
  99. package/dist/cli/commands/export/action.js.map +0 -1
  100. package/dist/cli/commands/export/action.mjs +0 -116
  101. package/dist/cli/commands/export/action.mjs.map +0 -1
  102. package/dist/cli/commands/export/command.js +0 -23
  103. package/dist/cli/commands/export/command.js.map +0 -1
  104. package/dist/cli/commands/export/command.mjs +0 -24
  105. package/dist/cli/commands/export/command.mjs.map +0 -1
  106. package/dist/cli/commands/generate.js +0 -35
  107. package/dist/cli/commands/generate.js.map +0 -1
  108. package/dist/cli/commands/generate.mjs +0 -13
  109. package/dist/cli/commands/generate.mjs.map +0 -1
  110. package/dist/cli/commands/hooks/list.js +0 -27
  111. package/dist/cli/commands/hooks/list.js.map +0 -1
  112. package/dist/cli/commands/hooks/list.mjs +0 -24
  113. package/dist/cli/commands/hooks/list.mjs.map +0 -1
  114. package/dist/cli/commands/import/action.js +0 -106
  115. package/dist/cli/commands/import/action.js.map +0 -1
  116. package/dist/cli/commands/import/action.mjs +0 -105
  117. package/dist/cli/commands/import/action.mjs.map +0 -1
  118. package/dist/cli/commands/import/command.js +0 -70
  119. package/dist/cli/commands/import/command.js.map +0 -1
  120. package/dist/cli/commands/import/command.mjs +0 -68
  121. package/dist/cli/commands/import/command.mjs.map +0 -1
  122. package/dist/cli/commands/index.js +0 -63
  123. package/dist/cli/commands/index.js.map +0 -1
  124. package/dist/cli/commands/index.mjs +0 -63
  125. package/dist/cli/commands/index.mjs.map +0 -1
  126. package/dist/cli/commands/middlewares/list.js +0 -27
  127. package/dist/cli/commands/middlewares/list.js.map +0 -1
  128. package/dist/cli/commands/middlewares/list.mjs +0 -24
  129. package/dist/cli/commands/middlewares/list.mjs.map +0 -1
  130. package/dist/cli/commands/policies/list.js +0 -27
  131. package/dist/cli/commands/policies/list.js.map +0 -1
  132. package/dist/cli/commands/policies/list.mjs +0 -24
  133. package/dist/cli/commands/policies/list.mjs.map +0 -1
  134. package/dist/cli/commands/report.js +0 -35
  135. package/dist/cli/commands/report.js.map +0 -1
  136. package/dist/cli/commands/report.mjs +0 -35
  137. package/dist/cli/commands/report.mjs.map +0 -1
  138. package/dist/cli/commands/routes/list.js +0 -31
  139. package/dist/cli/commands/routes/list.js.map +0 -1
  140. package/dist/cli/commands/routes/list.mjs +0 -28
  141. package/dist/cli/commands/routes/list.mjs.map +0 -1
  142. package/dist/cli/commands/services/list.js +0 -27
  143. package/dist/cli/commands/services/list.js.map +0 -1
  144. package/dist/cli/commands/services/list.mjs +0 -24
  145. package/dist/cli/commands/services/list.mjs.map +0 -1
  146. package/dist/cli/commands/start.js +0 -27
  147. package/dist/cli/commands/start.js.map +0 -1
  148. package/dist/cli/commands/start.mjs +0 -24
  149. package/dist/cli/commands/start.mjs.map +0 -1
  150. package/dist/cli/commands/telemetry/disable.js +0 -70
  151. package/dist/cli/commands/telemetry/disable.js.map +0 -1
  152. package/dist/cli/commands/telemetry/disable.mjs +0 -67
  153. package/dist/cli/commands/telemetry/disable.mjs.map +0 -1
  154. package/dist/cli/commands/telemetry/enable.js +0 -89
  155. package/dist/cli/commands/telemetry/enable.js.map +0 -1
  156. package/dist/cli/commands/telemetry/enable.mjs +0 -86
  157. package/dist/cli/commands/telemetry/enable.mjs.map +0 -1
  158. package/dist/cli/commands/templates/generate.js +0 -11
  159. package/dist/cli/commands/templates/generate.js.map +0 -1
  160. package/dist/cli/commands/templates/generate.mjs +0 -11
  161. package/dist/cli/commands/templates/generate.mjs.map +0 -1
  162. package/dist/cli/commands/transfer/action.js +0 -130
  163. package/dist/cli/commands/transfer/action.js.map +0 -1
  164. package/dist/cli/commands/transfer/action.mjs +0 -131
  165. package/dist/cli/commands/transfer/action.mjs.map +0 -1
  166. package/dist/cli/commands/transfer/command.js +0 -85
  167. package/dist/cli/commands/transfer/command.js.map +0 -1
  168. package/dist/cli/commands/transfer/command.mjs +0 -84
  169. package/dist/cli/commands/transfer/command.mjs.map +0 -1
  170. package/dist/cli/commands/ts/generate-types.js +0 -36
  171. package/dist/cli/commands/ts/generate-types.js.map +0 -1
  172. package/dist/cli/commands/ts/generate-types.mjs +0 -34
  173. package/dist/cli/commands/ts/generate-types.mjs.map +0 -1
  174. package/dist/cli/commands/version.js +0 -13
  175. package/dist/cli/commands/version.js.map +0 -1
  176. package/dist/cli/commands/version.mjs +0 -13
  177. package/dist/cli/commands/version.mjs.map +0 -1
  178. package/dist/cli/index.js +0 -79
  179. package/dist/cli/index.js.map +0 -1
  180. package/dist/cli/index.mjs +0 -79
  181. package/dist/cli/index.mjs.map +0 -1
  182. package/dist/cli/utils/commander.js +0 -111
  183. package/dist/cli/utils/commander.js.map +0 -1
  184. package/dist/cli/utils/commander.mjs +0 -108
  185. package/dist/cli/utils/commander.mjs.map +0 -1
  186. package/dist/cli/utils/data-transfer.js +0 -354
  187. package/dist/cli/utils/data-transfer.js.map +0 -1
  188. package/dist/cli/utils/data-transfer.mjs +0 -350
  189. package/dist/cli/utils/data-transfer.mjs.map +0 -1
  190. package/dist/cli/utils/helpers.js +0 -102
  191. package/dist/cli/utils/helpers.js.map +0 -1
  192. package/dist/cli/utils/helpers.mjs +0 -100
  193. package/dist/cli/utils/helpers.mjs.map +0 -1
  194. package/dist/cli/utils/logger.js +0 -137
  195. package/dist/cli/utils/logger.js.map +0 -1
  196. package/dist/cli/utils/logger.mjs +0 -116
  197. package/dist/cli/utils/logger.mjs.map +0 -1
  198. package/dist/cli/utils/telemetry.js +0 -22
  199. package/dist/cli/utils/telemetry.js.map +0 -1
  200. package/dist/cli/utils/telemetry.mjs +0 -22
  201. package/dist/cli/utils/telemetry.mjs.map +0 -1
  202. package/dist/cli/utils/tsconfig.js +0 -26
  203. package/dist/cli/utils/tsconfig.js.map +0 -1
  204. package/dist/cli/utils/tsconfig.mjs +0 -23
  205. package/dist/cli/utils/tsconfig.mjs.map +0 -1
  206. package/dist/node/build.js +0 -76
  207. package/dist/node/build.js.map +0 -1
  208. package/dist/node/build.mjs +0 -58
  209. package/dist/node/build.mjs.map +0 -1
  210. package/dist/node/core/admin-customisations.js +0 -24
  211. package/dist/node/core/admin-customisations.js.map +0 -1
  212. package/dist/node/core/admin-customisations.mjs +0 -22
  213. package/dist/node/core/admin-customisations.mjs.map +0 -1
  214. package/dist/node/core/aliases.js +0 -33
  215. package/dist/node/core/aliases.js.map +0 -1
  216. package/dist/node/core/aliases.mjs +0 -31
  217. package/dist/node/core/aliases.mjs.map +0 -1
  218. package/dist/node/core/config.js +0 -18
  219. package/dist/node/core/config.js.map +0 -1
  220. package/dist/node/core/config.mjs +0 -16
  221. package/dist/node/core/config.mjs.map +0 -1
  222. package/dist/node/core/dependencies.js +0 -163
  223. package/dist/node/core/dependencies.js.map +0 -1
  224. package/dist/node/core/dependencies.mjs +0 -155
  225. package/dist/node/core/dependencies.mjs.map +0 -1
  226. package/dist/node/core/env.js +0 -26
  227. package/dist/node/core/env.js.map +0 -1
  228. package/dist/node/core/env.mjs +0 -23
  229. package/dist/node/core/env.mjs.map +0 -1
  230. package/dist/node/core/errors.js +0 -33
  231. package/dist/node/core/errors.js.map +0 -1
  232. package/dist/node/core/errors.mjs +0 -29
  233. package/dist/node/core/errors.mjs.map +0 -1
  234. package/dist/node/core/files.js +0 -45
  235. package/dist/node/core/files.js.map +0 -1
  236. package/dist/node/core/files.mjs +0 -43
  237. package/dist/node/core/files.mjs.map +0 -1
  238. package/dist/node/core/managers.js +0 -17
  239. package/dist/node/core/managers.js.map +0 -1
  240. package/dist/node/core/managers.mjs +0 -17
  241. package/dist/node/core/managers.mjs.map +0 -1
  242. package/dist/node/core/monorepo.js +0 -23
  243. package/dist/node/core/monorepo.js.map +0 -1
  244. package/dist/node/core/monorepo.mjs +0 -20
  245. package/dist/node/core/monorepo.mjs.map +0 -1
  246. package/dist/node/core/plugins.js +0 -116
  247. package/dist/node/core/plugins.js.map +0 -1
  248. package/dist/node/core/plugins.mjs +0 -111
  249. package/dist/node/core/plugins.mjs.map +0 -1
  250. package/dist/node/core/timer.js +0 -27
  251. package/dist/node/core/timer.js.map +0 -1
  252. package/dist/node/core/timer.mjs +0 -27
  253. package/dist/node/core/timer.mjs.map +0 -1
  254. package/dist/node/create-build-context.js +0 -101
  255. package/dist/node/create-build-context.js.map +0 -1
  256. package/dist/node/create-build-context.mjs +0 -96
  257. package/dist/node/create-build-context.mjs.map +0 -1
  258. package/dist/node/develop.js +0 -275
  259. package/dist/node/develop.js.map +0 -1
  260. package/dist/node/develop.mjs +0 -252
  261. package/dist/node/develop.mjs.map +0 -1
  262. package/dist/node/staticFiles.js +0 -102
  263. package/dist/node/staticFiles.js.map +0 -1
  264. package/dist/node/staticFiles.mjs +0 -76
  265. package/dist/node/staticFiles.mjs.map +0 -1
  266. package/dist/node/vite/build.js +0 -34
  267. package/dist/node/vite/build.js.map +0 -1
  268. package/dist/node/vite/build.mjs +0 -12
  269. package/dist/node/vite/build.mjs.map +0 -1
  270. package/dist/node/vite/config.js +0 -106
  271. package/dist/node/vite/config.js.map +0 -1
  272. package/dist/node/vite/config.mjs +0 -103
  273. package/dist/node/vite/config.mjs.map +0 -1
  274. package/dist/node/vite/plugins.js +0 -43
  275. package/dist/node/vite/plugins.js.map +0 -1
  276. package/dist/node/vite/plugins.mjs +0 -43
  277. package/dist/node/vite/plugins.mjs.map +0 -1
  278. package/dist/node/vite/watch.js +0 -103
  279. package/dist/node/vite/watch.js.map +0 -1
  280. package/dist/node/vite/watch.mjs +0 -77
  281. package/dist/node/vite/watch.mjs.map +0 -1
  282. package/dist/node/webpack/build.js +0 -41
  283. package/dist/node/webpack/build.js.map +0 -1
  284. package/dist/node/webpack/build.mjs +0 -39
  285. package/dist/node/webpack/build.mjs.map +0 -1
  286. package/dist/node/webpack/config.js +0 -259
  287. package/dist/node/webpack/config.js.map +0 -1
  288. package/dist/node/webpack/config.mjs +0 -228
  289. package/dist/node/webpack/config.mjs.map +0 -1
  290. package/dist/node/webpack/watch.js +0 -95
  291. package/dist/node/webpack/watch.js.map +0 -1
  292. package/dist/node/webpack/watch.mjs +0 -90
  293. package/dist/node/webpack/watch.mjs.map +0 -1
@@ -1,86 +0,0 @@
1
- import { resolve } from "path";
2
- import { randomUUID } from "crypto";
3
- import fse from "fs-extra";
4
- import chalk from "chalk";
5
- import { createCommand } from "commander";
6
- import { runAction } from "../../utils/helpers.mjs";
7
- import { sendEvent } from "../../utils/telemetry.mjs";
8
- const readPackageJSON = async (path) => {
9
- try {
10
- const packageObj = await fse.readJson(path);
11
- return packageObj;
12
- } catch (err) {
13
- if (err instanceof Error) {
14
- console.error(`${chalk.red("Error")}: ${err.message}`);
15
- } else {
16
- throw err;
17
- }
18
- }
19
- };
20
- const writePackageJSON = async (path, file, spacing) => {
21
- try {
22
- await fse.writeJson(path, file, { spaces: spacing });
23
- return true;
24
- } catch (err) {
25
- if (err instanceof Error) {
26
- console.error(`${chalk.red("Error")}: ${err.message}`);
27
- console.log(
28
- `${chalk.yellow(
29
- "Warning"
30
- )}: There has been an error, please set "telemetryDisabled": false in the "strapi" object of your package.json manually.`
31
- );
32
- return false;
33
- }
34
- throw err;
35
- }
36
- };
37
- const generateNewPackageJSON = (packageObj) => {
38
- if (!packageObj.strapi) {
39
- return {
40
- ...packageObj,
41
- strapi: {
42
- uuid: randomUUID(),
43
- telemetryDisabled: false
44
- }
45
- };
46
- }
47
- return {
48
- ...packageObj,
49
- strapi: {
50
- ...packageObj.strapi,
51
- uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : randomUUID(),
52
- telemetryDisabled: false
53
- }
54
- };
55
- };
56
- const action = async () => {
57
- const packageJSONPath = resolve(process.cwd(), "package.json");
58
- const exists = await fse.pathExists(packageJSONPath);
59
- if (!exists) {
60
- console.log(`${chalk.yellow("Warning")}: could not find package.json`);
61
- process.exit(0);
62
- }
63
- const packageObj = await readPackageJSON(packageJSONPath);
64
- if (packageObj.strapi && packageObj.strapi.uuid) {
65
- if (packageObj.strapi.telemetryDisabled === false) {
66
- console.log(`${chalk.yellow("Warning:")} telemetry is already enabled`);
67
- process.exit(0);
68
- }
69
- }
70
- const updatedPackageJSON = generateNewPackageJSON(packageObj);
71
- const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);
72
- if (!write) {
73
- process.exit(0);
74
- }
75
- await sendEvent("didOptInTelemetry", updatedPackageJSON.strapi.uuid);
76
- console.log(`${chalk.green("Successfully opted into and enabled Strapi telemetry")}`);
77
- process.exit(0);
78
- };
79
- const command = () => {
80
- return createCommand("telemetry:enable").description("Enable anonymous telemetry and metadata sending to Strapi analytics").action(runAction("telemetry:enable", action));
81
- };
82
- export {
83
- action,
84
- command
85
- };
86
- //# sourceMappingURL=enable.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enable.mjs","sources":["../../../../src/cli/commands/telemetry/enable.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { randomUUID } from 'crypto';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\ntype PackageJson = {\n strapi?: {\n uuid?: string;\n telemetryDisabled?: boolean;\n };\n};\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n return packageObj;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n } else {\n throw err;\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": false in the \"strapi\" object of your package.json manually.`\n );\n\n return false;\n }\n\n throw err;\n }\n};\n\nconst generateNewPackageJSON = (packageObj: PackageJson) => {\n if (!packageObj.strapi) {\n return {\n ...packageObj,\n strapi: {\n uuid: randomUUID(),\n telemetryDisabled: false,\n },\n };\n }\n return {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : randomUUID(),\n telemetryDisabled: false,\n },\n };\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const packageObj = await readPackageJSON(packageJSONPath);\n\n if (packageObj.strapi && packageObj.strapi.uuid) {\n if (packageObj.strapi.telemetryDisabled === false) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already enabled`);\n process.exit(0);\n }\n }\n\n const updatedPackageJSON = generateNewPackageJSON(packageObj);\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n process.exit(0);\n }\n\n await sendEvent('didOptInTelemetry', updatedPackageJSON.strapi.uuid);\n console.log(`${chalk.green('Successfully opted into and enabled Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:enable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:enable')\n .description('Enable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:enable', action));\n};\n\nexport { action, command };\n"],"names":[],"mappings":";;;;;;;AAiBA,MAAM,kBAAkB,OAAO,SAAiB;AAC1C,MAAA;AACF,UAAM,aAAa,MAAM,IAAI,SAAS,IAAI;AACnC,WAAA;AAAA,WACA,KAAK;AACZ,QAAI,eAAe,OAAO;AAChB,cAAA,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE;AAAA,IAAA,OAChD;AACC,YAAA;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,MAAM,mBAAmB,OAAO,MAAc,MAAc,YAAoB;AAC1E,MAAA;AACF,UAAM,IAAI,UAAU,MAAM,MAAM,EAAE,QAAQ,SAAS;AAC5C,WAAA;AAAA,WACA,KAAK;AACZ,QAAI,eAAe,OAAO;AAChB,cAAA,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE;AAC7C,cAAA;AAAA,QACN,GAAG,MAAM;AAAA,UACP;AAAA,QAAA,CACD;AAAA,MACH;AAEO,aAAA;AAAA,IAAA;AAGH,UAAA;AAAA,EAAA;AAEV;AAEA,MAAM,yBAAyB,CAAC,eAA4B;AACtD,MAAA,CAAC,WAAW,QAAQ;AACf,WAAA;AAAA,MACL,GAAG;AAAA,MACH,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,mBAAmB;AAAA,MAAA;AAAA,IAEvB;AAAA,EAAA;AAEK,SAAA;AAAA,IACL,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,GAAG,WAAW;AAAA,MACd,MAAM,WAAW,OAAO,OAAO,WAAW,OAAO,OAAO,WAAW;AAAA,MACnE,mBAAmB;AAAA,IAAA;AAAA,EAEvB;AACF;AAEA,MAAM,SAAS,YAAY;AACzB,QAAM,kBAAkB,QAAQ,QAAQ,IAAA,GAAO,cAAc;AAC7D,QAAM,SAAS,MAAM,IAAI,WAAW,eAAe;AAEnD,MAAI,CAAC,QAAQ;AACX,YAAQ,IAAI,GAAG,MAAM,OAAO,SAAS,CAAC,+BAA+B;AACrE,YAAQ,KAAK,CAAC;AAAA,EAAA;AAGV,QAAA,aAAa,MAAM,gBAAgB,eAAe;AAExD,MAAI,WAAW,UAAU,WAAW,OAAO,MAAM;AAC3C,QAAA,WAAW,OAAO,sBAAsB,OAAO;AACjD,cAAQ,IAAI,GAAG,MAAM,OAAO,UAAU,CAAC,+BAA+B;AACtE,cAAQ,KAAK,CAAC;AAAA,IAAA;AAAA,EAChB;AAGI,QAAA,qBAAqB,uBAAuB,UAAU;AAE5D,QAAM,QAAQ,MAAM,iBAAiB,iBAAiB,oBAAoB,CAAC;AAE3E,MAAI,CAAC,OAAO;AACV,YAAQ,KAAK,CAAC;AAAA,EAAA;AAGhB,QAAM,UAAU,qBAAqB,mBAAmB,OAAO,IAAI;AACnE,UAAQ,IAAI,GAAG,MAAM,MAAM,sDAAsD,CAAC,EAAE;AACpF,UAAQ,KAAK,CAAC;AAChB;AAKA,MAAM,UAAyB,MAAM;AAC5B,SAAA,cAAc,kBAAkB,EACpC,YAAY,qEAAqE,EACjF,OAAO,UAAU,oBAAoB,MAAM,CAAC;AACjD;"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const commander = require("commander");
4
- const command = () => {
5
- return commander.createCommand("templates:generate <directory>").description("(deprecated) Generate template from Strapi project").action(() => {
6
- console.warn("This command is deprecated and will be removed in the next major release.");
7
- console.warn("You can now copy an existing app and use it as a template.");
8
- });
9
- };
10
- exports.command = command;
11
- //# sourceMappingURL=generate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate.js","sources":["../../../../src/cli/commands/templates/generate.ts"],"sourcesContent":["import { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\n\n/**\n *`$ strapi templates:generate <directory>`\n */\nconst command: StrapiCommand = () => {\n return createCommand('templates:generate <directory>')\n .description('(deprecated) Generate template from Strapi project')\n .action(() => {\n console.warn('This command is deprecated and will be removed in the next major release.');\n console.warn('You can now copy an existing app and use it as a template.');\n });\n};\n\nexport { command };\n"],"names":["createCommand"],"mappings":";;;AAOA,MAAM,UAAyB,MAAM;AACnC,SAAOA,UAAAA,cAAc,gCAAgC,EAClD,YAAY,oDAAoD,EAChE,OAAO,MAAM;AACZ,YAAQ,KAAK,2EAA2E;AACxF,YAAQ,KAAK,4DAA4D;AAAA,EAAA,CAC1E;AACL;;"}
@@ -1,11 +0,0 @@
1
- import { createCommand } from "commander";
2
- const command = () => {
3
- return createCommand("templates:generate <directory>").description("(deprecated) Generate template from Strapi project").action(() => {
4
- console.warn("This command is deprecated and will be removed in the next major release.");
5
- console.warn("You can now copy an existing app and use it as a template.");
6
- });
7
- };
8
- export {
9
- command
10
- };
11
- //# sourceMappingURL=generate.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate.mjs","sources":["../../../../src/cli/commands/templates/generate.ts"],"sourcesContent":["import { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\n\n/**\n *`$ strapi templates:generate <directory>`\n */\nconst command: StrapiCommand = () => {\n return createCommand('templates:generate <directory>')\n .description('(deprecated) Generate template from Strapi project')\n .action(() => {\n console.warn('This command is deprecated and will be removed in the next major release.');\n console.warn('You can now copy an existing app and use it as a template.');\n });\n};\n\nexport { command };\n"],"names":[],"mappings":";AAOA,MAAM,UAAyB,MAAM;AACnC,SAAO,cAAc,gCAAgC,EAClD,YAAY,oDAAoD,EAChE,OAAO,MAAM;AACZ,YAAQ,KAAK,2EAA2E;AACxF,YAAQ,KAAK,4DAA4D;AAAA,EAAA,CAC1E;AACL;"}
@@ -1,130 +0,0 @@
1
- "use strict";
2
- const fp = require("lodash/fp");
3
- const dataTransfer$1 = require("@strapi/data-transfer");
4
- const dataTransfer = require("../../utils/data-transfer.js");
5
- const helpers = require("../../utils/helpers.js");
6
- const { createTransferEngine } = dataTransfer$1.engine;
7
- const {
8
- providers: {
9
- createRemoteStrapiDestinationProvider,
10
- createLocalStrapiSourceProvider,
11
- createLocalStrapiDestinationProvider,
12
- createRemoteStrapiSourceProvider
13
- }
14
- } = dataTransfer$1.strapi;
15
- const action = async (opts) => {
16
- if (!fp.isObject(opts)) {
17
- helpers.exitWith(1, "Could not parse command arguments");
18
- }
19
- if (!(opts.from || opts.to) || opts.from && opts.to) {
20
- helpers.exitWith(1, "Exactly one source (from) or destination (to) option must be provided");
21
- }
22
- const strapi = await dataTransfer.createStrapiInstance();
23
- let source;
24
- let destination;
25
- if (!opts.from) {
26
- source = createLocalStrapiSourceProvider({
27
- getStrapi: () => strapi
28
- });
29
- } else {
30
- if (!opts.fromToken) {
31
- helpers.exitWith(1, "Missing token for remote destination");
32
- }
33
- source = createRemoteStrapiSourceProvider({
34
- getStrapi: () => strapi,
35
- url: opts.from,
36
- auth: {
37
- type: "token",
38
- token: opts.fromToken
39
- }
40
- });
41
- }
42
- if (!opts.to) {
43
- destination = createLocalStrapiDestinationProvider({
44
- getStrapi: () => strapi,
45
- strategy: "restore",
46
- restore: dataTransfer.parseRestoreFromOptions(opts)
47
- });
48
- } else {
49
- if (!opts.toToken) {
50
- helpers.exitWith(1, "Missing token for remote destination");
51
- }
52
- destination = createRemoteStrapiDestinationProvider({
53
- url: opts.to,
54
- auth: {
55
- type: "token",
56
- token: opts.toToken
57
- },
58
- strategy: "restore",
59
- restore: dataTransfer.parseRestoreFromOptions(opts)
60
- });
61
- }
62
- if (!source || !destination) {
63
- helpers.exitWith(1, "Could not create providers");
64
- }
65
- const engine = createTransferEngine(source, destination, {
66
- versionStrategy: "exact",
67
- schemaStrategy: "strict",
68
- exclude: opts.exclude,
69
- only: opts.only,
70
- throttle: opts.throttle,
71
- transforms: {
72
- links: [
73
- {
74
- filter(link) {
75
- return !dataTransfer.DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) && !dataTransfer.DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type);
76
- }
77
- }
78
- ],
79
- entities: [
80
- {
81
- filter(entity) {
82
- return !dataTransfer.DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);
83
- }
84
- }
85
- ]
86
- }
87
- });
88
- engine.diagnostics.onDiagnostic(dataTransfer.formatDiagnostic("transfer", opts.verbose));
89
- const progress = engine.progress.stream;
90
- const { updateLoader } = dataTransfer.loadersFactory();
91
- engine.onSchemaDiff(dataTransfer.getDiffHandler(engine, { force: opts.force, action: "transfer" }));
92
- engine.addErrorHandler(
93
- "ASSETS_DIRECTORY_ERR",
94
- dataTransfer.getAssetsBackupHandler(engine, { force: opts.force, action: "transfer" })
95
- );
96
- progress.on(`stage::start`, ({ stage, data }) => {
97
- updateLoader(stage, data).start();
98
- });
99
- progress.on("stage::finish", ({ stage, data }) => {
100
- updateLoader(stage, data).succeed();
101
- });
102
- progress.on("stage::progress", ({ stage, data }) => {
103
- updateLoader(stage, data);
104
- });
105
- progress.on("stage::error", ({ stage, data }) => {
106
- updateLoader(stage, data).fail();
107
- });
108
- progress.on("transfer::start", async () => {
109
- console.log(`Starting transfer...`);
110
- await strapi.telemetry.send("didDEITSProcessStart", dataTransfer.getTransferTelemetryPayload(engine));
111
- });
112
- let results;
113
- try {
114
- dataTransfer.setSignalHandler(() => dataTransfer.abortTransfer({ engine, strapi }));
115
- results = await engine.transfer();
116
- await strapi.telemetry.send("didDEITSProcessFinish", dataTransfer.getTransferTelemetryPayload(engine));
117
- try {
118
- const table = dataTransfer.buildTransferTable(results.engine);
119
- console.log(table?.toString());
120
- } catch (e) {
121
- console.error("There was an error displaying the results of the transfer.");
122
- }
123
- helpers.exitWith(0, dataTransfer.exitMessageText("transfer"));
124
- } catch (e) {
125
- await strapi.telemetry.send("didDEITSProcessFail", dataTransfer.getTransferTelemetryPayload(engine));
126
- helpers.exitWith(1, dataTransfer.exitMessageText("transfer", true));
127
- }
128
- };
129
- module.exports = action;
130
- //# sourceMappingURL=action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.js","sources":["../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n DEFAULT_IGNORED_CONTENT_TYPES,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n });\n }\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting transfer...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["engineDataTransfer","strapiDataTransfer","isObject","exitWith","createStrapiInstance","parseRestoreFromOptions","DEFAULT_IGNORED_CONTENT_TYPES","formatDiagnostic","loadersFactory","getDiffHandler","getAssetsBackupHandler","getTransferTelemetryPayload","setSignalHandler","abortTransfer","buildTransferTable","exitMessageText"],"mappings":"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"}
@@ -1,131 +0,0 @@
1
- import { isObject } from "lodash/fp";
2
- import { engine, strapi } from "@strapi/data-transfer";
3
- import { createStrapiInstance, parseRestoreFromOptions, DEFAULT_IGNORED_CONTENT_TYPES, formatDiagnostic, getDiffHandler, getAssetsBackupHandler, getTransferTelemetryPayload, setSignalHandler, abortTransfer, buildTransferTable, exitMessageText, loadersFactory } from "../../utils/data-transfer.mjs";
4
- import { exitWith } from "../../utils/helpers.mjs";
5
- const { createTransferEngine } = engine;
6
- const {
7
- providers: {
8
- createRemoteStrapiDestinationProvider,
9
- createLocalStrapiSourceProvider,
10
- createLocalStrapiDestinationProvider,
11
- createRemoteStrapiSourceProvider
12
- }
13
- } = strapi;
14
- const action = async (opts) => {
15
- if (!isObject(opts)) {
16
- exitWith(1, "Could not parse command arguments");
17
- }
18
- if (!(opts.from || opts.to) || opts.from && opts.to) {
19
- exitWith(1, "Exactly one source (from) or destination (to) option must be provided");
20
- }
21
- const strapi2 = await createStrapiInstance();
22
- let source;
23
- let destination;
24
- if (!opts.from) {
25
- source = createLocalStrapiSourceProvider({
26
- getStrapi: () => strapi2
27
- });
28
- } else {
29
- if (!opts.fromToken) {
30
- exitWith(1, "Missing token for remote destination");
31
- }
32
- source = createRemoteStrapiSourceProvider({
33
- getStrapi: () => strapi2,
34
- url: opts.from,
35
- auth: {
36
- type: "token",
37
- token: opts.fromToken
38
- }
39
- });
40
- }
41
- if (!opts.to) {
42
- destination = createLocalStrapiDestinationProvider({
43
- getStrapi: () => strapi2,
44
- strategy: "restore",
45
- restore: parseRestoreFromOptions(opts)
46
- });
47
- } else {
48
- if (!opts.toToken) {
49
- exitWith(1, "Missing token for remote destination");
50
- }
51
- destination = createRemoteStrapiDestinationProvider({
52
- url: opts.to,
53
- auth: {
54
- type: "token",
55
- token: opts.toToken
56
- },
57
- strategy: "restore",
58
- restore: parseRestoreFromOptions(opts)
59
- });
60
- }
61
- if (!source || !destination) {
62
- exitWith(1, "Could not create providers");
63
- }
64
- const engine2 = createTransferEngine(source, destination, {
65
- versionStrategy: "exact",
66
- schemaStrategy: "strict",
67
- exclude: opts.exclude,
68
- only: opts.only,
69
- throttle: opts.throttle,
70
- transforms: {
71
- links: [
72
- {
73
- filter(link) {
74
- return !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) && !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type);
75
- }
76
- }
77
- ],
78
- entities: [
79
- {
80
- filter(entity) {
81
- return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);
82
- }
83
- }
84
- ]
85
- }
86
- });
87
- engine2.diagnostics.onDiagnostic(formatDiagnostic("transfer", opts.verbose));
88
- const progress = engine2.progress.stream;
89
- const { updateLoader } = loadersFactory();
90
- engine2.onSchemaDiff(getDiffHandler(engine2, { force: opts.force, action: "transfer" }));
91
- engine2.addErrorHandler(
92
- "ASSETS_DIRECTORY_ERR",
93
- getAssetsBackupHandler(engine2, { force: opts.force, action: "transfer" })
94
- );
95
- progress.on(`stage::start`, ({ stage, data }) => {
96
- updateLoader(stage, data).start();
97
- });
98
- progress.on("stage::finish", ({ stage, data }) => {
99
- updateLoader(stage, data).succeed();
100
- });
101
- progress.on("stage::progress", ({ stage, data }) => {
102
- updateLoader(stage, data);
103
- });
104
- progress.on("stage::error", ({ stage, data }) => {
105
- updateLoader(stage, data).fail();
106
- });
107
- progress.on("transfer::start", async () => {
108
- console.log(`Starting transfer...`);
109
- await strapi2.telemetry.send("didDEITSProcessStart", getTransferTelemetryPayload(engine2));
110
- });
111
- let results;
112
- try {
113
- setSignalHandler(() => abortTransfer({ engine: engine2, strapi: strapi2 }));
114
- results = await engine2.transfer();
115
- await strapi2.telemetry.send("didDEITSProcessFinish", getTransferTelemetryPayload(engine2));
116
- try {
117
- const table = buildTransferTable(results.engine);
118
- console.log(table?.toString());
119
- } catch (e) {
120
- console.error("There was an error displaying the results of the transfer.");
121
- }
122
- exitWith(0, exitMessageText("transfer"));
123
- } catch (e) {
124
- await strapi2.telemetry.send("didDEITSProcessFail", getTransferTelemetryPayload(engine2));
125
- exitWith(1, exitMessageText("transfer", true));
126
- }
127
- };
128
- export {
129
- action as default
130
- };
131
- //# sourceMappingURL=action.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.mjs","sources":["../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n DEFAULT_IGNORED_CONTENT_TYPES,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n });\n }\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting transfer...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["engineDataTransfer","strapiDataTransfer","strapi","engine"],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- "use strict";
2
- const inquirer = require("inquirer");
3
- const commander = require("commander");
4
- const commander$1 = require("../../utils/commander.js");
5
- const helpers = require("../../utils/helpers.js");
6
- const dataTransfer = require("../../utils/data-transfer.js");
7
- const action = require("./action.js");
8
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
9
- const inquirer__default = /* @__PURE__ */ _interopDefault(inquirer);
10
- const command = () => {
11
- return commander.createCommand("transfer").description("Transfer data from one source to another").allowExcessArguments(false).addOption(
12
- new commander.Option(
13
- "--from <sourceURL>",
14
- `URL of the remote Strapi instance to get data from`
15
- ).argParser(commander$1.parseURL)
16
- ).addOption(new commander.Option("--from-token <token>", `Transfer token for the remote Strapi source`)).addOption(
17
- new commander.Option(
18
- "--to <destinationURL>",
19
- `URL of the remote Strapi instance to send data to`
20
- ).argParser(commander$1.parseURL)
21
- ).addOption(
22
- new commander.Option("--to-token <token>", `Transfer token for the remote Strapi destination`)
23
- ).addOption(new commander.Option("--verbose", "Enable verbose logs")).addOption(commander$1.forceOption).addOption(dataTransfer.excludeOption).addOption(dataTransfer.onlyOption).addOption(dataTransfer.throttleOption).hook("preAction", dataTransfer.validateExcludeOnly).hook(
24
- "preAction",
25
- helpers.ifOptions(
26
- (opts) => !(opts.from || opts.to) || opts.from && opts.to,
27
- async () => helpers.exitWith(
28
- 1,
29
- "Exactly one remote source (from) or destination (to) option must be provided"
30
- )
31
- )
32
- ).hook(
33
- "preAction",
34
- helpers.ifOptions(
35
- (opts) => opts.from,
36
- async (thisCommand) => {
37
- helpers.assertUrlHasProtocol(thisCommand.opts().from, ["https:", "http:"]);
38
- if (!thisCommand.opts().fromToken) {
39
- const answers = await inquirer__default.default.prompt([
40
- {
41
- type: "password",
42
- message: "Please enter your transfer token for the remote Strapi source",
43
- name: "fromToken"
44
- }
45
- ]);
46
- if (!answers.fromToken?.length) {
47
- helpers.exitWith(1, "No token provided for remote source, aborting transfer.");
48
- }
49
- thisCommand.opts().fromToken = answers.fromToken;
50
- }
51
- await commander$1.getCommanderConfirmMessage(
52
- "The transfer will delete all the local Strapi assets and its database. Are you sure you want to proceed?",
53
- { failMessage: "Transfer process aborted" }
54
- )(thisCommand);
55
- }
56
- )
57
- ).hook(
58
- "preAction",
59
- helpers.ifOptions(
60
- (opts) => opts.to,
61
- async (thisCommand) => {
62
- helpers.assertUrlHasProtocol(thisCommand.opts().to, ["https:", "http:"]);
63
- if (!thisCommand.opts().toToken) {
64
- const answers = await inquirer__default.default.prompt([
65
- {
66
- type: "password",
67
- message: "Please enter your transfer token for the remote Strapi destination",
68
- name: "toToken"
69
- }
70
- ]);
71
- if (!answers.toToken?.length) {
72
- helpers.exitWith(1, "No token provided for remote destination, aborting transfer.");
73
- }
74
- thisCommand.opts().toToken = answers.toToken;
75
- }
76
- await commander$1.getCommanderConfirmMessage(
77
- "The transfer will delete existing data from the remote Strapi! Are you sure you want to proceed?",
78
- { failMessage: "Transfer process aborted" }
79
- )(thisCommand);
80
- }
81
- )
82
- ).action(action);
83
- };
84
- module.exports = command;
85
- //# sourceMappingURL=command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.js","sources":["../../../../src/cli/commands/transfer/command.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { createCommand, Option } from 'commander';\nimport { getCommanderConfirmMessage, forceOption, parseURL } from '../../utils/commander';\nimport { exitWith, assertUrlHasProtocol, ifOptions } from '../../utils/helpers';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\n\nimport action from './action';\n\n/**\n * `$ strapi transfer`\n */\nconst command = () => {\n return (\n createCommand('transfer')\n .description('Transfer data from one source to another')\n .allowExcessArguments(false)\n .addOption(\n new Option(\n '--from <sourceURL>',\n `URL of the remote Strapi instance to get data from`\n ).argParser(parseURL)\n )\n .addOption(new Option('--from-token <token>', `Transfer token for the remote Strapi source`))\n .addOption(\n new Option(\n '--to <destinationURL>',\n `URL of the remote Strapi instance to send data to`\n ).argParser(parseURL)\n )\n\n .addOption(\n new Option('--to-token <token>', `Transfer token for the remote Strapi destination`)\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook(\n 'preAction',\n ifOptions(\n (opts) => !(opts.from || opts.to) || (opts.from && opts.to),\n async () =>\n exitWith(\n 1,\n 'Exactly one remote source (from) or destination (to) option must be provided'\n )\n )\n )\n // If --from is used, validate the URL and token\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.from,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().from, ['https:', 'http:']);\n if (!thisCommand.opts().fromToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi source',\n name: 'fromToken',\n },\n ]);\n if (!answers.fromToken?.length) {\n exitWith(1, 'No token provided for remote source, aborting transfer.');\n }\n thisCommand.opts().fromToken = answers.fromToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete all the local Strapi assets and its database. Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n // If --to is used, validate the URL, token, and confirm restore\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.to,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().to, ['https:', 'http:']);\n if (!thisCommand.opts().toToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi destination',\n name: 'toToken',\n },\n ]);\n if (!answers.toToken?.length) {\n exitWith(1, 'No token provided for remote destination, aborting transfer.');\n }\n thisCommand.opts().toToken = answers.toToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete existing data from the remote Strapi! Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n"],"names":["createCommand","Option","parseURL","forceOption","excludeOption","onlyOption","throttleOption","validateExcludeOnly","ifOptions","exitWith","assertUrlHasProtocol","inquirer","getCommanderConfirmMessage"],"mappings":";;;;;;;;;AAgBA,MAAM,UAAU,MAAM;AAElB,SAAAA,UAAA,cAAc,UAAU,EACrB,YAAY,0CAA0C,EACtD,qBAAqB,KAAK,EAC1B;AAAA,IACC,IAAIC,UAAA;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,UAAUC,YAAQ,QAAA;AAAA,EAAA,EAErB,UAAU,IAAID,iBAAO,wBAAwB,6CAA6C,CAAC,EAC3F;AAAA,IACC,IAAIA,UAAA;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,UAAUC,YAAQ,QAAA;AAAA,EAAA,EAGrB;AAAA,IACC,IAAID,UAAO,OAAA,sBAAsB,kDAAkD;AAAA,EAAA,EAEpF,UAAU,IAAIA,UAAAA,OAAO,aAAa,qBAAqB,CAAC,EACxD,UAAUE,YAAW,WAAA,EACrB,UAAUC,aAAa,aAAA,EACvB,UAAUC,uBAAU,EACpB,UAAUC,aAAAA,cAAc,EACxB,KAAK,aAAaC,aAAmB,mBAAA,EACrC;AAAA,IACC;AAAA,IACAC,QAAA;AAAA,MACE,CAAC,SAAS,EAAE,KAAK,QAAQ,KAAK,OAAQ,KAAK,QAAQ,KAAK;AAAA,MACxD,YACEC,QAAA;AAAA,QACE;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EACJ,EAGD;AAAA,IACC;AAAA,IACAD,QAAA;AAAA,MACE,CAAC,SAAS,KAAK;AAAA,MACf,OAAO,gBAAgB;AACrBE,gBAAA,qBAAqB,YAAY,KAAK,EAAE,MAAM,CAAC,UAAU,OAAO,CAAC;AACjE,YAAI,CAAC,YAAY,KAAK,EAAE,WAAW;AAC3B,gBAAA,UAAU,MAAMC,kBAAA,QAAS,OAAO;AAAA,YACpC;AAAA,cACE,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,YAAA;AAAA,UACR,CACD;AACG,cAAA,CAAC,QAAQ,WAAW,QAAQ;AAC9BF,oBAAA,SAAS,GAAG,yDAAyD;AAAA,UAAA;AAE3D,sBAAA,KAAA,EAAO,YAAY,QAAQ;AAAA,QAAA;AAGnC,cAAAG,YAAA;AAAA,UACJ;AAAA,UACA,EAAE,aAAa,2BAA2B;AAAA,UAC1C,WAAW;AAAA,MAAA;AAAA,IACf;AAAA,EACF,EAGD;AAAA,IACC;AAAA,IACAJ,QAAA;AAAA,MACE,CAAC,SAAS,KAAK;AAAA,MACf,OAAO,gBAAgB;AACrBE,gBAAA,qBAAqB,YAAY,KAAK,EAAE,IAAI,CAAC,UAAU,OAAO,CAAC;AAC/D,YAAI,CAAC,YAAY,KAAK,EAAE,SAAS;AACzB,gBAAA,UAAU,MAAMC,kBAAA,QAAS,OAAO;AAAA,YACpC;AAAA,cACE,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,YAAA;AAAA,UACR,CACD;AACG,cAAA,CAAC,QAAQ,SAAS,QAAQ;AAC5BF,oBAAA,SAAS,GAAG,8DAA8D;AAAA,UAAA;AAEhE,sBAAA,KAAA,EAAO,UAAU,QAAQ;AAAA,QAAA;AAGjC,cAAAG,YAAA;AAAA,UACJ;AAAA,UACA,EAAE,aAAa,2BAA2B;AAAA,UAC1C,WAAW;AAAA,MAAA;AAAA,IACf;AAAA,EACF,EAED,OAAO,MAAM;AAEpB;;"}
@@ -1,84 +0,0 @@
1
- import inquirer from "inquirer";
2
- import { createCommand, Option } from "commander";
3
- import { parseURL, forceOption, getCommanderConfirmMessage } from "../../utils/commander.mjs";
4
- import { ifOptions, exitWith, assertUrlHasProtocol } from "../../utils/helpers.mjs";
5
- import { excludeOption, onlyOption, throttleOption, validateExcludeOnly } from "../../utils/data-transfer.mjs";
6
- import action from "./action.mjs";
7
- const command = () => {
8
- return createCommand("transfer").description("Transfer data from one source to another").allowExcessArguments(false).addOption(
9
- new Option(
10
- "--from <sourceURL>",
11
- `URL of the remote Strapi instance to get data from`
12
- ).argParser(parseURL)
13
- ).addOption(new Option("--from-token <token>", `Transfer token for the remote Strapi source`)).addOption(
14
- new Option(
15
- "--to <destinationURL>",
16
- `URL of the remote Strapi instance to send data to`
17
- ).argParser(parseURL)
18
- ).addOption(
19
- new Option("--to-token <token>", `Transfer token for the remote Strapi destination`)
20
- ).addOption(new Option("--verbose", "Enable verbose logs")).addOption(forceOption).addOption(excludeOption).addOption(onlyOption).addOption(throttleOption).hook("preAction", validateExcludeOnly).hook(
21
- "preAction",
22
- ifOptions(
23
- (opts) => !(opts.from || opts.to) || opts.from && opts.to,
24
- async () => exitWith(
25
- 1,
26
- "Exactly one remote source (from) or destination (to) option must be provided"
27
- )
28
- )
29
- ).hook(
30
- "preAction",
31
- ifOptions(
32
- (opts) => opts.from,
33
- async (thisCommand) => {
34
- assertUrlHasProtocol(thisCommand.opts().from, ["https:", "http:"]);
35
- if (!thisCommand.opts().fromToken) {
36
- const answers = await inquirer.prompt([
37
- {
38
- type: "password",
39
- message: "Please enter your transfer token for the remote Strapi source",
40
- name: "fromToken"
41
- }
42
- ]);
43
- if (!answers.fromToken?.length) {
44
- exitWith(1, "No token provided for remote source, aborting transfer.");
45
- }
46
- thisCommand.opts().fromToken = answers.fromToken;
47
- }
48
- await getCommanderConfirmMessage(
49
- "The transfer will delete all the local Strapi assets and its database. Are you sure you want to proceed?",
50
- { failMessage: "Transfer process aborted" }
51
- )(thisCommand);
52
- }
53
- )
54
- ).hook(
55
- "preAction",
56
- ifOptions(
57
- (opts) => opts.to,
58
- async (thisCommand) => {
59
- assertUrlHasProtocol(thisCommand.opts().to, ["https:", "http:"]);
60
- if (!thisCommand.opts().toToken) {
61
- const answers = await inquirer.prompt([
62
- {
63
- type: "password",
64
- message: "Please enter your transfer token for the remote Strapi destination",
65
- name: "toToken"
66
- }
67
- ]);
68
- if (!answers.toToken?.length) {
69
- exitWith(1, "No token provided for remote destination, aborting transfer.");
70
- }
71
- thisCommand.opts().toToken = answers.toToken;
72
- }
73
- await getCommanderConfirmMessage(
74
- "The transfer will delete existing data from the remote Strapi! Are you sure you want to proceed?",
75
- { failMessage: "Transfer process aborted" }
76
- )(thisCommand);
77
- }
78
- )
79
- ).action(action);
80
- };
81
- export {
82
- command as default
83
- };
84
- //# sourceMappingURL=command.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.mjs","sources":["../../../../src/cli/commands/transfer/command.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { createCommand, Option } from 'commander';\nimport { getCommanderConfirmMessage, forceOption, parseURL } from '../../utils/commander';\nimport { exitWith, assertUrlHasProtocol, ifOptions } from '../../utils/helpers';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\n\nimport action from './action';\n\n/**\n * `$ strapi transfer`\n */\nconst command = () => {\n return (\n createCommand('transfer')\n .description('Transfer data from one source to another')\n .allowExcessArguments(false)\n .addOption(\n new Option(\n '--from <sourceURL>',\n `URL of the remote Strapi instance to get data from`\n ).argParser(parseURL)\n )\n .addOption(new Option('--from-token <token>', `Transfer token for the remote Strapi source`))\n .addOption(\n new Option(\n '--to <destinationURL>',\n `URL of the remote Strapi instance to send data to`\n ).argParser(parseURL)\n )\n\n .addOption(\n new Option('--to-token <token>', `Transfer token for the remote Strapi destination`)\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook(\n 'preAction',\n ifOptions(\n (opts) => !(opts.from || opts.to) || (opts.from && opts.to),\n async () =>\n exitWith(\n 1,\n 'Exactly one remote source (from) or destination (to) option must be provided'\n )\n )\n )\n // If --from is used, validate the URL and token\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.from,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().from, ['https:', 'http:']);\n if (!thisCommand.opts().fromToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi source',\n name: 'fromToken',\n },\n ]);\n if (!answers.fromToken?.length) {\n exitWith(1, 'No token provided for remote source, aborting transfer.');\n }\n thisCommand.opts().fromToken = answers.fromToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete all the local Strapi assets and its database. Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n // If --to is used, validate the URL, token, and confirm restore\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.to,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().to, ['https:', 'http:']);\n if (!thisCommand.opts().toToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi destination',\n name: 'toToken',\n },\n ]);\n if (!answers.toToken?.length) {\n exitWith(1, 'No token provided for remote destination, aborting transfer.');\n }\n thisCommand.opts().toToken = answers.toToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete existing data from the remote Strapi! Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n"],"names":[],"mappings":";;;;;;AAgBA,MAAM,UAAU,MAAM;AAElB,SAAA,cAAc,UAAU,EACrB,YAAY,0CAA0C,EACtD,qBAAqB,KAAK,EAC1B;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,UAAU,QAAQ;AAAA,EAAA,EAErB,UAAU,IAAI,OAAO,wBAAwB,6CAA6C,CAAC,EAC3F;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,UAAU,QAAQ;AAAA,EAAA,EAGrB;AAAA,IACC,IAAI,OAAO,sBAAsB,kDAAkD;AAAA,EAAA,EAEpF,UAAU,IAAI,OAAO,aAAa,qBAAqB,CAAC,EACxD,UAAU,WAAW,EACrB,UAAU,aAAa,EACvB,UAAU,UAAU,EACpB,UAAU,cAAc,EACxB,KAAK,aAAa,mBAAmB,EACrC;AAAA,IACC;AAAA,IACA;AAAA,MACE,CAAC,SAAS,EAAE,KAAK,QAAQ,KAAK,OAAQ,KAAK,QAAQ,KAAK;AAAA,MACxD,YACE;AAAA,QACE;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EACJ,EAGD;AAAA,IACC;AAAA,IACA;AAAA,MACE,CAAC,SAAS,KAAK;AAAA,MACf,OAAO,gBAAgB;AACrB,6BAAqB,YAAY,KAAK,EAAE,MAAM,CAAC,UAAU,OAAO,CAAC;AACjE,YAAI,CAAC,YAAY,KAAK,EAAE,WAAW;AAC3B,gBAAA,UAAU,MAAM,SAAS,OAAO;AAAA,YACpC;AAAA,cACE,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,YAAA;AAAA,UACR,CACD;AACG,cAAA,CAAC,QAAQ,WAAW,QAAQ;AAC9B,qBAAS,GAAG,yDAAyD;AAAA,UAAA;AAE3D,sBAAA,KAAA,EAAO,YAAY,QAAQ;AAAA,QAAA;AAGnC,cAAA;AAAA,UACJ;AAAA,UACA,EAAE,aAAa,2BAA2B;AAAA,UAC1C,WAAW;AAAA,MAAA;AAAA,IACf;AAAA,EACF,EAGD;AAAA,IACC;AAAA,IACA;AAAA,MACE,CAAC,SAAS,KAAK;AAAA,MACf,OAAO,gBAAgB;AACrB,6BAAqB,YAAY,KAAK,EAAE,IAAI,CAAC,UAAU,OAAO,CAAC;AAC/D,YAAI,CAAC,YAAY,KAAK,EAAE,SAAS;AACzB,gBAAA,UAAU,MAAM,SAAS,OAAO;AAAA,YACpC;AAAA,cACE,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,YAAA;AAAA,UACR,CACD;AACG,cAAA,CAAC,QAAQ,SAAS,QAAQ;AAC5B,qBAAS,GAAG,8DAA8D;AAAA,UAAA;AAEhE,sBAAA,KAAA,EAAO,UAAU,QAAQ;AAAA,QAAA;AAGjC,cAAA;AAAA,UACJ;AAAA,UACA,EAAE,aAAa,2BAA2B;AAAA,UAC1C,WAAW;AAAA,MAAA;AAAA,IACf;AAAA,EACF,EAED,OAAO,MAAM;AAEpB;"}