@webiny/api-sync-system 6.0.0-alpha.5 → 6.0.0-rc.1

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 (299) hide show
  1. package/README.md +6 -108
  2. package/constants.js +1 -7
  3. package/constants.js.map +1 -1
  4. package/index.js +3 -38
  5. package/index.js.map +1 -1
  6. package/package.json +20 -23
  7. package/resolver/app/RecordHandler.d.ts +6 -6
  8. package/resolver/app/RecordHandler.js +7 -15
  9. package/resolver/app/RecordHandler.js.map +1 -1
  10. package/resolver/app/RecordsValidation.js +6 -14
  11. package/resolver/app/RecordsValidation.js.map +1 -1
  12. package/resolver/app/ResolverApplication.d.ts +1 -1
  13. package/resolver/app/ResolverApplication.js +10 -18
  14. package/resolver/app/ResolverApplication.js.map +1 -1
  15. package/resolver/app/abstractions/RecordHandler.d.ts +1 -1
  16. package/resolver/app/abstractions/RecordHandler.js +1 -5
  17. package/resolver/app/abstractions/RecordsValidation.d.ts +2 -2
  18. package/resolver/app/abstractions/RecordsValidation.js +1 -5
  19. package/resolver/app/abstractions/RecordsValidation.js.map +1 -1
  20. package/resolver/app/abstractions/ResolverApplication.js +1 -5
  21. package/resolver/app/abstractions/ResolverRecord.d.ts +1 -1
  22. package/resolver/app/abstractions/ResolverRecord.js +1 -5
  23. package/resolver/app/abstractions/ResolverRecord.js.map +1 -1
  24. package/resolver/app/bundler/BaseBundle.d.ts +6 -6
  25. package/resolver/app/bundler/BaseBundle.js +1 -8
  26. package/resolver/app/bundler/BaseBundle.js.map +1 -1
  27. package/resolver/app/bundler/Bundler.d.ts +1 -1
  28. package/resolver/app/bundler/Bundler.js +2 -10
  29. package/resolver/app/bundler/Bundler.js.map +1 -1
  30. package/resolver/app/bundler/Bundles.d.ts +2 -2
  31. package/resolver/app/bundler/Bundles.js +2 -10
  32. package/resolver/app/bundler/Bundles.js.map +1 -1
  33. package/resolver/app/bundler/CommandBundle.d.ts +1 -1
  34. package/resolver/app/bundler/CommandBundle.js +3 -11
  35. package/resolver/app/bundler/CommandBundle.js.map +1 -1
  36. package/resolver/app/bundler/TableBundle.d.ts +1 -1
  37. package/resolver/app/bundler/TableBundle.js +3 -11
  38. package/resolver/app/bundler/TableBundle.js.map +1 -1
  39. package/resolver/app/bundler/types.d.ts +2 -2
  40. package/resolver/app/bundler/types.js +1 -5
  41. package/resolver/app/commandHandler/DeleteCommandHandler.d.ts +3 -3
  42. package/resolver/app/commandHandler/DeleteCommandHandler.js +1 -8
  43. package/resolver/app/commandHandler/DeleteCommandHandler.js.map +1 -1
  44. package/resolver/app/commandHandler/PutCommandHandler.d.ts +4 -4
  45. package/resolver/app/commandHandler/PutCommandHandler.js +1 -8
  46. package/resolver/app/commandHandler/PutCommandHandler.js.map +1 -1
  47. package/resolver/app/commandHandler/delete.d.ts +1 -1
  48. package/resolver/app/commandHandler/delete.js +6 -13
  49. package/resolver/app/commandHandler/delete.js.map +1 -1
  50. package/resolver/app/commandHandler/put.d.ts +1 -1
  51. package/resolver/app/commandHandler/put.js +6 -13
  52. package/resolver/app/commandHandler/put.js.map +1 -1
  53. package/resolver/app/data/SourceDataContainer.d.ts +3 -3
  54. package/resolver/app/data/SourceDataContainer.js +1 -8
  55. package/resolver/app/data/SourceDataContainer.js.map +1 -1
  56. package/resolver/app/data/types.d.ts +2 -2
  57. package/resolver/app/data/types.js +1 -5
  58. package/resolver/app/fetcher/Fetcher.d.ts +3 -3
  59. package/resolver/app/fetcher/Fetcher.js +13 -22
  60. package/resolver/app/fetcher/Fetcher.js.map +1 -1
  61. package/resolver/app/fetcher/types.d.ts +2 -2
  62. package/resolver/app/fetcher/types.js +1 -5
  63. package/resolver/app/ingestor/Ingestor.d.ts +1 -1
  64. package/resolver/app/ingestor/Ingestor.js +2 -10
  65. package/resolver/app/ingestor/Ingestor.js.map +1 -1
  66. package/resolver/app/ingestor/IngestorResult.js +3 -11
  67. package/resolver/app/ingestor/IngestorResult.js.map +1 -1
  68. package/resolver/app/ingestor/types.d.ts +2 -2
  69. package/resolver/app/ingestor/types.js +1 -5
  70. package/resolver/app/storer/Storer.d.ts +3 -3
  71. package/resolver/app/storer/Storer.js +12 -20
  72. package/resolver/app/storer/Storer.js.map +1 -1
  73. package/resolver/app/storer/types.d.ts +2 -2
  74. package/resolver/app/storer/types.js +1 -5
  75. package/resolver/app/storer/types.js.map +1 -1
  76. package/resolver/app/transform/TransformHandler.d.ts +4 -4
  77. package/resolver/app/transform/TransformHandler.js +5 -12
  78. package/resolver/app/transform/TransformHandler.js.map +1 -1
  79. package/resolver/app/transform/middleware.d.ts +1 -1
  80. package/resolver/app/transform/middleware.js +1 -7
  81. package/resolver/app/transform/middleware.js.map +1 -1
  82. package/resolver/app/utils/Retry.js +4 -12
  83. package/resolver/app/utils/Retry.js.map +1 -1
  84. package/resolver/app/utils/sleep.js +1 -8
  85. package/resolver/app/utils/sleep.js.map +1 -1
  86. package/resolver/app/validation/body.d.ts +6 -6
  87. package/resolver/app/validation/body.js +22 -30
  88. package/resolver/app/validation/body.js.map +1 -1
  89. package/resolver/app/validation/createJsonTransform.js +6 -14
  90. package/resolver/app/validation/createJsonTransform.js.map +1 -1
  91. package/resolver/app/validation/detail.d.ts +6 -6
  92. package/resolver/app/validation/detail.js +16 -24
  93. package/resolver/app/validation/detail.js.map +1 -1
  94. package/resolver/app/validation/event.d.ts +6 -6
  95. package/resolver/app/validation/event.js +19 -27
  96. package/resolver/app/validation/event.js.map +1 -1
  97. package/resolver/app/validation/numericString.js +5 -13
  98. package/resolver/app/validation/numericString.js.map +1 -1
  99. package/resolver/app/validation/system.js +8 -16
  100. package/resolver/app/validation/system.js.map +1 -1
  101. package/resolver/createEventHandlerPlugin.d.ts +2 -1
  102. package/resolver/createEventHandlerPlugin.js +35 -42
  103. package/resolver/createEventHandlerPlugin.js.map +1 -1
  104. package/resolver/createResolverHandler.d.ts +1 -1
  105. package/resolver/createResolverHandler.js +24 -31
  106. package/resolver/createResolverHandler.js.map +1 -1
  107. package/resolver/deployment/Deployment.d.ts +2 -3
  108. package/resolver/deployment/Deployment.js +6 -14
  109. package/resolver/deployment/Deployment.js.map +1 -1
  110. package/resolver/deployment/Deployments.js +2 -10
  111. package/resolver/deployment/Deployments.js.map +1 -1
  112. package/resolver/deployment/DeploymentsFetcher.js +33 -42
  113. package/resolver/deployment/DeploymentsFetcher.js.map +1 -1
  114. package/resolver/deployment/types.d.ts +4 -4
  115. package/resolver/deployment/types.js +1 -5
  116. package/resolver/deployment/types.js.map +1 -1
  117. package/resolver/lambda/LambdaTrigger.js +5 -12
  118. package/resolver/lambda/LambdaTrigger.js.map +1 -1
  119. package/resolver/plugins/CommandHandlerPlugin.d.ts +3 -3
  120. package/resolver/plugins/CommandHandlerPlugin.js +3 -11
  121. package/resolver/plugins/CommandHandlerPlugin.js.map +1 -1
  122. package/resolver/plugins/StorerAfterEachPlugin.d.ts +2 -2
  123. package/resolver/plugins/StorerAfterEachPlugin.js +4 -13
  124. package/resolver/plugins/StorerAfterEachPlugin.js.map +1 -1
  125. package/resolver/plugins/TransformRecordPlugin.d.ts +3 -3
  126. package/resolver/plugins/TransformRecordPlugin.js +3 -11
  127. package/resolver/plugins/TransformRecordPlugin.js.map +1 -1
  128. package/resolver/recordTypes/fileManager/CopyFile.js +4 -11
  129. package/resolver/recordTypes/fileManager/CopyFile.js.map +1 -1
  130. package/resolver/recordTypes/fileManager/DeleteFile.d.ts +1 -1
  131. package/resolver/recordTypes/fileManager/DeleteFile.js +3 -10
  132. package/resolver/recordTypes/fileManager/DeleteFile.js.map +1 -1
  133. package/resolver/recordTypes/fileManager/fileManager.d.ts +1 -1
  134. package/resolver/recordTypes/fileManager/fileManager.js +4 -11
  135. package/resolver/recordTypes/fileManager/fileManager.js.map +1 -1
  136. package/resolver/recordTypes/fileManager/fileManagerOnDelete.d.ts +1 -1
  137. package/resolver/recordTypes/fileManager/fileManagerOnDelete.js +7 -14
  138. package/resolver/recordTypes/fileManager/fileManagerOnDelete.js.map +1 -1
  139. package/resolver/recordTypes/fileManager/fileManagerOnPut.d.ts +1 -1
  140. package/resolver/recordTypes/fileManager/fileManagerOnPut.js +7 -14
  141. package/resolver/recordTypes/fileManager/fileManagerOnPut.js.map +1 -1
  142. package/resolver/recordTypes/fileManager/shouldBeHandled.d.ts +1 -1
  143. package/resolver/recordTypes/fileManager/shouldBeHandled.js +1 -8
  144. package/resolver/recordTypes/fileManager/shouldBeHandled.js.map +1 -1
  145. package/resolver/recordTypes/fileManager/types.d.ts +2 -2
  146. package/resolver/recordTypes/fileManager/types.js +1 -5
  147. package/resolver/recordTypes/users/CopyUser.d.ts +2 -2
  148. package/resolver/recordTypes/users/CopyUser.js +3 -10
  149. package/resolver/recordTypes/users/CopyUser.js.map +1 -1
  150. package/resolver/recordTypes/users/DeleteUser.d.ts +2 -2
  151. package/resolver/recordTypes/users/DeleteUser.js +3 -10
  152. package/resolver/recordTypes/users/DeleteUser.js.map +1 -1
  153. package/resolver/recordTypes/users/shouldBeHandled.d.ts +1 -1
  154. package/resolver/recordTypes/users/shouldBeHandled.js +1 -8
  155. package/resolver/recordTypes/users/shouldBeHandled.js.map +1 -1
  156. package/resolver/recordTypes/users/types.d.ts +1 -1
  157. package/resolver/recordTypes/users/types.js +1 -5
  158. package/resolver/recordTypes/users/types.js.map +1 -1
  159. package/resolver/recordTypes/users/users.js +4 -11
  160. package/resolver/recordTypes/users/users.js.map +1 -1
  161. package/resolver/recordTypes/users/usersOnDelete.d.ts +2 -2
  162. package/resolver/recordTypes/users/usersOnDelete.js +7 -14
  163. package/resolver/recordTypes/users/usersOnDelete.js.map +1 -1
  164. package/resolver/recordTypes/users/usersOnPut.d.ts +2 -2
  165. package/resolver/recordTypes/users/usersOnPut.js +7 -14
  166. package/resolver/recordTypes/users/usersOnPut.js.map +1 -1
  167. package/sync/FilterOutRecord.d.ts +2 -2
  168. package/sync/FilterOutRecord.js +2 -10
  169. package/sync/FilterOutRecord.js.map +1 -1
  170. package/sync/attachToDynamoDbDocument.d.ts +1 -1
  171. package/sync/attachToDynamoDbDocument.js +9 -17
  172. package/sync/attachToDynamoDbDocument.js.map +1 -1
  173. package/sync/createHandler.js +27 -34
  174. package/sync/createHandler.js.map +1 -1
  175. package/sync/createSendDataToEventBridgeOnRequestEnd.js +6 -13
  176. package/sync/createSendDataToEventBridgeOnRequestEnd.js.map +1 -1
  177. package/sync/createSyncSystem.d.ts +1 -1
  178. package/sync/createSyncSystem.js +6 -13
  179. package/sync/createSyncSystem.js.map +1 -1
  180. package/sync/filter/createDefaultFilterOutRecordPlugins.d.ts +1 -1
  181. package/sync/filter/createDefaultFilterOutRecordPlugins.js +9 -19
  182. package/sync/filter/createDefaultFilterOutRecordPlugins.js.map +1 -1
  183. package/sync/handler/Handler.d.ts +2 -2
  184. package/sync/handler/Handler.js +9 -17
  185. package/sync/handler/Handler.js.map +1 -1
  186. package/sync/handler/HandlerConverter.js +2 -10
  187. package/sync/handler/HandlerConverter.js.map +1 -1
  188. package/sync/handler/converter/BatchGetCommandConverter.js +6 -14
  189. package/sync/handler/converter/BatchGetCommandConverter.js.map +1 -1
  190. package/sync/handler/converter/BatchWriteCommandConverter.js +6 -14
  191. package/sync/handler/converter/BatchWriteCommandConverter.js.map +1 -1
  192. package/sync/handler/converter/DeleteCommandConverter.js +6 -14
  193. package/sync/handler/converter/DeleteCommandConverter.js.map +1 -1
  194. package/sync/handler/converter/GetCommandConverter.js +6 -14
  195. package/sync/handler/converter/GetCommandConverter.js.map +1 -1
  196. package/sync/handler/converter/PutCommandConverter.js +6 -14
  197. package/sync/handler/converter/PutCommandConverter.js.map +1 -1
  198. package/sync/handler/converter/QueryCommandConverter.js +6 -14
  199. package/sync/handler/converter/QueryCommandConverter.js.map +1 -1
  200. package/sync/handler/converter/ScanCommandConverter.js +6 -14
  201. package/sync/handler/converter/ScanCommandConverter.js.map +1 -1
  202. package/sync/handler/converter/UpdateCommandConverter.js +6 -14
  203. package/sync/handler/converter/UpdateCommandConverter.js.map +1 -1
  204. package/sync/handler/converter/commands/BatchWriteCommandValue.d.ts +2 -2
  205. package/sync/handler/converter/commands/BatchWriteCommandValue.js +4 -11
  206. package/sync/handler/converter/commands/BatchWriteCommandValue.js.map +1 -1
  207. package/sync/handler/converter/commands/DeleteCommandValue.d.ts +2 -2
  208. package/sync/handler/converter/commands/DeleteCommandValue.js +3 -10
  209. package/sync/handler/converter/commands/DeleteCommandValue.js.map +1 -1
  210. package/sync/handler/converter/commands/NullCommandValue.d.ts +1 -1
  211. package/sync/handler/converter/commands/NullCommandValue.js +1 -8
  212. package/sync/handler/converter/commands/NullCommandValue.js.map +1 -1
  213. package/sync/handler/converter/commands/PutCommandValue.d.ts +2 -2
  214. package/sync/handler/converter/commands/PutCommandValue.js +3 -10
  215. package/sync/handler/converter/commands/PutCommandValue.js.map +1 -1
  216. package/sync/handler/converter/commands/UpdateCommandValue.d.ts +2 -2
  217. package/sync/handler/converter/commands/UpdateCommandValue.js +3 -10
  218. package/sync/handler/converter/commands/UpdateCommandValue.js.map +1 -1
  219. package/sync/handler/types.d.ts +3 -3
  220. package/sync/handler/types.js +1 -5
  221. package/sync/handler/types.js.map +1 -1
  222. package/sync/plugins/FilterOutRecordPlugin.d.ts +1 -1
  223. package/sync/plugins/FilterOutRecordPlugin.js +3 -11
  224. package/sync/plugins/FilterOutRecordPlugin.js.map +1 -1
  225. package/sync/requestPlugin.d.ts +1 -1
  226. package/sync/requestPlugin.js +19 -20
  227. package/sync/requestPlugin.js.map +1 -1
  228. package/sync/types.js +1 -5
  229. package/sync/utils/getTableType.js +7 -14
  230. package/sync/utils/getTableType.js.map +1 -1
  231. package/sync/utils/manifest.d.ts +1 -1
  232. package/sync/utils/manifest.js +12 -20
  233. package/sync/utils/manifest.js.map +1 -1
  234. package/sync/utils/validateSystemInput.d.ts +1 -1
  235. package/sync/utils/validateSystemInput.js +3 -10
  236. package/sync/utils/validateSystemInput.js.map +1 -1
  237. package/types.d.ts +3 -4
  238. package/types.js +2 -8
  239. package/types.js.map +1 -1
  240. package/utils/createSystemName.js +1 -8
  241. package/utils/createSystemName.js.map +1 -1
  242. package/worker/actions/copyFile/CopyFile.js +13 -21
  243. package/worker/actions/copyFile/CopyFile.js.map +1 -1
  244. package/worker/actions/copyFile/copyFileAction.d.ts +1 -1
  245. package/worker/actions/copyFile/copyFileAction.js +9 -16
  246. package/worker/actions/copyFile/copyFileAction.js.map +1 -1
  247. package/worker/actions/copyFile/copyFileSchema.js +8 -16
  248. package/worker/actions/copyFile/copyFileSchema.js.map +1 -1
  249. package/worker/actions/copyFile/types.js +1 -5
  250. package/worker/actions/createUser/CreateUser.d.ts +1 -1
  251. package/worker/actions/createUser/CreateUser.js +9 -16
  252. package/worker/actions/createUser/CreateUser.js.map +1 -1
  253. package/worker/actions/createUser/createUserAction.d.ts +2 -2
  254. package/worker/actions/createUser/createUserAction.js +9 -16
  255. package/worker/actions/createUser/createUserAction.js.map +1 -1
  256. package/worker/actions/createUser/createUserSchema.js +8 -16
  257. package/worker/actions/createUser/createUserSchema.js.map +1 -1
  258. package/worker/actions/createUser/types.js +1 -5
  259. package/worker/actions/deleteFile/DeleteFile.js +4 -11
  260. package/worker/actions/deleteFile/DeleteFile.js.map +1 -1
  261. package/worker/actions/deleteFile/deleteFileAction.d.ts +1 -1
  262. package/worker/actions/deleteFile/deleteFileAction.js +9 -16
  263. package/worker/actions/deleteFile/deleteFileAction.js.map +1 -1
  264. package/worker/actions/deleteFile/deleteFileSchema.js +8 -16
  265. package/worker/actions/deleteFile/deleteFileSchema.js.map +1 -1
  266. package/worker/actions/deleteFile/types.js +1 -5
  267. package/worker/actions/deleteUser/DeleteUser.d.ts +2 -2
  268. package/worker/actions/deleteUser/DeleteUser.js +7 -14
  269. package/worker/actions/deleteUser/DeleteUser.js.map +1 -1
  270. package/worker/actions/deleteUser/deleteUserAction.d.ts +1 -1
  271. package/worker/actions/deleteUser/deleteUserAction.js +9 -16
  272. package/worker/actions/deleteUser/deleteUserAction.js.map +1 -1
  273. package/worker/actions/deleteUser/deleteUserSchema.js +8 -16
  274. package/worker/actions/deleteUser/deleteUserSchema.js.map +1 -1
  275. package/worker/actions/deleteUser/types.js +1 -5
  276. package/worker/actions/logValidationError.js +4 -11
  277. package/worker/actions/logValidationError.js.map +1 -1
  278. package/worker/actions/removeCognitoUserAttributes.js +1 -8
  279. package/worker/actions/removeCognitoUserAttributes.js.map +1 -1
  280. package/worker/actions/updateUser/UpdateUser.d.ts +1 -1
  281. package/worker/actions/updateUser/UpdateUser.js +9 -16
  282. package/worker/actions/updateUser/UpdateUser.js.map +1 -1
  283. package/worker/actions/updateUser/types.js +1 -5
  284. package/worker/actions/updateUser/updateUserAction.d.ts +2 -2
  285. package/worker/actions/updateUser/updateUserAction.js +9 -16
  286. package/worker/actions/updateUser/updateUserAction.js.map +1 -1
  287. package/worker/actions/updateUser/updateUserSchema.js +8 -16
  288. package/worker/actions/updateUser/updateUserSchema.js.map +1 -1
  289. package/worker/createWorkerHandler.js +17 -24
  290. package/worker/createWorkerHandler.js.map +1 -1
  291. package/worker/handler/WorkerActionHandler.d.ts +2 -2
  292. package/worker/handler/WorkerActionHandler.js +3 -10
  293. package/worker/handler/WorkerActionHandler.js.map +1 -1
  294. package/worker/handler/eventHandler.js +9 -16
  295. package/worker/handler/eventHandler.js.map +1 -1
  296. package/worker/plugins/WorkerActionPlugin.d.ts +1 -1
  297. package/worker/plugins/WorkerActionPlugin.js +3 -11
  298. package/worker/plugins/WorkerActionPlugin.js.map +1 -1
  299. package/worker/types.js +1 -5
