@strapi/data-transfer 4.14.4 → 4.15.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 (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 +5242 -30
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.mjs +5213 -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 +19 -17
  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,243 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPullController = void 0;
4
- const stream_1 = require("stream");
5
- const crypto_1 = require("crypto");
6
- const utils_1 = require("./utils");
7
- const providers_1 = require("../../providers");
8
- const providers_2 = require("../../../errors/providers");
9
- const TRANSFER_KIND = 'pull';
10
- const VALID_TRANSFER_ACTIONS = ['bootstrap', 'close', 'getMetadata', 'getSchemas'];
11
- exports.createPullController = (0, utils_1.handlerControllerFactory)((proto) => ({
12
- isTransferStarted() {
13
- return proto.isTransferStarted.call(this) && this.provider !== undefined;
14
- },
15
- verifyAuth() {
16
- return proto.verifyAuth.call(this, TRANSFER_KIND);
17
- },
18
- cleanup() {
19
- proto.cleanup.call(this);
20
- this.streams = {};
21
- delete this.provider;
22
- },
23
- assertValidTransferAction(action) {
24
- // Abstract the constant to string[] to allow looser check on the given action
25
- const validActions = VALID_TRANSFER_ACTIONS;
26
- if (validActions.includes(action)) {
27
- return;
28
- }
29
- throw new providers_2.ProviderTransferError(`Invalid action provided: "${action}"`, {
30
- action,
31
- validActions: Object.keys(VALID_TRANSFER_ACTIONS),
32
- });
33
- },
34
- async onMessage(raw) {
35
- const msg = JSON.parse(raw.toString());
36
- if (!(0, utils_1.isDataTransferMessage)(msg)) {
37
- return;
38
- }
39
- if (!msg.uuid) {
40
- await this.respond(undefined, new Error('Missing uuid in message'));
41
- }
42
- if (proto.hasUUID(msg.uuid)) {
43
- const previousResponse = proto.response;
44
- if (previousResponse?.uuid === msg.uuid) {
45
- await this.respond(previousResponse?.uuid, previousResponse.e, previousResponse.data);
46
- }
47
- return;
48
- }
49
- const { uuid, type } = msg;
50
- proto.addUUID(uuid);
51
- // Regular command message (init, end, status)
52
- if (type === 'command') {
53
- const { command } = msg;
54
- await this.executeAndRespond(uuid, () => {
55
- this.assertValidTransferCommand(command);
56
- // The status command don't have params
57
- if (command === 'status') {
58
- return this.status();
59
- }
60
- return this[command](msg.params);
61
- });
62
- }
63
- // Transfer message (the transfer must be init first)
64
- else if (type === 'transfer') {
65
- await this.executeAndRespond(uuid, async () => {
66
- await this.verifyAuth();
67
- this.assertValidTransfer();
68
- return this.onTransferMessage(msg);
69
- });
70
- }
71
- // Invalid messages
72
- else {
73
- await this.respond(uuid, new Error('Bad Request'));
74
- }
75
- },
76
- async onTransferMessage(msg) {
77
- const { kind } = msg;
78
- if (kind === 'action') {
79
- return this.onTransferAction(msg);
80
- }
81
- if (kind === 'step') {
82
- return this.onTransferStep(msg);
83
- }
84
- },
85
- async onTransferAction(msg) {
86
- const { action } = msg;
87
- this.assertValidTransferAction(action);
88
- return this.provider?.[action]();
89
- },
90
- async flush(stage, id) {
91
- const batchSize = 1024 * 1024;
92
- let batch = [];
93
- const stream = this.streams?.[stage];
94
- const batchLength = () => Buffer.byteLength(JSON.stringify(batch));
95
- const sendBatch = async () => {
96
- await this.confirm({
97
- type: 'transfer',
98
- data: batch,
99
- ended: false,
100
- error: null,
101
- id,
102
- });
103
- };
104
- if (!stream) {
105
- throw new providers_2.ProviderTransferError(`No available stream found for ${stage}`);
106
- }
107
- try {
108
- for await (const chunk of stream) {
109
- batch.push(chunk);
110
- if (batchLength() >= batchSize) {
111
- await sendBatch();
112
- batch = [];
113
- }
114
- }
115
- if (batch.length > 0) {
116
- await sendBatch();
117
- batch = [];
118
- }
119
- await this.confirm({ type: 'transfer', data: null, ended: true, error: null, id });
120
- }
121
- catch (e) {
122
- await this.confirm({ type: 'transfer', data: null, ended: true, error: e, id });
123
- }
124
- },
125
- async onTransferStep(msg) {
126
- const { step, action } = msg;
127
- if (action === 'start') {
128
- if (this.streams?.[step] instanceof stream_1.Readable) {
129
- throw new Error('Stream already created, something went wrong');
130
- }
131
- const flushUUID = (0, crypto_1.randomUUID)();
132
- await this.createReadableStreamForStep(step);
133
- this.flush(step, flushUUID);
134
- return { ok: true, id: flushUUID };
135
- }
136
- if (action === 'end') {
137
- const stream = this.streams?.[step];
138
- if (stream?.readableEnded === false) {
139
- await new Promise((resolve) => {
140
- stream?.on('close', resolve).destroy();
141
- });
142
- }
143
- delete this.streams?.[step];
144
- return { ok: true };
145
- }
146
- },
147
- async createReadableStreamForStep(step) {
148
- const mapper = {
149
- entities: () => this.provider?.createEntitiesReadStream(),
150
- links: () => this.provider?.createLinksReadStream(),
151
- configuration: () => this.provider?.createConfigurationReadStream(),
152
- assets: () => {
153
- const assets = this.provider?.createAssetsReadStream();
154
- let batch = [];
155
- const batchLength = () => {
156
- return batch.reduce((acc, chunk) => (chunk.action === 'stream' ? acc + chunk.data.byteLength : acc), 0);
157
- };
158
- const BATCH_MAX_SIZE = 1024 * 1024; // 1MB
159
- if (!assets) {
160
- throw new Error('bad');
161
- }
162
- /**
163
- * Generates batches of 1MB of data from the assets stream to avoid
164
- * sending too many small chunks
165
- *
166
- * @param stream Assets stream from the local source provider
167
- */
168
- async function* generator(stream) {
169
- let hasStarted = false;
170
- let assetID = '';
171
- for await (const chunk of stream) {
172
- const { stream: assetStream, ...assetData } = chunk;
173
- if (!hasStarted) {
174
- assetID = (0, crypto_1.randomUUID)();
175
- // Start the transfer of a new asset
176
- batch.push({ action: 'start', assetID, data: assetData });
177
- hasStarted = true;
178
- }
179
- for await (const assetChunk of assetStream) {
180
- // Add the asset data to the batch
181
- batch.push({ action: 'stream', assetID, data: assetChunk });
182
- // if the batch size is bigger than BATCH_MAX_SIZE stream the batch
183
- if (batchLength() >= BATCH_MAX_SIZE) {
184
- yield batch;
185
- batch = [];
186
- }
187
- }
188
- // All the asset data has been streamed and gets ready for the next one
189
- hasStarted = false;
190
- batch.push({ action: 'end', assetID });
191
- yield batch;
192
- batch = [];
193
- }
194
- }
195
- return stream_1.Readable.from(generator(assets));
196
- },
197
- };
198
- if (!(step in mapper)) {
199
- throw new Error('Invalid transfer step, impossible to create a stream');
200
- }
201
- if (!this.streams) {
202
- throw new Error('Invalid transfer state');
203
- }
204
- this.streams[step] = await mapper[step]();
205
- },
206
- // Commands
207
- async init() {
208
- if (this.transferID || this.provider) {
209
- throw new Error('Transfer already in progress');
210
- }
211
- await this.verifyAuth();
212
- this.transferID = (0, crypto_1.randomUUID)();
213
- this.startedAt = Date.now();
214
- this.streams = {};
215
- this.provider = (0, providers_1.createLocalStrapiSourceProvider)({
216
- autoDestroy: false,
217
- getStrapi: () => strapi,
218
- });
219
- return { transferID: this.transferID };
220
- },
221
- async end(params) {
222
- await this.verifyAuth();
223
- if (this.transferID !== params?.transferID) {
224
- throw new providers_2.ProviderTransferError('Bad transfer ID provided');
225
- }
226
- this.cleanup();
227
- return { ok: true };
228
- },
229
- async status() {
230
- const isStarted = this.isTransferStarted();
231
- if (!isStarted) {
232
- const startedAt = this.startedAt;
233
- return {
234
- active: true,
235
- kind: TRANSFER_KIND,
236
- startedAt,
237
- elapsed: Date.now() - startedAt,
238
- };
239
- }
240
- return { active: false, kind: null, elapsed: null, startedAt: null };
241
- },
242
- }));
243
- //# sourceMappingURL=pull.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/strapi/remote/handlers/pull.ts"],"names":[],"mappings":"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"}
@@ -1,311 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPushController = void 0;
4
- const crypto_1 = require("crypto");
5
- const stream_1 = require("stream");
6
- const providers_1 = require("../../../errors/providers");
7
- const providers_2 = require("../../providers");
8
- const flows_1 = require("../flows");
9
- const utils_1 = require("./utils");
10
- const VALID_TRANSFER_ACTIONS = [
11
- 'bootstrap',
12
- 'close',
13
- 'rollback',
14
- 'beforeTransfer',
15
- 'getMetadata',
16
- 'getSchemas',
17
- ];
18
- const TRANSFER_KIND = 'push';
19
- const writeAsync = (stream, data) => {
20
- return new Promise((resolve, reject) => {
21
- stream.write(data, (error) => {
22
- if (error) {
23
- reject(error);
24
- }
25
- resolve();
26
- });
27
- });
28
- };
29
- exports.createPushController = (0, utils_1.handlerControllerFactory)((proto) => ({
30
- isTransferStarted() {
31
- return proto.isTransferStarted.call(this) && this.provider !== undefined;
32
- },
33
- verifyAuth() {
34
- return proto.verifyAuth.call(this, TRANSFER_KIND);
35
- },
36
- cleanup() {
37
- proto.cleanup.call(this);
38
- this.streams = {};
39
- this.assets = {};
40
- delete this.flow;
41
- delete this.provider;
42
- },
43
- teardown() {
44
- if (this.provider) {
45
- this.provider.rollback();
46
- }
47
- proto.teardown.call(this);
48
- },
49
- assertValidTransfer() {
50
- proto.assertValidTransfer.call(this);
51
- if (this.provider === undefined) {
52
- throw new Error('Invalid Transfer Process');
53
- }
54
- },
55
- assertValidTransferAction(action) {
56
- if (VALID_TRANSFER_ACTIONS.includes(action)) {
57
- return;
58
- }
59
- throw new providers_1.ProviderTransferError(`Invalid action provided: "${action}"`, {
60
- action,
61
- validActions: Object.keys(VALID_TRANSFER_ACTIONS),
62
- });
63
- },
64
- assertValidStreamTransferStep(stage) {
65
- const currentStep = this.flow?.get();
66
- const nextStep = { kind: 'transfer', stage };
67
- if (currentStep?.kind === 'transfer' && !currentStep.locked) {
68
- throw new providers_1.ProviderTransferError(`You need to initialize the transfer stage (${nextStep}) before starting to stream data`);
69
- }
70
- if (this.flow?.cannot(nextStep)) {
71
- throw new providers_1.ProviderTransferError(`Invalid stage (${nextStep}) provided for the current flow`, {
72
- step: nextStep,
73
- });
74
- }
75
- },
76
- async createWritableStreamForStep(step) {
77
- const mapper = {
78
- entities: () => this.provider?.createEntitiesWriteStream(),
79
- links: () => this.provider?.createLinksWriteStream(),
80
- configuration: () => this.provider?.createConfigurationWriteStream(),
81
- assets: () => this.provider?.createAssetsWriteStream(),
82
- };
83
- if (!(step in mapper)) {
84
- throw new Error('Invalid transfer step, impossible to create a stream');
85
- }
86
- if (!this.streams) {
87
- throw new Error('Invalid transfer state');
88
- }
89
- this.streams[step] = await mapper[step]();
90
- },
91
- async onMessage(raw) {
92
- const msg = JSON.parse(raw.toString());
93
- if (!(0, utils_1.isDataTransferMessage)(msg)) {
94
- return;
95
- }
96
- if (!msg.uuid) {
97
- await this.respond(undefined, new Error('Missing uuid in message'));
98
- }
99
- if (proto.hasUUID(msg.uuid)) {
100
- const previousResponse = proto.response;
101
- if (previousResponse?.uuid === msg.uuid) {
102
- await this.respond(previousResponse?.uuid, previousResponse.e, previousResponse.data);
103
- }
104
- return;
105
- }
106
- const { uuid, type } = msg;
107
- proto.addUUID(uuid);
108
- // Regular command message (init, end, status)
109
- if (type === 'command') {
110
- const { command } = msg;
111
- await this.executeAndRespond(uuid, () => {
112
- this.assertValidTransferCommand(command);
113
- // The status command don't have params
114
- if (command === 'status') {
115
- return this.status();
116
- }
117
- return this[command](msg.params);
118
- });
119
- }
120
- // Transfer message (the transfer must be init first)
121
- else if (type === 'transfer') {
122
- await this.executeAndRespond(uuid, async () => {
123
- await this.verifyAuth();
124
- this.assertValidTransfer();
125
- return this.onTransferMessage(msg);
126
- });
127
- }
128
- // Invalid messages
129
- else {
130
- await this.respond(uuid, new Error('Bad Request'));
131
- }
132
- },
133
- async onTransferMessage(msg) {
134
- const { kind } = msg;
135
- if (kind === 'action') {
136
- return this.onTransferAction(msg);
137
- }
138
- if (kind === 'step') {
139
- return this.onTransferStep(msg);
140
- }
141
- },
142
- lockTransferStep(stage) {
143
- const currentStep = this.flow?.get();
144
- const nextStep = { kind: 'transfer', stage };
145
- if (currentStep?.kind === 'transfer' && currentStep.locked) {
146
- throw new providers_1.ProviderTransferError(`It's not possible to start a new transfer stage (${stage}) while another one is in progress (${currentStep.stage})`);
147
- }
148
- if (this.flow?.cannot(nextStep)) {
149
- throw new providers_1.ProviderTransferError(`Invalid stage (${stage}) provided for the current flow`, {
150
- step: nextStep,
151
- });
152
- }
153
- this.flow?.set({ ...nextStep, locked: true });
154
- },
155
- unlockTransferStep(stage) {
156
- const currentStep = this.flow?.get();
157
- const nextStep = { kind: 'transfer', stage };
158
- // Cannot unlock if not locked (aka: started)
159
- if (currentStep?.kind === 'transfer' && !currentStep.locked) {
160
- throw new providers_1.ProviderTransferError(`You need to initialize the transfer stage (${stage}) before ending it`);
161
- }
162
- // Cannot unlock if invalid step provided
163
- if (this.flow?.cannot(nextStep)) {
164
- throw new providers_1.ProviderTransferError(`Invalid stage (${stage}) provided for the current flow`, {
165
- step: nextStep,
166
- });
167
- }
168
- this.flow?.set({ ...nextStep, locked: false });
169
- },
170
- async onTransferStep(msg) {
171
- const { step: stage } = msg;
172
- if (msg.action === 'start') {
173
- this.lockTransferStep(stage);
174
- if (this.streams?.[stage] instanceof stream_1.Writable) {
175
- throw new Error('Stream already created, something went wrong');
176
- }
177
- await this.createWritableStreamForStep(stage);
178
- return { ok: true };
179
- }
180
- if (msg.action === 'stream') {
181
- this.assertValidStreamTransferStep(stage);
182
- // Stream operation on the current transfer stage
183
- const stream = this.streams?.[stage];
184
- if (!stream) {
185
- throw new Error('You need to init first');
186
- }
187
- // Assets are nested streams
188
- if (stage === 'assets') {
189
- return this.streamAsset(msg.data);
190
- }
191
- // For all other steps
192
- await Promise.all(msg.data.map((item) => writeAsync(stream, item)));
193
- }
194
- if (msg.action === 'end') {
195
- this.unlockTransferStep(stage);
196
- const stream = this.streams?.[stage];
197
- if (stream && !stream.closed) {
198
- await new Promise((resolve, reject) => {
199
- stream.on('close', resolve).on('error', reject).end();
200
- });
201
- }
202
- delete this.streams?.[stage];
203
- return { ok: true };
204
- }
205
- },
206
- async onTransferAction(msg) {
207
- const { action } = msg;
208
- this.assertValidTransferAction(action);
209
- const step = { kind: 'action', action };
210
- const isStepRegistered = this.flow?.has(step);
211
- if (isStepRegistered) {
212
- if (this.flow?.cannot(step)) {
213
- throw new providers_1.ProviderTransferError(`Invalid action "${action}" found for the current flow `, {
214
- action,
215
- });
216
- }
217
- this.flow?.set(step);
218
- }
219
- return this.provider?.[action]();
220
- },
221
- async streamAsset(payload) {
222
- const assetsStream = this.streams?.assets;
223
- // TODO: close the stream upon receiving an 'end' event instead
224
- if (payload === null) {
225
- this.streams?.assets?.end();
226
- return;
227
- }
228
- for (const item of payload) {
229
- /**
230
- * This queues the given callback function to be executed in the next iteration
231
- * of the event loop, immediately after the current operation completes.
232
- */
233
- process.nextTick(async () => {
234
- const { action, assetID } = item;
235
- if (!assetsStream) {
236
- throw new Error('Stream not defined');
237
- }
238
- if (action === 'start') {
239
- this.assets[assetID] = { ...item.data, stream: new stream_1.PassThrough() };
240
- writeAsync(assetsStream, this.assets[assetID]);
241
- }
242
- if (action === 'stream') {
243
- // The buffer has gone through JSON operations and is now of shape { type: "Buffer"; data: UInt8Array }
244
- // We need to transform it back into a Buffer instance
245
- const rawBuffer = item.data;
246
- const chunk = Buffer.from(rawBuffer.data);
247
- await writeAsync(this.assets[assetID].stream, chunk);
248
- }
249
- if (action === 'end') {
250
- await new Promise((resolve, reject) => {
251
- const { stream: assetStream } = this.assets[assetID];
252
- assetStream
253
- .on('close', () => {
254
- delete this.assets[assetID];
255
- resolve();
256
- })
257
- .on('error', reject)
258
- .end();
259
- });
260
- }
261
- });
262
- }
263
- },
264
- onClose() {
265
- this.teardown();
266
- },
267
- onError(err) {
268
- this.teardown();
269
- strapi.log.error(err);
270
- },
271
- // Commands
272
- async init(params) {
273
- if (this.transferID || this.provider) {
274
- throw new Error('Transfer already in progress');
275
- }
276
- await this.verifyAuth();
277
- this.transferID = (0, crypto_1.randomUUID)();
278
- this.startedAt = Date.now();
279
- this.assets = {};
280
- this.streams = {};
281
- this.flow = (0, flows_1.createFlow)(flows_1.DEFAULT_TRANSFER_FLOW);
282
- this.provider = (0, providers_2.createLocalStrapiDestinationProvider)({
283
- ...params.options,
284
- autoDestroy: false,
285
- getStrapi: () => strapi,
286
- });
287
- return { transferID: this.transferID };
288
- },
289
- async status() {
290
- const isStarted = this.isTransferStarted();
291
- if (isStarted) {
292
- const startedAt = this.startedAt;
293
- return {
294
- active: true,
295
- kind: TRANSFER_KIND,
296
- startedAt,
297
- elapsed: Date.now() - startedAt,
298
- };
299
- }
300
- return { active: false, kind: null, elapsed: null, startedAt: null };
301
- },
302
- async end(params) {
303
- await this.verifyAuth();
304
- if (this.transferID !== params?.transferID) {
305
- throw new providers_1.ProviderTransferError('Bad transfer ID provided');
306
- }
307
- this.cleanup();
308
- return { ok: true };
309
- },
310
- }));
311
- //# sourceMappingURL=push.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/strapi/remote/handlers/push.ts"],"names":[],"mappings":"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"}