@strapi/data-transfer 4.14.4 → 4.14.6

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 (271) hide show
  1. package/dist/commands/commander.d.ts +1 -0
  2. package/dist/commands/commander.d.ts.map +1 -0
  3. package/dist/commands/data-transfer.d.ts +2 -1
  4. package/dist/commands/data-transfer.d.ts.map +1 -0
  5. package/dist/commands/export/action.d.ts +1 -0
  6. package/dist/commands/export/action.d.ts.map +1 -0
  7. package/dist/commands/export/command.d.ts +1 -0
  8. package/dist/commands/export/command.d.ts.map +1 -0
  9. package/dist/commands/helpers.d.ts +1 -0
  10. package/dist/commands/helpers.d.ts.map +1 -0
  11. package/dist/commands/import/action.d.ts +1 -0
  12. package/dist/commands/import/action.d.ts.map +1 -0
  13. package/dist/commands/import/command.d.ts +1 -0
  14. package/dist/commands/import/command.d.ts.map +1 -0
  15. package/dist/commands/index.d.ts +1 -0
  16. package/dist/commands/index.d.ts.map +1 -0
  17. package/dist/commands/transfer/action.d.ts +1 -0
  18. package/dist/commands/transfer/action.d.ts.map +1 -0
  19. package/dist/commands/transfer/command.d.ts +1 -0
  20. package/dist/commands/transfer/command.d.ts.map +1 -0
  21. package/dist/engine/diagnostic.d.ts +1 -0
  22. package/dist/engine/diagnostic.d.ts.map +1 -0
  23. package/dist/engine/errors.d.ts +1 -0
  24. package/dist/engine/errors.d.ts.map +1 -0
  25. package/dist/engine/index.d.ts +1 -0
  26. package/dist/engine/index.d.ts.map +1 -0
  27. package/dist/engine/validation/index.d.ts +1 -0
  28. package/dist/engine/validation/index.d.ts.map +1 -0
  29. package/dist/engine/validation/provider.d.ts +1 -0
  30. package/dist/engine/validation/provider.d.ts.map +1 -0
  31. package/dist/engine/validation/schemas/index.d.ts +1 -0
  32. package/dist/engine/validation/schemas/index.d.ts.map +1 -0
  33. package/dist/errors/base.d.ts +1 -0
  34. package/dist/errors/base.d.ts.map +1 -0
  35. package/dist/errors/constants.d.ts +1 -0
  36. package/dist/errors/constants.d.ts.map +1 -0
  37. package/dist/errors/index.d.ts +1 -0
  38. package/dist/errors/index.d.ts.map +1 -0
  39. package/dist/errors/providers.d.ts +1 -0
  40. package/dist/errors/providers.d.ts.map +1 -0
  41. package/dist/file/index.d.ts +1 -0
  42. package/dist/file/index.d.ts.map +1 -0
  43. package/dist/file/providers/destination/index.d.ts +1 -0
  44. package/dist/file/providers/destination/index.d.ts.map +1 -0
  45. package/dist/file/providers/destination/utils.d.ts +1 -0
  46. package/dist/file/providers/destination/utils.d.ts.map +1 -0
  47. package/dist/file/providers/index.d.ts +1 -0
  48. package/dist/file/providers/index.d.ts.map +1 -0
  49. package/dist/file/providers/source/index.d.ts +1 -0
  50. package/dist/file/providers/source/index.d.ts.map +1 -0
  51. package/dist/file/providers/source/utils.d.ts +1 -0
  52. package/dist/file/providers/source/utils.d.ts.map +1 -0
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +5340 -30
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.mjs +5311 -0
  58. package/dist/index.mjs.map +1 -0
  59. package/dist/strapi/index.d.ts +1 -0
  60. package/dist/strapi/index.d.ts.map +1 -0
  61. package/dist/strapi/providers/index.d.ts +1 -0
  62. package/dist/strapi/providers/index.d.ts.map +1 -0
  63. package/dist/strapi/providers/local-destination/index.d.ts +1 -0
  64. package/dist/strapi/providers/local-destination/index.d.ts.map +1 -0
  65. package/dist/strapi/providers/local-destination/strategies/index.d.ts +1 -0
  66. package/dist/strapi/providers/local-destination/strategies/index.d.ts.map +1 -0
  67. package/dist/strapi/providers/local-destination/strategies/restore/configuration.d.ts +1 -0
  68. package/dist/strapi/providers/local-destination/strategies/restore/configuration.d.ts.map +1 -0
  69. package/dist/strapi/providers/local-destination/strategies/restore/entities.d.ts +1 -0
  70. package/dist/strapi/providers/local-destination/strategies/restore/entities.d.ts.map +1 -0
  71. package/dist/strapi/providers/local-destination/strategies/restore/index.d.ts +1 -0
  72. package/dist/strapi/providers/local-destination/strategies/restore/index.d.ts.map +1 -0
  73. package/dist/strapi/providers/local-destination/strategies/restore/links.d.ts +1 -0
  74. package/dist/strapi/providers/local-destination/strategies/restore/links.d.ts.map +1 -0
  75. package/dist/strapi/providers/local-source/assets.d.ts +1 -0
  76. package/dist/strapi/providers/local-source/assets.d.ts.map +1 -0
  77. package/dist/strapi/providers/local-source/configuration.d.ts +1 -0
  78. package/dist/strapi/providers/local-source/configuration.d.ts.map +1 -0
  79. package/dist/strapi/providers/local-source/entities.d.ts +1 -0
  80. package/dist/strapi/providers/local-source/entities.d.ts.map +1 -0
  81. package/dist/strapi/providers/local-source/index.d.ts +1 -0
  82. package/dist/strapi/providers/local-source/index.d.ts.map +1 -0
  83. package/dist/strapi/providers/local-source/links.d.ts +1 -0
  84. package/dist/strapi/providers/local-source/links.d.ts.map +1 -0
  85. package/dist/strapi/providers/remote-destination/index.d.ts +1 -0
  86. package/dist/strapi/providers/remote-destination/index.d.ts.map +1 -0
  87. package/dist/strapi/providers/remote-source/index.d.ts +1 -0
  88. package/dist/strapi/providers/remote-source/index.d.ts.map +1 -0
  89. package/dist/strapi/providers/utils.d.ts +1 -0
  90. package/dist/strapi/providers/utils.d.ts.map +1 -0
  91. package/dist/strapi/queries/entity.d.ts +1 -0
  92. package/dist/strapi/queries/entity.d.ts.map +1 -0
  93. package/dist/strapi/queries/index.d.ts +1 -0
  94. package/dist/strapi/queries/index.d.ts.map +1 -0
  95. package/dist/strapi/queries/link.d.ts +1 -0
  96. package/dist/strapi/queries/link.d.ts.map +1 -0
  97. package/dist/strapi/remote/constants.d.ts +1 -0
  98. package/dist/strapi/remote/constants.d.ts.map +1 -0
  99. package/dist/strapi/remote/flows/default.d.ts +1 -0
  100. package/dist/strapi/remote/flows/default.d.ts.map +1 -0
  101. package/dist/strapi/remote/flows/index.d.ts +1 -0
  102. package/dist/strapi/remote/flows/index.d.ts.map +1 -0
  103. package/dist/strapi/remote/handlers/abstract.d.ts +1 -0
  104. package/dist/strapi/remote/handlers/abstract.d.ts.map +1 -0
  105. package/dist/strapi/remote/handlers/constants.d.ts +1 -0
  106. package/dist/strapi/remote/handlers/constants.d.ts.map +1 -0
  107. package/dist/strapi/remote/handlers/index.d.ts +4 -3
  108. package/dist/strapi/remote/handlers/index.d.ts.map +1 -0
  109. package/dist/strapi/remote/handlers/pull.d.ts +1 -0
  110. package/dist/strapi/remote/handlers/pull.d.ts.map +1 -0
  111. package/dist/strapi/remote/handlers/push.d.ts +1 -0
  112. package/dist/strapi/remote/handlers/push.d.ts.map +1 -0
  113. package/dist/strapi/remote/handlers/utils.d.ts +1 -0
  114. package/dist/strapi/remote/handlers/utils.d.ts.map +1 -0
  115. package/dist/strapi/remote/index.d.ts +1 -0
  116. package/dist/strapi/remote/index.d.ts.map +1 -0
  117. package/dist/utils/components.d.ts +1 -0
  118. package/dist/utils/components.d.ts.map +1 -0
  119. package/dist/utils/encryption/decrypt.d.ts +1 -0
  120. package/dist/utils/encryption/decrypt.d.ts.map +1 -0
  121. package/dist/utils/encryption/encrypt.d.ts +1 -0
  122. package/dist/utils/encryption/encrypt.d.ts.map +1 -0
  123. package/dist/utils/encryption/index.d.ts +1 -0
  124. package/dist/utils/encryption/index.d.ts.map +1 -0
  125. package/dist/utils/index.d.ts +1 -0
  126. package/dist/utils/index.d.ts.map +1 -0
  127. package/dist/utils/json.d.ts +1 -0
  128. package/dist/utils/json.d.ts.map +1 -0
  129. package/dist/utils/middleware.d.ts +1 -0
  130. package/dist/utils/middleware.d.ts.map +1 -0
  131. package/dist/utils/providers.d.ts +1 -0
  132. package/dist/utils/providers.d.ts.map +1 -0
  133. package/dist/utils/schema.d.ts +1 -0
  134. package/dist/utils/schema.d.ts.map +1 -0
  135. package/dist/utils/stream.d.ts +1 -0
  136. package/dist/utils/stream.d.ts.map +1 -0
  137. package/dist/utils/transaction.d.ts +1 -0
  138. package/dist/utils/transaction.d.ts.map +1 -0
  139. package/package.json +18 -16
  140. package/dist/commands/commander.js +0 -138
  141. package/dist/commands/commander.js.map +0 -1
  142. package/dist/commands/data-transfer.js +0 -359
  143. package/dist/commands/data-transfer.js.map +0 -1
  144. package/dist/commands/export/action.js +0 -156
  145. package/dist/commands/export/action.js.map +0 -1
  146. package/dist/commands/export/command.js +0 -30
  147. package/dist/commands/export/command.js.map +0 -1
  148. package/dist/commands/helpers.js +0 -87
  149. package/dist/commands/helpers.js.map +0 -1
  150. package/dist/commands/import/action.js +0 -139
  151. package/dist/commands/import/action.js.map +0 -1
  152. package/dist/commands/import/command.js +0 -75
  153. package/dist/commands/import/command.js.map +0 -1
  154. package/dist/commands/index.js +0 -13
  155. package/dist/commands/index.js.map +0 -1
  156. package/dist/commands/transfer/action.js +0 -161
  157. package/dist/commands/transfer/action.js.map +0 -1
  158. package/dist/commands/transfer/command.js +0 -69
  159. package/dist/commands/transfer/command.js.map +0 -1
  160. package/dist/engine/diagnostic.js +0 -50
  161. package/dist/engine/diagnostic.js.map +0 -1
  162. package/dist/engine/errors.js +0 -29
  163. package/dist/engine/errors.js.map +0 -1
  164. package/dist/engine/index.js +0 -708
  165. package/dist/engine/index.js.map +0 -1
  166. package/dist/engine/validation/index.js +0 -19
  167. package/dist/engine/validation/index.js.map +0 -1
  168. package/dist/engine/validation/provider.js +0 -18
  169. package/dist/engine/validation/provider.js.map +0 -1
  170. package/dist/engine/validation/schemas/index.js +0 -70
  171. package/dist/engine/validation/schemas/index.js.map +0 -1
  172. package/dist/errors/base.js +0 -16
  173. package/dist/errors/base.js.map +0 -1
  174. package/dist/errors/constants.js +0 -9
  175. package/dist/errors/constants.js.map +0 -1
  176. package/dist/errors/index.js +0 -19
  177. package/dist/errors/index.js.map +0 -1
  178. package/dist/errors/providers.js +0 -32
  179. package/dist/errors/providers.js.map +0 -1
  180. package/dist/file/index.js +0 -28
  181. package/dist/file/index.js.map +0 -1
  182. package/dist/file/providers/destination/index.js +0 -177
  183. package/dist/file/providers/destination/index.js.map +0 -1
  184. package/dist/file/providers/destination/utils.js +0 -62
  185. package/dist/file/providers/destination/utils.js.map +0 -1
  186. package/dist/file/providers/index.js +0 -19
  187. package/dist/file/providers/index.js.map +0 -1
  188. package/dist/file/providers/source/index.js +0 -234
  189. package/dist/file/providers/source/index.js.map +0 -1
  190. package/dist/file/providers/source/utils.js +0 -62
  191. package/dist/file/providers/source/utils.js.map +0 -1
  192. package/dist/strapi/index.js +0 -30
  193. package/dist/strapi/index.js.map +0 -1
  194. package/dist/strapi/providers/index.js +0 -23
  195. package/dist/strapi/providers/index.js.map +0 -1
  196. package/dist/strapi/providers/local-destination/index.js +0 -360
  197. package/dist/strapi/providers/local-destination/index.js.map +0 -1
  198. package/dist/strapi/providers/local-destination/strategies/index.js +0 -28
  199. package/dist/strapi/providers/local-destination/strategies/index.js.map +0 -1
  200. package/dist/strapi/providers/local-destination/strategies/restore/configuration.js +0 -51
  201. package/dist/strapi/providers/local-destination/strategies/restore/configuration.js.map +0 -1
  202. package/dist/strapi/providers/local-destination/strategies/restore/entities.js +0 -106
  203. package/dist/strapi/providers/local-destination/strategies/restore/entities.js.map +0 -1
  204. package/dist/strapi/providers/local-destination/strategies/restore/index.js +0 -109
  205. package/dist/strapi/providers/local-destination/strategies/restore/index.js.map +0 -1
  206. package/dist/strapi/providers/local-destination/strategies/restore/links.js +0 -32
  207. package/dist/strapi/providers/local-destination/strategies/restore/links.js.map +0 -1
  208. package/dist/strapi/providers/local-source/assets.js +0 -102
  209. package/dist/strapi/providers/local-source/assets.js.map +0 -1
  210. package/dist/strapi/providers/local-source/configuration.js +0 -36
  211. package/dist/strapi/providers/local-source/configuration.js.map +0 -1
  212. package/dist/strapi/providers/local-source/entities.js +0 -85
  213. package/dist/strapi/providers/local-source/entities.js.map +0 -1
  214. package/dist/strapi/providers/local-source/index.js +0 -100
  215. package/dist/strapi/providers/local-source/index.js.map +0 -1
  216. package/dist/strapi/providers/local-source/links.js +0 -23
  217. package/dist/strapi/providers/local-source/links.js.map +0 -1
  218. package/dist/strapi/providers/remote-destination/index.js +0 -270
  219. package/dist/strapi/providers/remote-destination/index.js.map +0 -1
  220. package/dist/strapi/providers/remote-source/index.js +0 -239
  221. package/dist/strapi/providers/remote-source/index.js.map +0 -1
  222. package/dist/strapi/providers/utils.js +0 -138
  223. package/dist/strapi/providers/utils.js.map +0 -1
  224. package/dist/strapi/queries/entity.js +0 -130
  225. package/dist/strapi/queries/entity.js.map +0 -1
  226. package/dist/strapi/queries/index.js +0 -29
  227. package/dist/strapi/queries/index.js.map +0 -1
  228. package/dist/strapi/queries/link.js +0 -224
  229. package/dist/strapi/queries/link.js.map +0 -1
  230. package/dist/strapi/remote/constants.js +0 -6
  231. package/dist/strapi/remote/constants.js.map +0 -1
  232. package/dist/strapi/remote/flows/default.js +0 -41
  233. package/dist/strapi/remote/flows/default.js.map +0 -1
  234. package/dist/strapi/remote/flows/index.js +0 -59
  235. package/dist/strapi/remote/flows/index.js.map +0 -1
  236. package/dist/strapi/remote/handlers/abstract.js +0 -3
  237. package/dist/strapi/remote/handlers/abstract.js.map +0 -1
  238. package/dist/strapi/remote/handlers/constants.js +0 -5
  239. package/dist/strapi/remote/handlers/constants.js.map +0 -1
  240. package/dist/strapi/remote/handlers/index.js +0 -10
  241. package/dist/strapi/remote/handlers/index.js.map +0 -1
  242. package/dist/strapi/remote/handlers/pull.js +0 -243
  243. package/dist/strapi/remote/handlers/pull.js.map +0 -1
  244. package/dist/strapi/remote/handlers/push.js +0 -311
  245. package/dist/strapi/remote/handlers/push.js.map +0 -1
  246. package/dist/strapi/remote/handlers/utils.js +0 -298
  247. package/dist/strapi/remote/handlers/utils.js.map +0 -1
  248. package/dist/strapi/remote/index.js +0 -29
  249. package/dist/strapi/remote/index.js.map +0 -1
  250. package/dist/utils/components.js +0 -381
  251. package/dist/utils/components.js.map +0 -1
  252. package/dist/utils/encryption/decrypt.js +0 -47
  253. package/dist/utils/encryption/decrypt.js.map +0 -1
  254. package/dist/utils/encryption/encrypt.js +0 -47
  255. package/dist/utils/encryption/encrypt.js.map +0 -1
  256. package/dist/utils/encryption/index.js +0 -19
  257. package/dist/utils/encryption/index.js.map +0 -1
  258. package/dist/utils/index.js +0 -33
  259. package/dist/utils/index.js.map +0 -1
  260. package/dist/utils/json.js +0 -68
  261. package/dist/utils/json.js.map +0 -1
  262. package/dist/utils/middleware.js +0 -14
  263. package/dist/utils/middleware.js.map +0 -1
  264. package/dist/utils/providers.js +0 -11
  265. package/dist/utils/providers.js.map +0 -1
  266. package/dist/utils/schema.js +0 -29
  267. package/dist/utils/schema.js.map +0 -1
  268. package/dist/utils/stream.js +0 -59
  269. package/dist/utils/stream.js.map +0 -1
  270. package/dist/utils/transaction.js +0 -88
  271. package/dist/utils/transaction.js.map +0 -1
