@webiny/api-headless-cms-bulk-actions 0.0.0-unstable.ac6ebf63c6 → 0.0.0-unstable.b6d7105cee

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 (92) hide show
  1. package/abstractions/IUseCase.js +0 -3
  2. package/abstractions/index.js +0 -3
  3. package/domain/BulkActionName.js +9 -15
  4. package/domain/BulkActionName.js.map +1 -1
  5. package/exports/api/cms/entry.d.ts +1 -0
  6. package/exports/api/cms/entry.js +1 -0
  7. package/features/BulkActionContext/abstractions.js +2 -3
  8. package/features/BulkActionContext/abstractions.js.map +1 -1
  9. package/features/BulkActionContext/index.js +0 -2
  10. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.d.ts +1 -1
  11. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js +22 -20
  12. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js.map +1 -1
  13. package/features/DeleteEntriesBulkAction/feature.d.ts +4 -1
  14. package/features/DeleteEntriesBulkAction/feature.js +6 -5
  15. package/features/DeleteEntriesBulkAction/feature.js.map +1 -1
  16. package/features/EntriesBulkAction/abstractions.d.ts +7 -7
  17. package/features/EntriesBulkAction/abstractions.js +3 -2
  18. package/features/EntriesBulkAction/abstractions.js.map +1 -1
  19. package/features/EntriesBulkAction/createBulkActionTasks.d.ts +4 -1
  20. package/features/EntriesBulkAction/createBulkActionTasks.js +114 -129
  21. package/features/EntriesBulkAction/createBulkActionTasks.js.map +1 -1
  22. package/features/EntriesBulkAction/internals/ChildTasksCleanup.d.ts +1 -1
  23. package/features/EntriesBulkAction/internals/ChildTasksCleanup.js +28 -65
  24. package/features/EntriesBulkAction/internals/ChildTasksCleanup.js.map +1 -1
  25. package/features/EntriesBulkAction/internals/CreateTasksByModel.js +68 -99
  26. package/features/EntriesBulkAction/internals/CreateTasksByModel.js.map +1 -1
  27. package/features/EntriesBulkAction/internals/ProcessTask.d.ts +1 -1
  28. package/features/EntriesBulkAction/internals/ProcessTask.js +35 -68
  29. package/features/EntriesBulkAction/internals/ProcessTask.js.map +1 -1
  30. package/features/EntriesBulkAction/internals/ProcessTaskResult.js +20 -19
  31. package/features/EntriesBulkAction/internals/ProcessTaskResult.js.map +1 -1
  32. package/features/EntriesBulkAction/internals/ProcessTasksByModel.js +38 -51
  33. package/features/EntriesBulkAction/internals/ProcessTasksByModel.js.map +1 -1
  34. package/features/EntriesBulkAction/internals/TaskCache.js +30 -64
  35. package/features/EntriesBulkAction/internals/TaskCache.js.map +1 -1
  36. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.d.ts +1 -1
  37. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.js +20 -20
  38. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.js.map +1 -1
  39. package/features/MoveToFolderBulkAction/feature.d.ts +4 -1
  40. package/features/MoveToFolderBulkAction/feature.js +6 -5
  41. package/features/MoveToFolderBulkAction/feature.js.map +1 -1
  42. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.d.ts +1 -1
  43. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.js +22 -20
  44. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.js.map +1 -1
  45. package/features/MoveToTrashBulkAction/feature.d.ts +4 -1
  46. package/features/MoveToTrashBulkAction/feature.js +6 -5
  47. package/features/MoveToTrashBulkAction/feature.js.map +1 -1
  48. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.d.ts +1 -1
  49. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.js +27 -28
  50. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.js.map +1 -1
  51. package/features/PublishEntriesBulkAction/feature.d.ts +4 -1
  52. package/features/PublishEntriesBulkAction/feature.js +6 -5
  53. package/features/PublishEntriesBulkAction/feature.js.map +1 -1
  54. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.d.ts +1 -1
  55. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.js +20 -18
  56. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.js.map +1 -1
  57. package/features/RestoreEntriesBulkAction/feature.d.ts +4 -1
  58. package/features/RestoreEntriesBulkAction/feature.js +6 -5
  59. package/features/RestoreEntriesBulkAction/feature.js.map +1 -1
  60. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.d.ts +1 -1
  61. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.js +20 -18
  62. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.js.map +1 -1
  63. package/features/UnpublishEntriesBulkAction/feature.d.ts +4 -1
  64. package/features/UnpublishEntriesBulkAction/feature.js +6 -5
  65. package/features/UnpublishEntriesBulkAction/feature.js.map +1 -1
  66. package/graphql/createBulkActionGraphQL.js +44 -51
  67. package/graphql/createBulkActionGraphQL.js.map +1 -1
  68. package/graphql/createDefaultGraphQL.js +30 -34
  69. package/graphql/createDefaultGraphQL.js.map +1 -1
  70. package/handlers/eventBridgeEventHandler.js +23 -41
  71. package/handlers/eventBridgeEventHandler.js.map +1 -1
  72. package/handlers/index.js +5 -3
  73. package/handlers/index.js.map +1 -1
  74. package/handlers/setupEventsTenant.js +7 -9
  75. package/handlers/setupEventsTenant.js.map +1 -1
  76. package/index.d.ts +3 -3
  77. package/index.js +29 -33
  78. package/index.js.map +1 -1
  79. package/package.json +25 -21
  80. package/tasks/EmptyTrashBinTaskDefinition.d.ts +1 -0
  81. package/tasks/EmptyTrashBinTaskDefinition.js +83 -108
  82. package/tasks/EmptyTrashBinTaskDefinition.js.map +1 -1
  83. package/tasks/createEmptyTrashBinsTask.js +4 -5
  84. package/tasks/createEmptyTrashBinsTask.js.map +1 -1
  85. package/tasks/index.js +0 -2
  86. package/types.d.ts +1 -1
  87. package/types.js +7 -18
  88. package/types.js.map +1 -1
  89. package/abstractions/IUseCase.js.map +0 -1
  90. package/abstractions/index.js.map +0 -1
  91. package/features/BulkActionContext/index.js.map +0 -1
  92. package/tasks/index.js.map +0 -1
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=IUseCase.js.map
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,20 +1,14 @@
1
1
  function toPascalCase(str) {
2
- // Step 1: Remove non-alphanumeric characters and replace them with spaces
3
- str = str.replace(/[^a-zA-Z0-9]+/g, " ");
4
-
5
- // Step 2: Split the string into words
6
- const words = str.split(" ");
7
-
8
- // Step 3: Capitalize the first letter of each word
9
- const capitalizedWords = words.map(word => word.charAt(0).toUpperCase() + word.slice(1));
10
-
11
- // Step 4: Join all the capitalized words together
12
- return capitalizedWords.join("");
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("");
13
6
  }
