@webiny/api-headless-cms-bulk-actions 6.0.0-alpha.5 → 6.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +10 -14
  2. package/abstractions/IUseCase.js +1 -5
  3. package/abstractions/index.d.ts +1 -3
  4. package/abstractions/index.js +1 -38
  5. package/abstractions/index.js.map +1 -1
  6. package/domain/BulkActionName.d.ts +3 -0
  7. package/domain/BulkActionName.js +20 -0
  8. package/domain/BulkActionName.js.map +1 -0
  9. package/features/BulkActionContext/abstractions.d.ts +5 -0
  10. package/features/BulkActionContext/abstractions.js +6 -0
  11. package/features/BulkActionContext/abstractions.js.map +1 -0
  12. package/features/BulkActionContext/index.d.ts +1 -0
  13. package/features/BulkActionContext/index.js +3 -0
  14. package/features/BulkActionContext/index.js.map +1 -0
  15. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.d.ts +15 -0
  16. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js +29 -0
  17. package/features/DeleteEntriesBulkAction/DeleteEntriesBulkAction.js.map +1 -0
  18. package/features/DeleteEntriesBulkAction/feature.d.ts +1 -0
  19. package/features/DeleteEntriesBulkAction/feature.js +10 -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 +5 -0
  23. package/features/EntriesBulkAction/abstractions.js.map +1 -0
  24. package/features/EntriesBulkAction/createBulkActionTasks.d.ts +2 -0
  25. package/features/EntriesBulkAction/createBulkActionTasks.js +147 -0
  26. package/features/EntriesBulkAction/createBulkActionTasks.js.map +1 -0
  27. package/{useCases/internals/ChildTaskCleanup → features/EntriesBulkAction/internals}/ChildTasksCleanup.d.ts +1 -1
  28. package/{useCases/internals/ChildTaskCleanup → features/EntriesBulkAction/internals}/ChildTasksCleanup.js +3 -10
  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 +107 -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 +76 -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/{useCases/internals/ProcessTask/Result.js → features/EntriesBulkAction/internals/ProcessTaskResult.js} +2 -9
  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 +56 -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/{useCases/internals/CreateTasksByModel → features/EntriesBulkAction/internals}/TaskCache.js +1 -8
  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 +30 -0
  47. package/features/MoveToFolderBulkAction/MoveToFolderBulkAction.js.map +1 -0
  48. package/features/MoveToFolderBulkAction/feature.d.ts +1 -0
  49. package/features/MoveToFolderBulkAction/feature.js +10 -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 +29 -0
  53. package/features/MoveToTrashBulkAction/MoveToTrashBulkAction.js.map +1 -0
  54. package/features/MoveToTrashBulkAction/feature.d.ts +1 -0
  55. package/features/MoveToTrashBulkAction/feature.js +10 -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 +37 -0
  59. package/features/PublishEntriesBulkAction/PublishEntriesBulkAction.js.map +1 -0
  60. package/features/PublishEntriesBulkAction/feature.d.ts +1 -0
  61. package/features/PublishEntriesBulkAction/feature.js +10 -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 +27 -0
  65. package/features/RestoreEntriesBulkAction/RestoreEntriesBulkAction.js.map +1 -0
  66. package/features/RestoreEntriesBulkAction/feature.d.ts +1 -0
  67. package/features/RestoreEntriesBulkAction/feature.js +10 -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 +27 -0
  71. package/features/UnpublishEntriesBulkAction/UnpublishEntriesBulkAction.js.map +1 -0
  72. package/features/UnpublishEntriesBulkAction/feature.d.ts +1 -0
  73. package/features/UnpublishEntriesBulkAction/feature.js +10 -0
  74. package/features/UnpublishEntriesBulkAction/feature.js.map +1 -0
  75. package/graphql/createBulkActionGraphQL.d.ts +3 -0
  76. package/graphql/createBulkActionGraphQL.js +64 -0
  77. package/graphql/createBulkActionGraphQL.js.map +1 -0
  78. package/graphql/createDefaultGraphQL.d.ts +3 -0
  79. package/{plugins → graphql}/createDefaultGraphQL.js +10 -18
  80. package/graphql/createDefaultGraphQL.js.map +1 -0
  81. package/handlers/eventBridgeEventHandler.js +3 -10
  82. package/handlers/eventBridgeEventHandler.js.map +1 -1
  83. package/handlers/index.d.ts +1 -1
  84. package/handlers/index.js +4 -11
  85. package/handlers/index.js.map +1 -1
  86. package/handlers/setupEventsTenant.js +3 -10
  87. package/handlers/setupEventsTenant.js.map +1 -1
  88. package/index.d.ts +8 -6
  89. package/index.js +46 -69
  90. package/index.js.map +1 -1
  91. package/package.json +19 -23
  92. package/tasks/EmptyTrashBinTaskDefinition.d.ts +26 -0
  93. package/tasks/EmptyTrashBinTaskDefinition.js +124 -0
  94. package/tasks/EmptyTrashBinTaskDefinition.js.map +1 -0
  95. package/tasks/createEmptyTrashBinsTask.d.ts +1 -2
  96. package/tasks/createEmptyTrashBinsTask.js +5 -114
  97. package/tasks/createEmptyTrashBinsTask.js.map +1 -1
  98. package/tasks/index.d.ts +1 -2
  99. package/tasks/index.js +1 -27
  100. package/tasks/index.js.map +1 -1
  101. package/types.d.ts +12 -12
  102. package/types.js +4 -7
  103. package/types.js.map +1 -1
  104. package/abstractions/IListEntries.d.ts +0 -7
  105. package/abstractions/IListEntries.js +0 -7
  106. package/abstractions/IListEntries.js.map +0 -1
  107. package/abstractions/IProcessEntry.d.ts +0 -4
  108. package/abstractions/IProcessEntry.js +0 -7
  109. package/abstractions/IProcessEntry.js.map +0 -1
  110. package/plugins/createBulkAction.d.ts +0 -10
  111. package/plugins/createBulkAction.js +0 -36
  112. package/plugins/createBulkAction.js.map +0 -1
  113. package/plugins/createBulkActionGraphQL.d.ts +0 -7
  114. package/plugins/createBulkActionGraphQL.js +0 -72
  115. package/plugins/createBulkActionGraphQL.js.map +0 -1
  116. package/plugins/createBulkActionTasks.d.ts +0 -9
  117. package/plugins/createBulkActionTasks.js +0 -135
  118. package/plugins/createBulkActionTasks.js.map +0 -1
  119. package/plugins/createDefaultGraphQL.d.ts +0 -3
  120. package/plugins/createDefaultGraphQL.js.map +0 -1
  121. package/plugins/index.d.ts +0 -2
  122. package/plugins/index.js +0 -29
  123. package/plugins/index.js.map +0 -1
  124. package/tasks/createBulkActionEntriesTasks.d.ts +0 -1
  125. package/tasks/createBulkActionEntriesTasks.js +0 -38
  126. package/tasks/createBulkActionEntriesTasks.js.map +0 -1
  127. package/useCases/DeleteEntry.d.ts +0 -10
  128. package/useCases/DeleteEntry.js +0 -26
  129. package/useCases/DeleteEntry.js.map +0 -1
  130. package/useCases/ListDeletedEntries.d.ts +0 -13
  131. package/useCases/ListDeletedEntries.js +0 -28
  132. package/useCases/ListDeletedEntries.js.map +0 -1
  133. package/useCases/ListLatestEntries.d.ts +0 -13
  134. package/useCases/ListLatestEntries.js +0 -28
  135. package/useCases/ListLatestEntries.js.map +0 -1
  136. package/useCases/ListNotPublishedEntries.d.ts +0 -13
  137. package/useCases/ListNotPublishedEntries.js +0 -34
  138. package/useCases/ListNotPublishedEntries.js.map +0 -1
  139. package/useCases/ListPublishedEntries.d.ts +0 -13
  140. package/useCases/ListPublishedEntries.js +0 -28
  141. package/useCases/ListPublishedEntries.js.map +0 -1
  142. package/useCases/MoveEntryToFolder.d.ts +0 -13
  143. package/useCases/MoveEntryToFolder.js +0 -23
  144. package/useCases/MoveEntryToFolder.js.map +0 -1
  145. package/useCases/MoveEntryToTrash.d.ts +0 -10
  146. package/useCases/MoveEntryToTrash.js +0 -26
  147. package/useCases/MoveEntryToTrash.js.map +0 -1
  148. package/useCases/PublishEntry.d.ts +0 -10
  149. package/useCases/PublishEntry.js +0 -20
  150. package/useCases/PublishEntry.js.map +0 -1
  151. package/useCases/RestoreEntryFromTrash.d.ts +0 -10
  152. package/useCases/RestoreEntryFromTrash.js +0 -24
  153. package/useCases/RestoreEntryFromTrash.js.map +0 -1
  154. package/useCases/UnpublishEntry.d.ts +0 -10
  155. package/useCases/UnpublishEntry.js +0 -20
  156. package/useCases/UnpublishEntry.js.map +0 -1
  157. package/useCases/index.d.ts +0 -10
  158. package/useCases/index.js +0 -117
  159. package/useCases/index.js.map +0 -1
  160. package/useCases/internals/ChildTaskCleanup/ChildTasksCleanup.js.map +0 -1
  161. package/useCases/internals/ChildTaskCleanup/index.d.ts +0 -1
  162. package/useCases/internals/ChildTaskCleanup/index.js +0 -18
  163. package/useCases/internals/ChildTaskCleanup/index.js.map +0 -1
  164. package/useCases/internals/CreateTasksByModel/CreateTasksByModel.d.ts +0 -13
  165. package/useCases/internals/CreateTasksByModel/CreateTasksByModel.js +0 -111
  166. package/useCases/internals/CreateTasksByModel/CreateTasksByModel.js.map +0 -1
  167. package/useCases/internals/CreateTasksByModel/TaskCache.js.map +0 -1
  168. package/useCases/internals/CreateTasksByModel/index.d.ts +0 -1
  169. package/useCases/internals/CreateTasksByModel/index.js +0 -18
  170. package/useCases/internals/CreateTasksByModel/index.js.map +0 -1
  171. package/useCases/internals/ProcessTask/ProcessTask.d.ts +0 -14
  172. package/useCases/internals/ProcessTask/ProcessTask.js +0 -81
  173. package/useCases/internals/ProcessTask/ProcessTask.js.map +0 -1
  174. package/useCases/internals/ProcessTask/Result.js.map +0 -1
  175. package/useCases/internals/ProcessTask/index.d.ts +0 -1
  176. package/useCases/internals/ProcessTask/index.js +0 -18
  177. package/useCases/internals/ProcessTask/index.js.map +0 -1
  178. package/useCases/internals/ProcessTasksByModel/ProcessTasksByModel.d.ts +0 -11
  179. package/useCases/internals/ProcessTasksByModel/ProcessTasksByModel.js +0 -67
  180. package/useCases/internals/ProcessTasksByModel/ProcessTasksByModel.js.map +0 -1
  181. package/useCases/internals/ProcessTasksByModel/index.d.ts +0 -1
  182. package/useCases/internals/ProcessTasksByModel/index.js +0 -18
  183. package/useCases/internals/ProcessTasksByModel/index.js.map +0 -1
  184. package/useCases/internals/index.d.ts +0 -4
  185. package/useCases/internals/index.js +0 -51
  186. package/useCases/internals/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ export declare const PublishEntriesBulkActionFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { PublishEntriesBulkAction } from "./PublishEntriesBulkAction.js";