@@ -1,138 +0,0 @@
1
- "use strict";
2
- /**
3
- * This file includes hooks to use for commander.hook and argParsers for commander.argParser
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.forceOption = exports.confirmMessage = exports.getCommanderConfirmMessage = exports.promptEncryptionKey = exports.parseInteger = exports.parseURL = exports.parseList = exports.getParseListWithChoices = void 0;
10
- const inquirer_1 = __importDefault(require("inquirer"));
11
- const commander_1 = require("commander");
12
- const chalk_1 = __importDefault(require("chalk"));
13
- const fp_1 = require("lodash/fp");
14
- const helpers_1 = require("./helpers");
15
- /**
16
- * argParser: Parse a comma-delimited string as an array
17
- */
18
- const parseList = (value) => {
19
- try {
20
- return value.split(',').map((item) => item.trim()); // trim shouldn't be necessary but might help catch unexpected whitespace characters
21
- }
22
- catch (e) {
23
- (0, helpers_1.exitWith)(1, `Unrecognized input: ${value}`);
24
- }
25
- return [];
26
- };
27
- exports.parseList = parseList;
28
- /**
29
- * Returns an argParser that returns a list
30
- */
31
- const getParseListWithChoices = (choices, errorMessage = 'Invalid options:') => {
32
- return (value) => {
33
- const list = parseList(value);
34
- const invalid = list.filter((item) => {
35
- return !choices.includes(item);
36
- });
37
- if (invalid.length > 0) {
38
- (0, helpers_1.exitWith)(1, `${errorMessage}: ${invalid.join(',')}`);
39
- }
40
- return list;
41
- };
42
- };
43
- exports.getParseListWithChoices = getParseListWithChoices;
44
- /**
45
- * argParser: Parse a string as an integer
46
- */
47
- const parseInteger = (value) => {
48
- // parseInt takes a string and a radix
49
- const parsedValue = parseInt(value, 10);
50
- if ((0, fp_1.isNaN)(parsedValue)) {
51
- throw new commander_1.InvalidOptionArgumentError(`Not an integer: ${value}`);
52
- }
53
- return parsedValue;
54
- };
55
- exports.parseInteger = parseInteger;
56
- /**
57
- * argParser: Parse a string as a URL object
58
- */
59
- const parseURL = (value) => {
60
- try {
61
- const url = new URL(value);
62
- if (!url.host) {
63
- throw new commander_1.InvalidOptionArgumentError(`Could not parse url ${value}`);
64
- }
65
- return url;
66
- }
67
- catch (e) {
68
- throw new commander_1.InvalidOptionArgumentError(`Could not parse url ${value}`);
69
- }
70
- };
71
- exports.parseURL = parseURL;
72
- /**
73
- * hook: if encrypt==true and key not provided, prompt for it
74
- */
75
- const promptEncryptionKey = async (thisCommand) => {
76
- const opts = thisCommand.opts();
77
- if (!opts.encrypt && opts.key) {
78
- return (0, helpers_1.exitWith)(1, 'Key may not be present unless encryption is used');
79
- }
80
- // if encrypt==true but we have no key, prompt for it
81
- if (opts.encrypt && !(opts.key && opts.key.length > 0)) {
82
- try {
83
- const answers = await inquirer_1.default.prompt([
84
- {
85
- type: 'password',
86
- message: 'Please enter an encryption key',
87
- name: 'key',
88
- validate(key) {
89
- if (key.length > 0)
90
- return true;
91
- return 'Key must be present when using the encrypt option';
92
- },
93
- },
94
- ]);
95
- opts.key = answers.key;
96
- }
97
- catch (e) {
98
- return (0, helpers_1.exitWith)(1, 'Failed to get encryption key');
99
- }
100
- if (!opts.key) {
101
- return (0, helpers_1.exitWith)(1, 'Failed to get encryption key');
102
- }
103
- }
104
- };
105
- exports.promptEncryptionKey = promptEncryptionKey;
106
- /**
107
- * hook: require a confirmation message to be accepted unless forceOption (-f,--force) is used
108
- */
109
- const getCommanderConfirmMessage = (message, { failMessage } = {}) => {
110
- return async (command) => {
111
- const confirmed = await confirmMessage(message, { force: command.opts().force });
112
- if (!confirmed) {
113
- (0, helpers_1.exitWith)(1, failMessage);
114
- }
115
- };
116
- };
117
- exports.getCommanderConfirmMessage = getCommanderConfirmMessage;
118
- const confirmMessage = async (message, { force } = {}) => {
119
- // if we have a force option, respond yes
120
- if (force === true) {
121
- // attempt to mimic the inquirer prompt exactly
122
- console.log(`${chalk_1.default.green('?')} ${chalk_1.default.bold(message)} ${chalk_1.default.cyan('Yes')}`);
123
- return true;
124
- }
125
- const answers = await inquirer_1.default.prompt([
126
- {
127
- type: 'confirm',
128
- message,
129
- name: `confirm`,
130
- default: false,
131
- },
132
- ]);
133
- return answers.confirm;
134
- };
135
- exports.confirmMessage = confirmMessage;
136
- const forceOption = new commander_1.Option('--force', `Automatically answer "yes" to all prompts, including potentially destructive requests, and run non-interactively.`);
137
- exports.forceOption = forceOption;
138
- //# sourceMappingURL=commander.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commander.js","sourceRoot":"","sources":["../../src/commands/commander.ts"],"names":[],"mappings":"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"}
@@ -1,359 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.parseRestoreFromOptions = exports.shouldSkipStage = exports.getAssetsBackupHandler = exports.getDiffHandler = exports.setSignalHandler = exports.abortTransfer = exports.formatDiagnostic = exports.validateExcludeOnly = exports.throttleOption = exports.onlyOption = exports.exitMessageText = exports.excludeOption = exports.createStrapiInstance = exports.DEFAULT_IGNORED_CONTENT_TYPES = exports.getTransferTelemetryPayload = exports.getDefaultExportName = exports.buildTransferTable = exports.loadersFactory = void 0;
30
- const chalk_1 = __importDefault(require("chalk"));
31
- const cli_table3_1 = __importDefault(require("cli-table3"));
32
- const commander_1 = require("commander");
33
- const logger_1 = require("@strapi/logger");
34
- const strapi_1 = __importDefault(require("@strapi/strapi"));
35
- const ora_1 = __importDefault(require("ora"));
36
- const fp_1 = require("lodash/fp");
37
- const helpers_1 = require("./helpers");
38
- const commander_2 = require("./commander");
39
- const engineDatatransfer = __importStar(require("../engine"));
40
- const { errors: { TransferEngineInitializationError }, } = engineDatatransfer;
41
- const exitMessageText = (process, error = false) => {
42
- const processCapitalized = process[0].toUpperCase() + process.slice(1);
43
- if (!error) {
44
- return chalk_1.default.bold(chalk_1.default.green(`${processCapitalized} process has been completed successfully!`));
45
- }
46
- return chalk_1.default.bold(chalk_1.default.red(`${processCapitalized} process failed.`));
47
- };
48
- exports.exitMessageText = exitMessageText;
49
- const pad = (n) => {
50
- return (n < 10 ? '0' : '') + String(n);
51
- };
52
- const yyyymmddHHMMSS = () => {
53
- const date = new Date();
54
- return (date.getFullYear() +
55
- pad(date.getMonth() + 1) +
56
- pad(date.getDate()) +
57
- pad(date.getHours()) +
58
- pad(date.getMinutes()) +
59
- pad(date.getSeconds()));
60
- };
61
- const getDefaultExportName = () => {
62
- return `export_${yyyymmddHHMMSS()}`;
63
- };
64
- exports.getDefaultExportName = getDefaultExportName;
65
- const buildTransferTable = (resultData) => {
66
- if (!resultData) {
67
- return;
68
- }
69
- // Build pretty table
70
- const table = new cli_table3_1.default({
71
- head: ['Type', 'Count', 'Size'].map((text) => chalk_1.default.bold.blue(text)),
72
- });
73
- let totalBytes = 0;
74
- let totalItems = 0;
75
- Object.keys(resultData).forEach((stage) => {
76
- const item = resultData[stage];
77
- if (!item) {
78
- return;
79
- }
80
- table.push([
81
- { hAlign: 'left', content: chalk_1.default.bold(stage) },
82
- { hAlign: 'right', content: item.count },
83
- { hAlign: 'right', content: `${(0, helpers_1.readableBytes)(item.bytes, 1, 11)} ` },
84
- ]);
85
- totalBytes += item.bytes;
86
- totalItems += item.count;
87
- if (item.aggregates) {
88
- Object.keys(item.aggregates)
89
- .sort()
90
- .forEach((subkey) => {
91
- if (!item.aggregates) {
92
- return;
93
- }
94
- const subitem = item.aggregates[subkey];
95
- table.push([
96
- { hAlign: 'left', content: `-- ${chalk_1.default.bold.grey(subkey)}` },
97
- { hAlign: 'right', content: chalk_1.default.grey(subitem.count) },
98
- { hAlign: 'right', content: chalk_1.default.grey(`(${(0, helpers_1.readableBytes)(subitem.bytes, 1, 11)})`) },
99
- ]);
100
- });
101
- }
102
- });
103
- table.push([
104
- { hAlign: 'left', content: chalk_1.default.bold.green('Total') },
105
- { hAlign: 'right', content: chalk_1.default.bold.green(totalItems) },
106
- { hAlign: 'right', content: `${chalk_1.default.bold.green((0, helpers_1.readableBytes)(totalBytes, 1, 11))} ` },
107
- ]);
108
- return table;
109
- };
110
- exports.buildTransferTable = buildTransferTable;
111
- const DEFAULT_IGNORED_CONTENT_TYPES = [
112
- 'admin::permission',
113
- 'admin::user',
114
- 'admin::role',
115
- 'admin::api-token',
116
- 'admin::api-token-permission',
117
- 'admin::transfer-token',
118
- 'admin::transfer-token-permission',
119
- 'admin::audit-log',
120
- ];
121
- exports.DEFAULT_IGNORED_CONTENT_TYPES = DEFAULT_IGNORED_CONTENT_TYPES;
122
- const abortTransfer = async ({ engine, strapi, }) => {
123
- try {
124
- await engine.abortTransfer();
125
- await strapi.destroy();
126
- }
127
- catch (e) {
128
- // ignore because there's not much else we can do
129
- return false;
130
- }
131
- return true;
132
- };
133
- exports.abortTransfer = abortTransfer;
134
- const setSignalHandler = async (handler, signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']) => {
135
- signals.forEach((signal) => {
136
- // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit
137
- // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to
138
- process.removeAllListeners(signal);
139
- process.on(signal, handler);
140
- });
141
- };
142
- exports.setSignalHandler = setSignalHandler;
143
- const createStrapiInstance = async (opts = {}) => {
144
- try {
145
- const appContext = await strapi_1.default.compile();
146
- const app = (0, strapi_1.default)({ ...opts, ...appContext });
147
- app.log.level = opts.logLevel || 'error';
148
- return await app.load();
149
- }
150
- catch (error) {
151
- if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {
152
- throw new Error('Process failed. Check the database connection with your Strapi project.');
153
- }
154
- throw error;
155
- }
156
- };
157
- exports.createStrapiInstance = createStrapiInstance;
158
- const transferDataTypes = Object.keys(engineDatatransfer.TransferGroupPresets);
159
- const throttleOption = new commander_1.Option('--throttle <delay after each entity>', `Add a delay in milliseconds between each transferred entity`)
160
- .argParser(commander_2.parseInteger)
161
- .hideHelp(); // This option is not publicly documented
162
- exports.throttleOption = throttleOption;
163
- const excludeOption = new commander_1.Option('--exclude <comma-separated data types>', `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`).argParser((0, commander_2.getParseListWithChoices)(transferDataTypes, 'Invalid options for "exclude"'));
164
- exports.excludeOption = excludeOption;
165
- const onlyOption = new commander_1.Option('--only <command-separated data types>', `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`).argParser((0, commander_2.getParseListWithChoices)(transferDataTypes, 'Invalid options for "only"'));
166
- exports.onlyOption = onlyOption;
167
- const validateExcludeOnly = (command) => {
168
- const { exclude, only } = command.opts();
169
- if (!only || !exclude) {
170
- return;
171
- }
172
- const choicesInBoth = only.filter((n) => {
173
- return exclude.indexOf(n) !== -1;
174
- });
175
- if (choicesInBoth.length > 0) {
176
- (0, helpers_1.exitWith)(1, `Data types may not be used in both "exclude" and "only" in the same command. Found in both: ${choicesInBoth.join(',')}`);
177
- }
178
- };
179
- exports.validateExcludeOnly = validateExcludeOnly;
180
- const errorColors = {
181
- fatal: chalk_1.default.red,
182
- error: chalk_1.default.red,
183
- silly: chalk_1.default.yellow,
184
- };
185
- const formatDiagnostic = (operation) => ({ details, kind }) => {
186
- const logger = (0, logger_1.createLogger)(logger_1.configs.createOutputFileConfiguration(`${operation}_error_log_${Date.now()}.log`));
187
- try {
188
- if (kind === 'error') {
189
- const { message, severity = 'fatal' } = details;
190
- const colorizeError = errorColors[severity];
191
- const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);
192
- logger.error(errorMessage);
193
- }
194
- if (kind === 'info') {
195
- const { message, params } = details;
196
- const msg = `${message}\n${params ? JSON.stringify(params, null, 2) : ''}`;
197
- logger.info(msg);
198
- }
199
- if (kind === 'warning') {
200
- const { origin, message } = details;
201
- logger.warn(`(${origin ?? 'transfer'}) ${message}`);
202
- }
203
- }
204
- catch (err) {
205
- logger.error(err);
206
- }
207
- };
208
- exports.formatDiagnostic = formatDiagnostic;
209
- const loadersFactory = (defaultLoaders = {}) => {
210
- const loaders = defaultLoaders;
211
- const updateLoader = (stage, data) => {
212
- if (!(stage in loaders)) {
213
- createLoader(stage);
214
- }
215
- const stageData = data[stage];
216
- const elapsedTime = stageData?.startTime
217
- ? (stageData?.endTime || Date.now()) - stageData.startTime
218
- : 0;
219
- const size = `size: ${(0, helpers_1.readableBytes)(stageData?.bytes ?? 0)}`;
220
- const elapsed = `elapsed: ${elapsedTime} ms`;
221
- const speed = elapsedTime > 0 ? `(${(0, helpers_1.readableBytes)(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';
222
- loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${!stageData?.endTime ? speed : ''}`;
223
- return loaders[stage];
224
- };
225
- const createLoader = (stage) => {
226
- Object.assign(loaders, { [stage]: (0, ora_1.default)() });
227
- return loaders[stage];
228
- };
229
- const getLoader = (stage) => {
230
- return loaders[stage];
231
- };
232
- return {
233
- updateLoader,
234
- createLoader,
235
- getLoader,
236
- };
237
- };
238
- exports.loadersFactory = loadersFactory;
239
- /**
240
- * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object
241
- */
242
- const getTransferTelemetryPayload = (engine) => {
243
- return {
244
- eventProperties: {
245
- source: engine?.sourceProvider?.name,
246
- destination: engine?.destinationProvider?.name,
247
- },
248
- };
249
- };
250
- exports.getTransferTelemetryPayload = getTransferTelemetryPayload;
251
- /**
252
- * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check
253
- */
254
- const getDiffHandler = (engine, { force, action, }) => {
255
- return async (context, next) => {
256
- // if we abort here, we need to actually exit the process because of conflict with inquirer prompt
257
- setSignalHandler(async () => {
258
- await abortTransfer({ engine, strapi: strapi });
259
- (0, helpers_1.exitWith)(1, exitMessageText(action, true));
260
- });
261
- let workflowsStatus;
262
- const source = 'Schema Integrity';
263
- Object.entries(context.diffs).forEach(([uid, diffs]) => {
264
- for (const diff of diffs) {
265
- const path = [uid].concat(diff.path).join('.');
266
- const endPath = diff.path[diff.path.length - 1];
267
- // Catch known features
268
- if (uid === 'admin::workflow' ||
269
- uid === 'admin::workflow-stage' ||
270
- endPath?.startsWith('strapi_stage') ||
271
- endPath?.startsWith('strapi_assignee')) {
272
- workflowsStatus = diff.kind;
273
- }
274
- // handle generic cases
275
- else if (diff.kind === 'added') {
276
- engine.reportWarning(chalk_1.default.red(`${chalk_1.default.bold(path)} does not exist on source`), source);
277
- }
278
- else if (diff.kind === 'deleted') {
279
- engine.reportWarning(chalk_1.default.red(`${chalk_1.default.bold(path)} does not exist on destination`), source);
280
- }
281
- else if (diff.kind === 'modified') {
282
- engine.reportWarning(chalk_1.default.red(`${chalk_1.default.bold(path)} has a different data type`), source);
283
- }
284
- }
285
- });
286
- // output the known feature warnings
287
- if (workflowsStatus === 'added') {
288
- engine.reportWarning(chalk_1.default.red(`Review workflows feature does not exist on source`), source);
289
- }
290
- else if (workflowsStatus === 'deleted') {
291
- engine.reportWarning(chalk_1.default.red(`Review workflows feature does not exist on destination`), source);
292
- }
293
- else if (workflowsStatus === 'modified') {
294
- engine.panic(new TransferEngineInitializationError('Unresolved differences in schema [review workflows]'));
295
- }
296
- const confirmed = await (0, commander_2.confirmMessage)('There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?', {
297
- force,
298
- });
299
- // reset handler back to normal
300
- setSignalHandler(() => abortTransfer({ engine, strapi: strapi }));
301
- if (confirmed) {
302
- context.ignoredDiffs = (0, fp_1.merge)(context.diffs, context.ignoredDiffs);
303
- }
304
- return next(context);
305
- };
306
- };
307
- exports.getDiffHandler = getDiffHandler;
308
- const getAssetsBackupHandler = (engine, { force, action, }) => {
309
- return async (context, next) => {
310
- // if we abort here, we need to actually exit the process because of conflict with inquirer prompt
311
- setSignalHandler(async () => {
312
- await abortTransfer({ engine, strapi: strapi });
313
- (0, helpers_1.exitWith)(1, exitMessageText(action, true));
314
- });
315
- console.warn('The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.');
316
- const confirmed = await (0, commander_2.confirmMessage)('Do you want to continue without backing up your public/uploads files?', {
317
- force,
318
- });
319
- if (confirmed) {
320
- context.ignore = true;
321
- }
322
- // reset handler back to normal
323
- setSignalHandler(() => abortTransfer({ engine, strapi: strapi }));
324
- return next(context);
325
- };
326
- };
327
- exports.getAssetsBackupHandler = getAssetsBackupHandler;
328
- const shouldSkipStage = (opts, dataKind) => {
329
- if (opts.exclude?.includes(dataKind)) {
330
- return true;
331
- }
332
- if (opts.only) {
333
- return !opts.only.includes(dataKind);
334
- }
335
- return false;
336
- };
337
- exports.shouldSkipStage = shouldSkipStage;
338
- // Based on exclude/only from options, create the restore object to match
339
- const parseRestoreFromOptions = (opts) => {
340
- const entitiesOptions = {
341
- exclude: DEFAULT_IGNORED_CONTENT_TYPES,
342
- include: undefined,
343
- };
344
- // if content is not included, send an empty array for include
345
- if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {
346
- entitiesOptions.include = [];
347
- }
348
- const restoreConfig = {
349
- entities: entitiesOptions,
350
- assets: !shouldSkipStage(opts, 'files'),
351
- configuration: {
352
- webhook: !shouldSkipStage(opts, 'config'),
353
- coreStore: !shouldSkipStage(opts, 'config'),
354
- },
355
- };
356
- return restoreConfig;
357
- };
358
- exports.parseRestoreFromOptions = parseRestoreFromOptions;
359
- //# sourceMappingURL=data-transfer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-transfer.js","sourceRoot":"","sources":["../../src/commands/data-transfer.ts"],"names":[],"mappings":"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"}