14
- export class BulkActionName {
15
- static from(name) {
16
- return toPascalCase(name);
17
- }
7
+ class BulkActionName {
8
+ static from(name) {
9
+ return toPascalCase(name);
10
+ }
18
11
  }
12
+ export { BulkActionName };
19
13
 
20
14
  //# sourceMappingURL=BulkActionName.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["toPascalCase","str","replace","words","split","capitalizedWords","map","word","charAt","toUpperCase","slice","join","BulkActionName","from","name"],"sources":["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"],"mappings":"AAAA,SAASA,YAAYA,CAACC,GAAW,EAAE;EAC/B;EACAA,GAAG,GAAGA,GAAG,CAACC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;;EAExC;EACA,MAAMC,KAAK,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC;;EAE5B;EACA,MAAMC,gBAAgB,GAAGF,KAAK,CAACG,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAExF;EACA,OAAOL,gBAAgB,CAACM,IAAI,CAAC,EAAE,CAAC;AACpC;AAEA,OAAO,MAAMC,cAAc,CAAC;EACxB,OAAOC,IAAIA,CAACC,IAAY,EAAE;IACtB,OAAOd,YAAY,CAACc,IAAI,CAAC;EAC7B;AACJ","ignoreList":[]}
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";
@@ -1,6 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- // TODO: this is a bridge for legacy context; needs review and refactor of code that uses it.
3
-
4
- export const BulkActionContext = createAbstraction("BulkActionContext");
2
+ const BulkActionContext = createAbstraction("BulkActionContext");
3
+ export { BulkActionContext };
5
4
 
6
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","BulkActionContext"],"sources":["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"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAGvD;;AAEA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAyB,mBAAmB,CAAC","ignoreList":[]}
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"}
@@ -1,3 +1 @@
1
1
  export * from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -10,6 +10,6 @@ declare class DeleteEntriesBulkActionImpl implements EntriesBulkAction.Interface