3
+ export const PublishEntriesBulkActionFeature = createFeature({
4
+ name: "HeadlessCms/BulkAction/PublishEntries",
5
+ register(container) {
6
+ container.register(PublishEntriesBulkAction);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","PublishEntriesBulkAction","PublishEntriesBulkActionFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { PublishEntriesBulkAction } from \"./PublishEntriesBulkAction.js\";\n\nexport const PublishEntriesBulkActionFeature = createFeature({\n name: \"HeadlessCms/BulkAction/PublishEntries\",\n register(container) {\n container.register(PublishEntriesBulkAction);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,+BAA+B,GAAGF,aAAa,CAAC;EACzDG,IAAI,EAAE,uCAAuC;EAC7CC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,wBAAwB,CAAC;EAChD;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
2
+ import { RestoreEntryFromBinUseCase } from "@webiny/api-headless-cms/features/contentEntry/RestoreEntryFromBin/index.js";
3
+ import { EntriesBulkAction } from "../../features/EntriesBulkAction/abstractions.js";
4
+ declare class RestoreEntriesBulkActionImpl implements EntriesBulkAction.Interface {
5
+ private listDeletedEntries;
6
+ private restoreEntry;
7
+ readonly name = "restore";
8
+ constructor(listDeletedEntries: ListDeletedEntriesUseCase.Interface, restoreEntry: RestoreEntryFromBinUseCase.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 RestoreEntriesBulkAction: typeof RestoreEntriesBulkActionImpl & {
13
+ __abstraction: import("@webiny/di").Abstraction<import("~/features/EntriesBulkAction/abstractions.js").IEntriesBulkAction>;
14
+ };
15
+ export {};
@@ -0,0 +1,27 @@
1
+ import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
2
+ import { RestoreEntryFromBinUseCase } from "@webiny/api-headless-cms/features/contentEntry/RestoreEntryFromBin/index.js";
3
+ import { parseIdentifier } from "@webiny/utils";
4
+ import { EntriesBulkAction } from "../EntriesBulkAction/abstractions.js";
5
+ class RestoreEntriesBulkActionImpl {
6
+ name = "restore";
7
+ constructor(listDeletedEntries, restoreEntry) {
8
+ this.listDeletedEntries = listDeletedEntries;
9
+ this.restoreEntry = restoreEntry;
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.restoreEntry.execute(model, entryId);
20
+ }
21
+ }
22
+ export const RestoreEntriesBulkAction = EntriesBulkAction.createImplementation({
23
+ implementation: RestoreEntriesBulkActionImpl,
24
+ dependencies: [ListDeletedEntriesUseCase, RestoreEntryFromBinUseCase]
25
+ });
26
+
27
+ //# sourceMappingURL=RestoreEntriesBulkAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ListDeletedEntriesUseCase","RestoreEntryFromBinUseCase","parseIdentifier","EntriesBulkAction","RestoreEntriesBulkActionImpl","name","constructor","listDeletedEntries","restoreEntry","loadData","model","params","entriesResult","execute","value","processData","id","entryId","RestoreEntriesBulkAction","createImplementation","implementation","dependencies"],"sources":["RestoreEntriesBulkAction.ts"],"sourcesContent":["import { ListDeletedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js\";\nimport { RestoreEntryFromBinUseCase } from \"@webiny/api-headless-cms/features/contentEntry/RestoreEntryFromBin/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { EntriesBulkAction } from \"~/features/EntriesBulkAction/abstractions.js\";\n\nclass RestoreEntriesBulkActionImpl implements EntriesBulkAction.Interface {\n readonly name = \"restore\";\n\n constructor(\n private listDeletedEntries: ListDeletedEntriesUseCase.Interface,\n private restoreEntry: RestoreEntryFromBinUseCase.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.restoreEntry.execute(model, entryId);\n }\n}\n\nexport const RestoreEntriesBulkAction = EntriesBulkAction.createImplementation({\n implementation: RestoreEntriesBulkActionImpl,\n dependencies: [ListDeletedEntriesUseCase, RestoreEntryFromBinUseCase]\n});\n"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,qEAAqE;AAC/G,SAASC,0BAA0B,QAAQ,6EAA6E;AACxH,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,iBAAiB;AAE1B,MAAMC,4BAA4B,CAAwC;EAC7DC,IAAI,GAAG,SAAS;EAEzBC,WAAWA,CACCC,kBAAuD,EACvDC,YAAkD,EAC5D;IAAA,KAFUD,kBAAuD,GAAvDA,kBAAuD;IAAA,KACvDC,YAAkD,GAAlDA,YAAkD;EAC3D;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,YAAY,CAACK,OAAO,CAACH,KAAK,EAAEO,OAAO,CAAC;EACnD;AACJ;AAEA,OAAO,MAAMC,wBAAwB,GAAGf,iBAAiB,CAACgB,oBAAoB,CAAC;EAC3EC,cAAc,EAAEhB,4BAA4B;EAC5CiB,YAAY,EAAE,CAACrB,yBAAyB,EAAEC,0BAA0B;AACxE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const RestoreEntriesBulkActionFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { RestoreEntriesBulkAction } from "./RestoreEntriesBulkAction.js";
3
+ export const RestoreEntriesBulkActionFeature = createFeature({
4
+ name: "HeadlessCms/BulkAction/RestoreEntries",
5
+ register(container) {
6
+ container.register(RestoreEntriesBulkAction);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","RestoreEntriesBulkAction","RestoreEntriesBulkActionFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { RestoreEntriesBulkAction } from \"./RestoreEntriesBulkAction.js\";\n\nexport const RestoreEntriesBulkActionFeature = createFeature({\n name: \"HeadlessCms/BulkAction/RestoreEntries\",\n register(container) {\n container.register(RestoreEntriesBulkAction);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,+BAA+B,GAAGF,aAAa,CAAC;EACzDG,IAAI,EAAE,uCAAuC;EAC7CC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,wBAAwB,CAAC;EAChD;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { ListPublishedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
2
+ import { UnpublishEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UnpublishEntry/index.js";
3
+ import { EntriesBulkAction } from "../../features/EntriesBulkAction/abstractions.js";
4
+ declare class UnpublishEntriesBulkActionImpl implements EntriesBulkAction.Interface {
5
+ private listPublishedEntries;
6
+ private unpublishEntry;
7
+ readonly name = "unpublish";
8
+ constructor(listPublishedEntries: ListPublishedEntriesUseCase.Interface, unpublishEntry: UnpublishEntryUseCase.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 UnpublishEntriesBulkAction: typeof UnpublishEntriesBulkActionImpl & {
13
+ __abstraction: import("@webiny/di").Abstraction<import("~/features/EntriesBulkAction/abstractions.js").IEntriesBulkAction>;
14
+ };
15
+ export {};
@@ -0,0 +1,27 @@
1
+ import { ListPublishedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
2
+ import { UnpublishEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UnpublishEntry/index.js";
3
+ import { parseIdentifier } from "@webiny/utils";
4
+ import { EntriesBulkAction } from "../EntriesBulkAction/abstractions.js";
5
+ class UnpublishEntriesBulkActionImpl {
6
+ name = "unpublish";
7
+ constructor(listPublishedEntries, unpublishEntry) {
8
+ this.listPublishedEntries = listPublishedEntries;
9
+ this.unpublishEntry = unpublishEntry;
10
+ }
11
+ async loadData(model, params) {
12
+ const entriesResult = await this.listPublishedEntries.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.unpublishEntry.execute(model, entryId);
20
+ }
21
+ }
22
+ export const UnpublishEntriesBulkAction = EntriesBulkAction.createImplementation({
23
+ implementation: UnpublishEntriesBulkActionImpl,
24
+ dependencies: [ListPublishedEntriesUseCase, UnpublishEntryUseCase]
25
+ });
26
+
27
+ //# sourceMappingURL=UnpublishEntriesBulkAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ListPublishedEntriesUseCase","UnpublishEntryUseCase","parseIdentifier","EntriesBulkAction","UnpublishEntriesBulkActionImpl","name","constructor","listPublishedEntries","unpublishEntry","loadData","model","params","entriesResult","execute","value","processData","id","entryId","UnpublishEntriesBulkAction","createImplementation","implementation","dependencies"],"sources":["UnpublishEntriesBulkAction.ts"],"sourcesContent":["import { ListPublishedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js\";\nimport { UnpublishEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UnpublishEntry/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { EntriesBulkAction } from \"~/features/EntriesBulkAction/abstractions.js\";\n\nclass UnpublishEntriesBulkActionImpl implements EntriesBulkAction.Interface {\n readonly name = \"unpublish\";\n\n constructor(\n private listPublishedEntries: ListPublishedEntriesUseCase.Interface,\n private unpublishEntry: UnpublishEntryUseCase.Interface\n ) {}\n\n async loadData(\n model: EntriesBulkAction.Model,\n params: EntriesBulkAction.LoadDataParams\n ): Promise<EntriesBulkAction.LoadDataResult> {\n const entriesResult = await this.listPublishedEntries.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.unpublishEntry.execute(model, entryId);\n }\n}\n\nexport const UnpublishEntriesBulkAction = EntriesBulkAction.createImplementation({\n implementation: UnpublishEntriesBulkActionImpl,\n dependencies: [ListPublishedEntriesUseCase, UnpublishEntryUseCase]\n});\n"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,qEAAqE;AACjH,SAASC,qBAAqB,QAAQ,wEAAwE;AAC9G,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,iBAAiB;AAE1B,MAAMC,8BAA8B,CAAwC;EAC/DC,IAAI,GAAG,WAAW;EAE3BC,WAAWA,CACCC,oBAA2D,EAC3DC,cAA+C,EACzD;IAAA,KAFUD,oBAA2D,GAA3DA,oBAA2D;IAAA,KAC3DC,cAA+C,GAA/CA,cAA+C;EACxD;EAEH,MAAMC,QAAQA,CACVC,KAA8B,EAC9BC,MAAwC,EACC;IACzC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,oBAAoB,CAACM,OAAO,CAACH,KAAK,EAAEC,MAAM,CAAC;IAE5E,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,cAAc,CAACK,OAAO,CAACH,KAAK,EAAEO,OAAO,CAAC;EACrD;AACJ;AAEA,OAAO,MAAMC,0BAA0B,GAAGf,iBAAiB,CAACgB,oBAAoB,CAAC;EAC7EC,cAAc,EAAEhB,8BAA8B;EAC9CiB,YAAY,EAAE,CAACrB,2BAA2B,EAAEC,qBAAqB;AACrE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const UnpublishEntriesBulkActionFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { UnpublishEntriesBulkAction } from "./UnpublishEntriesBulkAction.js";
3
+ export const UnpublishEntriesBulkActionFeature = createFeature({
4
+ name: "HeadlessCms/BulkAction/UnpublishEntries",
5
+ register(container) {
6
+ container.register(UnpublishEntriesBulkAction);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","UnpublishEntriesBulkAction","UnpublishEntriesBulkActionFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UnpublishEntriesBulkAction } from \"./UnpublishEntriesBulkAction.js\";\n\nexport const UnpublishEntriesBulkActionFeature = createFeature({\n name: \"HeadlessCms/BulkAction/UnpublishEntries\",\n register(container) {\n container.register(UnpublishEntriesBulkAction);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,iCAAiC,GAAGF,aAAa,CAAC;EAC3DG,IAAI,EAAE,yCAAyC;EAC/CC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,0BAA0B,CAAC;EAClD;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import type { HcmsBulkActionsContext } from "../types.js";
2
+ import { EntriesBulkAction } from "../features/EntriesBulkAction/abstractions.js";
3
+ export declare const createBulkActionGraphQL: (context: HcmsBulkActionsContext, bulkAction: EntriesBulkAction.Interface) => Promise<void>;
@@ -0,0 +1,64 @@
1
+ import { CmsGraphQLSchemaPlugin, isHeadlessCmsReady } from "@webiny/api-headless-cms";
2
+ import { Response } from "@webiny/handler-graphql";
3
+ import { CMS_MODEL_SINGLETON_TAG } from "@webiny/api-headless-cms/constants.js";
4
+ import { BulkActionName } from "../domain/BulkActionName.js";
5
+ export const createBulkActionGraphQL = async (context, bulkAction) => {
6
+ const tenant = context.tenancy.getCurrentTenant();
7
+
8
+ // TODO: once we have GraphSchema plugin via an abstraction, we'll be able to remove this.
9
+ if (!(await isHeadlessCmsReady(context))) {
10
+ return;
11
+ }
12
+ const models = await context.security.withoutAuthorization(async () => {
13
+ const allModels = await context.cms.listModels();
14
+ return allModels.filter(model => {
15
+ if (model.isPrivate) {
16
+ return false;
17
+ }
18
+ const tags = Array.isArray(model.tags) ? model.tags : [];
19
+ if (tags.includes(CMS_MODEL_SINGLETON_TAG)) {
20
+ return false;
21
+ }
22
+ if (bulkAction.modelIds?.length) {
23
+ return bulkAction.modelIds.includes(model.modelId);
24
+ }
25
+ return true;
26
+ });
27
+ });
28
+ const plugins = [];
29
+ models.forEach(model => {
30
+ const plugin = new CmsGraphQLSchemaPlugin({
31
+ typeDefs: /* GraphQL */`
32
+ extend enum BulkAction${model.singularApiName}Name {
33
+ ${BulkActionName.from(bulkAction.name)}
34
+ }
35
+ `,
36
+ resolvers: {
37
+ Mutation: {
38
+ [`bulkAction${model.singularApiName}`]: async (_, args, context) => {
39
+ const identity = context.security.getIdentity();
40
+ const response = await context.tasks.trigger({
41
+ definition: `hcmsBulkList${args.action}Entries`,
42
+ input: {
43
+ modelId: model.modelId,
44
+ where: args.where,
45
+ search: args.search,
46
+ data: args.data,
47
+ identity
48
+ }
49
+ });
50
+ return new Response({
51
+ id: response.value.id
52
+ });
53
+ }
54
+ }
55
+ },
56
+ isApplicable: context => context.tenancy.getCurrentTenant().id === tenant.id
57
+ });
58
+ plugin.name = `headless-cms.graphql.schema.bulkAction.${model.modelId}.${bulkAction.name}`;
59
+ plugins.push(plugin);
60
+ });
61
+ context.plugins.register([...plugins]);
62
+ };
63
+
64
+ //# sourceMappingURL=createBulkActionGraphQL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CmsGraphQLSchemaPlugin","isHeadlessCmsReady","Response","CMS_MODEL_SINGLETON_TAG","BulkActionName","createBulkActionGraphQL","context","bulkAction","tenant","tenancy","getCurrentTenant","models","security","withoutAuthorization","allModels","cms","listModels","filter","model","isPrivate","tags","Array","isArray","includes","modelIds","length","modelId","plugins","forEach","plugin","typeDefs","singularApiName","from","name","resolvers","Mutation","_","args","identity","getIdentity","response","tasks","trigger","definition","action","input","where","search","data","id","value","isApplicable","push","register"],"sources":["createBulkActionGraphQL.ts"],"sourcesContent":["import type { HcmsBulkActionsContext } from \"~/types.js\";\nimport { CmsGraphQLSchemaPlugin, isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/api-headless-cms/constants.js\";\nimport { EntriesBulkAction } from \"~/features/EntriesBulkAction/abstractions.js\";\nimport { BulkActionName } from \"~/domain/BulkActionName.js\";\n\nexport const createBulkActionGraphQL = async (\n context: HcmsBulkActionsContext,\n bulkAction: EntriesBulkAction.Interface\n) => {\n const tenant = context.tenancy.getCurrentTenant();\n\n // TODO: once we have GraphSchema plugin via an abstraction, we'll be able to remove this.\n if (!(await isHeadlessCmsReady(context))) {\n return;\n }\n\n const models = await context.security.withoutAuthorization(async () => {\n const allModels = await context.cms.listModels();\n return allModels.filter(model => {\n if (model.isPrivate) {\n return false;\n }\n const tags = Array.isArray(model.tags) ? model.tags : [];\n if (tags.includes(CMS_MODEL_SINGLETON_TAG)) {\n return false;\n }\n if (bulkAction.modelIds?.length) {\n return bulkAction.modelIds.includes(model.modelId);\n }\n return true;\n });\n });\n\n const plugins: CmsGraphQLSchemaPlugin<HcmsBulkActionsContext>[] = [];\n\n models.forEach(model => {\n const plugin = new CmsGraphQLSchemaPlugin<HcmsBulkActionsContext>({\n typeDefs: /* GraphQL */ `\n extend enum BulkAction${model.singularApiName}Name {\n ${BulkActionName.from(bulkAction.name)}\n }\n `,\n resolvers: {\n Mutation: {\n [`bulkAction${model.singularApiName}`]: async (_, args, context) => {\n const identity = context.security.getIdentity();\n\n const response = await context.tasks.trigger({\n definition: `hcmsBulkList${args.action}Entries`,\n input: {\n modelId: model.modelId,\n where: args.where,\n search: args.search,\n data: args.data,\n identity\n }\n });\n\n return new Response({\n id: response.value.id\n });\n }\n }\n },\n isApplicable: context => context.tenancy.getCurrentTenant().id === tenant.id\n });\n\n plugin.name = `headless-cms.graphql.schema.bulkAction.${model.modelId}.${bulkAction.name}`;\n plugins.push(plugin);\n });\n\n context.plugins.register([...plugins]);\n};\n"],"mappings":"AACA,SAASA,sBAAsB,EAAEC,kBAAkB,QAAQ,0BAA0B;AACrF,SAASC,QAAQ,QAAQ,yBAAyB;AAClD,SAASC,uBAAuB,QAAQ,uCAAuC;AAE/E,SAASC,cAAc;AAEvB,OAAO,MAAMC,uBAAuB,GAAG,MAAAA,CACnCC,OAA+B,EAC/BC,UAAuC,KACtC;EACD,MAAMC,MAAM,GAAGF,OAAO,CAACG,OAAO,CAACC,gBAAgB,CAAC,CAAC;;EAEjD;EACA,IAAI,EAAE,MAAMT,kBAAkB,CAACK,OAAO,CAAC,CAAC,EAAE;IACtC;EACJ;EAEA,MAAMK,MAAM,GAAG,MAAML,OAAO,CAACM,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IACnE,MAAMC,SAAS,GAAG,MAAMR,OAAO,CAACS,GAAG,CAACC,UAAU,CAAC,CAAC;IAChD,OAAOF,SAAS,CAACG,MAAM,CAACC,KAAK,IAAI;MAC7B,IAAIA,KAAK,CAACC,SAAS,EAAE;QACjB,OAAO,KAAK;MAChB;MACA,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAACE,IAAI,CAAC,GAAGF,KAAK,CAACE,IAAI,GAAG,EAAE;MACxD,IAAIA,IAAI,CAACG,QAAQ,CAACpB,uBAAuB,CAAC,EAAE;QACxC,OAAO,KAAK;MAChB;MACA,IAAII,UAAU,CAACiB,QAAQ,EAAEC,MAAM,EAAE;QAC7B,OAAOlB,UAAU,CAACiB,QAAQ,CAACD,QAAQ,CAACL,KAAK,CAACQ,OAAO,CAAC;MACtD;MACA,OAAO,IAAI;IACf,CAAC,CAAC;EACN,CAAC,CAAC;EAEF,MAAMC,OAAyD,GAAG,EAAE;EAEpEhB,MAAM,CAACiB,OAAO,CAACV,KAAK,IAAI;IACpB,MAAMW,MAAM,GAAG,IAAI7B,sBAAsB,CAAyB;MAC9D8B,QAAQ,EAAE,aAAc;AACpC,6CAA6CZ,KAAK,CAACa,eAAe;AAClE,0BAA0B3B,cAAc,CAAC4B,IAAI,CAACzB,UAAU,CAAC0B,IAAI,CAAC;AAC9D;AACA,iBAAiB;MACLC,SAAS,EAAE;QACPC,QAAQ,EAAE;UACN,CAAC,aAAajB,KAAK,CAACa,eAAe,EAAE,GAAG,OAAOK,CAAC,EAAEC,IAAI,EAAE/B,OAAO,KAAK;YAChE,MAAMgC,QAAQ,GAAGhC,OAAO,CAACM,QAAQ,CAAC2B,WAAW,CAAC,CAAC;YAE/C,MAAMC,QAAQ,GAAG,MAAMlC,OAAO,CAACmC,KAAK,CAACC,OAAO,CAAC;cACzCC,UAAU,EAAE,eAAeN,IAAI,CAACO,MAAM,SAAS;cAC/CC,KAAK,EAAE;gBACHnB,OAAO,EAAER,KAAK,CAACQ,OAAO;gBACtBoB,KAAK,EAAET,IAAI,CAACS,KAAK;gBACjBC,MAAM,EAAEV,IAAI,CAACU,MAAM;gBACnBC,IAAI,EAAEX,IAAI,CAACW,IAAI;gBACfV;cACJ;YACJ,CAAC,CAAC;YAEF,OAAO,IAAIpC,QAAQ,CAAC;cAChB+C,EAAE,EAAET,QAAQ,CAACU,KAAK,CAACD;YACvB,CAAC,CAAC;UACN;QACJ;MACJ,CAAC;MACDE,YAAY,EAAE7C,OAAO,IAAIA,OAAO,CAACG,OAAO,CAACC,gBAAgB,CAAC,CAAC,CAACuC,EAAE,KAAKzC,MAAM,CAACyC;IAC9E,CAAC,CAAC;IAEFpB,MAAM,CAACI,IAAI,GAAG,0CAA0Cf,KAAK,CAACQ,OAAO,IAAInB,UAAU,CAAC0B,IAAI,EAAE;IAC1FN,OAAO,CAACyB,IAAI,CAACvB,MAAM,CAAC;EACxB,CAAC,CAAC;EAEFvB,OAAO,CAACqB,OAAO,CAAC0B,QAAQ,CAAC,CAAC,GAAG1B,OAAO,CAAC,CAAC;AAC1C,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import type { HcmsBulkActionsContext } from "../types.js";
2
+ import { BeforeHandlerPlugin } from "@webiny/handler/plugins/BeforeHandlerPlugin.js";
3
+ export declare const createDefaultGraphQL: () => BeforeHandlerPlugin<HcmsBulkActionsContext>;
@@ -1,20 +1,13 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createDefaultGraphQL = void 0;
7
- var _api = require("@webiny/api");
8
- var _apiHeadlessCms = require("@webiny/api-headless-cms");
9
- var _constants = require("@webiny/api-headless-cms/constants");
10
- const createDefaultGraphQL = () => {
11
- return new _api.ContextPlugin(async context => {
1
+ import { CmsGraphQLSchemaPlugin, isHeadlessCmsReady } from "@webiny/api-headless-cms";
2
+ import { CMS_MODEL_SINGLETON_TAG } from "@webiny/api-headless-cms/constants.js";
3
+ import { BeforeHandlerPlugin } from "@webiny/handler/plugins/BeforeHandlerPlugin.js";
4
+ export const createDefaultGraphQL = () => {
5
+ return new BeforeHandlerPlugin(async context => {
12
6
  const tenant = context.tenancy.getCurrentTenant();
13
- const locale = context.i18n.getContentLocale();
14
- if (!locale || !(await (0, _apiHeadlessCms.isHeadlessCmsReady)(context))) {
7
+ if (!(await isHeadlessCmsReady(context))) {
15
8
  return;
16
9
  }
17
- const defaultPlugin = new _apiHeadlessCms.CmsGraphQLSchemaPlugin({
10
+ const defaultPlugin = new CmsGraphQLSchemaPlugin({
18
11
  typeDefs: /* GraphQL */`
19
12
  type BulkActionResponseData {
20
13
  id: String
@@ -34,7 +27,7 @@ const createDefaultGraphQL = () => {
34
27
  return false;
35
28
  }
36
29
  const tags = Array.isArray(model.tags) ? model.tags : [];
37
- if (tags.includes(_constants.CMS_MODEL_SINGLETON_TAG)) {
30
+ if (tags.includes(CMS_MODEL_SINGLETON_TAG)) {
38
31
  return false;
39
32
  }
40
33
  return true;
@@ -42,7 +35,7 @@ const createDefaultGraphQL = () => {
42
35
  });
43
36
  const modelPlugins = [];
44
37
  models.forEach(model => {
45
- const plugin = new _apiHeadlessCms.CmsGraphQLSchemaPlugin({
38
+ const plugin = new CmsGraphQLSchemaPlugin({
46
39
  typeDefs: /* GraphQL */`
47
40
  enum BulkAction${model.singularApiName}Name {
48
41
  _empty
@@ -57,7 +50,7 @@ const createDefaultGraphQL = () => {
57
50
  ): BulkActionResponse
58
51
  }
59
52
  `,
60
- isApplicable: context => context.tenancy.getCurrentTenant().id === tenant.id && context.i18n.getContentLocale()?.code === locale.code
53
+ isApplicable: context => context.tenancy.getCurrentTenant().id === tenant.id
61
54
  });
62
55
  plugin.name = `headless-cms.graphql.schema.bulkAction.default.${model.modelId}`;
63
56
  modelPlugins.push(plugin);
@@ -65,6 +58,5 @@ const createDefaultGraphQL = () => {
65
58
  context.plugins.register([defaultPlugin, ...modelPlugins]);
66
59
  });
67
60
  };
68
- exports.createDefaultGraphQL = createDefaultGraphQL;
69
61
 
70
62
  //# sourceMappingURL=createDefaultGraphQL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CmsGraphQLSchemaPlugin","isHeadlessCmsReady","CMS_MODEL_SINGLETON_TAG","BeforeHandlerPlugin","createDefaultGraphQL","context","tenant","tenancy","getCurrentTenant","defaultPlugin","typeDefs","name","models","security","withoutAuthorization","allModels","cms","listModels","filter","model","isPrivate","tags","Array","isArray","includes","modelPlugins","forEach","plugin","singularApiName","isApplicable","id","modelId","push","plugins","register"],"sources":["createDefaultGraphQL.ts"],"sourcesContent":["import type { HcmsBulkActionsContext } from \"~/types.js\";\nimport { CmsGraphQLSchemaPlugin, isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/api-headless-cms/constants.js\";\nimport { BeforeHandlerPlugin } from \"@webiny/handler/plugins/BeforeHandlerPlugin.js\";\n\nexport const createDefaultGraphQL = () => {\n return new BeforeHandlerPlugin<HcmsBulkActionsContext>(async context => {\n const tenant = context.tenancy.getCurrentTenant();\n\n if (!(await isHeadlessCmsReady(context))) {\n return;\n }\n\n const defaultPlugin = new CmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type BulkActionResponseData {\n id: String\n }\n\n type BulkActionResponse {\n data: BulkActionResponseData\n error: CmsError\n }\n `\n });\n defaultPlugin.name = `headless-cms.graphql.schema.bulkAction.default`;\n\n const models = await context.security.withoutAuthorization(async () => {\n const allModels = await context.cms.listModels();\n return allModels.filter(model => {\n if (model.isPrivate) {\n return false;\n }\n const tags = Array.isArray(model.tags) ? model.tags : [];\n if (tags.includes(CMS_MODEL_SINGLETON_TAG)) {\n return false;\n }\n return true;\n });\n });\n\n const modelPlugins: CmsGraphQLSchemaPlugin<HcmsBulkActionsContext>[] = [];\n\n models.forEach(model => {\n const plugin = new CmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n enum BulkAction${model.singularApiName}Name {\n _empty\n }\n \n extend type Mutation {\n bulkAction${model.singularApiName}(\n action: BulkAction${model.singularApiName}Name!\n where: ${model.singularApiName}ListWhereInput\n search: String\n data: JSON\n ): BulkActionResponse\n }\n `,\n isApplicable: context => context.tenancy.getCurrentTenant().id === tenant.id\n });\n\n plugin.name = `headless-cms.graphql.schema.bulkAction.default.${model.modelId}`;\n modelPlugins.push(plugin);\n });\n\n context.plugins.register([defaultPlugin, ...modelPlugins]);\n });\n};\n"],"mappings":"AACA,SAASA,sBAAsB,EAAEC,kBAAkB,QAAQ,0BAA0B;AACrF,SAASC,uBAAuB,QAAQ,uCAAuC;AAC/E,SAASC,mBAAmB,QAAQ,gDAAgD;AAEpF,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACtC,OAAO,IAAID,mBAAmB,CAAyB,MAAME,OAAO,IAAI;IACpE,MAAMC,MAAM,GAAGD,OAAO,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC;IAEjD,IAAI,EAAE,MAAMP,kBAAkB,CAACI,OAAO,CAAC,CAAC,EAAE;MACtC;IACJ;IAEA,MAAMI,aAAa,GAAG,IAAIT,sBAAsB,CAAC;MAC7CU,QAAQ,EAAE,aAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,CAAC,CAAC;IACFD,aAAa,CAACE,IAAI,GAAG,gDAAgD;IAErE,MAAMC,MAAM,GAAG,MAAMP,OAAO,CAACQ,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACnE,MAAMC,SAAS,GAAG,MAAMV,OAAO,CAACW,GAAG,CAACC,UAAU,CAAC,CAAC;MAChD,OAAOF,SAAS,CAACG,MAAM,CAACC,KAAK,IAAI;QAC7B,IAAIA,KAAK,CAACC,SAAS,EAAE;UACjB,OAAO,KAAK;QAChB;QACA,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAACE,IAAI,CAAC,GAAGF,KAAK,CAACE,IAAI,GAAG,EAAE;QACxD,IAAIA,IAAI,CAACG,QAAQ,CAACtB,uBAAuB,CAAC,EAAE;UACxC,OAAO,KAAK;QAChB;QACA,OAAO,IAAI;MACf,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAMuB,YAA8D,GAAG,EAAE;IAEzEb,MAAM,CAACc,OAAO,CAACP,KAAK,IAAI;MACpB,MAAMQ,MAAM,GAAG,IAAI3B,sBAAsB,CAAC;QACtCU,QAAQ,EAAE,aAAc;AACxC,qCAAqCS,KAAK,CAACS,eAAe;AAC1D;AACA;AACA;AACA;AACA,oCAAoCT,KAAK,CAACS,eAAe;AACzD,gDAAgDT,KAAK,CAACS,eAAe;AACrE,qCAAqCT,KAAK,CAACS,eAAe;AAC1D;AACA;AACA;AACA;AACA,iBAAiB;QACDC,YAAY,EAAExB,OAAO,IAAIA,OAAO,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC,CAACsB,EAAE,KAAKxB,MAAM,CAACwB;MAC9E,CAAC,CAAC;MAEFH,MAAM,CAAChB,IAAI,GAAG,kDAAkDQ,KAAK,CAACY,OAAO,EAAE;MAC/EN,YAAY,CAACO,IAAI,CAACL,MAAM,CAAC;IAC7B,CAAC,CAAC;IAEFtB,OAAO,CAAC4B,OAAO,CAACC,QAAQ,CAAC,CAACzB,aAAa,EAAE,GAAGgB,YAAY,CAAC,CAAC;EAC9D,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -1,13 +1,7 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createEventBridgeHandler = void 0;
7
- var _handlerAws = require("@webiny/handler-aws");
1
+ import { createEventBridgeEventHandler } from "@webiny/handler-aws";
8
2
  const DETAIL_TYPE = "WebinyEmptyTrashBin";
9
- const createEventBridgeHandler = () => {
10
- const handler = (0, _handlerAws.createEventBridgeEventHandler)(async ({
3
+ export const createEventBridgeHandler = () => {
4
+ const handler = createEventBridgeEventHandler(async ({
11
5
  context: ctx,
12
6
  payload,
13
7
  next
@@ -48,6 +42,5 @@ const createEventBridgeHandler = () => {
48
42
  handler.name = handler.type + ".cmsBulkActions";
49
43
  return handler;
50
44
  };
51
- exports.createEventBridgeHandler = createEventBridgeHandler;
52
45
 
53
46
  //# sourceMappingURL=eventBridgeEventHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerAws","require","DETAIL_TYPE","createEventBridgeHandler","handler","createEventBridgeEventHandler","context","ctx","payload","next","tasks","tenancy","console","error","withRootTenant","trigger","definition","ex","JSON","stringify","message","code","data","name","type","exports"],"sources":["eventBridgeEventHandler.ts"],"sourcesContent":["import { createEventBridgeEventHandler } from \"@webiny/handler-aws\";\nimport type { HcmsBulkActionsContext } from \"~/types\";\n\nconst DETAIL_TYPE = \"WebinyEmptyTrashBin\";\n\nexport const createEventBridgeHandler = () => {\n const handler = createEventBridgeEventHandler<typeof DETAIL_TYPE, Record<string, any>>(\n async ({ context: ctx, payload, next }) => {\n try {\n /**\n * If we receive an event that is not \"WebinyEmptyTrashBin\", we should exit.\n */\n if (payload[\"detail-type\"] !== DETAIL_TYPE) {\n return next();\n }\n\n const context = ctx as unknown as HcmsBulkActionsContext;\n\n if (!context.tasks || !context.tenancy) {\n console.error(\"Missing tasks or tenancy definition on context.\");\n return;\n }\n\n /**\n * Since the event is at the infrastructure level, it has no knowledge about tenancy.\n * We trigger the `hcmsEntriesEmptyTrashBins` using root tenant.\n */\n await context.tenancy.withRootTenant(async () => {\n await context.tasks.trigger({\n definition: \"hcmsEntriesEmptyTrashBins\"\n });\n });\n\n return;\n } catch (ex) {\n console.error(\n \"[EVENT_BRIDGE_HANDLER_EMPTY_TRASH_BIN] => \",\n JSON.stringify({\n message: ex.message,\n code: ex.code,\n data: ex.data\n })\n );\n }\n }\n );\n\n // Assign a human-readable name for easier debugging.\n handler.name = handler.type + \".cmsBulkActions\";\n\n return handler;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,MAAMC,WAAW,GAAG,qBAAqB;AAElC,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;EAC1C,MAAMC,OAAO,GAAG,IAAAC,yCAA6B,EACzC,OAAO;IAAEC,OAAO,EAAEC,GAAG;IAAEC,OAAO;IAAEC;EAAK,CAAC,KAAK;IACvC,IAAI;MACA;AAChB;AACA;MACgB,IAAID,OAAO,CAAC,aAAa,CAAC,KAAKN,WAAW,EAAE;QACxC,OAAOO,IAAI,CAAC,CAAC;MACjB;MAEA,MAAMH,OAAO,GAAGC,GAAwC;MAExD,IAAI,CAACD,OAAO,CAACI,KAAK,IAAI,CAACJ,OAAO,CAACK,OAAO,EAAE;QACpCC,OAAO,CAACC,KAAK,CAAC,iDAAiD,CAAC;QAChE;MACJ;;MAEA;AAChB;AACA;AACA;MACgB,MAAMP,OAAO,CAACK,OAAO,CAACG,cAAc,CAAC,YAAY;QAC7C,MAAMR,OAAO,CAACI,KAAK,CAACK,OAAO,CAAC;UACxBC,UAAU,EAAE;QAChB,CAAC,CAAC;MACN,CAAC,CAAC;MAEF;IACJ,CAAC,CAAC,OAAOC,EAAE,EAAE;MACTL,OAAO,CAACC,KAAK,CACT,4CAA4C,EAC5CK,IAAI,CAACC,SAAS,CAAC;QACXC,OAAO,EAAEH,EAAE,CAACG,OAAO;QACnBC,IAAI,EAAEJ,EAAE,CAACI,IAAI;QACbC,IAAI,EAAEL,EAAE,CAACK;MACb,CAAC,CACL,CAAC;IACL;EACJ,CACJ,CAAC;;EAED;EACAlB,OAAO,CAACmB,IAAI,GAAGnB,OAAO,CAACoB,IAAI,GAAG,iBAAiB;EAE/C,OAAOpB,OAAO;AAClB,CAAC;AAACqB,OAAA,CAAAtB,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createEventBridgeEventHandler","DETAIL_TYPE","createEventBridgeHandler","handler","context","ctx","payload","next","tasks","tenancy","console","error","withRootTenant","trigger","definition","ex","JSON","stringify","message","code","data","name","type"],"sources":["eventBridgeEventHandler.ts"],"sourcesContent":["import { createEventBridgeEventHandler } from \"@webiny/handler-aws\";\nimport type { HcmsBulkActionsContext } from \"~/types.js\";\n\nconst DETAIL_TYPE = \"WebinyEmptyTrashBin\";\n\nexport const createEventBridgeHandler = () => {\n const handler = createEventBridgeEventHandler<typeof DETAIL_TYPE, Record<string, any>>(\n async ({ context: ctx, payload, next }) => {\n try {\n /**\n * If we receive an event that is not \"WebinyEmptyTrashBin\", we should exit.\n */\n if (payload[\"detail-type\"] !== DETAIL_TYPE) {\n return next();\n }\n\n const context = ctx as unknown as HcmsBulkActionsContext;\n\n if (!context.tasks || !context.tenancy) {\n console.error(\"Missing tasks or tenancy definition on context.\");\n return;\n }\n\n /**\n * Since the event is at the infrastructure level, it has no knowledge about tenancy.\n * We trigger the `hcmsEntriesEmptyTrashBins` using root tenant.\n */\n await context.tenancy.withRootTenant(async () => {\n await context.tasks.trigger({\n definition: \"hcmsEntriesEmptyTrashBins\"\n });\n });\n\n return;\n } catch (ex) {\n console.error(\n \"[EVENT_BRIDGE_HANDLER_EMPTY_TRASH_BIN] => \",\n JSON.stringify({\n message: ex.message,\n code: ex.code,\n data: ex.data\n })\n );\n }\n }\n );\n\n // Assign a human-readable name for easier debugging.\n handler.name = handler.type + \".cmsBulkActions\";\n\n return handler;\n};\n"],"mappings":"AAAA,SAASA,6BAA6B,QAAQ,qBAAqB;AAGnE,MAAMC,WAAW,GAAG,qBAAqB;AAEzC,OAAO,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;EAC1C,MAAMC,OAAO,GAAGH,6BAA6B,CACzC,OAAO;IAAEI,OAAO,EAAEC,GAAG;IAAEC,OAAO;IAAEC;EAAK,CAAC,KAAK;IACvC,IAAI;MACA;AAChB;AACA;MACgB,IAAID,OAAO,CAAC,aAAa,CAAC,KAAKL,WAAW,EAAE;QACxC,OAAOM,IAAI,CAAC,CAAC;MACjB;MAEA,MAAMH,OAAO,GAAGC,GAAwC;MAExD,IAAI,CAACD,OAAO,CAACI,KAAK,IAAI,CAACJ,OAAO,CAACK,OAAO,EAAE;QACpCC,OAAO,CAACC,KAAK,CAAC,iDAAiD,CAAC;QAChE;MACJ;;MAEA;AAChB;AACA;AACA;MACgB,MAAMP,OAAO,CAACK,OAAO,CAACG,cAAc,CAAC,YAAY;QAC7C,MAAMR,OAAO,CAACI,KAAK,CAACK,OAAO,CAAC;UACxBC,UAAU,EAAE;QAChB,CAAC,CAAC;MACN,CAAC,CAAC;MAEF;IACJ,CAAC,CAAC,OAAOC,EAAE,EAAE;MACTL,OAAO,CAACC,KAAK,CACT,4CAA4C,EAC5CK,IAAI,CAACC,SAAS,CAAC;QACXC,OAAO,EAAEH,EAAE,CAACG,OAAO;QACnBC,IAAI,EAAEJ,EAAE,CAACI,IAAI;QACbC,IAAI,EAAEL,EAAE,CAACK;MACb,CAAC,CACL,CAAC;IACL;EACJ,CACJ,CAAC;;EAED;EACAjB,OAAO,CAACkB,IAAI,GAAGlB,OAAO,CAACmB,IAAI,GAAG,iBAAiB;EAE/C,OAAOnB,OAAO;AAClB,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- export declare const createHandlers: () => (import("@webiny/handler-aws").EventBridgeEventHandler<"WebinyEmptyTrashBin", Record<string, any>, any> | import("@webiny/handler").HandlerOnRequestPlugin<import("@webiny/handler/types").Context>)[];
1
+ export declare const createHandlers: () => (import("@webiny/handler-aws/index.js").EventBridgeEventHandler<"WebinyEmptyTrashBin", Record<string, any>, any> | import("@webiny/handler/index.js").HandlerOnRequestPlugin<import("@webiny/handler/types.js").Context>)[];
package/handlers/index.js CHANGED
@@ -1,14 +1,7 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createHandlers = void 0;
7
- var _eventBridgeEventHandler = require("./eventBridgeEventHandler");
8
- var _setupEventsTenant = require("./setupEventsTenant");
9
- const createHandlers = () => {
10
- return [(0, _setupEventsTenant.setupEventsTenant)(), (0, _eventBridgeEventHandler.createEventBridgeHandler)()];
1
+ import { createEventBridgeHandler } from "./eventBridgeEventHandler.js";
2
+ import { setupEventsTenant } from "./setupEventsTenant.js";
3
+ export const createHandlers = () => {
4
+ return [setupEventsTenant(), createEventBridgeHandler()];
11
5
  };
12
- exports.createHandlers = createHandlers;
13
6
 
14
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_eventBridgeEventHandler","require","_setupEventsTenant","createHandlers","setupEventsTenant","createEventBridgeHandler","exports"],"sources":["index.ts"],"sourcesContent":["import { createEventBridgeHandler } from \"./eventBridgeEventHandler\";\nimport { setupEventsTenant } from \"./setupEventsTenant\";\n\nexport const createHandlers = () => {\n return [setupEventsTenant(), createEventBridgeHandler()];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAEO,MAAME,cAAc,GAAGA,CAAA,KAAM;EAChC,OAAO,CAAC,IAAAC,oCAAiB,EAAC,CAAC,EAAE,IAAAC,iDAAwB,EAAC,CAAC,CAAC;AAC5D,CAAC;AAACC,OAAA,CAAAH,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["createEventBridgeHandler","setupEventsTenant","createHandlers"],"sources":["index.ts"],"sourcesContent":["import { createEventBridgeHandler } from \"./eventBridgeEventHandler.js\";\nimport { setupEventsTenant } from \"./setupEventsTenant.js\";\n\nexport const createHandlers = () => {\n return [setupEventsTenant(), createEventBridgeHandler()];\n};\n"],"mappings":"AAAA,SAASA,wBAAwB;AACjC,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAChC,OAAO,CAACD,iBAAiB,CAAC,CAAC,EAAED,wBAAwB,CAAC,CAAC,CAAC;AAC5D,CAAC","ignoreList":[]}
@@ -1,12 +1,6 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.setupEventsTenant = void 0;
7
- var _handler = require("@webiny/handler");
8
- const setupEventsTenant = () => {
9
- return (0, _handler.createHandlerOnRequest)(async request => {
1
+ import { createHandlerOnRequest } from "@webiny/handler";
2
+ export const setupEventsTenant = () => {
3
+ return createHandlerOnRequest(async request => {
10
4
  request.headers = {
11
5
  ...request.headers,
12
6
  "x-tenant": request.headers["x-tenant"] || "root"
@@ -14,6 +8,5 @@ const setupEventsTenant = () => {
14
8
  return;
15
9
  });
16
10
  };
17
- exports.setupEventsTenant = setupEventsTenant;
18
11
 
19
12
  //# sourceMappingURL=setupEventsTenant.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_handler","require","setupEventsTenant","createHandlerOnRequest","request","headers","exports"],"sources":["setupEventsTenant.ts"],"sourcesContent":["import { createHandlerOnRequest } from \"@webiny/handler\";\n\nexport const setupEventsTenant = () => {\n return createHandlerOnRequest(async request => {\n request.headers = {\n ...request.headers,\n \"x-tenant\": request.headers[\"x-tenant\"] || \"root\"\n };\n\n return;\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACnC,OAAO,IAAAC,+BAAsB,EAAC,MAAMC,OAAO,IAAI;IAC3CA,OAAO,CAACC,OAAO,GAAG;MACd,GAAGD,OAAO,CAACC,OAAO;MAClB,UAAU,EAAED,OAAO,CAACC,OAAO,CAAC,UAAU,CAAC,IAAI;IAC/C,CAAC;IAED;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAJ,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createHandlerOnRequest","setupEventsTenant","request","headers"],"sources":["setupEventsTenant.ts"],"sourcesContent":["import { createHandlerOnRequest } from \"@webiny/handler\";\n\nexport const setupEventsTenant = () => {\n return createHandlerOnRequest(async request => {\n request.headers = {\n ...request.headers,\n \"x-tenant\": request.headers[\"x-tenant\"] || \"root\"\n };\n\n return;\n });\n};\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,iBAAiB;AAExD,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACnC,OAAOD,sBAAsB,CAAC,MAAME,OAAO,IAAI;IAC3CA,OAAO,CAACC,OAAO,GAAG;MACd,GAAGD,OAAO,CAACC,OAAO;MAClB,UAAU,EAAED,OAAO,CAACC,OAAO,CAAC,UAAU,CAAC,IAAI;IAC/C,CAAC;IAED;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export * from "./abstractions";
2
- export * from "./handlers";
3
- export * from "./useCases";
4
- export * from "./plugins";
5
- export * from "./tasks";
6
- export declare const createHcmsBulkActions: () => ((import("@webiny/handler-aws").EventBridgeEventHandler<"WebinyEmptyTrashBin", Record<string, any>, any> | import("@webiny/handler").HandlerOnRequestPlugin<import("@webiny/handler/types").Context>)[] | import("@webiny/api").ContextPlugin<import("./types").HcmsBulkActionsContext>)[];
1
+ import type { HcmsBulkActionsContext } from "./types.js";
2
+ export type * from "./abstractions/index.js";
3
+ export * from "./handlers/index.js";
4
+ export * from "./tasks/index.js";
5
+ interface BulkActionsConfig {
6
+ batchSize?: number;
7
+ }
8
+ export declare const createHcmsBulkActions: (config?: BulkActionsConfig) => ((import("@webiny/handler-aws/index.js").EventBridgeEventHandler<"WebinyEmptyTrashBin", Record<string, any>, any> | import("@webiny/handler/index.js").HandlerOnRequestPlugin<import("@webiny/handler/types.js").Context>)[] | import("@webiny/handler/plugins/BeforeHandlerPlugin.js").BeforeHandlerPlugin<HcmsBulkActionsContext> | import("@webiny/api").ContextPlugin<import("@webiny/api/types.js").Context>)[];
package/index.js CHANGED
@@ -1,73 +1,50 @@
1
- "use strict";
1
+ import { createHandlers } from "./handlers/index.js";
2
+ import { createBeforeHandlerPlugin } from "@webiny/handler/plugins/BeforeHandlerPlugin.js";
3
+ import { EntriesBulkAction, EntriesBulkActionConfig } from "./features/EntriesBulkAction/abstractions.js";
4
+ import { BulkActionContext } from "./features/BulkActionContext/index.js";
5
+ import { createBulkActionTasks } from "./features/EntriesBulkAction/createBulkActionTasks.js";
6
+ import { createDefaultGraphQL } from "./graphql/createDefaultGraphQL.js";
7
+ import { createBulkActionGraphQL } from "./graphql/createBulkActionGraphQL.js";
8
+ import { createContextPlugin } from "@webiny/api";
9
+ import { DeleteEntriesBulkActionFeature } from "./features/DeleteEntriesBulkAction/feature.js";
10
+ import { MoveToFolderBulkActionFeature } from "./features/MoveToFolderBulkAction/feature.js";
11
+ import { MoveToTrashBulkActionFeature } from "./features/MoveToTrashBulkAction/feature.js";
12
+ import { PublishEntriesBulkActionFeature } from "./features/PublishEntriesBulkAction/feature.js";
13
+ import { UnpublishEntriesBulkActionFeature } from "./features/UnpublishEntriesBulkAction/feature.js";
14
+ import { RestoreEntriesBulkActionFeature } from "./features/RestoreEntriesBulkAction/feature.js";
15
+ export * from "./handlers/index.js";
16
+ export * from "./tasks/index.js";
17
+ export const createHcmsBulkActions = config => {
18
+ const batchSize = config?.batchSize ?? 100;
19
+ return [createHandlers(), createDefaultGraphQL(),
20
+ // Register bulk action features
21
+ createContextPlugin(context => {
22
+ // Bulk action config is shared among all bulk actions.
23
+ context.container.registerInstance(EntriesBulkActionConfig, {
24
+ batchSize
25
+ });
26
+ DeleteEntriesBulkActionFeature.register(context.container);
27
+ MoveToFolderBulkActionFeature.register(context.container);
28
+ MoveToTrashBulkActionFeature.register(context.container);
29
+ PublishEntriesBulkActionFeature.register(context.container);
30
+ UnpublishEntriesBulkActionFeature.register(context.container);
31
+ RestoreEntriesBulkActionFeature.register(context.container);
32
+ }),
33
+ // Set up bulk actions after the context is bootstrapped, but before actual handler processing
34
+ createBeforeHandlerPlugin(async context => {
35
+ context.container.registerInstance(BulkActionContext, context);
36
+ const bulkActions = context.container.resolveAll(EntriesBulkAction);
37
+ const bulkActionsConfig = context.container.resolve(EntriesBulkActionConfig);
2
38
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- createHcmsBulkActions: true
8
- };
9
- exports.createHcmsBulkActions = void 0;
10
- var _handlers = require("./handlers");
11
- Object.keys(_handlers).forEach(function (key) {
12
- if (key === "default" || key === "__esModule") return;
13
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
14
- if (key in exports && exports[key] === _handlers[key]) return;
15
- Object.defineProperty(exports, key, {
16
- enumerable: true,
17
- get: function () {
18
- return _handlers[key];
19
- }
20
- });
21
- });
22
- var _plugins = require("./plugins");
23
- Object.keys(_plugins).forEach(function (key) {
24
- if (key === "default" || key === "__esModule") return;
25
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
- if (key in exports && exports[key] === _plugins[key]) return;
27
- Object.defineProperty(exports, key, {
28
- enumerable: true,
29
- get: function () {
30
- return _plugins[key];
31
- }
32
- });
33
- });
34
- var _abstractions = require("./abstractions");
35
- Object.keys(_abstractions).forEach(function (key) {
36
- if (key === "default" || key === "__esModule") return;
37
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
38
- if (key in exports && exports[key] === _abstractions[key]) return;
39
- Object.defineProperty(exports, key, {
40
- enumerable: true,
41
- get: function () {
42
- return _abstractions[key];
39
+ // 2. For each EntriesBulkAction, create and register tasks + GraphQL schema
40
+ for (const bulkAction of bulkActions) {
41
+ // Register tasks implementation
42
+ const feature = createBulkActionTasks(bulkAction, bulkActionsConfig);
43
+ feature.register(context.container);
44
+ // Register GraphQL schema
45
+ await createBulkActionGraphQL(context, bulkAction);
43
46
  }
44
- });
45
- });
46
- var _useCases = require("./useCases");
47
- Object.keys(_useCases).forEach(function (key) {
48
- if (key === "default" || key === "__esModule") return;
49
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
50
- if (key in exports && exports[key] === _useCases[key]) return;
51
- Object.defineProperty(exports, key, {
52
- enumerable: true,
53
- get: function () {
54
- return _useCases[key];
55
- }
56
- });
57
- });
58
- var _tasks = require("./tasks");
59
- Object.keys(_tasks).forEach(function (key) {
60
- if (key === "default" || key === "__esModule") return;
61
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
62
- if (key in exports && exports[key] === _tasks[key]) return;
63
- Object.defineProperty(exports, key, {
64
- enumerable: true,
65
- get: function () {
66
- return _tasks[key];
67
- }
68
- });
69
- });
70
- const createHcmsBulkActions = () => [(0, _handlers.createHandlers)(), (0, _plugins.createDefaultGraphQL)()];
71
- exports.createHcmsBulkActions = createHcmsBulkActions;
47
+ })];
48
+ };
72
49
 
73
50
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_handlers","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_plugins","_abstractions","_useCases","_tasks","createHcmsBulkActions","createHandlers","createDefaultGraphQL"],"sources":["index.ts"],"sourcesContent":["import { createHandlers } from \"~/handlers\";\nimport { createDefaultGraphQL } from \"~/plugins\";\n\nexport * from \"./abstractions\";\nexport * from \"./handlers\";\nexport * from \"./useCases\";\nexport * from \"./plugins\";\nexport * from \"./tasks\";\n\nexport const createHcmsBulkActions = () => [createHandlers(), createDefaultGraphQL()];\n"],"mappings":";;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAIAC,MAAA,CAAAC,IAAA,CAAAH,SAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,SAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,SAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAHA,IAAAS,QAAA,GAAAb,OAAA;AAKAC,MAAA,CAAAC,IAAA,CAAAW,QAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,QAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,QAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAHA,IAAAU,aAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,aAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,aAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,aAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAW,SAAA,GAAAf,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAa,SAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,SAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,SAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAY,MAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,MAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,MAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,MAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AAEO,MAAMa,qBAAqB,GAAGA,CAAA,KAAM,CAAC,IAAAC,wBAAc,EAAC,CAAC,EAAE,IAAAC,6BAAoB,EAAC,CAAC,CAAC;AAACV,OAAA,CAAAQ,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createHandlers","createBeforeHandlerPlugin","EntriesBulkAction","EntriesBulkActionConfig","BulkActionContext","createBulkActionTasks","createDefaultGraphQL","createBulkActionGraphQL","createContextPlugin","DeleteEntriesBulkActionFeature","MoveToFolderBulkActionFeature","MoveToTrashBulkActionFeature","PublishEntriesBulkActionFeature","UnpublishEntriesBulkActionFeature","RestoreEntriesBulkActionFeature","createHcmsBulkActions","config","batchSize","context","container","registerInstance","register","bulkActions","resolveAll","bulkActionsConfig","resolve","bulkAction","feature"],"sources":["index.ts"],"sourcesContent":["import { createHandlers } from \"~/handlers/index.js\";\nimport { createBeforeHandlerPlugin } from \"@webiny/handler/plugins/BeforeHandlerPlugin.js\";\nimport {\n EntriesBulkAction,\n EntriesBulkActionConfig\n} from \"~/features/EntriesBulkAction/abstractions.js\";\nimport { BulkActionContext } from \"~/features/BulkActionContext/index.js\";\nimport { createBulkActionTasks } from \"~/features/EntriesBulkAction/createBulkActionTasks.js\";\nimport { createDefaultGraphQL } from \"~/graphql/createDefaultGraphQL.js\";\nimport { createBulkActionGraphQL } from \"~/graphql/createBulkActionGraphQL.js\";\nimport { createContextPlugin } from \"@webiny/api\";\nimport { DeleteEntriesBulkActionFeature } from \"~/features/DeleteEntriesBulkAction/feature.js\";\nimport { MoveToFolderBulkActionFeature } from \"~/features/MoveToFolderBulkAction/feature.js\";\nimport { MoveToTrashBulkActionFeature } from \"~/features/MoveToTrashBulkAction/feature.js\";\nimport { PublishEntriesBulkActionFeature } from \"~/features/PublishEntriesBulkAction/feature.js\";\nimport { UnpublishEntriesBulkActionFeature } from \"~/features/UnpublishEntriesBulkAction/feature.js\";\nimport { RestoreEntriesBulkActionFeature } from \"~/features/RestoreEntriesBulkAction/feature.js\";\nimport type { HcmsBulkActionsContext } from \"~/types.js\";\n\nexport type * from \"./abstractions/index.js\";\nexport * from \"./handlers/index.js\";\nexport * from \"./tasks/index.js\";\n\ninterface BulkActionsConfig {\n batchSize?: number;\n}\n\nexport const createHcmsBulkActions = (config?: BulkActionsConfig) => {\n const batchSize = config?.batchSize ?? 100;\n\n return [\n createHandlers(),\n createDefaultGraphQL(),\n // Register bulk action features\n createContextPlugin(context => {\n // Bulk action config is shared among all bulk actions.\n context.container.registerInstance(EntriesBulkActionConfig, { batchSize });\n\n DeleteEntriesBulkActionFeature.register(context.container);\n MoveToFolderBulkActionFeature.register(context.container);\n MoveToTrashBulkActionFeature.register(context.container);\n PublishEntriesBulkActionFeature.register(context.container);\n UnpublishEntriesBulkActionFeature.register(context.container);\n RestoreEntriesBulkActionFeature.register(context.container);\n }),\n // Set up bulk actions after the context is bootstrapped, but before actual handler processing\n createBeforeHandlerPlugin<HcmsBulkActionsContext>(async context => {\n context.container.registerInstance(BulkActionContext, context);\n\n const bulkActions = context.container.resolveAll(EntriesBulkAction);\n const bulkActionsConfig = context.container.resolve(EntriesBulkActionConfig);\n\n // 2. For each EntriesBulkAction, create and register tasks + GraphQL schema\n for (const bulkAction of bulkActions) {\n // Register tasks implementation\n const feature = createBulkActionTasks(bulkAction, bulkActionsConfig);\n feature.register(context.container);\n // Register GraphQL schema\n await createBulkActionGraphQL(context, bulkAction);\n }\n })\n ];\n};\n"],"mappings":"AAAA,SAASA,cAAc;AACvB,SAASC,yBAAyB,QAAQ,gDAAgD;AAC1F,SACIC,iBAAiB,EACjBC,uBAAuB;AAE3B,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;AAC9B,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,mBAAmB,QAAQ,aAAa;AACjD,SAASC,8BAA8B;AACvC,SAASC,6BAA6B;AACtC,SAASC,4BAA4B;AACrC,SAASC,+BAA+B;AACxC,SAASC,iCAAiC;AAC1C,SAASC,+BAA+B;AAIxC;AACA;AAMA,OAAO,MAAMC,qBAAqB,GAAIC,MAA0B,IAAK;EACjE,MAAMC,SAAS,GAAGD,MAAM,EAAEC,SAAS,IAAI,GAAG;EAE1C,OAAO,CACHjB,cAAc,CAAC,CAAC,EAChBM,oBAAoB,CAAC,CAAC;EACtB;EACAE,mBAAmB,CAACU,OAAO,IAAI;IAC3B;IACAA,OAAO,CAACC,SAAS,CAACC,gBAAgB,CAACjB,uBAAuB,EAAE;MAAEc;IAAU,CAAC,CAAC;IAE1ER,8BAA8B,CAACY,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;IAC1DT,6BAA6B,CAACW,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;IACzDR,4BAA4B,CAACU,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;IACxDP,+BAA+B,CAACS,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;IAC3DN,iCAAiC,CAACQ,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;IAC7DL,+BAA+B,CAACO,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;EAC/D,CAAC,CAAC;EACF;EACAlB,yBAAyB,CAAyB,MAAMiB,OAAO,IAAI;IAC/DA,OAAO,CAACC,SAAS,CAACC,gBAAgB,CAAChB,iBAAiB,EAAEc,OAAO,CAAC;IAE9D,MAAMI,WAAW,GAAGJ,OAAO,CAACC,SAAS,CAACI,UAAU,CAACrB,iBAAiB,CAAC;IACnE,MAAMsB,iBAAiB,GAAGN,OAAO,CAACC,SAAS,CAACM,OAAO,CAACtB,uBAAuB,CAAC;;IAE5E;IACA,KAAK,MAAMuB,UAAU,IAAIJ,WAAW,EAAE;MAClC;MACA,MAAMK,OAAO,GAAGtB,qBAAqB,CAACqB,UAAU,EAAEF,iBAAiB,CAAC;MACpEG,OAAO,CAACN,QAAQ,CAACH,OAAO,CAACC,SAAS,CAAC;MACnC;MACA,MAAMZ,uBAAuB,CAACW,OAAO,EAAEQ,UAAU,CAAC;IACtD;EACJ,CAAC,CAAC,CACL;AACL,CAAC","ignoreList":[]}