@webiny/api-headless-cms-bulk-actions 0.0.0-unstable.a4637c5ce6 → 0.0.0-unstable.a4f3e4ea8b

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 (192) hide show
  1. package/README.md +10 -14
  2. package/abstractions/IUseCase.js +0 -7
  3. package/abstractions/index.d.ts +1 -3
  4. package/abstractions/index.js +0 -40
  5. package/domain/BulkActionName.d.ts +3 -0
  6. package/domain/BulkActionName.js +14 -0
  7. package/domain/BulkActionName.js.map +1 -0
  8. package/exports/api/cms/entry.d.ts +1 -0
  9. package/exports/api/cms/entry.js +1 -0
  10. package/features/BulkActionContext/abstractions.d.ts +5 -0
  11. package/features/BulkActionContext/abstractions.js +5 -0
  12. package/features/BulkActionContext/abstractions.js.map +1 -0
  13. package/features/BulkActionContext/index.d.ts +1 -0
  14. package/features/BulkActionContext/index.js +1 -0
  15. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.d.ts +15 -0
  16. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js +32 -0
  17. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js.map +1 -0
  18. package/features/DeleteEntriesBulkAction/feature.d.ts +4 -0
  19. package/features/DeleteEntriesBulkAction/feature.js +11 -0
  20. package/features/DeleteEntriesBulkAction/feature.js.map +1 -0
  21. package/features/EntriesBulkAction/abstractions.d.ts +38 -0
  22. package/features/EntriesBulkAction/abstractions.js +6 -0
  23. package/features/EntriesBulkAction/abstractions.js.map +1 -0
  24. package/features/EntriesBulkAction/createBulkActionTasks.d.ts +5 -0
  25. package/features/EntriesBulkAction/createBulkActionTasks.js +132 -0
  26. package/features/EntriesBulkAction/createBulkActionTasks.js.map +1 -0
  27. package/{useCases/internals/ChildTaskCleanup → features/EntriesBulkAction/internals}/ChildTasksCleanup.d.ts +2 -2
  28. package/features/EntriesBulkAction/internals/ChildTasksCleanup.js +33 -0
  29. package/features/EntriesBulkAction/internals/ChildTasksCleanup.js.map +1 -0
  30. package/features/EntriesBulkAction/internals/CreateTasksByModel.d.ts +16 -0
  31. package/features/EntriesBulkAction/internals/CreateTasksByModel.js +76 -0
  32. package/features/EntriesBulkAction/internals/CreateTasksByModel.js.map +1 -0
  33. package/features/EntriesBulkAction/internals/ProcessTask.d.ts +16 -0
  34. package/features/EntriesBulkAction/internals/ProcessTask.js +43 -0
  35. package/features/EntriesBulkAction/internals/ProcessTask.js.map +1 -0
  36. package/{useCases/internals/ProcessTask/Result.d.ts → features/EntriesBulkAction/internals/ProcessTaskResult.d.ts} +1 -1
  37. package/features/EntriesBulkAction/internals/ProcessTaskResult.js +23 -0
  38. package/features/EntriesBulkAction/internals/ProcessTaskResult.js.map +1 -0
  39. package/features/EntriesBulkAction/internals/ProcessTasksByModel.d.ts +13 -0
  40. package/features/EntriesBulkAction/internals/ProcessTasksByModel.js +43 -0
  41. package/features/EntriesBulkAction/internals/ProcessTasksByModel.js.map +1 -0
  42. package/{useCases/internals/CreateTasksByModel → features/EntriesBulkAction/internals}/TaskCache.d.ts +4 -4
  43. package/features/EntriesBulkAction/internals/TaskCache.js +35 -0
  44. package/features/EntriesBulkAction/internals/TaskCache.js.map +1 -0
  45. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.d.ts +15 -0
  46. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.js +29 -0
  47. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.js.map +1 -0
  48. package/features/MoveToFolderBulkAction/feature.d.ts +4 -0
  49. package/features/MoveToFolderBulkAction/feature.js +11 -0
  50. package/features/MoveToFolderBulkAction/feature.js.map +1 -0
  51. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.d.ts +15 -0
  52. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.js +32 -0
  53. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.js.map +1 -0
  54. package/features/MoveToTrashBulkAction/feature.d.ts +4 -0
  55. package/features/MoveToTrashBulkAction/feature.js +11 -0
  56. package/features/MoveToTrashBulkAction/feature.js.map +1 -0
  57. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.d.ts +15 -0
  58. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.js +35 -0
  59. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.js.map +1 -0
  60. package/features/PublishEntriesBulkAction/feature.d.ts +4 -0
  61. package/features/PublishEntriesBulkAction/feature.js +11 -0
  62. package/features/PublishEntriesBulkAction/feature.js.map +1 -0
  63. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.d.ts +15 -0
  64. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.js +30 -0
  65. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.js.map +1 -0
  66. package/features/RestoreEntriesBulkAction/feature.d.ts +4 -0
  67. package/features/RestoreEntriesBulkAction/feature.js +11 -0
  68. package/features/RestoreEntriesBulkAction/feature.js.map +1 -0
  69. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.d.ts +15 -0
  70. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.js +28 -0
  71. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.js.map +1 -0
  72. package/features/UnpublishEntriesBulkAction/feature.d.ts +4 -0
  73. package/features/UnpublishEntriesBulkAction/feature.js +11 -0
  74. package/features/UnpublishEntriesBulkAction/feature.js.map +1 -0
  75. package/graphql/createBulkActionGraphQL.d.ts +3 -0
  76. package/graphql/createBulkActionGraphQL.js +57 -0
  77. package/graphql/createBulkActionGraphQL.js.map +1 -0
  78. package/graphql/createDefaultGraphQL.d.ts +3 -0
  79. package/graphql/createDefaultGraphQL.js +58 -0
  80. package/graphql/createDefaultGraphQL.js.map +1 -0
  81. package/handlers/eventBridgeEventHandler.js +24 -49
  82. package/handlers/eventBridgeEventHandler.js.map +1 -1
  83. package/handlers/index.d.ts +1 -1
  84. package/handlers/index.js +7 -12
  85. package/handlers/index.js.map +1 -1
  86. package/handlers/setupEventsTenant.js +8 -17
  87. package/handlers/setupEventsTenant.js.map +1 -1
  88. package/index.d.ts +8 -6
  89. package/index.js +43 -70
  90. package/index.js.map +1 -1
  91. package/package.json +26 -26
  92. package/tasks/EmptyTrashBinTaskDefinition.d.ts +27 -0
  93. package/tasks/EmptyTrashBinTaskDefinition.js +105 -0
  94. package/tasks/EmptyTrashBinTaskDefinition.js.map +1 -0
  95. package/tasks/createEmptyTrashBinsTask.d.ts +1 -2
  96. package/tasks/createEmptyTrashBinsTask.js +6 -116
  97. package/tasks/createEmptyTrashBinsTask.js.map +1 -1
  98. package/tasks/index.d.ts +1 -2
  99. package/tasks/index.js +1 -29
  100. package/types.d.ts +12 -12
  101. package/types.js +7 -21
  102. package/types.js.map +1 -1
  103. package/abstractions/IListEntries.d.ts +0 -7
  104. package/abstractions/IListEntries.js +0 -7
  105. package/abstractions/IListEntries.js.map +0 -1
  106. package/abstractions/IProcessEntry.d.ts +0 -4
  107. package/abstractions/IProcessEntry.js +0 -7
  108. package/abstractions/IProcessEntry.js.map +0 -1
  109. package/abstractions/IUseCase.js.map +0 -1
  110. package/abstractions/index.js.map +0 -1
  111. package/plugins/createBulkAction.d.ts +0 -10
  112. package/plugins/createBulkAction.js +0 -36
  113. package/plugins/createBulkAction.js.map +0 -1
  114. package/plugins/createBulkActionGraphQL.d.ts +0 -7
  115. package/plugins/createBulkActionGraphQL.js +0 -72
  116. package/plugins/createBulkActionGraphQL.js.map +0 -1
  117. package/plugins/createBulkActionTasks.d.ts +0 -9
  118. package/plugins/createBulkActionTasks.js +0 -135
  119. package/plugins/createBulkActionTasks.js.map +0 -1
  120. package/plugins/createDefaultGraphQL.d.ts +0 -3
  121. package/plugins/createDefaultGraphQL.js +0 -70
  122. package/plugins/createDefaultGraphQL.js.map +0 -1
  123. package/plugins/index.d.ts +0 -2
  124. package/plugins/index.js +0 -29
  125. package/plugins/index.js.map +0 -1
  126. package/tasks/createBulkActionEntriesTasks.d.ts +0 -1
  127. package/tasks/createBulkActionEntriesTasks.js +0 -38
  128. package/tasks/createBulkActionEntriesTasks.js.map +0 -1
  129. package/tasks/index.js.map +0 -1
  130. package/useCases/DeleteEntry.d.ts +0 -10
  131. package/useCases/DeleteEntry.js +0 -26
  132. package/useCases/DeleteEntry.js.map +0 -1
  133. package/useCases/ListDeletedEntries.d.ts +0 -13
  134. package/useCases/ListDeletedEntries.js +0 -28
  135. package/useCases/ListDeletedEntries.js.map +0 -1
  136. package/useCases/ListLatestEntries.d.ts +0 -13
  137. package/useCases/ListLatestEntries.js +0 -28
  138. package/useCases/ListLatestEntries.js.map +0 -1
  139. package/useCases/ListNotPublishedEntries.d.ts +0 -13
  140. package/useCases/ListNotPublishedEntries.js +0 -34
  141. package/useCases/ListNotPublishedEntries.js.map +0 -1
  142. package/useCases/ListPublishedEntries.d.ts +0 -13
  143. package/useCases/ListPublishedEntries.js +0 -28
  144. package/useCases/ListPublishedEntries.js.map +0 -1
  145. package/useCases/MoveEntryToFolder.d.ts +0 -13
  146. package/useCases/MoveEntryToFolder.js +0 -23
  147. package/useCases/MoveEntryToFolder.js.map +0 -1
  148. package/useCases/MoveEntryToTrash.d.ts +0 -10
  149. package/useCases/MoveEntryToTrash.js +0 -26
  150. package/useCases/MoveEntryToTrash.js.map +0 -1
  151. package/useCases/PublishEntry.d.ts +0 -10
  152. package/useCases/PublishEntry.js +0 -20
  153. package/useCases/PublishEntry.js.map +0 -1
  154. package/useCases/RestoreEntryFromTrash.d.ts +0 -10
  155. package/useCases/RestoreEntryFromTrash.js +0 -24
  156. package/useCases/RestoreEntryFromTrash.js.map +0 -1
  157. package/useCases/UnpublishEntry.d.ts +0 -10
  158. package/useCases/UnpublishEntry.js +0 -20
  159. package/useCases/UnpublishEntry.js.map +0 -1
  160. package/useCases/index.d.ts +0 -10
  161. package/useCases/index.js +0 -117
  162. package/useCases/index.js.map +0 -1
  163. package/useCases/internals/ChildTaskCleanup/ChildTasksCleanup.js +0 -77
  164. package/useCases/internals/ChildTaskCleanup/ChildTasksCleanup.js.map +0 -1
  165. package/useCases/internals/ChildTaskCleanup/index.d.ts +0 -1
  166. package/useCases/internals/ChildTaskCleanup/index.js +0 -18
  167. package/useCases/internals/ChildTaskCleanup/index.js.map +0 -1
  168. package/useCases/internals/CreateTasksByModel/CreateTasksByModel.d.ts +0 -13
  169. package/useCases/internals/CreateTasksByModel/CreateTasksByModel.js +0 -111
  170. package/useCases/internals/CreateTasksByModel/CreateTasksByModel.js.map +0 -1
  171. package/useCases/internals/CreateTasksByModel/TaskCache.js +0 -76
  172. package/useCases/internals/CreateTasksByModel/TaskCache.js.map +0 -1
  173. package/useCases/internals/CreateTasksByModel/index.d.ts +0 -1
  174. package/useCases/internals/CreateTasksByModel/index.js +0 -18
  175. package/useCases/internals/CreateTasksByModel/index.js.map +0 -1
  176. package/useCases/internals/ProcessTask/ProcessTask.d.ts +0 -14
  177. package/useCases/internals/ProcessTask/ProcessTask.js +0 -81
  178. package/useCases/internals/ProcessTask/ProcessTask.js.map +0 -1
  179. package/useCases/internals/ProcessTask/Result.js +0 -29
  180. package/useCases/internals/ProcessTask/Result.js.map +0 -1
  181. package/useCases/internals/ProcessTask/index.d.ts +0 -1
  182. package/useCases/internals/ProcessTask/index.js +0 -18
  183. package/useCases/internals/ProcessTask/index.js.map +0 -1
  184. package/useCases/internals/ProcessTasksByModel/ProcessTasksByModel.d.ts +0 -11
  185. package/useCases/internals/ProcessTasksByModel/ProcessTasksByModel.js +0 -67
  186. package/useCases/internals/ProcessTasksByModel/ProcessTasksByModel.js.map +0 -1
  187. package/useCases/internals/ProcessTasksByModel/index.d.ts +0 -1
  188. package/useCases/internals/ProcessTasksByModel/index.js +0 -18
  189. package/useCases/internals/ProcessTasksByModel/index.js.map +0 -1
  190. package/useCases/internals/index.d.ts +0 -4
  191. package/useCases/internals/index.js +0 -51
  192. package/useCases/internals/index.js.map +0 -1