10
10
  processData(model: EntriesBulkAction.Model, params: EntriesBulkAction.ProcessParams): Promise<void>;
11
11
  }
12
12
  export declare const DeleteEntriesBulkAction: typeof DeleteEntriesBulkActionImpl & {
13
- __abstraction: import("@webiny/di").Abstraction<import("~/features/EntriesBulkAction/abstractions.js").IEntriesBulkAction>;
13
+ __abstraction: import("@webiny/di").Abstraction<import("~/features/EntriesBulkAction/abstractions.js").IEntriesBulkAction<Record<string, any>>>;
14
14
  };
15
15
  export {};
@@ -3,27 +3,29 @@ import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEnt
3
3
  import { parseIdentifier } from "@webiny/utils";
4
4
  import { EntriesBulkAction } from "../EntriesBulkAction/abstractions.js";
5
5
  class DeleteEntriesBulkActionImpl {
6
- name = "delete";
7
- constructor(listDeletedEntries, deleteEntry) {
8
- this.listDeletedEntries = listDeletedEntries;
9
- this.deleteEntry = deleteEntry;
10
- }
11
- async loadData(model, params) {
12
- const entriesResult = await this.listDeletedEntries.execute(model, params);
13
- return entriesResult.value;
14
- }
15
- async processData(model, params) {
16
- const {
17
- id: entryId
18
- } = parseIdentifier(params.id);
19
- await this.deleteEntry.execute(model, entryId, {
20
- permanently: true
21
- });
22
- }
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
+ return entriesResult.value;
14
+ }
15
+ async processData(model, params) {
16
+ const { id: entryId } = parseIdentifier(params.id);
17
+ await this.deleteEntry.execute(model, entryId, {
18
+ permanently: true
19
+ });
20
+ }
23
21
  }