@@ -1,11 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createFilterOutRecordPlugin = exports.FilterOutRecordPlugin = void 0;
7
- var _Plugin = require("@webiny/plugins/Plugin.js");
8
- class FilterOutRecordPlugin extends _Plugin.Plugin {
1
+ import { Plugin } from "@webiny/plugins/Plugin.js";
2
+ export class FilterOutRecordPlugin extends Plugin {
9
3
  static type = "sync.filterOut.record";
10
4
  constructor(params) {
11
5
  super();
@@ -22,10 +16,8 @@ class FilterOutRecordPlugin extends _Plugin.Plugin {
22
16
  return `${FilterOutRecordPlugin.type}.${name}`;
23
17
  }
24
18
  }
25
- exports.FilterOutRecordPlugin = FilterOutRecordPlugin;
26
- const createFilterOutRecordPlugin = params => {
19
+ export const createFilterOutRecordPlugin = params => {
27
20
  return new FilterOutRecordPlugin(params);
28
21
  };
29
- exports.createFilterOutRecordPlugin = createFilterOutRecordPlugin;
30
22
 
31
23
  //# sourceMappingURL=FilterOutRecordPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Plugin","require","FilterOutRecordPlugin","Plugin","type","constructor","params","name","cb","filterOut","execute","item","createName","exports","createFilterOutRecordPlugin"],"sources":["FilterOutRecordPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/Plugin.js\";\nimport type { ICommandValueItemExtended } from \"~/sync/types.js\";\n\nexport interface IFilterOutRecordPluginCallable {\n (record: ICommandValueItemExtended): boolean;\n}\n\nexport interface IFilterOutRecordPluginParams {\n /**\n * Filter out returns true if the record should be filtered out.\n */\n filterOut: IFilterOutRecordPluginCallable;\n name: string;\n}\n\nexport class FilterOutRecordPlugin extends Plugin {\n public static override readonly type: string = \"sync.filterOut.record\";\n\n private readonly cb: IFilterOutRecordPluginCallable;\n\n public constructor(params: IFilterOutRecordPluginParams) {\n super();\n this.name = params.name;\n this.cb = params.filterOut;\n }\n /**\n * If method returns `true`, the record will be filtered out.\n */\n public execute(item: ICommandValueItemExtended): boolean {\n return this.cb(item);\n }\n\n public static createName(name: string): string {\n return `${FilterOutRecordPlugin.type}.${name}`;\n }\n}\n\nexport const createFilterOutRecordPlugin = (\n params: IFilterOutRecordPluginParams\n): FilterOutRecordPlugin => {\n return new FilterOutRecordPlugin(params);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAeO,MAAMC,qBAAqB,SAASC,cAAM,CAAC;EAC9C,OAAgCC,IAAI,GAAW,uBAAuB;EAI/DC,WAAWA,CAACC,MAAoC,EAAE;IACrD,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,IAAI,GAAGD,MAAM,CAACC,IAAI;IACvB,IAAI,CAACC,EAAE,GAAGF,MAAM,CAACG,SAAS;EAC9B;EACA;AACJ;AACA;EACWC,OAAOA,CAACC,IAA+B,EAAW;IACrD,OAAO,IAAI,CAACH,EAAE,CAACG,IAAI,CAAC;EACxB;EAEA,OAAcC,UAAUA,CAACL,IAAY,EAAU;IAC3C,OAAO,GAAGL,qBAAqB,CAACE,IAAI,IAAIG,IAAI,EAAE;EAClD;AACJ;AAACM,OAAA,CAAAX,qBAAA,GAAAA,qBAAA;AAEM,MAAMY,2BAA2B,GACpCR,MAAoC,IACZ;EACxB,OAAO,IAAIJ,qBAAqB,CAACI,MAAM,CAAC;AAC5C,CAAC;AAACO,OAAA,CAAAC,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["Plugin","FilterOutRecordPlugin","type","constructor","params","name","cb","filterOut","execute","item","createName","createFilterOutRecordPlugin"],"sources":["FilterOutRecordPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/Plugin.js\";\nimport type { ICommandValueItemExtended } from \"~/sync/types.js\";\n\nexport interface IFilterOutRecordPluginCallable {\n (record: ICommandValueItemExtended): boolean;\n}\n\nexport interface IFilterOutRecordPluginParams {\n /**\n * Filter out returns true if the record should be filtered out.\n */\n filterOut: IFilterOutRecordPluginCallable;\n name: string;\n}\n\nexport class FilterOutRecordPlugin extends Plugin {\n public static override readonly type: string = \"sync.filterOut.record\";\n\n private readonly cb: IFilterOutRecordPluginCallable;\n\n public constructor(params: IFilterOutRecordPluginParams) {\n super();\n this.name = params.name;\n this.cb = params.filterOut;\n }\n /**\n * If method returns `true`, the record will be filtered out.\n */\n public execute(item: ICommandValueItemExtended): boolean {\n return this.cb(item);\n }\n\n public static createName(name: string): string {\n return `${FilterOutRecordPlugin.type}.${name}`;\n }\n}\n\nexport const createFilterOutRecordPlugin = (\n params: IFilterOutRecordPluginParams\n): FilterOutRecordPlugin => {\n return new FilterOutRecordPlugin(params);\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,2BAA2B;AAelD,OAAO,MAAMC,qBAAqB,SAASD,MAAM,CAAC;EAC9C,OAAgCE,IAAI,GAAW,uBAAuB;EAI/DC,WAAWA,CAACC,MAAoC,EAAE;IACrD,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,IAAI,GAAGD,MAAM,CAACC,IAAI;IACvB,IAAI,CAACC,EAAE,GAAGF,MAAM,CAACG,SAAS;EAC9B;EACA;AACJ;AACA;EACWC,OAAOA,CAACC,IAA+B,EAAW;IACrD,OAAO,IAAI,CAACH,EAAE,CAACG,IAAI,CAAC;EACxB;EAEA,OAAcC,UAAUA,CAACL,IAAY,EAAU;IAC3C,OAAO,GAAGJ,qBAAqB,CAACC,IAAI,IAAIG,IAAI,EAAE;EAClD;AACJ;AAEA,OAAO,MAAMM,2BAA2B,GACpCP,MAAoC,IACZ;EACxB,OAAO,IAAIH,qBAAqB,CAACG,MAAM,CAAC;AAC5C,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
- import type { ICommandConverter, IGetEventBridgeCallable, ISystem } from "./types.js";
2
+ import type { ICommandConverter, IGetEventBridgeCallable, ISystem } from "../sync/types.js";
3
3
  export interface ICreateSyncSystemHandlerOnRequestPluginParams {
4
4
  getDocumentClient(): Pick<DynamoDBDocument, "send">;
5
5
  getEventBridgeClient: IGetEventBridgeCallable;
@@ -1,28 +1,28 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createSyncSystemHandlerOnRequestPlugin = void 0;
7
- var _handler = require("@webiny/handler");
8
- var _manifest = require("./utils/manifest.js");
9
- var _attachToDynamoDbDocument = require("./attachToDynamoDbDocument.js");
10
- var _createSendDataToEventBridgeOnRequestEnd = require("./createSendDataToEventBridgeOnRequestEnd.js");
11
- var _createHandler = require("./createHandler.js");
12
- var _exception = require("@webiny/utils/exception.js");
13
- const createSyncSystemHandlerOnRequestPlugin = params => {
14
- return (0, _handler.createHandlerOnRequest)(async (_, __, context) => {
1
+ import { createHandlerOnRequest } from "@webiny/handler";
2
+ import { getManifest } from "./utils/manifest.js";
3
+ import { attachToDynamoDbDocument } from "./attachToDynamoDbDocument.js";
4
+ import { createSendDataToEventBridgeOnRequestEnd } from "./createSendDataToEventBridgeOnRequestEnd.js";
5
+ import { createHandler } from "./createHandler.js";
6
+ import { convertException } from "@webiny/utils/exception.js";
7
+ export const createSyncSystemHandlerOnRequestPlugin = params => {
8
+ return createHandlerOnRequest(async (_, __, context) => {
15
9
  const {
16
10
  data: manifest,
17
11
  error
18
- } = await (0, _manifest.getManifest)(params);
12
+ } = await getManifest(params);
19
13
  if (error) {
14
+ if (process.env.DEBUG !== "true") {
15
+ return;
16
+ }
20
17
  console.error("Error happened when fetching manifest.");
21
18
  console.log(JSON.stringify({
22
- error: (0, _exception.convertException)(error)
19
+ error: convertException(error)
23
20
  }));
24
21
  return;
25
22
  } else if (!manifest?.sync?.region) {
23
+ if (process.env.DEBUG !== "true") {
24
+ return;
25
+ }
26
26
  console.error("There is no manifest.");
27
27
  console.log(JSON.stringify({
28
28
  manifest
@@ -31,7 +31,7 @@ const createSyncSystemHandlerOnRequestPlugin = params => {
31
31
  }
32
32
  const {
33
33
  handler
34
- } = (0, _createHandler.createHandler)({
34
+ } = createHandler({
35
35
  getEventBridgeClient: () => {
36
36
  return params.getEventBridgeClient({
37
37
  region: manifest.sync.region
@@ -44,16 +44,15 @@ const createSyncSystemHandlerOnRequestPlugin = params => {
44
44
  return context.plugins;
45
45
  }
46
46
  });
47
- (0, _attachToDynamoDbDocument.attachToDynamoDbDocument)({
47
+ attachToDynamoDbDocument({
48
48
  handler
49
49
  });
50
50
  context.plugins.register([
51
51
  /**
52
52
  * When request ends, send the data to the EventBridge.
53
53
  */
54
- (0, _createSendDataToEventBridgeOnRequestEnd.createSendDataToEventBridgeOnRequestEnd)(handler)]);
54
+ createSendDataToEventBridgeOnRequestEnd(handler)]);
55
55
  });
56
56
  };
57
- exports.createSyncSystemHandlerOnRequestPlugin = createSyncSystemHandlerOnRequestPlugin;
58
57
 
59
58
  //# sourceMappingURL=requestPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_handler","require","_manifest","_attachToDynamoDbDocument","_createSendDataToEventBridgeOnRequestEnd","_createHandler","_exception","createSyncSystemHandlerOnRequestPlugin","params","createHandlerOnRequest","_","__","context","data","manifest","error","getManifest","console","log","JSON","stringify","convertException","sync","region","handler","createHandler","getEventBridgeClient","system","commandConverters","getPlugins","plugins","attachToDynamoDbDocument","register","createSendDataToEventBridgeOnRequestEnd","exports"],"sources":["requestPlugin.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { ICommandConverter, IGetEventBridgeCallable, ISystem } from \"~/sync/types.js\";\nimport { createHandlerOnRequest } from \"@webiny/handler\";\nimport { getManifest } from \"~/sync/utils/manifest.js\";\nimport { attachToDynamoDbDocument } from \"~/sync/attachToDynamoDbDocument.js\";\nimport { createSendDataToEventBridgeOnRequestEnd } from \"~/sync/createSendDataToEventBridgeOnRequestEnd.js\";\nimport { createHandler } from \"./createHandler.js\";\nimport { convertException } from \"@webiny/utils/exception.js\";\n\nexport interface ICreateSyncSystemHandlerOnRequestPluginParams {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n getEventBridgeClient: IGetEventBridgeCallable;\n system: ISystem;\n commandConverters?: ICommandConverter[];\n}\n\nexport const createSyncSystemHandlerOnRequestPlugin = (\n params: ICreateSyncSystemHandlerOnRequestPluginParams\n) => {\n return createHandlerOnRequest(async (_, __, context) => {\n const { data: manifest, error } = await getManifest(params);\n if (error) {\n console.error(\"Error happened when fetching manifest.\");\n console.log(\n JSON.stringify({\n error: convertException(error)\n })\n );\n return;\n } else if (!manifest?.sync?.region) {\n console.error(\"There is no manifest.\");\n console.log(\n JSON.stringify({\n manifest\n })\n );\n return;\n }\n\n const { handler } = createHandler({\n getEventBridgeClient: () => {\n return params.getEventBridgeClient({\n region: manifest.sync.region\n });\n },\n system: params.system,\n manifest,\n commandConverters: params.commandConverters,\n getPlugins: () => {\n return context.plugins;\n }\n });\n\n attachToDynamoDbDocument({\n handler\n });\n context.plugins.register([\n /**\n * When request ends, send the data to the EventBridge.\n */\n createSendDataToEventBridgeOnRequestEnd(handler)\n ]);\n });\n};\n"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,yBAAA,GAAAF,OAAA;AACA,IAAAG,wCAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AASO,MAAMM,sCAAsC,GAC/CC,MAAqD,IACpD;EACD,OAAO,IAAAC,+BAAsB,EAAC,OAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;IACpD,MAAM;MAAEC,IAAI,EAAEC,QAAQ;MAAEC;IAAM,CAAC,GAAG,MAAM,IAAAC,qBAAW,EAACR,MAAM,CAAC;IAC3D,IAAIO,KAAK,EAAE;MACPE,OAAO,CAACF,KAAK,CAAC,wCAAwC,CAAC;MACvDE,OAAO,CAACC,GAAG,CACPC,IAAI,CAACC,SAAS,CAAC;QACXL,KAAK,EAAE,IAAAM,2BAAgB,EAACN,KAAK;MACjC,CAAC,CACL,CAAC;MACD;IACJ,CAAC,MAAM,IAAI,CAACD,QAAQ,EAAEQ,IAAI,EAAEC,MAAM,EAAE;MAChCN,OAAO,CAACF,KAAK,CAAC,uBAAuB,CAAC;MACtCE,OAAO,CAACC,GAAG,CACPC,IAAI,CAACC,SAAS,CAAC;QACXN;MACJ,CAAC,CACL,CAAC;MACD;IACJ;IAEA,MAAM;MAAEU;IAAQ,CAAC,GAAG,IAAAC,4BAAa,EAAC;MAC9BC,oBAAoB,EAAEA,CAAA,KAAM;QACxB,OAAOlB,MAAM,CAACkB,oBAAoB,CAAC;UAC/BH,MAAM,EAAET,QAAQ,CAACQ,IAAI,CAACC;QAC1B,CAAC,CAAC;MACN,CAAC;MACDI,MAAM,EAAEnB,MAAM,CAACmB,MAAM;MACrBb,QAAQ;MACRc,iBAAiB,EAAEpB,MAAM,CAACoB,iBAAiB;MAC3CC,UAAU,EAAEA,CAAA,KAAM;QACd,OAAOjB,OAAO,CAACkB,OAAO;MAC1B;IACJ,CAAC,CAAC;IAEF,IAAAC,kDAAwB,EAAC;MACrBP;IACJ,CAAC,CAAC;IACFZ,OAAO,CAACkB,OAAO,CAACE,QAAQ,CAAC;IACrB;AACZ;AACA;IACY,IAAAC,gFAAuC,EAACT,OAAO,CAAC,CACnD,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAA3B,sCAAA,GAAAA,sCAAA","ignoreList":[]}
1
+ {"version":3,"names":["createHandlerOnRequest","getManifest","attachToDynamoDbDocument","createSendDataToEventBridgeOnRequestEnd","createHandler","convertException","createSyncSystemHandlerOnRequestPlugin","params","_","__","context","data","manifest","error","process","env","DEBUG","console","log","JSON","stringify","sync","region","handler","getEventBridgeClient","system","commandConverters","getPlugins","plugins","register"],"sources":["requestPlugin.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { ICommandConverter, IGetEventBridgeCallable, ISystem } from \"~/sync/types.js\";\nimport { createHandlerOnRequest } from \"@webiny/handler\";\nimport { getManifest } from \"~/sync/utils/manifest.js\";\nimport { attachToDynamoDbDocument } from \"~/sync/attachToDynamoDbDocument.js\";\nimport { createSendDataToEventBridgeOnRequestEnd } from \"~/sync/createSendDataToEventBridgeOnRequestEnd.js\";\nimport { createHandler } from \"./createHandler.js\";\nimport { convertException } from \"@webiny/utils/exception.js\";\n\nexport interface ICreateSyncSystemHandlerOnRequestPluginParams {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n getEventBridgeClient: IGetEventBridgeCallable;\n system: ISystem;\n commandConverters?: ICommandConverter[];\n}\n\nexport const createSyncSystemHandlerOnRequestPlugin = (\n params: ICreateSyncSystemHandlerOnRequestPluginParams\n) => {\n return createHandlerOnRequest(async (_, __, context) => {\n const { data: manifest, error } = await getManifest(params);\n if (error) {\n if (process.env.DEBUG !== \"true\") {\n return;\n }\n console.error(\"Error happened when fetching manifest.\");\n console.log(\n JSON.stringify({\n error: convertException(error)\n })\n );\n return;\n } else if (!manifest?.sync?.region) {\n if (process.env.DEBUG !== \"true\") {\n return;\n }\n console.error(\"There is no manifest.\");\n console.log(\n JSON.stringify({\n manifest\n })\n );\n return;\n }\n\n const { handler } = createHandler({\n getEventBridgeClient: () => {\n return params.getEventBridgeClient({\n region: manifest.sync.region\n });\n },\n system: params.system,\n manifest,\n commandConverters: params.commandConverters,\n getPlugins: () => {\n return context.plugins;\n }\n });\n\n attachToDynamoDbDocument({\n handler\n });\n context.plugins.register([\n /**\n * When request ends, send the data to the EventBridge.\n */\n createSendDataToEventBridgeOnRequestEnd(handler)\n ]);\n });\n};\n"],"mappings":"AAEA,SAASA,sBAAsB,QAAQ,iBAAiB;AACxD,SAASC,WAAW;AACpB,SAASC,wBAAwB;AACjC,SAASC,uCAAuC;AAChD,SAASC,aAAa;AACtB,SAASC,gBAAgB,QAAQ,4BAA4B;AAS7D,OAAO,MAAMC,sCAAsC,GAC/CC,MAAqD,IACpD;EACD,OAAOP,sBAAsB,CAAC,OAAOQ,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;IACpD,MAAM;MAAEC,IAAI,EAAEC,QAAQ;MAAEC;IAAM,CAAC,GAAG,MAAMZ,WAAW,CAACM,MAAM,CAAC;IAC3D,IAAIM,KAAK,EAAE;MACP,IAAIC,OAAO,CAACC,GAAG,CAACC,KAAK,KAAK,MAAM,EAAE;QAC9B;MACJ;MACAC,OAAO,CAACJ,KAAK,CAAC,wCAAwC,CAAC;MACvDI,OAAO,CAACC,GAAG,CACPC,IAAI,CAACC,SAAS,CAAC;QACXP,KAAK,EAAER,gBAAgB,CAACQ,KAAK;MACjC,CAAC,CACL,CAAC;MACD;IACJ,CAAC,MAAM,IAAI,CAACD,QAAQ,EAAES,IAAI,EAAEC,MAAM,EAAE;MAChC,IAAIR,OAAO,CAACC,GAAG,CAACC,KAAK,KAAK,MAAM,EAAE;QAC9B;MACJ;MACAC,OAAO,CAACJ,KAAK,CAAC,uBAAuB,CAAC;MACtCI,OAAO,CAACC,GAAG,CACPC,IAAI,CAACC,SAAS,CAAC;QACXR;MACJ,CAAC,CACL,CAAC;MACD;IACJ;IAEA,MAAM;MAAEW;IAAQ,CAAC,GAAGnB,aAAa,CAAC;MAC9BoB,oBAAoB,EAAEA,CAAA,KAAM;QACxB,OAAOjB,MAAM,CAACiB,oBAAoB,CAAC;UAC/BF,MAAM,EAAEV,QAAQ,CAACS,IAAI,CAACC;QAC1B,CAAC,CAAC;MACN,CAAC;MACDG,MAAM,EAAElB,MAAM,CAACkB,MAAM;MACrBb,QAAQ;MACRc,iBAAiB,EAAEnB,MAAM,CAACmB,iBAAiB;MAC3CC,UAAU,EAAEA,CAAA,KAAM;QACd,OAAOjB,OAAO,CAACkB,OAAO;MAC1B;IACJ,CAAC,CAAC;IAEF1B,wBAAwB,CAAC;MACrBqB;IACJ,CAAC,CAAC;IACFb,OAAO,CAACkB,OAAO,CAACC,QAAQ,CAAC;IACrB;AACZ;AACA;IACY1B,uCAAuC,CAACoB,OAAO,CAAC,CACnD,CAAC;EACN,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
package/sync/types.js CHANGED
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=types.js.map
@@ -1,22 +1,15 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getTableType = void 0;
7
- var _types = require("../../types.js");
8
- const getTableType = tableName => {
1
+ import { DynamoDBTableType } from "../../types.js";
2
+ export const getTableType = tableName => {
9
3
  switch (tableName) {
10
4
  case process.env.DB_TABLE:
11
- return _types.DynamoDBTableType.REGULAR;
12
- case process.env.DB_TABLE_ELASTICSEARCH:
13
- return _types.DynamoDBTableType.ELASTICSEARCH;
5
+ return DynamoDBTableType.REGULAR;
6
+ case process.env.DB_TABLE_OPENSEARCH:
7
+ return DynamoDBTableType.OPENSEARCH;
14
8
  case process.env.DB_TABLE_LOG:
15
- return _types.DynamoDBTableType.LOG;
9
+ return DynamoDBTableType.LOG;
16
10
  default:
17
- return _types.DynamoDBTableType.UNKNOWN;
11
+ return DynamoDBTableType.UNKNOWN;
18
12
  }
19
13
  };
20
- exports.getTableType = getTableType;
21
14
 
22
15
  //# sourceMappingURL=getTableType.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","getTableType","tableName","process","env","DB_TABLE","DynamoDBTableType","REGULAR","DB_TABLE_ELASTICSEARCH","ELASTICSEARCH","DB_TABLE_LOG","LOG","UNKNOWN","exports"],"sources":["getTableType.ts"],"sourcesContent":["import { DynamoDBTableType } from \"~/types.js\";\n\nexport const getTableType = (tableName: string): DynamoDBTableType => {\n switch (tableName) {\n case process.env.DB_TABLE:\n return DynamoDBTableType.REGULAR;\n case process.env.DB_TABLE_ELASTICSEARCH:\n return DynamoDBTableType.ELASTICSEARCH;\n case process.env.DB_TABLE_LOG:\n return DynamoDBTableType.LOG;\n default:\n return DynamoDBTableType.UNKNOWN;\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,YAAY,GAAIC,SAAiB,IAAwB;EAClE,QAAQA,SAAS;IACb,KAAKC,OAAO,CAACC,GAAG,CAACC,QAAQ;MACrB,OAAOC,wBAAiB,CAACC,OAAO;IACpC,KAAKJ,OAAO,CAACC,GAAG,CAACI,sBAAsB;MACnC,OAAOF,wBAAiB,CAACG,aAAa;IAC1C,KAAKN,OAAO,CAACC,GAAG,CAACM,YAAY;MACzB,OAAOJ,wBAAiB,CAACK,GAAG;IAChC;MACI,OAAOL,wBAAiB,CAACM,OAAO;EACxC;AACJ,CAAC;AAACC,OAAA,CAAAZ,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["DynamoDBTableType","getTableType","tableName","process","env","DB_TABLE","REGULAR","DB_TABLE_OPENSEARCH","OPENSEARCH","DB_TABLE_LOG","LOG","UNKNOWN"],"sources":["getTableType.ts"],"sourcesContent":["import { DynamoDBTableType } from \"~/types.js\";\n\nexport const getTableType = (tableName: string): DynamoDBTableType => {\n switch (tableName) {\n case process.env.DB_TABLE:\n return DynamoDBTableType.REGULAR;\n case process.env.DB_TABLE_OPENSEARCH:\n return DynamoDBTableType.OPENSEARCH;\n case process.env.DB_TABLE_LOG:\n return DynamoDBTableType.LOG;\n default:\n return DynamoDBTableType.UNKNOWN;\n }\n};\n"],"mappings":"AAAA,SAASA,iBAAiB;AAE1B,OAAO,MAAMC,YAAY,GAAIC,SAAiB,IAAwB;EAClE,QAAQA,SAAS;IACb,KAAKC,OAAO,CAACC,GAAG,CAACC,QAAQ;MACrB,OAAOL,iBAAiB,CAACM,OAAO;IACpC,KAAKH,OAAO,CAACC,GAAG,CAACG,mBAAmB;MAChC,OAAOP,iBAAiB,CAACQ,UAAU;IACvC,KAAKL,OAAO,CAACC,GAAG,CAACK,YAAY;MACzB,OAAOT,iBAAiB,CAACU,GAAG;IAChC;MACI,OAAOV,iBAAiB,CAACW,OAAO;EACxC;AACJ,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
2
  export interface IGetManifestParams {
3
3
  getDocumentClient(): Pick<DynamoDBDocument, "send">;
4
4
  }
@@ -1,25 +1,18 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getManifest = void 0;
8
- var _api = require("@webiny/api");
9
- var _zod = _interopRequireDefault(require("zod"));
10
- var _utils = require("@webiny/utils");
11
- const validateManifest = _zod.default.object({
12
- sync: _zod.default.object({
13
- eventBusArn: _zod.default.string(),
14
- eventBusName: _zod.default.string(),
15
- region: _zod.default.string()
1
+ import { ServiceDiscovery } from "@webiny/api";
2
+ import zod from "zod";
3
+ import { createZodError } from "@webiny/utils";
4
+ const validateManifest = zod.object({
5
+ sync: zod.object({
6
+ eventBusArn: zod.string(),
7
+ eventBusName: zod.string(),
8
+ region: zod.string()
16
9
  })
17
10
  });
18
- const getManifest = async params => {
11
+ export const getManifest = async params => {
19
12
  const documentClient = params.getDocumentClient();
20
13
  try {
21
- _api.ServiceDiscovery.setDocumentClient(documentClient);
22
- const manifest = await _api.ServiceDiscovery.load();
14
+ ServiceDiscovery.setDocumentClient(documentClient);
15
+ const manifest = await ServiceDiscovery.load();
23
16
  if (!manifest?.sync) {
24
17
  return {
25
18
  /**
@@ -33,7 +26,7 @@ const getManifest = async params => {
33
26
  error
34
27
  } = validateManifest.safeParse(manifest);
35
28
  if (error) {
36
- const err = (0, _utils.createZodError)(error);
29
+ const err = createZodError(error);
37
30
  return {
38
31
  error: err
39
32
  };
@@ -47,6 +40,5 @@ const getManifest = async params => {
47
40
  };
48
41
  }
49
42
  };
50
- exports.getManifest = getManifest;
51
43
 
52
44
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_api","require","_zod","_interopRequireDefault","_utils","validateManifest","zod","object","sync","eventBusArn","string","eventBusName","region","getManifest","params","documentClient","getDocumentClient","ServiceDiscovery","setDocumentClient","manifest","load","error","Error","data","safeParse","err","createZodError","ex","exports"],"sources":["manifest.ts"],"sourcesContent":["import { ServiceDiscovery } from \"@webiny/api\";\nimport zod from \"zod\";\nimport { createZodError } from \"@webiny/utils\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\n\nconst validateManifest = zod.object({\n sync: zod.object({\n eventBusArn: zod.string(),\n eventBusName: zod.string(),\n region: zod.string()\n })\n});\n\nexport interface IGetManifestParams {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n}\n\nexport const getManifest = async (params: IGetManifestParams) => {\n const documentClient = params.getDocumentClient();\n try {\n ServiceDiscovery.setDocumentClient(documentClient);\n const manifest = await ServiceDiscovery.load();\n if (!manifest?.sync) {\n return {\n /**\n * This error will be silent. We do not want to log or throw at this point.\n */\n error: new Error(\n \"Sync System Manifest not found. Probably Sync System is not turned on.\"\n )\n };\n }\n const { data, error } = validateManifest.safeParse(manifest);\n if (error) {\n const err = createZodError(error);\n return {\n error: err\n };\n }\n return {\n data\n };\n } catch (ex) {\n return {\n error: ex\n };\n }\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAGA,MAAMI,gBAAgB,GAAGC,YAAG,CAACC,MAAM,CAAC;EAChCC,IAAI,EAAEF,YAAG,CAACC,MAAM,CAAC;IACbE,WAAW,EAAEH,YAAG,CAACI,MAAM,CAAC,CAAC;IACzBC,YAAY,EAAEL,YAAG,CAACI,MAAM,CAAC,CAAC;IAC1BE,MAAM,EAAEN,YAAG,CAACI,MAAM,CAAC;EACvB,CAAC;AACL,CAAC,CAAC;AAMK,MAAMG,WAAW,GAAG,MAAOC,MAA0B,IAAK;EAC7D,MAAMC,cAAc,GAAGD,MAAM,CAACE,iBAAiB,CAAC,CAAC;EACjD,IAAI;IACAC,qBAAgB,CAACC,iBAAiB,CAACH,cAAc,CAAC;IAClD,MAAMI,QAAQ,GAAG,MAAMF,qBAAgB,CAACG,IAAI,CAAC,CAAC;IAC9C,IAAI,CAACD,QAAQ,EAAEX,IAAI,EAAE;MACjB,OAAO;QACH;AAChB;AACA;QACgBa,KAAK,EAAE,IAAIC,KAAK,CACZ,wEACJ;MACJ,CAAC;IACL;IACA,MAAM;MAAEC,IAAI;MAAEF;IAAM,CAAC,GAAGhB,gBAAgB,CAACmB,SAAS,CAACL,QAAQ,CAAC;IAC5D,IAAIE,KAAK,EAAE;MACP,MAAMI,GAAG,GAAG,IAAAC,qBAAc,EAACL,KAAK,CAAC;MACjC,OAAO;QACHA,KAAK,EAAEI;MACX,CAAC;IACL;IACA,OAAO;MACHF;IACJ,CAAC;EACL,CAAC,CAAC,OAAOI,EAAE,EAAE;IACT,OAAO;MACHN,KAAK,EAAEM;IACX,CAAC;EACL;AACJ,CAAC;AAACC,OAAA,CAAAf,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["ServiceDiscovery","zod","createZodError","validateManifest","object","sync","eventBusArn","string","eventBusName","region","getManifest","params","documentClient","getDocumentClient","setDocumentClient","manifest","load","error","Error","data","safeParse","err","ex"],"sources":["manifest.ts"],"sourcesContent":["import { ServiceDiscovery } from \"@webiny/api\";\nimport zod from \"zod\";\nimport { createZodError } from \"@webiny/utils\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\n\nconst validateManifest = zod.object({\n sync: zod.object({\n eventBusArn: zod.string(),\n eventBusName: zod.string(),\n region: zod.string()\n })\n});\n\nexport interface IGetManifestParams {\n getDocumentClient(): Pick<DynamoDBDocument, \"send\">;\n}\n\nexport const getManifest = async (params: IGetManifestParams) => {\n const documentClient = params.getDocumentClient();\n try {\n ServiceDiscovery.setDocumentClient(documentClient);\n const manifest = await ServiceDiscovery.load();\n if (!manifest?.sync) {\n return {\n /**\n * This error will be silent. We do not want to log or throw at this point.\n */\n error: new Error(\n \"Sync System Manifest not found. Probably Sync System is not turned on.\"\n )\n };\n }\n const { data, error } = validateManifest.safeParse(manifest);\n if (error) {\n const err = createZodError(error);\n return {\n error: err\n };\n }\n return {\n data\n };\n } catch (ex) {\n return {\n error: ex\n };\n }\n};\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,aAAa;AAC9C,OAAOC,GAAG,MAAM,KAAK;AACrB,SAASC,cAAc,QAAQ,eAAe;AAG9C,MAAMC,gBAAgB,GAAGF,GAAG,CAACG,MAAM,CAAC;EAChCC,IAAI,EAAEJ,GAAG,CAACG,MAAM,CAAC;IACbE,WAAW,EAAEL,GAAG,CAACM,MAAM,CAAC,CAAC;IACzBC,YAAY,EAAEP,GAAG,CAACM,MAAM,CAAC,CAAC;IAC1BE,MAAM,EAAER,GAAG,CAACM,MAAM,CAAC;EACvB,CAAC;AACL,CAAC,CAAC;AAMF,OAAO,MAAMG,WAAW,GAAG,MAAOC,MAA0B,IAAK;EAC7D,MAAMC,cAAc,GAAGD,MAAM,CAACE,iBAAiB,CAAC,CAAC;EACjD,IAAI;IACAb,gBAAgB,CAACc,iBAAiB,CAACF,cAAc,CAAC;IAClD,MAAMG,QAAQ,GAAG,MAAMf,gBAAgB,CAACgB,IAAI,CAAC,CAAC;IAC9C,IAAI,CAACD,QAAQ,EAAEV,IAAI,EAAE;MACjB,OAAO;QACH;AAChB;AACA;QACgBY,KAAK,EAAE,IAAIC,KAAK,CACZ,wEACJ;MACJ,CAAC;IACL;IACA,MAAM;MAAEC,IAAI;MAAEF;IAAM,CAAC,GAAGd,gBAAgB,CAACiB,SAAS,CAACL,QAAQ,CAAC;IAC5D,IAAIE,KAAK,EAAE;MACP,MAAMI,GAAG,GAAGnB,cAAc,CAACe,KAAK,CAAC;MACjC,OAAO;QACHA,KAAK,EAAEI;MACX,CAAC;IACL;IACA,OAAO;MACHF;IACJ,CAAC;EACL,CAAC,CAAC,OAAOG,EAAE,EAAE;IACT,OAAO;MACHL,KAAK,EAAEK;IACX,CAAC;EACL;AACJ,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { ISystem } from "../types.js";
1
+ import type { ISystem } from "../../sync/types.js";
2
2
  export interface IValidResponse {
3
3
  system: ISystem;
4
4
  error?: never;
@@ -1,11 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.validateSystemInput = void 0;
7
- var _createSystemName = require("../../utils/createSystemName.js");
8
- const validateSystemInput = input => {
1
+ import { createSystemName } from "../../utils/createSystemName.js";
2
+ export const validateSystemInput = input => {
9
3
  const {
10
4
  env,
11
5
  region,
@@ -25,7 +19,7 @@ const validateSystemInput = input => {
25
19
  error: "Sync System: No version variable provided. Sync System will not be attached."
26
20
  };
27
21
  }
28
- const name = (0, _createSystemName.createSystemName)({
22
+ const name = createSystemName({
29
23
  env,
30
24
  variant
31
25
  });
@@ -39,6 +33,5 @@ const validateSystemInput = input => {
39
33
  }
40
34
  };
41
35
  };
42
- exports.validateSystemInput = validateSystemInput;
43
36
 
44
37
  //# sourceMappingURL=validateSystemInput.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_createSystemName","require","validateSystemInput","input","env","region","variant","version","error","name","createSystemName","system","exports"],"sources":["validateSystemInput.ts"],"sourcesContent":["import type { ISystem } from \"~/sync/types.js\";\nimport { createSystemName } from \"~/utils/createSystemName.js\";\n\nexport interface IValidResponse {\n system: ISystem;\n error?: never;\n}\n\nexport interface IErrorResponse {\n error: string;\n system?: never;\n}\n\nexport type ValidateSystemInputResponse = IValidResponse | IErrorResponse;\n\nexport const validateSystemInput = (input: Partial<ISystem>): ValidateSystemInputResponse => {\n const { env, region, variant, version } = input;\n if (!env) {\n return {\n error: \"Sync System: No environment variable provided. Sync System will not be attached.\"\n };\n } else if (!region) {\n return {\n error: \"Sync System: No region variable provided. Sync System will not be attached.\"\n };\n } else if (!version) {\n return {\n error: \"Sync System: No version variable provided. Sync System will not be attached.\"\n };\n }\n const name = createSystemName({\n env,\n variant\n });\n\n return {\n system: {\n env,\n name,\n region,\n variant,\n version\n }\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAcO,MAAMC,mBAAmB,GAAIC,KAAuB,IAAkC;EACzF,MAAM;IAAEC,GAAG;IAAEC,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAGJ,KAAK;EAC/C,IAAI,CAACC,GAAG,EAAE;IACN,OAAO;MACHI,KAAK,EAAE;IACX,CAAC;EACL,CAAC,MAAM,IAAI,CAACH,MAAM,EAAE;IAChB,OAAO;MACHG,KAAK,EAAE;IACX,CAAC;EACL,CAAC,MAAM,IAAI,CAACD,OAAO,EAAE;IACjB,OAAO;MACHC,KAAK,EAAE;IACX,CAAC;EACL;EACA,MAAMC,IAAI,GAAG,IAAAC,kCAAgB,EAAC;IAC1BN,GAAG;IACHE;EACJ,CAAC,CAAC;EAEF,OAAO;IACHK,MAAM,EAAE;MACJP,GAAG;MACHK,IAAI;MACJJ,MAAM;MACNC,OAAO;MACPC;IACJ;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAV,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createSystemName","validateSystemInput","input","env","region","variant","version","error","name","system"],"sources":["validateSystemInput.ts"],"sourcesContent":["import type { ISystem } from \"~/sync/types.js\";\nimport { createSystemName } from \"~/utils/createSystemName.js\";\n\nexport interface IValidResponse {\n system: ISystem;\n error?: never;\n}\n\nexport interface IErrorResponse {\n error: string;\n system?: never;\n}\n\nexport type ValidateSystemInputResponse = IValidResponse | IErrorResponse;\n\nexport const validateSystemInput = (input: Partial<ISystem>): ValidateSystemInputResponse => {\n const { env, region, variant, version } = input;\n if (!env) {\n return {\n error: \"Sync System: No environment variable provided. Sync System will not be attached.\"\n };\n } else if (!region) {\n return {\n error: \"Sync System: No region variable provided. Sync System will not be attached.\"\n };\n } else if (!version) {\n return {\n error: \"Sync System: No version variable provided. Sync System will not be attached.\"\n };\n }\n const name = createSystemName({\n env,\n variant\n });\n\n return {\n system: {\n env,\n name,\n region,\n variant,\n version\n }\n };\n};\n"],"mappings":"AACA,SAASA,gBAAgB;AAczB,OAAO,MAAMC,mBAAmB,GAAIC,KAAuB,IAAkC;EACzF,MAAM;IAAEC,GAAG;IAAEC,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAGJ,KAAK;EAC/C,IAAI,CAACC,GAAG,EAAE;IACN,OAAO;MACHI,KAAK,EAAE;IACX,CAAC;EACL,CAAC,MAAM,IAAI,CAACH,MAAM,EAAE;IAChB,OAAO;MACHG,KAAK,EAAE;IACX,CAAC;EACL,CAAC,MAAM,IAAI,CAACD,OAAO,EAAE;IACjB,OAAO;MACHC,KAAK,EAAE;IACX,CAAC;EACL;EACA,MAAMC,IAAI,GAAGR,gBAAgB,CAAC;IAC1BG,GAAG;IACHE;EACJ,CAAC,CAAC;EAEF,OAAO;IACHI,MAAM,EAAE;MACJN,GAAG;MACHK,IAAI;MACJJ,MAAM;MACNC,OAAO;MACPC;IACJ;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
package/types.d.ts CHANGED
@@ -1,15 +1,14 @@
1
- import type { Context as BaseContext } from "@webiny/handler-aws/types";
1
+ import type { Context as BaseContext } from "@webiny/handler-aws/types.js";
2
2
  export type CommandType = "put" | "delete";
3
3
  export type ExtendedCommandType = "put" | "delete" | "update";
4
4
  export type AllCommandType = ExtendedCommandType | "batchWrite" | "null";
5
5
  export declare enum DynamoDBTableType {
6
6
  REGULAR = "regular",
7
- ELASTICSEARCH = "elasticsearch",
7
+ OPENSEARCH = "opensearch",
8
8
  LOG = "log",
9
9
  UNKNOWN = "unknown"
10
10
  }
11
- export interface Context extends BaseContext {
12
- }
11
+ export type Context = BaseContext;
13
12
  export interface IFileLambdaPayloadInfo {
14
13
  bucket: string;
15
14
  region: string;
package/types.js CHANGED
@@ -1,12 +1,6 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DynamoDBTableType = void 0;
7
- let DynamoDBTableType = exports.DynamoDBTableType = /*#__PURE__*/function (DynamoDBTableType) {
1
+ export let DynamoDBTableType = /*#__PURE__*/function (DynamoDBTableType) {
8
2
  DynamoDBTableType["REGULAR"] = "regular";
9
- DynamoDBTableType["ELASTICSEARCH"] = "elasticsearch";
3
+ DynamoDBTableType["OPENSEARCH"] = "opensearch";
10
4
  DynamoDBTableType["LOG"] = "log";
11
5
  DynamoDBTableType["UNKNOWN"] = "unknown";
12
6
  return DynamoDBTableType;
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["DynamoDBTableType","exports"],"sources":["types.ts"],"sourcesContent":["import type { Context as BaseContext } from \"@webiny/handler-aws/types\";\n\nexport type CommandType = \"put\" | \"delete\";\nexport type ExtendedCommandType = \"put\" | \"delete\" | \"update\";\nexport type AllCommandType = ExtendedCommandType | \"batchWrite\" | \"null\";\n\nexport enum DynamoDBTableType {\n REGULAR = \"regular\",\n ELASTICSEARCH = \"elasticsearch\",\n LOG = \"log\",\n UNKNOWN = \"unknown\"\n}\n\nexport interface Context extends BaseContext {}\n\nexport interface IFileLambdaPayloadInfo {\n bucket: string;\n region: string;\n}\n\nexport interface ICopyFileLambdaPayload {\n action: \"copyFile\";\n key: string;\n source: IFileLambdaPayloadInfo;\n target: IFileLambdaPayloadInfo;\n}\n\nexport interface IDeleteFileLambdaPayload {\n action: \"deleteFile\";\n key: string;\n target: IFileLambdaPayloadInfo;\n}\n\nexport interface IUserLambdaPayloadInfo {\n region: string;\n userPoolId: string;\n}\n\nexport interface IDeleteUserLambdaPayload {\n action: \"deleteUser\";\n username: string;\n target: IUserLambdaPayloadInfo;\n}\n\nexport interface ICopyUserLambdaPayload {\n action: \"createUser\" | \"updateUser\";\n username: string;\n source: IUserLambdaPayloadInfo;\n target: IUserLambdaPayloadInfo;\n}\n"],"mappings":";;;;;;IAMYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["DynamoDBTableType"],"sources":["types.ts"],"sourcesContent":["import type { Context as BaseContext } from \"@webiny/handler-aws/types.js\";\n\nexport type CommandType = \"put\" | \"delete\";\nexport type ExtendedCommandType = \"put\" | \"delete\" | \"update\";\nexport type AllCommandType = ExtendedCommandType | \"batchWrite\" | \"null\";\n\nexport enum DynamoDBTableType {\n REGULAR = \"regular\",\n OPENSEARCH = \"opensearch\",\n LOG = \"log\",\n UNKNOWN = \"unknown\"\n}\n\nexport type Context = BaseContext;\n\nexport interface IFileLambdaPayloadInfo {\n bucket: string;\n region: string;\n}\n\nexport interface ICopyFileLambdaPayload {\n action: \"copyFile\";\n key: string;\n source: IFileLambdaPayloadInfo;\n target: IFileLambdaPayloadInfo;\n}\n\nexport interface IDeleteFileLambdaPayload {\n action: \"deleteFile\";\n key: string;\n target: IFileLambdaPayloadInfo;\n}\n\nexport interface IUserLambdaPayloadInfo {\n region: string;\n userPoolId: string;\n}\n\nexport interface IDeleteUserLambdaPayload {\n action: \"deleteUser\";\n username: string;\n target: IUserLambdaPayloadInfo;\n}\n\nexport interface ICopyUserLambdaPayload {\n action: \"createUser\" | \"updateUser\";\n username: string;\n source: IUserLambdaPayloadInfo;\n target: IUserLambdaPayloadInfo;\n}\n"],"mappings":"AAMA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
@@ -1,12 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createSystemName = void 0;
7
- const createSystemName = params => {
1
+ export const createSystemName = params => {
8
2
  return [params.env, params.variant].filter(Boolean).join("#");
9
3
  };
10
- exports.createSystemName = createSystemName;
11
4
 
12
5
  //# sourceMappingURL=createSystemName.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createSystemName","params","env","variant","filter","Boolean","join","exports"],"sources":["createSystemName.ts"],"sourcesContent":["export interface ICreateSystemNameParams {\n env: string;\n variant: string | undefined;\n}\n\nexport const createSystemName = (params: ICreateSystemNameParams): string => {\n return [params.env, params.variant].filter(Boolean).join(\"#\");\n};\n"],"mappings":";;;;;;AAKO,MAAMA,gBAAgB,GAAIC,MAA+B,IAAa;EACzE,OAAO,CAACA,MAAM,CAACC,GAAG,EAAED,MAAM,CAACE,OAAO,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AACjE,CAAC;AAACC,OAAA,CAAAP,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createSystemName","params","env","variant","filter","Boolean","join"],"sources":["createSystemName.ts"],"sourcesContent":["export interface ICreateSystemNameParams {\n env: string;\n variant: string | undefined;\n}\n\nexport const createSystemName = (params: ICreateSystemNameParams): string => {\n return [params.env, params.variant].filter(Boolean).join(\"#\");\n};\n"],"mappings":"AAKA,OAAO,MAAMA,gBAAgB,GAAIC,MAA+B,IAAa;EACzE,OAAO,CAACA,MAAM,CAACC,GAAG,EAAED,MAAM,CAACE,OAAO,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AACjE,CAAC","ignoreList":[]}
@@ -1,14 +1,7 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.CopyFile = void 0;
8
- var _index = require("@webiny/aws-sdk/client-s3/index.js");
9
- var _bytes = _interopRequireDefault(require("bytes"));
10
- var _utils = require("@webiny/utils");
11
- class CopyFile {
1
+ import { AbortMultipartUploadCommand, CompleteMultipartUploadCommand, CopyObjectCommand, CreateMultipartUploadCommand, HeadObjectCommand, UploadPartCopyCommand } from "@webiny/aws-sdk/client-s3/index.js";
2
+ import bytes from "bytes";
3
+ import { convertException } from "@webiny/utils";
4
+ export class CopyFile {
12
5
  constructor(params) {
13
6
  const {
14
7
  createS3Client,
@@ -121,14 +114,14 @@ class CopyFile {
121
114
  });
122
115
  } catch (ex) {
123
116
  console.error(`Failed to copy metadata for ${key} from ${sourceBucket} to ${targetBucket}.`);
124
- console.log((0, _utils.convertException)(ex));
117
+ console.log(convertException(ex));
125
118
  }
126
119
  }
127
120
  parseByteSize(value) {
128
121
  if (typeof value === "number") {
129
122
  return value;
130
123
  }
131
- const parsed = _bytes.default.parse(value);
124
+ const parsed = bytes.parse(value);
132
125
  if (typeof parsed === "number") {
133
126
  return parsed;
134
127
  }
@@ -145,7 +138,7 @@ class CopyFile {
145
138
  Bucket: bucket,
146
139
  Key: key
147
140
  };
148
- const command = new _index.HeadObjectCommand(input);
141
+ const command = new HeadObjectCommand(input);
149
142
  try {
150
143
  const result = await client.send(command);
151
144
  if (result.$metadata?.httpStatusCode === 200) {
@@ -156,7 +149,7 @@ class CopyFile {
156
149
  return null;
157
150
  }
158
151
  console.error(`Failed to head object ${key} in bucket ${bucket}.`);
159
- console.log((0, _utils.convertException)(ex));
152
+ console.log(convertException(ex));
160
153
  }
161
154
  return null;
162
155
  }
@@ -169,7 +162,7 @@ class CopyFile {
169
162
  Bucket: targetBucket,
170
163
  Key: targetKey
171
164
  };
172
- const command = new _index.CreateMultipartUploadCommand(input);
165
+ const command = new CreateMultipartUploadCommand(input);
173
166
  const response = await this.targetClient.send(command);
174
167
  if (!response.UploadId) {
175
168
  throw new Error("Failed to create multipart upload.");
@@ -196,7 +189,7 @@ class CopyFile {
196
189
  CopySource: encodeURIComponent(`${sourceBucket}/${sourceKey}`),
197
190
  CopySourceRange: `bytes=${start}-${end}`
198
191
  };
199
- const command = new _index.UploadPartCopyCommand(input);
192
+ const command = new UploadPartCopyCommand(input);
200
193
  const response = await this.targetClient.send(command);
201
194
  if (!response.CopyPartResult?.ETag) {
202
195
  throw new Error(`UploadPartCopy failed for part ${partNumber}`);
@@ -224,7 +217,7 @@ class CopyFile {
224
217
  Parts: sortedParts
225
218
  }
226
219
  };
227
- const command = new _index.CompleteMultipartUploadCommand(input);
220
+ const command = new CompleteMultipartUploadCommand(input);
228
221
  return await this.targetClient.send(command);
229
222
  }
230
223
  async abortMultipartUpload(params) {
@@ -238,7 +231,7 @@ class CopyFile {
238
231
  Key: targetKey,
239
232
  UploadId: uploadId
240
233
  };
241
- const command = new _index.AbortMultipartUploadCommand(input);
234
+ const command = new AbortMultipartUploadCommand(input);
242
235
  await this.targetClient.send(command);
243
236
  }
244
237
  async copyMetadata(params) {
@@ -274,10 +267,9 @@ class CopyFile {
274
267
  Key: metadataKey,
275
268
  CopySource: encodeURIComponent(`${sourceBucket}/${metadataKey}`)
276
269
  };
277
- const command = new _index.CopyObjectCommand(input);
270
+ const command = new CopyObjectCommand(input);
278
271
  return await this.targetClient.send(command);
279
272
  }
280
273
  }
281
- exports.CopyFile = CopyFile;
282
274
 
283
275
  //# sourceMappingURL=CopyFile.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_bytes","_interopRequireDefault","_utils","CopyFile","constructor","params","createS3Client","sourceRegion","targetRegion","maxConcurrency","minPartSize","maxPartSize","sourceClient","region","targetClient","minPartSizeBytes","parseByteSize","maxPartSizeBytes","Error","copy","key","sourceBucket","targetBucket","sourceHead","headObject","client","bucket","ContentLength","ETag","targetHead","totalSize","partSize","Math","max","min","ceil","uploadId","createMultipartUpload","targetKey","completedParts","partNumber","start","promises","active","end","copyPromise","uploadPartCopy","sourceKey","push","Promise","race","all","completeMultipartUpload","ex","abortMultipartUpload","copyMetadata","console","error","log","convertException","value","parsed","bytes","parse","typeOfValue","input","Bucket","Key","command","HeadObjectCommand","result","send","$metadata","httpStatusCode","name","CreateMultipartUploadCommand","response","UploadId","PartNumber","CopySource","encodeURIComponent","CopySourceRange","UploadPartCopyCommand","CopyPartResult","sortedParts","sort","a","b","MultipartUpload","Parts","CompleteMultipartUploadCommand","AbortMultipartUploadCommand","metadataKey","sourceMetadata","targetMetadata","catch","CopyObjectCommand","exports"],"sources":["CopyFile.ts"],"sourcesContent":["import type {\n AbortMultipartUploadCommandInput,\n CompletedPart,\n CompleteMultipartUploadCommandInput,\n CopyObjectCommandInput,\n CopyObjectCommandOutput,\n CreateMultipartUploadCommandInput,\n HeadObjectCommandInput,\n S3Client,\n S3ClientConfig,\n UploadPartCopyCommandInput\n} from \"@webiny/aws-sdk/client-s3/index.js\";\nimport {\n AbortMultipartUploadCommand,\n CompleteMultipartUploadCommand,\n CopyObjectCommand,\n CreateMultipartUploadCommand,\n HeadObjectCommand,\n UploadPartCopyCommand\n} from \"@webiny/aws-sdk/client-s3/index.js\";\nimport bytes from \"bytes\";\nimport { convertException } from \"@webiny/utils\";\n\ntype ByteSize = number | `${number}B` | `${number}KB` | `${number}MB` | `${number}GB`;\n\nexport interface ICopyFileParams {\n createS3Client: (config: Partial<S3ClientConfig>) => Pick<S3Client, \"send\">;\n sourceRegion: string;\n targetRegion: string;\n maxConcurrency?: number;\n minPartSize?: ByteSize;\n maxPartSize?: ByteSize;\n}\n\nexport interface ICopyParams {\n key: string;\n sourceBucket: string;\n targetBucket: string;\n}\n\nexport interface IHeadObjectParams {\n client: Pick<S3Client, \"send\">;\n bucket: string;\n key: string;\n}\n\nexport interface ICreateMultipartUploadParams {\n targetBucket: string;\n targetKey: string;\n}\n\nexport interface IUploadPartCopyParams {\n sourceBucket: string;\n sourceKey: string;\n targetBucket: string;\n targetKey: string;\n uploadId: string;\n partNumber: number;\n start: number;\n end: number;\n completedParts: CompletedPart[];\n}\n\nexport interface ICompleteMultipartUploadParams {\n targetBucket: string;\n targetKey: string;\n uploadId: string;\n completedParts: CompletedPart[];\n}\n\nexport interface IAbortMultipartUploadParams {\n targetBucket: string;\n targetKey: string;\n uploadId: string;\n}\n\ninterface ICopyMetadataParams {\n sourceBucket: string;\n targetBucket: string;\n key: string;\n}\n\nexport class CopyFile {\n private readonly sourceClient: Pick<S3Client, \"send\">;\n private readonly targetClient: Pick<S3Client, \"send\">;\n private readonly maxConcurrency: number;\n private readonly minPartSizeBytes: number;\n private readonly maxPartSizeBytes: number;\n\n public constructor(params: ICopyFileParams) {\n const {\n createS3Client,\n sourceRegion,\n targetRegion,\n maxConcurrency = 100,\n minPartSize = \"5MB\",\n maxPartSize = \"1GB\"\n } = params;\n\n this.sourceClient = createS3Client({\n region: sourceRegion\n });\n this.targetClient = createS3Client({\n region: targetRegion\n });\n this.maxConcurrency = maxConcurrency;\n\n this.minPartSizeBytes = this.parseByteSize(minPartSize);\n this.maxPartSizeBytes = this.parseByteSize(maxPartSize);\n\n if (this.minPartSizeBytes < 5 * 1024 * 1024) {\n throw new Error(\"minPartSize must be at least 5MB.\");\n }\n }\n\n public async copy(params: ICopyParams): Promise<void> {\n const { key, sourceBucket, targetBucket } = params;\n\n const sourceHead = await this.headObject({\n client: this.sourceClient,\n bucket: sourceBucket,\n key\n });\n\n if (!sourceHead?.ContentLength || !sourceHead.ETag) {\n throw new Error(\"Source object metadata is invalid or missing.\");\n }\n /**\n * If the target object already exists, we can skip the copy operation.\n */\n const targetHead = await this.headObject({\n client: this.targetClient,\n bucket: targetBucket,\n key\n });\n\n if (targetHead) {\n return;\n }\n\n const totalSize = sourceHead.ContentLength;\n let partSize = Math.max(\n this.minPartSizeBytes,\n Math.min(this.maxPartSizeBytes, Math.ceil(totalSize / this.maxConcurrency))\n );\n partSize = Math.min(partSize, totalSize);\n\n const uploadId = await this.createMultipartUpload({\n targetBucket,\n targetKey: key\n });\n const completedParts: CompletedPart[] = [];\n\n try {\n let partNumber = 1;\n let start = 0;\n const promises: Promise<void>[] = [];\n let active = 0;\n\n while (start < totalSize) {\n const end = Math.min(start + partSize - 1, totalSize - 1);\n\n const copyPromise = this.uploadPartCopy({\n sourceBucket,\n sourceKey: key,\n targetBucket,\n targetKey: key,\n uploadId,\n partNumber,\n start,\n end,\n completedParts\n });\n\n promises.push(copyPromise);\n active++;\n\n if (active >= this.maxConcurrency) {\n await Promise.race(promises);\n active--;\n }\n\n partNumber++;\n start += partSize;\n }\n\n await Promise.all(promises);\n /**\n * Complete the multipart upload with all the completed parts.\n */\n await this.completeMultipartUpload({\n targetBucket,\n targetKey: key,\n uploadId,\n completedParts\n });\n } catch (ex) {\n await this.abortMultipartUpload({ targetBucket, targetKey: key, uploadId });\n throw ex;\n }\n /**\n * And then copy the metadata file.\n */\n\n try {\n await this.copyMetadata({\n sourceBucket,\n targetBucket,\n key\n });\n } catch (ex) {\n console.error(\n `Failed to copy metadata for ${key} from ${sourceBucket} to ${targetBucket}.`\n );\n console.log(convertException(ex));\n }\n }\n\n private parseByteSize(value: ByteSize): number {\n if (typeof value === \"number\") {\n return value;\n }\n const parsed = bytes.parse(value);\n if (typeof parsed === \"number\") {\n return parsed;\n }\n const typeOfValue = typeof value;\n throw new Error(`Invalid byte size value type \"${typeOfValue}\".`);\n }\n\n private async headObject(params: IHeadObjectParams) {\n const { client, bucket, key } = params;\n const input: HeadObjectCommandInput = {\n Bucket: bucket,\n Key: key\n };\n const command = new HeadObjectCommand(input);\n try {\n const result = await client.send(command);\n if (result.$metadata?.httpStatusCode === 200) {\n return result;\n }\n } catch (ex) {\n if (ex.name === \"NotFound\" || ex.$metadata?.httpStatusCode === 404) {\n return null;\n }\n console.error(`Failed to head object ${key} in bucket ${bucket}.`);\n console.log(convertException(ex));\n }\n return null;\n }\n\n private async createMultipartUpload(params: ICreateMultipartUploadParams): Promise<string> {\n const { targetBucket, targetKey } = params;\n const input: CreateMultipartUploadCommandInput = {\n Bucket: targetBucket,\n Key: targetKey\n };\n const command = new CreateMultipartUploadCommand(input);\n const response = await this.targetClient.send(command);\n if (!response.UploadId) {\n throw new Error(\"Failed to create multipart upload.\");\n }\n return response.UploadId;\n }\n\n private async uploadPartCopy(params: IUploadPartCopyParams): Promise<void> {\n const {\n sourceBucket,\n sourceKey,\n targetBucket,\n targetKey,\n uploadId,\n partNumber,\n start,\n end,\n completedParts\n } = params;\n\n const input: UploadPartCopyCommandInput = {\n Bucket: targetBucket,\n Key: targetKey,\n UploadId: uploadId,\n PartNumber: partNumber,\n CopySource: encodeURIComponent(`${sourceBucket}/${sourceKey}`),\n CopySourceRange: `bytes=${start}-${end}`\n };\n\n const command = new UploadPartCopyCommand(input);\n const response = await this.targetClient.send(command);\n\n if (!response.CopyPartResult?.ETag) {\n throw new Error(`UploadPartCopy failed for part ${partNumber}`);\n }\n\n completedParts.push({\n ETag: response.CopyPartResult.ETag,\n PartNumber: partNumber\n });\n }\n\n private async completeMultipartUpload(params: ICompleteMultipartUploadParams) {\n const { targetBucket, targetKey, uploadId, completedParts } = params;\n\n const sortedParts = [...completedParts].sort((a, b) => {\n return a.PartNumber! - b.PartNumber!;\n });\n\n const input: CompleteMultipartUploadCommandInput = {\n Bucket: targetBucket,\n Key: targetKey,\n UploadId: uploadId,\n MultipartUpload: { Parts: sortedParts }\n };\n\n const command = new CompleteMultipartUploadCommand(input);\n return await this.targetClient.send(command);\n }\n\n private async abortMultipartUpload(params: IAbortMultipartUploadParams) {\n const { targetBucket, targetKey, uploadId } = params;\n\n const input: AbortMultipartUploadCommandInput = {\n Bucket: targetBucket,\n Key: targetKey,\n UploadId: uploadId\n };\n const command = new AbortMultipartUploadCommand(input);\n await this.targetClient.send(command);\n }\n\n private async copyMetadata(\n params: ICopyMetadataParams\n ): Promise<CopyObjectCommandOutput | null> {\n const { sourceBucket, targetBucket, key } = params;\n\n const metadataKey = `${key}.metadata`;\n\n const [sourceMetadata, targetMetadata] = await Promise.all([\n this.headObject({\n client: this.sourceClient,\n bucket: sourceBucket,\n key: metadataKey\n }).catch(() => null),\n this.headObject({\n client: this.targetClient,\n bucket: targetBucket,\n key: metadataKey\n }).catch(() => null)\n ]);\n /**\n * If the source metadata does not exist, we cannot copy it.\n */\n if (!sourceMetadata?.ETag) {\n return null;\n }\n /**\n * If the target metadata already exists, we can skip copying it.\n */\n if (targetMetadata) {\n return null;\n }\n\n const input: CopyObjectCommandInput = {\n Bucket: targetBucket,\n Key: metadataKey,\n CopySource: encodeURIComponent(`${sourceBucket}/${metadataKey}`)\n };\n\n const command = new CopyObjectCommand(input);\n\n return await this.targetClient.send(command);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AbortMultipartUploadCommand","CompleteMultipartUploadCommand","CopyObjectCommand","CreateMultipartUploadCommand","HeadObjectCommand","UploadPartCopyCommand","bytes","convertException","CopyFile","constructor","params","createS3Client","sourceRegion","targetRegion","maxConcurrency","minPartSize","maxPartSize","sourceClient","region","targetClient","minPartSizeBytes","parseByteSize","maxPartSizeBytes","Error","copy","key","sourceBucket","targetBucket","sourceHead","headObject","client","bucket","ContentLength","ETag","targetHead","totalSize","partSize","Math","max","min","ceil","uploadId","createMultipartUpload","targetKey","completedParts","partNumber","start","promises","active","end","copyPromise","uploadPartCopy","sourceKey","push","Promise","race","all","completeMultipartUpload","ex","abortMultipartUpload","copyMetadata","console","error","log","value","parsed","parse","typeOfValue","input","Bucket","Key","command","result","send","$metadata","httpStatusCode","name","response","UploadId","PartNumber","CopySource","encodeURIComponent","CopySourceRange","CopyPartResult","sortedParts","sort","a","b","MultipartUpload","Parts","metadataKey","sourceMetadata","targetMetadata","catch"],"sources":["CopyFile.ts"],"sourcesContent":["import type {\n AbortMultipartUploadCommandInput,\n CompletedPart,\n CompleteMultipartUploadCommandInput,\n CopyObjectCommandInput,\n CopyObjectCommandOutput,\n CreateMultipartUploadCommandInput,\n HeadObjectCommandInput,\n S3Client,\n S3ClientConfig,\n UploadPartCopyCommandInput\n} from \"@webiny/aws-sdk/client-s3/index.js\";\nimport {\n AbortMultipartUploadCommand,\n CompleteMultipartUploadCommand,\n CopyObjectCommand,\n CreateMultipartUploadCommand,\n HeadObjectCommand,\n UploadPartCopyCommand\n} from \"@webiny/aws-sdk/client-s3/index.js\";\nimport bytes from \"bytes\";\nimport { convertException } from \"@webiny/utils\";\n\ntype ByteSize = number | `${number}B` | `${number}KB` | `${number}MB` | `${number}GB`;\n\nexport interface ICopyFileParams {\n createS3Client: (config: Partial<S3ClientConfig>) => Pick<S3Client, \"send\">;\n sourceRegion: string;\n targetRegion: string;\n maxConcurrency?: number;\n minPartSize?: ByteSize;\n maxPartSize?: ByteSize;\n}\n\nexport interface ICopyParams {\n key: string;\n sourceBucket: string;\n targetBucket: string;\n}\n\nexport interface IHeadObjectParams {\n client: Pick<S3Client, \"send\">;\n bucket: string;\n key: string;\n}\n\nexport interface ICreateMultipartUploadParams {\n targetBucket: string;\n targetKey: string;\n}\n\nexport interface IUploadPartCopyParams {\n sourceBucket: string;\n sourceKey: string;\n targetBucket: string;\n targetKey: string;\n uploadId: string;\n partNumber: number;\n start: number;\n end: number;\n completedParts: CompletedPart[];\n}\n\nexport interface ICompleteMultipartUploadParams {\n targetBucket: string;\n targetKey: string;\n uploadId: string;\n completedParts: CompletedPart[];\n}\n\nexport interface IAbortMultipartUploadParams {\n targetBucket: string;\n targetKey: string;\n uploadId: string;\n}\n\ninterface ICopyMetadataParams {\n sourceBucket: string;\n targetBucket: string;\n key: string;\n}\n\nexport class CopyFile {\n private readonly sourceClient: Pick<S3Client, \"send\">;\n private readonly targetClient: Pick<S3Client, \"send\">;\n private readonly maxConcurrency: number;\n private readonly minPartSizeBytes: number;\n private readonly maxPartSizeBytes: number;\n\n public constructor(params: ICopyFileParams) {\n const {\n createS3Client,\n sourceRegion,\n targetRegion,\n maxConcurrency = 100,\n minPartSize = \"5MB\",\n maxPartSize = \"1GB\"\n } = params;\n\n this.sourceClient = createS3Client({\n region: sourceRegion\n });\n this.targetClient = createS3Client({\n region: targetRegion\n });\n this.maxConcurrency = maxConcurrency;\n\n this.minPartSizeBytes = this.parseByteSize(minPartSize);\n this.maxPartSizeBytes = this.parseByteSize(maxPartSize);\n\n if (this.minPartSizeBytes < 5 * 1024 * 1024) {\n throw new Error(\"minPartSize must be at least 5MB.\");\n }\n }\n\n public async copy(params: ICopyParams): Promise<void> {\n const { key, sourceBucket, targetBucket } = params;\n\n const sourceHead = await this.headObject({\n client: this.sourceClient,\n bucket: sourceBucket,\n key\n });\n\n if (!sourceHead?.ContentLength || !sourceHead.ETag) {\n throw new Error(\"Source object metadata is invalid or missing.\");\n }\n /**\n * If the target object already exists, we can skip the copy operation.\n */\n const targetHead = await this.headObject({\n client: this.targetClient,\n bucket: targetBucket,\n key\n });\n\n if (targetHead) {\n return;\n }\n\n const totalSize = sourceHead.ContentLength;\n let partSize = Math.max(\n this.minPartSizeBytes,\n Math.min(this.maxPartSizeBytes, Math.ceil(totalSize / this.maxConcurrency))\n );\n partSize = Math.min(partSize, totalSize);\n\n const uploadId = await this.createMultipartUpload({\n targetBucket,\n targetKey: key\n });\n const completedParts: CompletedPart[] = [];\n\n try {\n let partNumber = 1;\n let start = 0;\n const promises: Promise<void>[] = [];\n let active = 0;\n\n while (start < totalSize) {\n const end = Math.min(start + partSize - 1, totalSize - 1);\n\n const copyPromise = this.uploadPartCopy({\n sourceBucket,\n sourceKey: key,\n targetBucket,\n targetKey: key,\n uploadId,\n partNumber,\n start,\n end,\n completedParts\n });\n\n promises.push(copyPromise);\n active++;\n\n if (active >= this.maxConcurrency) {\n await Promise.race(promises);\n active--;\n }\n\n partNumber++;\n start += partSize;\n }\n\n await Promise.all(promises);\n /**\n * Complete the multipart upload with all the completed parts.\n */\n await this.completeMultipartUpload({\n targetBucket,\n targetKey: key,\n uploadId,\n completedParts\n });\n } catch (ex) {\n await this.abortMultipartUpload({ targetBucket, targetKey: key, uploadId });\n throw ex;\n }\n /**\n * And then copy the metadata file.\n */\n\n try {\n await this.copyMetadata({\n sourceBucket,\n targetBucket,\n key\n });\n } catch (ex) {\n console.error(\n `Failed to copy metadata for ${key} from ${sourceBucket} to ${targetBucket}.`\n );\n console.log(convertException(ex));\n }\n }\n\n private parseByteSize(value: ByteSize): number {\n if (typeof value === \"number\") {\n return value;\n }\n const parsed = bytes.parse(value);\n if (typeof parsed === \"number\") {\n return parsed;\n }\n const typeOfValue = typeof value;\n throw new Error(`Invalid byte size value type \"${typeOfValue}\".`);\n }\n\n private async headObject(params: IHeadObjectParams) {\n const { client, bucket, key } = params;\n const input: HeadObjectCommandInput = {\n Bucket: bucket,\n Key: key\n };\n const command = new HeadObjectCommand(input);\n try {\n const result = await client.send(command);\n if (result.$metadata?.httpStatusCode === 200) {\n return result;\n }\n } catch (ex) {\n if (ex.name === \"NotFound\" || ex.$metadata?.httpStatusCode === 404) {\n return null;\n }\n console.error(`Failed to head object ${key} in bucket ${bucket}.`);\n console.log(convertException(ex));\n }\n return null;\n }\n\n private async createMultipartUpload(params: ICreateMultipartUploadParams): Promise<string> {\n const { targetBucket, targetKey } = params;\n const input: CreateMultipartUploadCommandInput = {\n Bucket: targetBucket,\n Key: targetKey\n };\n const command = new CreateMultipartUploadCommand(input);\n const response = await this.targetClient.send(command);\n if (!response.UploadId) {\n throw new Error(\"Failed to create multipart upload.\");\n }\n return response.UploadId;\n }\n\n private async uploadPartCopy(params: IUploadPartCopyParams): Promise<void> {\n const {\n sourceBucket,\n sourceKey,\n targetBucket,\n targetKey,\n uploadId,\n partNumber,\n start,\n end,\n completedParts\n } = params;\n\n const input: UploadPartCopyCommandInput = {\n Bucket: targetBucket,\n Key: targetKey,\n UploadId: uploadId,\n PartNumber: partNumber,\n CopySource: encodeURIComponent(`${sourceBucket}/${sourceKey}`),\n CopySourceRange: `bytes=${start}-${end}`\n };\n\n const command = new UploadPartCopyCommand(input);\n const response = await this.targetClient.send(command);\n\n if (!response.CopyPartResult?.ETag) {\n throw new Error(`UploadPartCopy failed for part ${partNumber}`);\n }\n\n completedParts.push({\n ETag: response.CopyPartResult.ETag,\n PartNumber: partNumber\n });\n }\n\n private async completeMultipartUpload(params: ICompleteMultipartUploadParams) {\n const { targetBucket, targetKey, uploadId, completedParts } = params;\n\n const sortedParts = [...completedParts].sort((a, b) => {\n return a.PartNumber! - b.PartNumber!;\n });\n\n const input: CompleteMultipartUploadCommandInput = {\n Bucket: targetBucket,\n Key: targetKey,\n UploadId: uploadId,\n MultipartUpload: { Parts: sortedParts }\n };\n\n const command = new CompleteMultipartUploadCommand(input);\n return await this.targetClient.send(command);\n }\n\n private async abortMultipartUpload(params: IAbortMultipartUploadParams) {\n const { targetBucket, targetKey, uploadId } = params;\n\n const input: AbortMultipartUploadCommandInput = {\n Bucket: targetBucket,\n Key: targetKey,\n UploadId: uploadId\n };\n const command = new AbortMultipartUploadCommand(input);\n await this.targetClient.send(command);\n }\n\n private async copyMetadata(\n params: ICopyMetadataParams\n ): Promise<CopyObjectCommandOutput | null> {\n const { sourceBucket, targetBucket, key } = params;\n\n const metadataKey = `${key}.metadata`;\n\n const [sourceMetadata, targetMetadata] = await Promise.all([\n this.headObject({\n client: this.sourceClient,\n bucket: sourceBucket,\n key: metadataKey\n }).catch(() => null),\n this.headObject({\n client: this.targetClient,\n bucket: targetBucket,\n key: metadataKey\n }).catch(() => null)\n ]);\n /**\n * If the source metadata does not exist, we cannot copy it.\n */\n if (!sourceMetadata?.ETag) {\n return null;\n }\n /**\n * If the target metadata already exists, we can skip copying it.\n */\n if (targetMetadata) {\n return null;\n }\n\n const input: CopyObjectCommandInput = {\n Bucket: targetBucket,\n Key: metadataKey,\n CopySource: encodeURIComponent(`${sourceBucket}/${metadataKey}`)\n };\n\n const command = new CopyObjectCommand(input);\n\n return await this.targetClient.send(command);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,4 +3,4 @@ import type { ICopyFileActionEvent } from "./types.js";
3
3
  export interface ICreateCopyFileActionParams {
4
4
  createS3Client: (config: Partial<S3ClientConfig>) => Pick<S3Client, "send">;
5
5
  }
6
- export declare const createCopyFileAction: ({ createS3Client }: ICreateCopyFileActionParams) => import("../../plugins/WorkerActionPlugin.js").WorkerActionPlugin<ICopyFileActionEvent>;
6
+ export declare const createCopyFileAction: ({ createS3Client }: ICreateCopyFileActionParams) => import("~/worker/plugins/WorkerActionPlugin.js").WorkerActionPlugin<ICopyFileActionEvent>;