package/README.md CHANGED
@@ -1,15 +1,11 @@
1
1
  # @webiny/api-headless-cms-bulk-actions
2
- [![](https://img.shields.io/npm/dw/@webiny/api-headless-cms-bulk-actions.svg)](https://www.npmjs.com/package/@webinyapi-headless-cms-bulk-actions)
3
- [![](https://img.shields.io/npm/v/@webiny/api-headless-cms-bulk-actions.svg)](https://www.npmjs.com/package/@webiny/api-headless-cms-bulk-actions)
4
- [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
5
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
6
-
7
- ## Install
8
- ```
9
- npm install --save @webiny/api-headless-cms-bulk-actions
10
- ```
11
-
12
- Or if you prefer yarn:
13
- ```
14
- yarn add @webiny/api-headless-cms-bulk-actions
15
- ```
2
+
3
+ > [!NOTE]
4
+ > This package is part of the [Webiny](https://www.webiny.com) monorepo.
5
+ > It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
6
+
7
+ 📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
8
+
9
+ ---
10
+
11
+ _This README file is automatically generated during the publish process._
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- //# sourceMappingURL=IUseCase.js.map
@@ -1,3 +1 @@
1
- export * from "./IListEntries";
2
- export * from "./IProcessEntry";
3
- export * from "./IUseCase";
1
+ export type { IUseCase } from "./IUseCase.js";
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _IListEntries = require("./IListEntries");
7
- Object.keys(_IListEntries).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _IListEntries[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _IListEntries[key];
14
- }
15
- });
16
- });
17
- var _IProcessEntry = require("./IProcessEntry");
18
- Object.keys(_IProcessEntry).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _IProcessEntry[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function () {
24
- return _IProcessEntry[key];
25
- }
26
- });
27
- });
28
- var _IUseCase = require("./IUseCase");
29
- Object.keys(_IUseCase).forEach(function (key) {
30
- if (key === "default" || key === "__esModule") return;
31
- if (key in exports && exports[key] === _IUseCase[key]) return;
32
- Object.defineProperty(exports, key, {
33
- enumerable: true,
34
- get: function () {
35
- return _IUseCase[key];
36
- }
37
- });
38
- });
39
-
40
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ export declare class BulkActionName {
2
+ static from(name: string): string;
3
+ }
@@ -0,0 +1,14 @@
1
+ function toPascalCase(str) {
2
+ str = str.replace(/[^a-zA-Z0-9]+/g, " ");
3
+ const words = str.split(" ");
4
+ const capitalizedWords = words.map((word)=>word.charAt(0).toUpperCase() + word.slice(1));
5
+ return capitalizedWords.join("");
6
+ }
7
+ class BulkActionName {
8
+ static from(name) {
9
+ return toPascalCase(name);
10
+ }
11
+ }
12
+ export { BulkActionName };
13
+
14
+ //# sourceMappingURL=BulkActionName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain/BulkActionName.js","sources":["../../src/domain/BulkActionName.ts"],"sourcesContent":["function toPascalCase(str: string) {\n // Step 1: Remove non-alphanumeric characters and replace them with spaces\n str = str.replace(/[^a-zA-Z0-9]+/g, \" \");\n\n // Step 2: Split the string into words\n const words = str.split(\" \");\n\n // Step 3: Capitalize the first letter of each word\n const capitalizedWords = words.map(word => word.charAt(0).toUpperCase() + word.slice(1));\n\n // Step 4: Join all the capitalized words together\n return capitalizedWords.join(\"\");\n}\n\nexport class BulkActionName {\n static from(name: string) {\n return toPascalCase(name);\n }\n}\n"],"names":["toPascalCase","str","words","capitalizedWords","word","BulkActionName","name"],"mappings":"AAAA,SAASA,aAAaC,GAAW;IAE7BA,MAAMA,IAAI,OAAO,CAAC,kBAAkB;IAGpC,MAAMC,QAAQD,IAAI,KAAK,CAAC;IAGxB,MAAME,mBAAmBD,MAAM,GAAG,CAACE,CAAAA,OAAQA,KAAK,MAAM,CAAC,GAAG,WAAW,KAAKA,KAAK,KAAK,CAAC;IAGrF,OAAOD,iBAAiB,IAAI,CAAC;AACjC;AAEO,MAAME;IACT,OAAO,KAAKC,IAAY,EAAE;QACtB,OAAON,aAAaM;IACxB;AACJ"}
@@ -0,0 +1 @@
1
+ export { EntriesBulkAction } from "../../../features/EntriesBulkAction/abstractions.js";
@@ -0,0 +1 @@
1
+ export { EntriesBulkAction } from "../../../features/EntriesBulkAction/abstractions.js";
@@ -0,0 +1,5 @@
1
+ import type { HcmsBulkActionsContext } from "../../types.js";
2
+ export declare const BulkActionContext: import("@webiny/di").Abstraction<HcmsBulkActionsContext>;
3
+ export declare namespace BulkActionContext {
4
+ type Interface = HcmsBulkActionsContext;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const BulkActionContext = createAbstraction("BulkActionContext");
3
+ export { BulkActionContext };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/BulkActionContext/abstractions.js","sources":["../../../src/features/BulkActionContext/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { HcmsBulkActionsContext } from \"~/types.js\";\n\n// TODO: this is a bridge for legacy context; needs review and refactor of code that uses it.\n\nexport const BulkActionContext = createAbstraction<HcmsBulkActionsContext>(\"BulkActionContext\");\n\nexport namespace BulkActionContext {\n export type Interface = HcmsBulkActionsContext;\n}\n"],"names":["BulkActionContext","createAbstraction"],"mappings":";AAKO,MAAMA,oBAAoBC,kBAA0C"}
@@ -0,0 +1 @@
1
+ export * from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export * from "./abstractions.js";
@@ -0,0 +1,15 @@
1
+ import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
2
+ import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
3
+ import { EntriesBulkAction } from "../../features/EntriesBulkAction/abstractions.js";
4
+ declare class DeleteEntriesBulkActionImpl implements EntriesBulkAction.Interface {
5
+ private listDeletedEntries;
6
+ private deleteEntry;
7
+ readonly name = "delete";
8
+ constructor(listDeletedEntries: ListDeletedEntriesUseCase.Interface, deleteEntry: DeleteEntryUseCase.Interface);
9
+ loadData(model: EntriesBulkAction.Model, params: EntriesBulkAction.LoadDataParams): Promise<EntriesBulkAction.LoadDataResult>;
10
+ processData(model: EntriesBulkAction.Model, params: EntriesBulkAction.ProcessParams): Promise<void>;
11
+ }
12
+ export declare const DeleteEntriesBulkAction: typeof DeleteEntriesBulkActionImpl & {
13
+ __abstraction: import("@webiny/di").Abstraction<import("~/features/EntriesBulkAction/abstractions.js").IEntriesBulkAction<Record<string, any>>>;
14
+ };
15
+ export {};
@@ -0,0 +1,32 @@
1
+ import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
2
+ import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
3
+ import { parseIdentifier } from "@webiny/utils";
4
+ import { EntriesBulkAction } from "../EntriesBulkAction/abstractions.js";
5
+ class DeleteEntriesBulkActionImpl {
6
+ constructor(listDeletedEntries, deleteEntry){
7
+ this.listDeletedEntries = listDeletedEntries;
8
+ this.deleteEntry = deleteEntry;
9
+ this.name = "delete";
10
+ }
11
+ async loadData(model, params) {
12
+ const entriesResult = await this.listDeletedEntries.execute(model, params);
13
+ if (entriesResult.isFail()) throw entriesResult.error;
14
+ return entriesResult.value;
15
+ }
16
+ async processData(model, params) {
17
+ const { id: entryId } = parseIdentifier(params.id);
18
+ await this.deleteEntry.execute(model, entryId, {
19
+ permanently: true
20
+ });
21
+ }
22
+ }
23
+ const DeleteEntriesBulkAction = EntriesBulkAction.createImplementation({
24
+ implementation: DeleteEntriesBulkActionImpl,
25
+ dependencies: [
26
+ ListDeletedEntriesUseCase,
27
+ DeleteEntryUseCase
28
+ ]
29
+ });
30
+ export { DeleteEntriesBulkAction };
31
+
32
+ //# sourceMappingURL=DeleteEntriesBulkAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js","sources":["../../../src/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.ts"],"sourcesContent":["import { ListDeletedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { EntriesBulkAction } from \"~/features/EntriesBulkAction/abstractions.js\";\n\nclass DeleteEntriesBulkActionImpl implements EntriesBulkAction.Interface {\n readonly name = \"delete\";\n\n constructor(\n private listDeletedEntries: ListDeletedEntriesUseCase.Interface,\n private deleteEntry: DeleteEntryUseCase.Interface\n ) {}\n\n async loadData(\n model: EntriesBulkAction.Model,\n params: EntriesBulkAction.LoadDataParams\n ): Promise<EntriesBulkAction.LoadDataResult> {\n const entriesResult = await this.listDeletedEntries.execute(model, params);\n if (entriesResult.isFail()) {\n throw entriesResult.error;\n }\n\n return entriesResult.value;\n }\n\n async processData(\n model: EntriesBulkAction.Model,\n params: EntriesBulkAction.ProcessParams\n ): Promise<void> {\n const { id: entryId } = parseIdentifier(params.id);\n\n await this.deleteEntry.execute(model, entryId, {\n permanently: true\n });\n }\n}\n\nexport const DeleteEntriesBulkAction = EntriesBulkAction.createImplementation({\n implementation: DeleteEntriesBulkActionImpl,\n dependencies: [ListDeletedEntriesUseCase, DeleteEntryUseCase]\n});\n"],"names":["DeleteEntriesBulkActionImpl","listDeletedEntries","deleteEntry","model","params","entriesResult","entryId","parseIdentifier","DeleteEntriesBulkAction","EntriesBulkAction","ListDeletedEntriesUseCase","DeleteEntryUseCase"],"mappings":";;;;AAKA,MAAMA;IAGF,YACYC,kBAAuD,EACvDC,WAAyC,CACnD;aAFUD,kBAAkB,GAAlBA;aACAC,WAAW,GAAXA;aAJH,IAAI,GAAG;IAKb;IAEH,MAAM,SACFC,KAA8B,EAC9BC,MAAwC,EACC;QACzC,MAAMC,gBAAgB,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAACF,OAAOC;QACnE,IAAIC,cAAc,MAAM,IACpB,MAAMA,cAAc,KAAK;QAG7B,OAAOA,cAAc,KAAK;IAC9B;IAEA,MAAM,YACFF,KAA8B,EAC9BC,MAAuC,EAC1B;QACb,MAAM,EAAE,IAAIE,OAAO,EAAE,GAAGC,gBAAgBH,OAAO,EAAE;QAEjD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACD,OAAOG,SAAS;YAC3C,aAAa;QACjB;IACJ;AACJ;AAEO,MAAME,0BAA0BC,kBAAkB,oBAAoB,CAAC;IAC1E,gBAAgBT;IAChB,cAAc;QAACU;QAA2BC;KAAmB;AACjE"}
@@ -0,0 +1,4 @@
1
+ export declare const DeleteEntriesBulkActionFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { DeleteEntriesBulkAction } from "./DeleteEntriesBulkAction.js";
3
+ const DeleteEntriesBulkActionFeature = createFeature({
4
+ name: "HeadlessCms/BulkAction/DeleteEntries",
5
+ register (container) {
6
+ container.register(DeleteEntriesBulkAction);
7
+ }
8
+ });
9
+ export { DeleteEntriesBulkActionFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/DeleteEntriesBulkAction/feature.js","sources":["../../../src/features/DeleteEntriesBulkAction/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteEntriesBulkAction } from \"./DeleteEntriesBulkAction.js\";\n\nexport const DeleteEntriesBulkActionFeature = createFeature({\n name: \"HeadlessCms/BulkAction/DeleteEntries\",\n register(container) {\n container.register(DeleteEntriesBulkAction);\n }\n});\n"],"names":["DeleteEntriesBulkActionFeature","createFeature","container","DeleteEntriesBulkAction"],"mappings":";;AAGO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1,38 @@
1
+ import type { CmsEntry, CmsEntryMeta, CmsModel } from "@webiny/api-headless-cms/types/index.js";
2
+ export interface IBulkActionListParams {
3
+ where?: Record<string, any>;
4
+ search?: string;
5
+ after?: string | null;
6
+ limit?: number;
7
+ }
8
+ export interface IBulkActionListResult {
9
+ entries: CmsEntry[];
10
+ meta: CmsEntryMeta;
11
+ }
12
+ export interface IBulkActionProcessParams<TData = Record<string, any>> {
13
+ id: string;
14
+ data?: TData;
15
+ }
16
+ export interface IEntriesBulkAction<TData = Record<string, any>> {
17
+ readonly name: string;
18
+ readonly modelIds?: string[];
19
+ readonly batchSize?: number;
20
+ loadData(model: CmsModel, params: IBulkActionListParams): Promise<IBulkActionListResult>;
21
+ processData(model: CmsModel, params: IBulkActionProcessParams<TData>): Promise<void>;
22
+ }
23
+ export declare const EntriesBulkAction: import("@webiny/di").Abstraction<IEntriesBulkAction<Record<string, any>>>;
24
+ export declare namespace EntriesBulkAction {
25
+ type Interface<TData = Record<string, any>> = IEntriesBulkAction<TData>;
26
+ type Model = CmsModel;
27
+ type LoadDataParams = IBulkActionListParams;
28
+ type LoadDataResult = IBulkActionListResult;
29
+ type ProcessParams<TData = Record<string, any>> = IBulkActionProcessParams<TData>;
30
+ }
31
+ interface IEntriesBulkActionConfig {
32
+ batchSize: number;
33
+ }
34
+ export declare const EntriesBulkActionConfig: import("@webiny/di").Abstraction<IEntriesBulkActionConfig>;
35
+ export declare namespace EntriesBulkActionConfig {
36
+ type Interface = IEntriesBulkActionConfig;
37
+ }
38
+ export {};
@@ -0,0 +1,6 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const EntriesBulkAction = createAbstraction("EntriesBulkAction");
3
+ const EntriesBulkActionConfig = createAbstraction("EntriesBulkActionConfig");
4
+ export { EntriesBulkAction, EntriesBulkActionConfig };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntriesBulkAction/abstractions.js","sources":["../../../src/features/EntriesBulkAction/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsEntry, CmsEntryMeta, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface IBulkActionListParams {\n where?: Record<string, any>;\n search?: string;\n after?: string | null;\n limit?: number;\n}\n\nexport interface IBulkActionListResult {\n entries: CmsEntry[];\n meta: CmsEntryMeta;\n}\n\nexport interface IBulkActionProcessParams<TData = Record<string, any>> {\n id: string;\n // The `data` payload the Admin action sent along with the trigger. Type it by\n // parameterizing `EntriesBulkAction.Interface<TData>` on your implementation.\n data?: TData;\n}\n\nexport interface IEntriesBulkAction<TData = Record<string, any>> {\n readonly name: string;\n readonly modelIds?: string[]; // Optional: filter which models get GraphQL mutations\n readonly batchSize?: number;\n loadData(model: CmsModel, params: IBulkActionListParams): Promise<IBulkActionListResult>;\n processData(model: CmsModel, params: IBulkActionProcessParams<TData>): Promise<void>;\n}\n\nexport const EntriesBulkAction = createAbstraction<IEntriesBulkAction>(\"EntriesBulkAction\");\n\nexport namespace EntriesBulkAction {\n export type Interface<TData = Record<string, any>> = IEntriesBulkAction<TData>;\n export type Model = CmsModel;\n export type LoadDataParams = IBulkActionListParams;\n export type LoadDataResult = IBulkActionListResult;\n export type ProcessParams<TData = Record<string, any>> = IBulkActionProcessParams<TData>;\n}\n\ninterface IEntriesBulkActionConfig {\n batchSize: number;\n}\n\nexport const EntriesBulkActionConfig =\n createAbstraction<IEntriesBulkActionConfig>(\"EntriesBulkActionConfig\");\n\nexport namespace EntriesBulkActionConfig {\n export type Interface = IEntriesBulkActionConfig;\n}\n"],"names":["EntriesBulkAction","createAbstraction","EntriesBulkActionConfig"],"mappings":";AA8BO,MAAMA,oBAAoBC,kBAAsC;AAchE,MAAMC,0BACTD,kBAA4C"}
@@ -0,0 +1,5 @@
1
+ import { EntriesBulkAction, EntriesBulkActionConfig } from "./abstractions.js";
2
+ export declare const createBulkActionTasks: (bulkAction: EntriesBulkAction.Interface, bulkActionsConfig: EntriesBulkActionConfig.Interface) => {
3
+ name: string;
4
+ register(container: import("@webiny/di").Container): void;
5
+ };
@@ -0,0 +1,132 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
3
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
4
+ import { BulkActionContext } from "../BulkActionContext/index.js";
5
+ import { BulkActionName } from "../../domain/BulkActionName.js";
6
+ import { ChildTasksCleanup } from "./internals/ChildTasksCleanup.js";
7
+ import { ProcessTask } from "./internals/ProcessTask.js";
8
+ import { CreateTasksByModel } from "./internals/CreateTasksByModel.js";
9
+ import { ProcessTasksByModel } from "./internals/ProcessTasksByModel.js";
10
+ const createBulkActionTasks = (bulkAction, bulkActionsConfig)=>{
11
+ const bulkActionName = BulkActionName.from(bulkAction.name);
12
+ const batchSize = bulkAction.batchSize ?? bulkActionsConfig.batchSize ?? 100;
13
+ const listTaskId = `hcmsBulkList${bulkActionName}Entries`;
14
+ const processTaskId = `hcmsBulkProcess${bulkActionName}Entries`;
15
+ class BulkActionListTask {
16
+ constructor(context, getModel){
17
+ this.id = listTaskId;
18
+ this.title = `Headless CMS: list "${bulkActionName}" entries by model`;
19
+ this.maxIterations = 500;
20
+ this.databaseLogs = false;
21
+ this.isPrivate = true;
22
+ this.selfCleanup = [
23
+ "onSuccess",
24
+ "onAbort"
25
+ ];
26
+ this.context = context;
27
+ this.getModel = getModel;
28
+ }
29
+ async run({ input, controller }) {
30
+ try {
31
+ if (!input.modelId) return controller.response.error('Missing "modelId" in the input.');
32
+ const action = input.action ?? "CREATE_SUBTASKS";
33
+ switch(action){
34
+ case "PROCESS_SUBTASKS":
35
+ {
36
+ const processTasks = new ProcessTasksByModel(this.context, processTaskId);
37
+ return await processTasks.execute({
38
+ input,
39
+ controller
40
+ });
41
+ }
42
+ case "CREATE_SUBTASKS":
43
+ case "CHECK_MORE_SUBTASKS":
44
+ {
45
+ const createTasks = new CreateTasksByModel(this.context, this.getModel, bulkAction, processTaskId, batchSize);
46
+ return await createTasks.execute({
47
+ input,
48
+ controller
49
+ });
50
+ }
51
+ case "END_TASK":
52
+ return controller.response.done(`Task done: task "${processTaskId}" has been successfully processed for entries from "${input.modelId}" model.`);
53
+ default:
54
+ return controller.response.error(`Unknown action: ${action}`);
55
+ }
56
+ } catch (ex) {
57
+ return controller.response.error(ex.message ?? "Error while executing list task");
58
+ }
59
+ }
60
+ async onDone({ task }) {
61
+ await this.cleanup(task);
62
+ }
63
+ async onError({ task }) {
64
+ await this.cleanup(task);
65
+ }
66
+ async onAbort({ task }) {
67
+ await this.cleanup(task);
68
+ }
69
+ async onMaxIterations({ task }) {
70
+ await this.cleanup(task);
71
+ }
72
+ async cleanup(task) {
73
+ const childTasksCleanup = new ChildTasksCleanup();
74
+ try {
75
+ await childTasksCleanup.execute({
76
+ context: this.context,
77
+ task
78
+ });
79
+ } catch (ex) {
80
+ console.error(`Error while cleaning "${listTaskId}" child tasks.`, ex);
81
+ }
82
+ }
83
+ }
84
+ class BulkActionProcessTask {
85
+ constructor(getModel){
86
+ this.id = processTaskId;
87
+ this.title = `Headless CMS: process "${bulkActionName}" entries`;
88
+ this.maxIterations = 2;
89
+ this.databaseLogs = false;
90
+ this.isPrivate = true;
91
+ this.selfCleanup = [
92
+ "onSuccess",
93
+ "onAbort"
94
+ ];
95
+ this.getModel = getModel;
96
+ }
97
+ async run({ input, controller }) {
98
+ try {
99
+ const processTask = new ProcessTask(bulkAction, this.getModel);
100
+ return await processTask.execute({
101
+ input,
102
+ controller
103
+ });
104
+ } catch (ex) {
105
+ return controller.response.error(ex.message ?? "Error while executing process task");
106
+ }
107
+ }
108
+ }
109
+ const BulkListTask = TaskDefinition.createImplementation({
110
+ implementation: BulkActionListTask,
111
+ dependencies: [
112
+ BulkActionContext,
113
+ GetModelUseCase
114
+ ]
115
+ });
116
+ const BulkProcessTask = TaskDefinition.createImplementation({
117
+ implementation: BulkActionProcessTask,
118
+ dependencies: [
119
+ GetModelUseCase
120
+ ]
121
+ });
122
+ return createFeature({
123
+ name: `HeadlessCms/BulkActionTasks/${bulkActionName}`,
124
+ register (container) {
125
+ container.register(BulkListTask);
126
+ container.register(BulkProcessTask);
127
+ }
128
+ });
129
+ };
130
+ export { createBulkActionTasks };
131
+
132
+ //# sourceMappingURL=createBulkActionTasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntriesBulkAction/createBulkActionTasks.js","sources":["../../../src/features/EntriesBulkAction/createBulkActionTasks.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { BulkActionContext } from \"~/features/BulkActionContext/index.js\";\nimport type {\n IBulkActionOperationByModelInput,\n IBulkActionOperationByModelOutput,\n IBulkActionOperationInput,\n IBulkActionOperationOutput\n} from \"~/types.js\";\nimport { EntriesBulkAction, EntriesBulkActionConfig } from \"./abstractions.js\";\nimport { BulkActionName } from \"~/domain/BulkActionName.js\";\nimport { ChildTasksCleanup } from \"./internals/ChildTasksCleanup.js\";\nimport { ProcessTask } from \"./internals/ProcessTask.js\";\nimport { CreateTasksByModel } from \"./internals/CreateTasksByModel.js\";\nimport { ProcessTasksByModel } from \"./internals/ProcessTasksByModel.js\";\n\nenum BulkActionOperationByModelAction {\n CREATE_SUBTASKS = \"CREATE_SUBTASKS\",\n CHECK_MORE_SUBTASKS = \"CHECK_MORE_SUBTASKS\",\n PROCESS_SUBTASKS = \"PROCESS_SUBTASKS\",\n END_TASK = \"END_TASK\"\n}\n\nexport const createBulkActionTasks = (\n bulkAction: EntriesBulkAction.Interface,\n bulkActionsConfig: EntriesBulkActionConfig.Interface\n) => {\n const bulkActionName = BulkActionName.from(bulkAction.name);\n const batchSize = bulkAction.batchSize ?? bulkActionsConfig.batchSize ?? 100;\n const listTaskId = `hcmsBulkList${bulkActionName}Entries`;\n const processTaskId = `hcmsBulkProcess${bulkActionName}Entries`;\n\n // List Task - manages pagination and creates subtasks\n class BulkActionListTask implements TaskDefinition.Interface<\n IBulkActionOperationByModelInput,\n IBulkActionOperationByModelOutput\n > {\n public readonly id = listTaskId;\n public readonly title = `Headless CMS: list \"${bulkActionName}\" entries by model`;\n public readonly maxIterations = 500;\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly context: BulkActionContext.Interface;\n public readonly getModel: GetModelUseCase.Interface;\n\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n constructor(context: BulkActionContext.Interface, getModel: GetModelUseCase.Interface) {\n this.context = context;\n this.getModel = getModel;\n }\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<\n IBulkActionOperationByModelInput,\n IBulkActionOperationByModelOutput\n >) {\n try {\n if (!input.modelId) {\n return controller.response.error(`Missing \"modelId\" in the input.`);\n }\n\n const action = input.action ?? BulkActionOperationByModelAction.CREATE_SUBTASKS;\n\n switch (action) {\n case BulkActionOperationByModelAction.PROCESS_SUBTASKS: {\n const processTasks = new ProcessTasksByModel(this.context, processTaskId);\n return await processTasks.execute({ input, controller });\n }\n case BulkActionOperationByModelAction.CREATE_SUBTASKS:\n case BulkActionOperationByModelAction.CHECK_MORE_SUBTASKS: {\n const createTasks = new CreateTasksByModel(\n this.context,\n this.getModel,\n bulkAction,\n processTaskId,\n batchSize\n );\n return await createTasks.execute({ input, controller });\n }\n case BulkActionOperationByModelAction.END_TASK: {\n return controller.response.done(\n `Task done: task \"${processTaskId}\" has been successfully processed for entries from \"${\n input.modelId\n }\" model.`\n );\n }\n default:\n return controller.response.error(`Unknown action: ${action}`);\n }\n } catch (ex) {\n return controller.response.error(ex.message ?? \"Error while executing list task\");\n }\n }\n\n async onDone({ task }: TaskDefinition.LifecycleHookParams): Promise<void> {\n await this.cleanup(task);\n }\n\n async onError({ task }: TaskDefinition.LifecycleHookParams) {\n await this.cleanup(task);\n }\n\n async onAbort({ task }: TaskDefinition.LifecycleHookParams) {\n await this.cleanup(task);\n }\n\n async onMaxIterations({ task }: TaskDefinition.LifecycleHookParams) {\n await this.cleanup(task);\n }\n\n async cleanup(task: TaskDefinition.Task) {\n const childTasksCleanup = new ChildTasksCleanup();\n try {\n await childTasksCleanup.execute({ context: this.context, task });\n } catch (ex) {\n console.error(`Error while cleaning \"${listTaskId}\" child tasks.`, ex);\n }\n }\n }\n\n // Process Task - processes individual batches of entries\n class BulkActionProcessTask implements TaskDefinition.Interface<\n IBulkActionOperationInput,\n IBulkActionOperationOutput\n > {\n public readonly id = processTaskId;\n public readonly title = `Headless CMS: process \"${bulkActionName}\" entries`;\n public readonly maxIterations = 2;\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly getModel: GetModelUseCase.Interface;\n\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n constructor(getModel: GetModelUseCase.Interface) {\n this.getModel = getModel;\n }\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<IBulkActionOperationInput, IBulkActionOperationOutput>) {\n try {\n const processTask = new ProcessTask(bulkAction, this.getModel);\n return await processTask.execute({ input, controller });\n } catch (ex) {\n return controller.response.error(\n ex.message ?? \"Error while executing process task\"\n );\n }\n }\n }\n\n const BulkListTask = TaskDefinition.createImplementation({\n implementation: BulkActionListTask,\n dependencies: [BulkActionContext, GetModelUseCase]\n });\n\n const BulkProcessTask = TaskDefinition.createImplementation({\n implementation: BulkActionProcessTask,\n dependencies: [GetModelUseCase]\n });\n\n return createFeature({\n name: `HeadlessCms/BulkActionTasks/${bulkActionName}`,\n register(container) {\n container.register(BulkListTask);\n container.register(BulkProcessTask);\n }\n });\n};\n"],"names":["createBulkActionTasks","bulkAction","bulkActionsConfig","bulkActionName","BulkActionName","batchSize","listTaskId","processTaskId","BulkActionListTask","context","getModel","input","controller","action","processTasks","ProcessTasksByModel","createTasks","CreateTasksByModel","ex","task","childTasksCleanup","ChildTasksCleanup","console","BulkActionProcessTask","processTask","ProcessTask","BulkListTask","TaskDefinition","BulkActionContext","GetModelUseCase","BulkProcessTask","createFeature","container"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { ITask, Context } from "@webiny/tasks";
2
- import type { IUseCase } from "../../../abstractions";
1
+ import type { ITask, Context } from "@webiny/background-tasks/api";
2
+ import type { IUseCase } from "../../../abstractions/index.js";
3
3
  export interface IChildTasksCleanupExecuteParams {
4
4
  context: Context;
5
5
  task: ITask;
@@ -0,0 +1,33 @@
1
+ import { TaskLogItemType } from "@webiny/background-tasks/api";
2
+ class ChildTasksCleanup {
3
+ async execute(params) {
4
+ const { context, task } = params;
5
+ const { items: childTasks } = await context.tasks.listTasks({
6
+ where: {
7
+ parentId: task.id
8
+ },
9
+ limit: 10000
10
+ });
11
+ if (0 === childTasks.length) return;
12
+ const childTaskIdList = childTasks.map((childTask)=>childTask.id);
13
+ const { items: childLogs } = await context.tasks.listLogs({
14
+ where: {
15
+ task_in: childTaskIdList
16
+ },
17
+ limit: 10000
18
+ });
19
+ if (0 === childLogs.length) await this.deleteTasks(context, childTaskIdList);
20
+ const deletedChildTaskLogIdList = [];
21
+ for (const log of childLogs)if (!log.items.some((item)=>item.type === TaskLogItemType.ERROR)) {
22
+ await context.tasks.deleteLog(log.id);
23
+ if (!deletedChildTaskLogIdList.includes(log.task)) deletedChildTaskLogIdList.push(log.task);
24
+ }
25
+ await this.deleteTasks(context, deletedChildTaskLogIdList);
26
+ }
27
+ async deleteTasks(context, taskIds) {
28
+ for (const taskId of taskIds)await context.tasks.deleteTask(taskId);
29
+ }
30
+ }
31
+ export { ChildTasksCleanup };
32
+
33
+ //# sourceMappingURL=ChildTasksCleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntriesBulkAction/internals/ChildTasksCleanup.js","sources":["../../../../src/features/EntriesBulkAction/internals/ChildTasksCleanup.ts"],"sourcesContent":["import type { ITask, Context } from \"@webiny/background-tasks/api\";\nimport { TaskLogItemType } from \"@webiny/background-tasks/api\";\nimport type { IUseCase } from \"~/abstractions/index.js\";\nimport type { HcmsBulkActionsContext } from \"~/types.js\";\n\nexport interface IChildTasksCleanupExecuteParams {\n context: Context;\n task: ITask;\n}\n\n/**\n * Cleanup of the child tasks.\n * This code will remove all the child tasks and their logs, which have no errors in them.\n */\nexport class ChildTasksCleanup implements IUseCase<IChildTasksCleanupExecuteParams, void> {\n public async execute(params: IChildTasksCleanupExecuteParams): Promise<void> {\n const { context, task } = params;\n\n const { items: childTasks } = await context.tasks.listTasks({\n where: {\n parentId: task.id\n },\n // Really doubtful there will be more than 10k of child tasks.\n limit: 10000\n });\n\n if (childTasks.length === 0) {\n return;\n }\n\n const childTaskIdList = childTasks.map(childTask => childTask.id);\n\n const { items: childLogs } = await context.tasks.listLogs({\n where: {\n task_in: childTaskIdList\n },\n limit: 10000\n });\n\n /**\n * No logs found. Proceed with deleting the child tasks.\n */\n if (childLogs.length === 0) {\n await this.deleteTasks(context, childTaskIdList);\n }\n\n const deletedChildTaskLogIdList: string[] = [];\n /**\n * First, we need to remove all the logs which have no errors.\n */\n for (const log of childLogs) {\n if (log.items.some(item => item.type === TaskLogItemType.ERROR)) {\n continue;\n }\n await context.tasks.deleteLog(log.id);\n if (deletedChildTaskLogIdList.includes(log.task)) {\n continue;\n }\n deletedChildTaskLogIdList.push(log.task);\n }\n /**\n * Now we can remove the tasks.\n */\n await this.deleteTasks(context, deletedChildTaskLogIdList);\n }\n\n /**\n * Helper method to delete tasks by ID.\n */\n private async deleteTasks(context: HcmsBulkActionsContext, taskIds: string[]): Promise<void> {\n for (const taskId of taskIds) {\n await context.tasks.deleteTask(taskId);\n }\n }\n}\n"],"names":["ChildTasksCleanup","params","context","task","childTasks","childTaskIdList","childTask","childLogs","deletedChildTaskLogIdList","log","item","TaskLogItemType","taskIds","taskId"],"mappings":";AAcO,MAAMA;IACT,MAAa,QAAQC,MAAuC,EAAiB;QACzE,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAGF;QAE1B,MAAM,EAAE,OAAOG,UAAU,EAAE,GAAG,MAAMF,QAAQ,KAAK,CAAC,SAAS,CAAC;YACxD,OAAO;gBACH,UAAUC,KAAK,EAAE;YACrB;YAEA,OAAO;QACX;QAEA,IAAIC,AAAsB,MAAtBA,WAAW,MAAM,EACjB;QAGJ,MAAMC,kBAAkBD,WAAW,GAAG,CAACE,CAAAA,YAAaA,UAAU,EAAE;QAEhE,MAAM,EAAE,OAAOC,SAAS,EAAE,GAAG,MAAML,QAAQ,KAAK,CAAC,QAAQ,CAAC;YACtD,OAAO;gBACH,SAASG;YACb;YACA,OAAO;QACX;QAKA,IAAIE,AAAqB,MAArBA,UAAU,MAAM,EAChB,MAAM,IAAI,CAAC,WAAW,CAACL,SAASG;QAGpC,MAAMG,4BAAsC,EAAE;QAI9C,KAAK,MAAMC,OAAOF,UACd,KAAIE,IAAI,KAAK,CAAC,IAAI,CAACC,CAAAA,OAAQA,KAAK,IAAI,KAAKC,gBAAgB,KAAK;YAG9D,MAAMT,QAAQ,KAAK,CAAC,SAAS,CAACO,IAAI,EAAE;YACpC,KAAID,0BAA0B,QAAQ,CAACC,IAAI,IAAI,GAG/CD,0BAA0B,IAAI,CAACC,IAAI,IAAI;;QAK3C,MAAM,IAAI,CAAC,WAAW,CAACP,SAASM;IACpC;IAKA,MAAc,YAAYN,OAA+B,EAAEU,OAAiB,EAAiB;QACzF,KAAK,MAAMC,UAAUD,QACjB,MAAMV,QAAQ,KAAK,CAAC,UAAU,CAACW;IAEvC;AACJ"}
@@ -0,0 +1,16 @@
1
+ import type { IBulkActionOperationByModelTaskParams } from "../../../types.js";
2
+ import { EntriesBulkAction } from "../../../features/EntriesBulkAction/abstractions.js";
3
+ import { BulkActionContext } from "../../../features/BulkActionContext/index.js";
4
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
5
+ /**
6
+ * The `CreateTasksByModel` class handles the execution of a task to process entries in batches.
7
+ */
8
+ export declare class CreateTasksByModel {
9
+ private readonly taskCache;
10
+ private readonly batchSize;
11
+ private readonly bulkAction;
12
+ private readonly context;
13
+ private readonly getModel;
14
+ constructor(context: BulkActionContext.Interface, getModel: GetModelUseCase.Interface, bulkAction: EntriesBulkAction.Interface, taskDefinition: string, batchSize: number);
15
+ execute(params: IBulkActionOperationByModelTaskParams): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskResultError | import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").TaskDefinition.ResultContinue<import("~/types.js").IBulkActionOperationByModelInput>>;
16
+ }
@@ -0,0 +1,76 @@
1
+ import { TaskCache } from "./TaskCache.js";
2
+ import { BulkActionOperationByModelAction } from "../../../types.js";
3
+ const MAX_TASK_LIST_LENGTH = 10;
4
+ class CreateTasksByModel {
5
+ constructor(context, getModel, bulkAction, taskDefinition, batchSize){
6
+ this.getModel = getModel;
7
+ this.taskCache = new TaskCache(taskDefinition);
8
+ this.batchSize = batchSize;
9
+ this.bulkAction = bulkAction;
10
+ this.context = context;
11
+ }
12
+ async execute(params) {
13
+ const { input, controller } = params;
14
+ try {
15
+ const modelResult = await this.getModel.execute(input.modelId);
16
+ if (modelResult.isFail()) return controller.response.error(`Model with ${input.modelId} not found!`);
17
+ const model = modelResult.value;
18
+ const listEntriesParams = {
19
+ where: input.where,
20
+ search: input.search,
21
+ after: input.after,
22
+ limit: this.batchSize
23
+ };
24
+ while(true){
25
+ if (controller.runtime.isAborted()) return controller.response.aborted();
26
+ if (controller.runtime.isCloseToTimeout()) {
27
+ await this.taskCache.triggerTask(this.context, controller.state.getTask());
28
+ return controller.response.continue({
29
+ ...input,
30
+ action: BulkActionOperationByModelAction.PROCESS_SUBTASKS
31
+ });
32
+ }
33
+ const { entries, meta } = await this.bulkAction.loadData(model, listEntriesParams);
34
+ if (0 === meta.totalCount) return controller.response.continue({
35
+ ...input,
36
+ action: BulkActionOperationByModelAction.END_TASK
37
+ });
38
+ if (this.taskCache.getTasksLength() === MAX_TASK_LIST_LENGTH) {
39
+ await this.taskCache.triggerTask(this.context, controller.state.getTask());
40
+ return controller.response.continue({
41
+ ...input,
42
+ action: BulkActionOperationByModelAction.PROCESS_SUBTASKS
43
+ });
44
+ }
45
+ if (0 === entries.length) {
46
+ await this.taskCache.triggerTask(this.context, controller.state.getTask());
47
+ return controller.response.continue({
48
+ ...input,
49
+ action: BulkActionOperationByModelAction.PROCESS_SUBTASKS
50
+ });
51
+ }
52
+ const ids = [];
53
+ for(let i = 0; i < entries.length; i++)ids.push(entries[i].id);
54
+ if (ids.length > 0) this.taskCache.cacheTask({
55
+ modelId: input.modelId,
56
+ identity: input.identity,
57
+ data: input.data,
58
+ ids
59
+ });
60
+ if (!meta.hasMoreItems || !meta.cursor) {
61
+ await this.taskCache.triggerTask(this.context, controller.state.getTask());
62
+ return controller.response.continue({
63
+ ...input,
64
+ action: BulkActionOperationByModelAction.PROCESS_SUBTASKS
65
+ });
66
+ }
67
+ listEntriesParams.after = meta.cursor;
68
+ }
69
+ } catch (ex) {
70
+ return controller.response.error(ex.message ?? "Error while creating task.");
71
+ }
72
+ }
73
+ }
74
+ export { CreateTasksByModel };
75
+
76
+ //# sourceMappingURL=CreateTasksByModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/EntriesBulkAction/internals/CreateTasksByModel.js","sources":["../../../../src/features/EntriesBulkAction/internals/CreateTasksByModel.ts"],"sourcesContent":["import type { CmsEntryListParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport { TaskCache } from \"./TaskCache.js\";\nimport type { IBulkActionOperationByModelTaskParams } from \"~/types.js\";\nimport { BulkActionOperationByModelAction } from \"~/types.js\";\nimport { EntriesBulkAction } from \"~/features/EntriesBulkAction/abstractions.js\";\nimport { BulkActionContext } from \"~/features/BulkActionContext/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\n\nconst MAX_TASK_LIST_LENGTH = 10;\n\n/**\n * The `CreateTasksByModel` class handles the execution of a task to process entries in batches.\n */\nexport class CreateTasksByModel {\n private readonly taskCache: TaskCache;\n private readonly batchSize: number;\n private readonly bulkAction: EntriesBulkAction.Interface;\n private readonly context: BulkActionContext.Interface;\n private readonly getModel: GetModelUseCase.Interface;\n\n constructor(\n context: BulkActionContext.Interface,\n getModel: GetModelUseCase.Interface,\n bulkAction: EntriesBulkAction.Interface,\n taskDefinition: string,\n batchSize: number\n ) {\n this.getModel = getModel;\n this.taskCache = new TaskCache(taskDefinition);\n this.batchSize = batchSize;\n this.bulkAction = bulkAction;\n this.context = context;\n }\n\n async execute(params: IBulkActionOperationByModelTaskParams) {\n const { input, controller } = params;\n\n try {\n const modelResult = await this.getModel.execute(input.modelId);\n\n if (modelResult.isFail()) {\n return controller.response.error(`Model with ${input.modelId} not found!`);\n }\n\n const model = modelResult.value;\n\n const listEntriesParams: CmsEntryListParams = {\n where: input.where,\n search: input.search,\n after: input.after,\n limit: this.batchSize\n };\n\n while (true) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n } else if (controller.runtime.isCloseToTimeout()) {\n await this.taskCache.triggerTask(this.context, controller.state.getTask());\n return controller.response.continue({\n ...input,\n action: BulkActionOperationByModelAction.PROCESS_SUBTASKS\n });\n }\n\n // List entries from the HCMS based on the provided query\n const { entries, meta } = await this.bulkAction.loadData(model, listEntriesParams);\n\n // End the task if no entries match the query\n if (meta.totalCount === 0) {\n return controller.response.continue({\n ...input,\n action: BulkActionOperationByModelAction.END_TASK\n });\n }\n\n // Continue processing if we are reached the task list length limit\n if (this.taskCache.getTasksLength() === MAX_TASK_LIST_LENGTH) {\n await this.taskCache.triggerTask(this.context, controller.state.getTask());\n return controller.response.continue({\n ...input,\n action: BulkActionOperationByModelAction.PROCESS_SUBTASKS\n });\n }\n\n // Continue processing if no entries are returned in the current batch\n if (entries.length === 0) {\n await this.taskCache.triggerTask(this.context, controller.state.getTask());\n return controller.response.continue({\n ...input,\n action: BulkActionOperationByModelAction.PROCESS_SUBTASKS\n });\n }\n\n // Extract entry IDs\n const ids: string[] = [];\n for (let i = 0; i < entries.length; i++) {\n ids.push(entries[i].id);\n }\n\n if (ids.length > 0) {\n // Cache the task with the entry IDs\n this.taskCache.cacheTask({\n modelId: input.modelId,\n identity: input.identity,\n data: input.data,\n ids\n });\n }\n\n // Continue processing if there are no more entries or pagination is complete\n if (!meta.hasMoreItems || !meta.cursor) {\n await this.taskCache.triggerTask(this.context, controller.state.getTask());\n\n return controller.response.continue({\n ...input,\n action: BulkActionOperationByModelAction.PROCESS_SUBTASKS\n });\n }\n\n listEntriesParams.after = meta.cursor;\n }\n } catch (ex) {\n return controller.response.error(ex.message ?? `Error while creating task.`);\n }\n }\n}\n"],"names":["MAX_TASK_LIST_LENGTH","CreateTasksByModel","context","getModel","bulkAction","taskDefinition","batchSize","TaskCache","params","input","controller","modelResult","model","listEntriesParams","BulkActionOperationByModelAction","entries","meta","ids","i","ex"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
2
+ import { EntriesBulkAction } from "../../../features/EntriesBulkAction/abstractions.js";
3
+ import type { IBulkActionOperationTaskParams } from "../../../types.js";
4
+ /**
5
+ * The `ProcessTask` class is responsible for processing a batch of entries
6
+ * based on the provided parameters. It uses a gateway to perform the actual
7
+ * processing and maintains the results of the operations, including successfully
8
+ * processed and failed entries.
9
+ */
10
+ export declare class ProcessTask {
11
+ private bulkAction;
12
+ private getModel;
13
+ private readonly result;
14
+ constructor(bulkAction: EntriesBulkAction.Interface, getModel: GetModelUseCase.Interface);
15
+ execute({ input, controller }: IBulkActionOperationTaskParams): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskResultError | import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").TaskDefinition.ResultContinue<import("~/types.js").IBulkActionOperationInput> | import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").TaskDefinition.ResultDone<import("~/types.js").IBulkActionOperationOutput>>;
16
+ }