24
- export const DeleteEntriesBulkAction = EntriesBulkAction.createImplementation({
25
- implementation: DeleteEntriesBulkActionImpl,
26
- dependencies: [ListDeletedEntriesUseCase, DeleteEntryUseCase]
22
+ const DeleteEntriesBulkAction = EntriesBulkAction.createImplementation({
23
+ implementation: DeleteEntriesBulkActionImpl,
24
+ dependencies: [
25
+ ListDeletedEntriesUseCase,
26
+ DeleteEntryUseCase
27
+ ]
27
28
  });
29
+ export { DeleteEntriesBulkAction };
28
30
 
29
31
  //# sourceMappingURL=DeleteEntriesBulkAction.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ListDeletedEntriesUseCase","DeleteEntryUseCase","parseIdentifier","EntriesBulkAction","DeleteEntriesBulkActionImpl","name","constructor","listDeletedEntries","deleteEntry","loadData","model","params","entriesResult","execute","value","processData","id","entryId","permanently","DeleteEntriesBulkAction","createImplementation","implementation","dependencies"],"sources":["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\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"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,qEAAqE;AAC/G,SAASC,kBAAkB,QAAQ,qEAAqE;AACxG,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,iBAAiB;AAE1B,MAAMC,2BAA2B,CAAwC;EAC5DC,IAAI,GAAG,QAAQ;EAExBC,WAAWA,CACCC,kBAAuD,EACvDC,WAAyC,EACnD;IAAA,KAFUD,kBAAuD,GAAvDA,kBAAuD;IAAA,KACvDC,WAAyC,GAAzCA,WAAyC;EAClD;EAEH,MAAMC,QAAQA,CACVC,KAA8B,EAC9BC,MAAwC,EACC;IACzC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,kBAAkB,CAACM,OAAO,CAACH,KAAK,EAAEC,MAAM,CAAC;IAE1E,OAAOC,aAAa,CAACE,KAAK;EAC9B;EAEA,MAAMC,WAAWA,CACbL,KAA8B,EAC9BC,MAAuC,EAC1B;IACb,MAAM;MAAEK,EAAE,EAAEC;IAAQ,CAAC,GAAGf,eAAe,CAACS,MAAM,CAACK,EAAE,CAAC;IAElD,MAAM,IAAI,CAACR,WAAW,CAACK,OAAO,CAACH,KAAK,EAAEO,OAAO,EAAE;MAC3CC,WAAW,EAAE;IACjB,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,uBAAuB,GAAGhB,iBAAiB,CAACiB,oBAAoB,CAAC;EAC1EC,cAAc,EAAEjB,2BAA2B;EAC3CkB,YAAY,EAAE,CAACtB,yBAAyB,EAAEC,kBAAkB;AAChE,CAAC,CAAC","ignoreList":[]}
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\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;QAEnE,OAAOC,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"}
@@ -1 +1,4 @@
1
- export declare const DeleteEntriesBulkActionFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const DeleteEntriesBulkActionFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { DeleteEntriesBulkAction } from "./DeleteEntriesBulkAction.js";
3
- export const DeleteEntriesBulkActionFeature = createFeature({
4
- name: "HeadlessCms/BulkAction/DeleteEntries",
5
- register(container) {
6
- container.register(DeleteEntriesBulkAction);
7
- }
3
+ const DeleteEntriesBulkActionFeature = createFeature({
4
+ name: "HeadlessCms/BulkAction/DeleteEntries",
5
+ register (container) {
6
+ container.register(DeleteEntriesBulkAction);
7
+ }
8
8
  });
9
+ export { DeleteEntriesBulkActionFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","DeleteEntriesBulkAction","DeleteEntriesBulkActionFeature","name","register","container"],"sources":["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"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,uBAAuB;AAEhC,OAAO,MAAMC,8BAA8B,GAAGF,aAAa,CAAC;EACxDG,IAAI,EAAE,sCAAsC;EAC5CC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,uBAAuB,CAAC;EAC/C;AACJ,CAAC,CAAC","ignoreList":[]}
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"}
@@ -9,24 +9,24 @@ export interface IBulkActionListResult {
9
9
  entries: CmsEntry[];
10
10
  meta: CmsEntryMeta;
11
11
  }
12
- export interface IBulkActionProcessParams {
12
+ export interface IBulkActionProcessParams<TData = Record<string, any>> {
13
13
  id: string;
14
- data?: Record<string, any>;
14
+ data?: TData;
15
15
  }
16
- export interface IEntriesBulkAction {
16
+ export interface IEntriesBulkAction<TData = Record<string, any>> {
17
17
  readonly name: string;
18
18
  readonly modelIds?: string[];
19
19
  readonly batchSize?: number;
20
20
  loadData(model: CmsModel, params: IBulkActionListParams): Promise<IBulkActionListResult>;
21
- processData(model: CmsModel, params: IBulkActionProcessParams): Promise<void>;
21
+ processData(model: CmsModel, params: IBulkActionProcessParams<TData>): Promise<void>;
22
22
  }
23
- export declare const EntriesBulkAction: import("@webiny/di").Abstraction<IEntriesBulkAction>;
23
+ export declare const EntriesBulkAction: import("@webiny/di").Abstraction<IEntriesBulkAction<Record<string, any>>>;
24
24
  export declare namespace EntriesBulkAction {
25
- type Interface = IEntriesBulkAction;
25
+ type Interface<TData = Record<string, any>> = IEntriesBulkAction<TData>;
26
26
  type Model = CmsModel;
27
27
  type LoadDataParams = IBulkActionListParams;
28
28
  type LoadDataResult = IBulkActionListResult;
29
- type ProcessParams = IBulkActionProcessParams;
29
+ type ProcessParams<TData = Record<string, any>> = IBulkActionProcessParams<TData>;
30
30
  }
31
31
  interface IEntriesBulkActionConfig {
32
32
  batchSize: number;
@@ -1,5 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const EntriesBulkAction = createAbstraction("EntriesBulkAction");
3
- export const EntriesBulkActionConfig = createAbstraction("EntriesBulkActionConfig");
2
+ const EntriesBulkAction = createAbstraction("EntriesBulkAction");
3
+ const EntriesBulkActionConfig = createAbstraction("EntriesBulkActionConfig");
4
+ export { EntriesBulkAction, EntriesBulkActionConfig };
4
5
 
5
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","EntriesBulkAction","EntriesBulkActionConfig"],"sources":["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 {\n id: string;\n data?: Record<string, any>;\n}\n\nexport interface IEntriesBulkAction {\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): Promise<void>;\n}\n\nexport const EntriesBulkAction = createAbstraction<IEntriesBulkAction>(\"EntriesBulkAction\");\n\nexport namespace EntriesBulkAction {\n export type Interface = IEntriesBulkAction;\n export type Model = CmsModel;\n export type LoadDataParams = IBulkActionListParams;\n export type LoadDataResult = IBulkActionListResult;\n export type ProcessParams = IBulkActionProcessParams;\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"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AA4BvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC;AAc3F,OAAO,MAAME,uBAAuB,GAChCF,iBAAiB,CAA2B,yBAAyB,CAAC","ignoreList":[]}
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"}
@@ -1,2 +1,5 @@
1
1
  import { EntriesBulkAction, EntriesBulkActionConfig } from "./abstractions.js";
2
- export declare const createBulkActionTasks: (bulkAction: EntriesBulkAction.Interface, bulkActionsConfig: EntriesBulkActionConfig.Interface) => import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
2
+ export declare const createBulkActionTasks: (bulkAction: EntriesBulkAction.Interface, bulkActionsConfig: EntriesBulkActionConfig.Interface) => {
3
+ name: string;
4
+ register(container: import("@webiny/di").Container): void;
5
+ };
@@ -7,141 +7,126 @@ import { ChildTasksCleanup } from "./internals/ChildTasksCleanup.js";
7
7
  import { ProcessTask } from "./internals/ProcessTask.js";
8
8
  import { CreateTasksByModel } from "./internals/CreateTasksByModel.js";
9
9
  import { ProcessTasksByModel } from "./internals/ProcessTasksByModel.js";
10
- var BulkActionOperationByModelAction = /*#__PURE__*/function (BulkActionOperationByModelAction) {
11
- BulkActionOperationByModelAction["CREATE_SUBTASKS"] = "CREATE_SUBTASKS";
12
- BulkActionOperationByModelAction["CHECK_MORE_SUBTASKS"] = "CHECK_MORE_SUBTASKS";
13
- BulkActionOperationByModelAction["PROCESS_SUBTASKS"] = "PROCESS_SUBTASKS";
14
- BulkActionOperationByModelAction["END_TASK"] = "END_TASK";
15
- return BulkActionOperationByModelAction;
16
- }(BulkActionOperationByModelAction || {});
17
- export const createBulkActionTasks = (bulkAction, bulkActionsConfig) => {
18
- const bulkActionName = BulkActionName.from(bulkAction.name);
19
- const batchSize = bulkAction.batchSize ?? bulkActionsConfig.batchSize ?? 100;
20
- const listTaskId = `hcmsBulkList${bulkActionName}Entries`;
21
- const processTaskId = `hcmsBulkProcess${bulkActionName}Entries`;
22
-
23
- // List Task - manages pagination and creates subtasks
24
- class BulkActionListTask {
25
- id = listTaskId;
26
- title = `Headless CMS: list "${bulkActionName}" entries by model`;
27
- maxIterations = 500;
28
- databaseLogs = false;
29
- isPrivate = true;
30
- constructor(context, getModel) {
31
- this.context = context;
32
- this.getModel = getModel;
33
- }
34
- async run({
35
- input,
36
- controller
37
- }) {
38
- try {
39
- if (!input.modelId) {
40
- return controller.response.error(`Missing "modelId" in the input.`);
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;
41
28
  }
42
- const action = input.action ?? BulkActionOperationByModelAction.CREATE_SUBTASKS;
43
- switch (action) {
44
- case BulkActionOperationByModelAction.PROCESS_SUBTASKS:
45
- {
46
- const processTasks = new ProcessTasksByModel(this.context, processTaskId);
47
- return await processTasks.execute({
48
- input,
49
- controller
50
- });
51
- }
52
- case BulkActionOperationByModelAction.CREATE_SUBTASKS:
53
- case BulkActionOperationByModelAction.CHECK_MORE_SUBTASKS:
54
- {
55
- const createTasks = new CreateTasksByModel(this.context, this.getModel, bulkAction, processTaskId, batchSize);
56
- return await createTasks.execute({
57
- input,
58
- controller
59
- });
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");
60
58
  }
61
- case BulkActionOperationByModelAction.END_TASK:
62
- {
63
- return controller.response.done(`Task done: task "${processTaskId}" has been successfully processed for entries from "${input.modelId}" model.`);
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);
64
81
  }
65
- default:
66
- return controller.response.error(`Unknown action: ${action}`);
67
82
  }
68
- } catch (ex) {
69
- return controller.response.error(ex.message ?? "Error while executing list task");
70
- }
71
- }
72
- async onDone({
73
- task
74
- }) {
75
- await this.cleanup(task);
76
- }
77
- async onError({
78
- task
79
- }) {
80
- await this.cleanup(task);
81
83
  }
82
- async onAbort({
83
- task
84
- }) {
85
- await this.cleanup(task);
86
- }
87
- async onMaxIterations({
88
- task
89
- }) {
90
- await this.cleanup(task);
91
- }
92
- async cleanup(task) {
93
- const childTasksCleanup = new ChildTasksCleanup();
94
- try {
95
- await childTasksCleanup.execute({
96
- context: this.context,
97
- task
98
- });
99
- } catch (ex) {
100
- console.error(`Error while cleaning "${listTaskId}" child tasks.`, ex);
101
- }
102
- }
103
- }
104
-
105
- // Process Task - processes individual batches of entries
106
- class BulkActionProcessTask {
107
- id = processTaskId;
108
- title = `Headless CMS: process "${bulkActionName}" entries`;
109
- maxIterations = 2;
110
- databaseLogs = false;
111
- isPrivate = true;
112
- constructor(getModel) {
113
- this.getModel = getModel;
114
- }
115
- async run({
116
- input,
117
- controller
118
- }) {
119
- try {
120
- const processTask = new ProcessTask(bulkAction, this.getModel);
121
- return await processTask.execute({
122
- input,
123
- controller
124
- });
125
- } catch (ex) {
126
- return controller.response.error(ex.message ?? "Error while executing process task");
127
- }
128
- }
129
- }
130
- const BulkListTask = TaskDefinition.createImplementation({
131
- implementation: BulkActionListTask,
132
- dependencies: [BulkActionContext, GetModelUseCase]
133
- });
134
- const BulkProcessTask = TaskDefinition.createImplementation({
135
- implementation: BulkActionProcessTask,
136
- dependencies: [GetModelUseCase]
137
- });
138
- return createFeature({
139
- name: `HeadlessCms/BulkActionTasks/${bulkActionName}`,
140
- register(container) {
141
- container.register(BulkListTask);
142
- container.register(BulkProcessTask);
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
+ }
143
108
  }
144
- });
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
+ });
145
129
  };
130
+ export { createBulkActionTasks };
146
131
 
147
132
  //# sourceMappingURL=createBulkActionTasks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","TaskDefinition","GetModelUseCase","BulkActionContext","BulkActionName","ChildTasksCleanup","ProcessTask","CreateTasksByModel","ProcessTasksByModel","BulkActionOperationByModelAction","createBulkActionTasks","bulkAction","bulkActionsConfig","bulkActionName","from","name","batchSize","listTaskId","processTaskId","BulkActionListTask","id","title","maxIterations","databaseLogs","isPrivate","constructor","context","getModel","run","input","controller","modelId","response","error","action","CREATE_SUBTASKS","PROCESS_SUBTASKS","processTasks","execute","CHECK_MORE_SUBTASKS","createTasks","END_TASK","done","ex","message","onDone","task","cleanup","onError","onAbort","onMaxIterations","childTasksCleanup","console","BulkActionProcessTask","processTask","BulkListTask","createImplementation","implementation","dependencies","BulkProcessTask","register","container"],"sources":["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\n implements\n TaskDefinition.Interface<\n IBulkActionOperationByModelInput,\n IBulkActionOperationByModelOutput\n >\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 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\n implements TaskDefinition.Interface<IBulkActionOperationInput, 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 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"],"mappings":"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","ignoreList":[]}
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,4 +1,4 @@
1
- import type { ITask, Context } from "@webiny/tasks";
1
+ import type { ITask, Context } from "@webiny/background-tasks/api";
2
2
  import type { IUseCase } from "../../../abstractions/index.js";
3
3
  export interface IChildTasksCleanupExecuteParams {
4
4
  context: Context;