@webiny/api-aco 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2

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 (217) hide show
  1. package/AcoFeature.d.ts +5 -0
  2. package/AcoFeature.js +134 -0
  3. package/AcoFeature.js.map +1 -0
  4. package/AcoFolderSchemaFactory.d.ts +32 -0
  5. package/AcoFolderSchemaFactory.js +82 -0
  6. package/AcoFolderSchemaFactory.js.map +1 -0
  7. package/createAcoGraphQL.d.ts +8 -4
  8. package/createAcoGraphQL.js +56 -96
  9. package/createAcoGraphQL.js.map +1 -1
  10. package/domain/folder/abstractions.d.ts +12 -5
  11. package/domain/folder/abstractions.js +2 -2
  12. package/domain/folder/abstractions.js.map +1 -1
  13. package/domain/folder/folder.model.js +2 -1
  14. package/domain/folder/folder.model.js.map +1 -1
  15. package/exports/api/aco/flp.d.ts +1 -0
  16. package/exports/api/aco/flp.js +1 -0
  17. package/features/ai/CreateFolderTool.d.ts +49 -0
  18. package/features/ai/CreateFolderTool.js +58 -0
  19. package/features/ai/CreateFolderTool.js.map +1 -0
  20. package/features/ai/CreateTeamTool.d.ts +48 -0
  21. package/features/ai/CreateTeamTool.js +56 -0
  22. package/features/ai/CreateTeamTool.js.map +1 -0
  23. package/features/ai/DeleteFolderTool.d.ts +48 -0
  24. package/features/ai/DeleteFolderTool.js +55 -0
  25. package/features/ai/DeleteFolderTool.js.map +1 -0
  26. package/features/ai/GrantFolderAccessTool.d.ts +77 -0
  27. package/features/ai/GrantFolderAccessTool.js +80 -0
  28. package/features/ai/GrantFolderAccessTool.js.map +1 -0
  29. package/features/ai/ListFoldersTool.d.ts +47 -0
  30. package/features/ai/ListFoldersTool.js +57 -0
  31. package/features/ai/ListFoldersTool.js.map +1 -0
  32. package/features/ai/ListRolesTool.d.ts +39 -0
  33. package/features/ai/ListRolesTool.js +48 -0
  34. package/features/ai/ListRolesTool.js.map +1 -0
  35. package/features/ai/ListTeamsTool.d.ts +39 -0
  36. package/features/ai/ListTeamsTool.js +48 -0
  37. package/features/ai/ListTeamsTool.js.map +1 -0
  38. package/features/ai/RevokeFolderAccessTool.d.ts +63 -0
  39. package/features/ai/RevokeFolderAccessTool.js +69 -0
  40. package/features/ai/RevokeFolderAccessTool.js.map +1 -0
  41. package/features/ai/assertTargetIsUsable.d.ts +10 -0
  42. package/features/ai/assertTargetIsUsable.js +14 -0
  43. package/features/ai/assertTargetIsUsable.js.map +1 -0
  44. package/features/ai/feature.d.ts +12 -0
  45. package/features/ai/feature.js +25 -0
  46. package/features/ai/feature.js.map +1 -0
  47. package/features/ai/index.d.ts +9 -0
  48. package/features/ai/index.js +9 -0
  49. package/features/ai/loadFolderPermissions.d.ts +16 -0
  50. package/features/ai/loadFolderPermissions.js +14 -0
  51. package/features/ai/loadFolderPermissions.js.map +1 -0
  52. package/features/flp/CreateFlp/CreateFlpUseCase.d.ts +3 -3
  53. package/features/flp/CreateFlp/CreateFlpUseCase.js +4 -4
  54. package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -1
  55. package/features/flp/CreateFlp/feature.d.ts +1 -6
  56. package/features/flp/CreateFlp/feature.js +3 -2
  57. package/features/flp/CreateFlp/feature.js.map +1 -1
  58. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.d.ts +8 -5
  59. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +21 -14
  60. package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -1
  61. package/features/flp/DeleteFlp/DeleteFlpUseCase.d.ts +3 -3
  62. package/features/flp/DeleteFlp/DeleteFlpUseCase.js +3 -3
  63. package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -1
  64. package/features/flp/DeleteFlp/feature.d.ts +1 -6
  65. package/features/flp/DeleteFlp/feature.js +3 -2
  66. package/features/flp/DeleteFlp/feature.js.map +1 -1
  67. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.d.ts +6 -5
  68. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +16 -13
  69. package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -1
  70. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +4 -3
  71. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +14 -13
  72. package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
  73. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +6 -0
  74. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +6 -2
  75. package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
  76. package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.d.ts +13 -0
  77. package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.js +26 -0
  78. package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.js.map +1 -0
  79. package/features/flp/GetFlp/feature.d.ts +1 -1
  80. package/features/flp/GetFlp/feature.js +3 -2
  81. package/features/flp/GetFlp/feature.js.map +1 -1
  82. package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.d.ts +13 -0
  83. package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.js +27 -0
  84. package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.js.map +1 -0
  85. package/features/flp/ListFlps/feature.d.ts +1 -1
  86. package/features/flp/ListFlps/feature.js +3 -2
  87. package/features/flp/ListFlps/feature.js.map +1 -1
  88. package/features/flp/UpdateFlp/UpdateFlpUseCase.d.ts +15 -8
  89. package/features/flp/UpdateFlp/UpdateFlpUseCase.js +37 -42
  90. package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -1
  91. package/features/flp/UpdateFlp/abstractions.d.ts +6 -2
  92. package/features/flp/UpdateFlp/abstractions.js.map +1 -1
  93. package/features/flp/UpdateFlp/feature.d.ts +1 -6
  94. package/features/flp/UpdateFlp/feature.js +7 -2
  95. package/features/flp/UpdateFlp/feature.js.map +1 -1
  96. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.d.ts +8 -5
  97. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +21 -16
  98. package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -1
  99. package/features/flp/shared/CodeFlpMerger.d.ts +26 -0
  100. package/features/flp/shared/CodeFlpMerger.js +20 -0
  101. package/features/flp/shared/CodeFlpMerger.js.map +1 -0
  102. package/features/flp/shared/CodeFlpPath.d.ts +15 -0
  103. package/features/flp/shared/CodeFlpPath.js +29 -0
  104. package/features/flp/shared/CodeFlpPath.js.map +1 -0
  105. package/features/flp/shared/CodeFlpTarget.d.ts +10 -0
  106. package/features/flp/shared/CodeFlpTarget.js +26 -0
  107. package/features/flp/shared/CodeFlpTarget.js.map +1 -0
  108. package/features/flp/shared/CodeFlpsProvider.d.ts +14 -0
  109. package/features/flp/shared/CodeFlpsProvider.js +33 -0
  110. package/features/flp/shared/CodeFlpsProvider.js.map +1 -0
  111. package/features/flp/shared/abstractions.d.ts +77 -0
  112. package/features/flp/shared/abstractions.js +19 -0
  113. package/features/flp/shared/abstractions.js.map +1 -0
  114. package/features/flp/shared/feature.d.ts +5 -0
  115. package/features/flp/shared/feature.js +17 -0
  116. package/features/flp/shared/feature.js.map +1 -0
  117. package/features/flp/shared/index.d.ts +4 -0
  118. package/features/flp/shared/index.js +4 -0
  119. package/features/folder/CreateFolder/CreateFolderRepository.d.ts +3 -3
  120. package/features/folder/CreateFolder/CreateFolderRepository.js +10 -7
  121. package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -1
  122. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.d.ts +9 -1
  123. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +20 -3
  124. package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -1
  125. package/features/folder/DeleteFolder/DeleteFolderRepository.d.ts +3 -3
  126. package/features/folder/DeleteFolder/DeleteFolderRepository.js +6 -5
  127. package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -1
  128. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.d.ts +1 -3
  129. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +3 -6
  130. package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -1
  131. package/features/folder/FolderModelProvider.d.ts +26 -0
  132. package/features/folder/FolderModelProvider.js +22 -0
  133. package/features/folder/FolderModelProvider.js.map +1 -0
  134. package/features/folder/GetAncestors/GetAncestorsRepository.d.ts +3 -3
  135. package/features/folder/GetAncestors/GetAncestorsRepository.js +6 -5
  136. package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -1
  137. package/features/folder/GetFolder/GetFolderRepository.d.ts +3 -3
  138. package/features/folder/GetFolder/GetFolderRepository.js +6 -5
  139. package/features/folder/GetFolder/GetFolderRepository.js.map +1 -1
  140. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.d.ts +3 -3
  141. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +10 -8
  142. package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -1
  143. package/features/folder/ListFolders/ListFoldersRepository.d.ts +3 -3
  144. package/features/folder/ListFolders/ListFoldersRepository.js +8 -7
  145. package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -1
  146. package/features/folder/NotifyFolderChange/NotifyFolderChangeUseCase.d.ts +11 -0
  147. package/features/folder/NotifyFolderChange/NotifyFolderChangeUseCase.js +38 -0
  148. package/features/folder/NotifyFolderChange/NotifyFolderChangeUseCase.js.map +1 -0
  149. package/features/folder/NotifyFolderChange/NotifyOnFolderDeletedHandler.d.ts +12 -0
  150. package/features/folder/NotifyFolderChange/NotifyOnFolderDeletedHandler.js +24 -0
  151. package/features/folder/NotifyFolderChange/NotifyOnFolderDeletedHandler.js.map +1 -0
  152. package/features/folder/NotifyFolderChange/abstractions.d.ts +28 -0
  153. package/features/folder/NotifyFolderChange/abstractions.js +8 -0
  154. package/features/folder/NotifyFolderChange/abstractions.js.map +1 -0
  155. package/features/folder/NotifyFolderChange/feature.d.ts +9 -0
  156. package/features/folder/NotifyFolderChange/feature.js +13 -0
  157. package/features/folder/NotifyFolderChange/feature.js.map +1 -0
  158. package/features/folder/NotifyFolderChange/index.d.ts +2 -0
  159. package/features/folder/NotifyFolderChange/index.js +2 -0
  160. package/features/folder/UpdateFolder/UpdateFolderRepository.d.ts +3 -3
  161. package/features/folder/UpdateFolder/UpdateFolderRepository.js +11 -8
  162. package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -1
  163. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.d.ts +14 -1
  164. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +52 -4
  165. package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -1
  166. package/features/folder/shared/abstractions.d.ts +10 -0
  167. package/features/folder/shared/abstractions.js +3 -1
  168. package/features/folder/shared/abstractions.js.map +1 -1
  169. package/filter/filter.gql.d.ts +2 -3
  170. package/filter/filter.gql.js +61 -27
  171. package/filter/filter.gql.js.map +1 -1
  172. package/filter/filter.model.js +2 -1
  173. package/filter/filter.model.js.map +1 -1
  174. package/filter/filter.so.d.ts +2 -4
  175. package/filter/filter.so.js +21 -9
  176. package/filter/filter.so.js.map +1 -1
  177. package/flp/flp.types.d.ts +6 -1
  178. package/flp/tasks/createFlp.task.d.ts +11 -4
  179. package/flp/tasks/createFlp.task.js +32 -15
  180. package/flp/tasks/createFlp.task.js.map +1 -1
  181. package/flp/tasks/deleteFlp.task.d.ts +9 -4
  182. package/flp/tasks/deleteFlp.task.js +22 -13
  183. package/flp/tasks/deleteFlp.task.js.map +1 -1
  184. package/flp/tasks/index.d.ts +0 -1
  185. package/flp/tasks/index.js +1 -14
  186. package/flp/tasks/index.js.map +1 -1
  187. package/flp/tasks/syncFlp.task.d.ts +9 -4
  188. package/flp/tasks/syncFlp.task.js +22 -13
  189. package/flp/tasks/syncFlp.task.js.map +1 -1
  190. package/flp/tasks/updateFlp.task.d.ts +11 -4
  191. package/flp/tasks/updateFlp.task.js +40 -19
  192. package/flp/tasks/updateFlp.task.js.map +1 -1
  193. package/folder/createFolderTypeDefs.js +4 -1
  194. package/folder/createFolderTypeDefs.js.map +1 -1
  195. package/folder/folder.gql.d.ts +1 -1
  196. package/folder/folder.gql.js +4 -4
  197. package/folder/folder.gql.js.map +1 -1
  198. package/index.d.ts +1 -1
  199. package/index.js +1 -11
  200. package/package.json +23 -21
  201. package/types.d.ts +1 -2
  202. package/types.js.map +1 -1
  203. package/utils/createOperationsWrapper.d.ts +4 -4
  204. package/utils/createOperationsWrapper.js +5 -5
  205. package/utils/createOperationsWrapper.js.map +1 -1
  206. package/utils/decorators/CmsEntriesCrudDecorators.js +9 -5
  207. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
  208. package/utils/resolve.d.ts +1 -1
  209. package/utils/resolve.js +1 -1
  210. package/utils/resolve.js.map +1 -1
  211. package/createAcoContext.d.ts +0 -3
  212. package/createAcoContext.js +0 -112
  213. package/createAcoContext.js.map +0 -1
  214. package/createAcoTasks.d.ts +0 -1
  215. package/createAcoTasks.js +0 -14
  216. package/createAcoTasks.js.map +0 -1
  217. package/index.js.map +0 -1
@@ -6,10 +6,20 @@ import { createOperationsWrapper } from "../utils/createOperationsWrapper.js";
6
6
  import { pickEntryFieldValues } from "../utils/pickEntryFieldValues.js";
7
7
  import { ENTRY_META_FIELDS } from "@webiny/api-headless-cms/constants.js";
8
8
  import { CmsSortMapper, CmsWhereMapper } from "@webiny/api-headless-cms";
9
+ import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
10
+ import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js";
11
+ import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
12
+ import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
13
+ import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
14
+ const unwrap = (result)=>{
15
+ if (result.isFail()) throw result.error;
16
+ return result.value;
17
+ };
9
18
  const createFilterOperations = (params)=>{
10
- const { cms, security, container } = params;
19
+ const { identityContext, container } = params;
11
20
  const { withModel } = createOperationsWrapper({
12
- ...params,
21
+ identityContext,
22
+ container,
13
23
  modelName: FILTER_MODEL_ID
14
24
  });
15
25
  const cmsWhereMapper = container.resolve(CmsWhereMapper);
@@ -17,7 +27,7 @@ const createFilterOperations = (params)=>{
17
27
  return {
18
28
  getFilter ({ id }) {
19
29
  return withModel(async (model)=>{
20
- const entry = await cms.getEntryById(model, id);
30
+ const entry = unwrap(await container.resolve(GetEntryByIdUseCase).execute(model, id));
21
31
  if (!entry) throw new error("Could not load filter.", "GET_FILTER_ERROR", {
22
32
  id
23
33
  });
@@ -27,8 +37,8 @@ const createFilterOperations = (params)=>{
27
37
  listFilters (params) {
28
38
  return withModel(async (model)=>{
29
39
  const { sort, where } = params;
30
- const createdBy = security.getIdentity().id;
31
- const [entries, meta] = await cms.listLatestEntries(model, {
40
+ const createdBy = identityContext.getIdentity().id;
41
+ const result = await container.resolve(ListLatestEntriesUseCase).execute(model, {
32
42
  ...params,
33
43
  sort: cmsSortMapper.map({
34
44
  input: createListSort(sort),
@@ -42,6 +52,7 @@ const createFilterOperations = (params)=>{
42
52
  fields: model.fields
43
53
  })
44
54
  });
55
+ const { entries, meta } = unwrap(result);
45
56
  return [
46
57
  entries.map(pickEntryFieldValues),
47
58
  meta
@@ -50,16 +61,17 @@ const createFilterOperations = (params)=>{
50
61
  },
51
62
  createFilter ({ data }) {
52
63
  return withModel(async (model)=>{
53
- const entry = await cms.createEntry(model, {
64
+ const result = await container.resolve(CreateEntryUseCase).execute(model, {
54
65
  id: data.id,
55
66
  values: data
56
67
  });
68
+ const entry = unwrap(result);
57
69
  return pickEntryFieldValues(entry);
58
70
  });
59
71
  },
60
72
  updateFilter ({ id, data }) {
61
73
  return withModel(async (model)=>{
62
- const original = await cms.getEntryById(model, id);
74
+ const original = unwrap(await container.resolve(GetEntryByIdUseCase).execute(model, id));
63
75
  const input = {
64
76
  ...omit(original, ENTRY_META_FIELDS),
65
77
  values: {
@@ -67,13 +79,13 @@ const createFilterOperations = (params)=>{
67
79
  ...data
68
80
  }
69
81
  };
70
- const entry = await cms.updateEntry(model, original.id, input);
82
+ const entry = unwrap(await container.resolve(UpdateEntryUseCase).execute(model, original.id, input));
71
83
  return pickEntryFieldValues(entry);
72
84
  });
73
85
  },
74
86
  deleteFilter ({ id }) {
75
87
  return withModel(async (model)=>{
76
- await cms.deleteEntry(model, id);
88
+ unwrap(await container.resolve(DeleteEntryUseCase).execute(model, id));
77
89
  return true;
78
90
  });
79
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filter/filter.so.js","sources":["../../src/filter/filter.so.ts"],"sourcesContent":["import omit from \"lodash/omit.js\";\nimport WebinyError from \"@webiny/error\";\nimport { FILTER_MODEL_ID } from \"./filter.model.js\";\nimport type { HeadlessCms } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Security } from \"@webiny/api-core/types/security.js\";\nimport type { Container } from \"@webiny/di\";\n\ninterface CreateFilterOperationsParams {\n cms: HeadlessCms;\n security: Security;\n container: Container;\n}\nimport { createListSort } from \"~/utils/createListSort.js\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper.js\";\nimport { pickEntryFieldValues } from \"~/utils/pickEntryFieldValues.js\";\nimport type { AcoFilterStorageOperations, Filter } from \"./filter.types.js\";\nimport { ENTRY_META_FIELDS } from \"@webiny/api-headless-cms/constants.js\";\nimport { CmsSortMapper, CmsWhereMapper } from \"@webiny/api-headless-cms\";\n\nexport const createFilterOperations = (\n params: CreateFilterOperationsParams\n): AcoFilterStorageOperations => {\n const { cms, security, container } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: FILTER_MODEL_ID\n });\n\n const cmsWhereMapper = container.resolve(CmsWhereMapper);\n const cmsSortMapper = container.resolve(CmsSortMapper);\n\n return {\n getFilter({ id }) {\n return withModel(async model => {\n const entry = await cms.getEntryById(model, id);\n\n if (!entry) {\n throw new WebinyError(\"Could not load filter.\", \"GET_FILTER_ERROR\", {\n id\n });\n }\n\n return pickEntryFieldValues(entry);\n });\n },\n listFilters(params) {\n return withModel(async model => {\n const { sort, where } = params;\n const createdBy = security.getIdentity().id;\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort: cmsSortMapper.map({\n input: createListSort(sort),\n fields: model.fields\n }),\n where: cmsWhereMapper.map({\n input: {\n ...where,\n createdBy\n },\n fields: model.fields\n })\n });\n\n return [entries.map(pickEntryFieldValues<Filter>), meta];\n });\n },\n createFilter({ data }) {\n return withModel(async model => {\n const entry = await cms.createEntry(model, {\n id: data.id,\n values: data\n });\n return pickEntryFieldValues(entry);\n });\n },\n updateFilter({ id, data }) {\n return withModel(async model => {\n const original = await cms.getEntryById(model, id);\n\n const input = {\n /**\n * We are omitting the standard entry meta fields:\n * we don't want to override them with the ones coming from the `original` entry.\n */\n ...omit(original, ENTRY_META_FIELDS),\n values: {\n ...original.values,\n ...data\n }\n };\n\n const entry = await cms.updateEntry(model, original.id, input);\n return pickEntryFieldValues(entry);\n });\n },\n deleteFilter({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, id);\n return true;\n });\n }\n };\n};\n"],"names":["createFilterOperations","params","cms","security","container","withModel","createOperationsWrapper","FILTER_MODEL_ID","cmsWhereMapper","CmsWhereMapper","cmsSortMapper","CmsSortMapper","id","model","entry","WebinyError","pickEntryFieldValues","sort","where","createdBy","entries","meta","createListSort","data","original","input","omit","ENTRY_META_FIELDS"],"mappings":";;;;;;;;AAmBO,MAAMA,yBAAyB,CAClCC;IAEA,MAAM,EAAEC,GAAG,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGH;IAErC,MAAM,EAAEI,SAAS,EAAE,GAAGC,wBAAwB;QAC1C,GAAGL,MAAM;QACT,WAAWM;IACf;IAEA,MAAMC,iBAAiBJ,UAAU,OAAO,CAACK;IACzC,MAAMC,gBAAgBN,UAAU,OAAO,CAACO;IAExC,OAAO;QACH,WAAU,EAAEC,EAAE,EAAE;YACZ,OAAOP,UAAU,OAAMQ;gBACnB,MAAMC,QAAQ,MAAMZ,IAAI,YAAY,CAACW,OAAOD;gBAE5C,IAAI,CAACE,OACD,MAAM,IAAIC,MAAY,0BAA0B,oBAAoB;oBAChEH;gBACJ;gBAGJ,OAAOI,qBAAqBF;YAChC;QACJ;QACA,aAAYb,MAAM;YACd,OAAOI,UAAU,OAAMQ;gBACnB,MAAM,EAAEI,IAAI,EAAEC,KAAK,EAAE,GAAGjB;gBACxB,MAAMkB,YAAYhB,SAAS,WAAW,GAAG,EAAE;gBAE3C,MAAM,CAACiB,SAASC,KAAK,GAAG,MAAMnB,IAAI,iBAAiB,CAACW,OAAO;oBACvD,GAAGZ,MAAM;oBACT,MAAMS,cAAc,GAAG,CAAC;wBACpB,OAAOY,eAAeL;wBACtB,QAAQJ,MAAM,MAAM;oBACxB;oBACA,OAAOL,eAAe,GAAG,CAAC;wBACtB,OAAO;4BACH,GAAGU,KAAK;4BACRC;wBACJ;wBACA,QAAQN,MAAM,MAAM;oBACxB;gBACJ;gBAEA,OAAO;oBAACO,QAAQ,GAAG,CAACJ;oBAA+BK;iBAAK;YAC5D;QACJ;QACA,cAAa,EAAEE,IAAI,EAAE;YACjB,OAAOlB,UAAU,OAAMQ;gBACnB,MAAMC,QAAQ,MAAMZ,IAAI,WAAW,CAACW,OAAO;oBACvC,IAAIU,KAAK,EAAE;oBACX,QAAQA;gBACZ;gBACA,OAAOP,qBAAqBF;YAChC;QACJ;QACA,cAAa,EAAEF,EAAE,EAAEW,IAAI,EAAE;YACrB,OAAOlB,UAAU,OAAMQ;gBACnB,MAAMW,WAAW,MAAMtB,IAAI,YAAY,CAACW,OAAOD;gBAE/C,MAAMa,QAAQ;oBAKV,GAAGC,KAAKF,UAAUG,kBAAkB;oBACpC,QAAQ;wBACJ,GAAGH,SAAS,MAAM;wBAClB,GAAGD,IAAI;oBACX;gBACJ;gBAEA,MAAMT,QAAQ,MAAMZ,IAAI,WAAW,CAACW,OAAOW,SAAS,EAAE,EAAEC;gBACxD,OAAOT,qBAAqBF;YAChC;QACJ;QACA,cAAa,EAAEF,EAAE,EAAE;YACf,OAAOP,UAAU,OAAMQ;gBACnB,MAAMX,IAAI,WAAW,CAACW,OAAOD;gBAC7B,OAAO;YACX;QACJ;IACJ;AACJ"}
1
+ {"version":3,"file":"filter/filter.so.js","sources":["../../src/filter/filter.so.ts"],"sourcesContent":["import omit from \"lodash/omit.js\";\nimport WebinyError from \"@webiny/error\";\nimport { FILTER_MODEL_ID } from \"./filter.model.js\";\nimport type { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport type { Container } from \"@webiny/di\";\n\ninterface CreateFilterOperationsParams {\n identityContext: IdentityContext.Interface;\n container: Container;\n}\nimport { createListSort } from \"~/utils/createListSort.js\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper.js\";\nimport { pickEntryFieldValues } from \"~/utils/pickEntryFieldValues.js\";\nimport type { AcoFilterStorageOperations, Filter } from \"./filter.types.js\";\nimport { ENTRY_META_FIELDS } from \"@webiny/api-headless-cms/constants.js\";\nimport { CmsSortMapper, CmsWhereMapper } from \"@webiny/api-headless-cms\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/index.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport type { Result } from \"@webiny/feature/api\";\n\nconst unwrap = <TValue>(result: Result<TValue, Error>): TValue => {\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n};\n\nexport const createFilterOperations = (\n params: CreateFilterOperationsParams\n): AcoFilterStorageOperations => {\n const { identityContext, container } = params;\n\n const { withModel } = createOperationsWrapper({\n identityContext,\n container,\n modelName: FILTER_MODEL_ID\n });\n\n /*\n * The CMS use cases are resolved when an operation runs, not here. These operations are built\n * while ACO's storage is being resolved, and resolving the use cases at this point loops back\n * into that same storage until the stack overflows.\n */\n\n const cmsWhereMapper = container.resolve(CmsWhereMapper);\n const cmsSortMapper = container.resolve(CmsSortMapper);\n\n return {\n getFilter({ id }) {\n return withModel(async model => {\n const entry = unwrap(\n await container.resolve(GetEntryByIdUseCase).execute(model, id)\n );\n\n if (!entry) {\n throw new WebinyError(\"Could not load filter.\", \"GET_FILTER_ERROR\", {\n id\n });\n }\n\n return pickEntryFieldValues(entry);\n });\n },\n listFilters(params) {\n return withModel(async model => {\n const { sort, where } = params;\n const createdBy = identityContext.getIdentity().id;\n\n const result = await container.resolve(ListLatestEntriesUseCase).execute(model, {\n ...params,\n sort: cmsSortMapper.map({\n input: createListSort(sort),\n fields: model.fields\n }),\n where: cmsWhereMapper.map({\n input: {\n ...where,\n createdBy\n },\n fields: model.fields\n })\n });\n const { entries, meta } = unwrap(result);\n\n return [entries.map(pickEntryFieldValues<Filter>), meta];\n });\n },\n createFilter({ data }) {\n return withModel(async model => {\n const result = await container.resolve(CreateEntryUseCase).execute(model, {\n id: data.id,\n values: data\n });\n const entry = unwrap(result);\n return pickEntryFieldValues(entry);\n });\n },\n updateFilter({ id, data }) {\n return withModel(async model => {\n const original = unwrap(\n await container.resolve(GetEntryByIdUseCase).execute(model, id)\n );\n\n const input = {\n /**\n * We are omitting the standard entry meta fields:\n * we don't want to override them with the ones coming from the `original` entry.\n */\n ...omit(original, ENTRY_META_FIELDS),\n values: {\n ...original.values,\n ...data\n }\n };\n\n const entry = unwrap(\n await container.resolve(UpdateEntryUseCase).execute(model, original.id, input)\n );\n return pickEntryFieldValues(entry);\n });\n },\n deleteFilter({ id }) {\n return withModel(async model => {\n unwrap(await container.resolve(DeleteEntryUseCase).execute(model, id));\n return true;\n });\n }\n };\n};\n"],"names":["unwrap","result","createFilterOperations","params","identityContext","container","withModel","createOperationsWrapper","FILTER_MODEL_ID","cmsWhereMapper","CmsWhereMapper","cmsSortMapper","CmsSortMapper","id","model","entry","GetEntryByIdUseCase","WebinyError","pickEntryFieldValues","sort","where","createdBy","ListLatestEntriesUseCase","createListSort","entries","meta","data","CreateEntryUseCase","original","input","omit","ENTRY_META_FIELDS","UpdateEntryUseCase","DeleteEntryUseCase"],"mappings":";;;;;;;;;;;;;AAuBA,MAAMA,SAAS,CAASC;IACpB,IAAIA,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;IAEtB,OAAOA,OAAO,KAAK;AACvB;AAEO,MAAMC,yBAAyB,CAClCC;IAEA,MAAM,EAAEC,eAAe,EAAEC,SAAS,EAAE,GAAGF;IAEvC,MAAM,EAAEG,SAAS,EAAE,GAAGC,wBAAwB;QAC1CH;QACAC;QACA,WAAWG;IACf;IAQA,MAAMC,iBAAiBJ,UAAU,OAAO,CAACK;IACzC,MAAMC,gBAAgBN,UAAU,OAAO,CAACO;IAExC,OAAO;QACH,WAAU,EAAEC,EAAE,EAAE;YACZ,OAAOP,UAAU,OAAMQ;gBACnB,MAAMC,QAAQf,OACV,MAAMK,UAAU,OAAO,CAACW,qBAAqB,OAAO,CAACF,OAAOD;gBAGhE,IAAI,CAACE,OACD,MAAM,IAAIE,MAAY,0BAA0B,oBAAoB;oBAChEJ;gBACJ;gBAGJ,OAAOK,qBAAqBH;YAChC;QACJ;QACA,aAAYZ,MAAM;YACd,OAAOG,UAAU,OAAMQ;gBACnB,MAAM,EAAEK,IAAI,EAAEC,KAAK,EAAE,GAAGjB;gBACxB,MAAMkB,YAAYjB,gBAAgB,WAAW,GAAG,EAAE;gBAElD,MAAMH,SAAS,MAAMI,UAAU,OAAO,CAACiB,0BAA0B,OAAO,CAACR,OAAO;oBAC5E,GAAGX,MAAM;oBACT,MAAMQ,cAAc,GAAG,CAAC;wBACpB,OAAOY,eAAeJ;wBACtB,QAAQL,MAAM,MAAM;oBACxB;oBACA,OAAOL,eAAe,GAAG,CAAC;wBACtB,OAAO;4BACH,GAAGW,KAAK;4BACRC;wBACJ;wBACA,QAAQP,MAAM,MAAM;oBACxB;gBACJ;gBACA,MAAM,EAAEU,OAAO,EAAEC,IAAI,EAAE,GAAGzB,OAAOC;gBAEjC,OAAO;oBAACuB,QAAQ,GAAG,CAACN;oBAA+BO;iBAAK;YAC5D;QACJ;QACA,cAAa,EAAEC,IAAI,EAAE;YACjB,OAAOpB,UAAU,OAAMQ;gBACnB,MAAMb,SAAS,MAAMI,UAAU,OAAO,CAACsB,oBAAoB,OAAO,CAACb,OAAO;oBACtE,IAAIY,KAAK,EAAE;oBACX,QAAQA;gBACZ;gBACA,MAAMX,QAAQf,OAAOC;gBACrB,OAAOiB,qBAAqBH;YAChC;QACJ;QACA,cAAa,EAAEF,EAAE,EAAEa,IAAI,EAAE;YACrB,OAAOpB,UAAU,OAAMQ;gBACnB,MAAMc,WAAW5B,OACb,MAAMK,UAAU,OAAO,CAACW,qBAAqB,OAAO,CAACF,OAAOD;gBAGhE,MAAMgB,QAAQ;oBAKV,GAAGC,KAAKF,UAAUG,kBAAkB;oBACpC,QAAQ;wBACJ,GAAGH,SAAS,MAAM;wBAClB,GAAGF,IAAI;oBACX;gBACJ;gBAEA,MAAMX,QAAQf,OACV,MAAMK,UAAU,OAAO,CAAC2B,oBAAoB,OAAO,CAAClB,OAAOc,SAAS,EAAE,EAAEC;gBAE5E,OAAOX,qBAAqBH;YAChC;QACJ;QACA,cAAa,EAAEF,EAAE,EAAE;YACf,OAAOP,UAAU,OAAMQ;gBACnBd,OAAO,MAAMK,UAAU,OAAO,CAAC4B,oBAAoB,OAAO,CAACnB,OAAOD;gBAClE,OAAO;YACX;QACJ;IACJ;AACJ"}
@@ -79,10 +79,15 @@ export interface AcoFolderLevelPermissionsStorageOperations {
79
79
  *******/
80
80
  export interface ICreateFlpTaskInput {
81
81
  folder: Folder;
82
+ /** Who created the folder. Their open admin tabs are told once the FLP record exists. */
83
+ notifyIdentityId?: string;
82
84
  }
83
85
  export interface IUpdateFlpTaskInput {
84
86
  folder: Folder;
85
- queued?: string[];
87
+ /** Folders whose whole subtree an earlier run of this task already wrote. */
88
+ completed?: string[];
89
+ /** Who changed the folder. Their open admin tabs are told once the whole subtree is written. */
90
+ notifyIdentityId?: string;
86
91
  }
87
92
  export interface IDeleteFlpTaskInput {
88
93
  folder: Folder;
@@ -1,16 +1,23 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { type ICreateFlpTaskInput } from "../../types.js";
3
3
  import { CreateFlpUseCase } from "../../features/flp/CreateFlp/index.js";
4
- declare class CreateFlpTaskImpl implements TaskDefinition.Interface<ICreateFlpTaskInput> {
4
+ import { NotifyFolderChangeUseCase } from "../../features/folder/NotifyFolderChange/index.js";
5
+ declare class CreateFlpTaskHandlerImpl implements TaskHandler.Interface<ICreateFlpTaskInput> {
5
6
  private createFlp;
7
+ private notifyFolderChange;
8
+ constructor(createFlp: CreateFlpUseCase.Interface, notifyFolderChange: NotifyFolderChangeUseCase.Interface);
9
+ run({ input, controller }: TaskHandler.RunParams<ICreateFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultContinue<ICreateFlpTaskInput> | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
10
+ }
11
+ declare class CreateFlpTaskImpl implements TaskDefinition.Interface {
6
12
  readonly id = "acoCreateFlp";
7
13
  readonly title = "ACO - Create FLP record";
8
14
  readonly description = "Synchronizes the FLP catalog by creating the FLP record based on the provided folder.";
9
15
  readonly databaseLogs = false;
10
16
  readonly isPrivate = true;
11
17
  readonly selfCleanup: ("onAbort" | "onSuccess")[];
12
- constructor(createFlp: CreateFlpUseCase.Interface);
13
- run({ input, controller }: TaskDefinition.RunParams<ICreateFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultContinue<ICreateFlpTaskInput> | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
18
+ handler: typeof CreateFlpTaskHandlerImpl & {
19
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
20
+ };
14
21
  }
15
22
  export declare const CreateFlpTask: typeof CreateFlpTaskImpl & {
16
23
  __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
@@ -1,36 +1,53 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { CREATE_FLP_TASK_ID } from "./index.js";
3
3
  import { CreateFlpUseCase } from "../../features/flp/CreateFlp/index.js";
4
- class CreateFlpTaskImpl {
5
- constructor(createFlp){
4
+ import { NotifyFolderChangeUseCase } from "../../features/folder/NotifyFolderChange/index.js";
5
+ class CreateFlpTaskHandlerImpl {
6
+ constructor(createFlp, notifyFolderChange){
6
7
  this.createFlp = createFlp;
7
- this.id = CREATE_FLP_TASK_ID;
8
- this.title = "ACO - Create FLP record";
9
- this.description = "Synchronizes the FLP catalog by creating the FLP record based on the provided folder.";
10
- this.databaseLogs = false;
11
- this.isPrivate = true;
12
- this.selfCleanup = [
13
- "onSuccess",
14
- "onAbort"
15
- ];
8
+ this.notifyFolderChange = notifyFolderChange;
16
9
  }
17
10
  async run({ input, controller }) {
18
11
  try {
19
12
  if (controller.runtime.isAborted()) return controller.response.aborted();
20
13
  if (controller.runtime.isCloseToTimeout()) return controller.response.continue(input);
21
14
  await this.createFlp.execute(input.folder);
15
+ if (input.notifyIdentityId) await this.notifyFolderChange.execute({
16
+ id: input.folder.id,
17
+ change: "created",
18
+ identityId: input.notifyIdentityId
19
+ });
22
20
  return controller.response.done("Task done: FLP record created.");
23
21
  } catch (error) {
24
22
  return controller.response.error(error);
25
23
  }
26
24
  }
27
25
  }
28
- const CreateFlpTask = TaskDefinition.createImplementation({
29
- implementation: CreateFlpTaskImpl,
26
+ const CreateFlpTaskHandler = TaskHandler.createImplementation({
27
+ implementation: CreateFlpTaskHandlerImpl,
30
28
  dependencies: [
31
- CreateFlpUseCase
29
+ CreateFlpUseCase,
30
+ NotifyFolderChangeUseCase
32
31
  ]
33
32
  });
33
+ class CreateFlpTaskImpl {
34
+ constructor(){
35
+ this.id = CREATE_FLP_TASK_ID;
36
+ this.title = "ACO - Create FLP record";
37
+ this.description = "Synchronizes the FLP catalog by creating the FLP record based on the provided folder.";
38
+ this.databaseLogs = false;
39
+ this.isPrivate = true;
40
+ this.selfCleanup = [
41
+ "onSuccess",
42
+ "onAbort"
43
+ ];
44
+ this.handler = CreateFlpTaskHandler;
45
+ }
46
+ }
47
+ const CreateFlpTask = TaskDefinition.createImplementation({
48
+ implementation: CreateFlpTaskImpl,
49
+ dependencies: []
50
+ });
34
51
  export { CreateFlpTask };
35
52
 
36
53
  //# sourceMappingURL=createFlp.task.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flp/tasks/createFlp.task.js","sources":["../../../src/flp/tasks/createFlp.task.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CREATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { type ICreateFlpTaskInput } from \"~/types.js\";\nimport { CreateFlpUseCase } from \"~/features/flp/CreateFlp/index.js\";\n\nclass CreateFlpTaskImpl implements TaskDefinition.Interface<ICreateFlpTaskInput> {\n public readonly id = CREATE_FLP_TASK_ID;\n public readonly title = \"ACO - Create FLP record\";\n public readonly description =\n \"Synchronizes the FLP catalog by creating the FLP record based on the provided folder.\";\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n constructor(private createFlp: CreateFlpUseCase.Interface) {}\n\n async run({ input, controller }: TaskDefinition.RunParams<ICreateFlpTaskInput>) {\n try {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n if (controller.runtime.isCloseToTimeout()) {\n return controller.response.continue(input);\n }\n\n await this.createFlp.execute(input.folder);\n\n return controller.response.done(\"Task done: FLP record created.\");\n } catch (error) {\n return controller.response.error(error);\n }\n }\n}\n\nexport const CreateFlpTask = TaskDefinition.createImplementation({\n implementation: CreateFlpTaskImpl,\n dependencies: [CreateFlpUseCase]\n});\n"],"names":["CreateFlpTaskImpl","createFlp","CREATE_FLP_TASK_ID","input","controller","error","CreateFlpTask","TaskDefinition","CreateFlpUseCase"],"mappings":";;;AAKA,MAAMA;IASF,YAAoBC,SAAqC,CAAE;aAAvCA,SAAS,GAATA;aARJ,EAAE,GAAGC;aACL,KAAK,GAAG;aACR,WAAW,GACvB;aACY,YAAY,GAAG;aACf,SAAS,GAAG;aACZ,WAAW,GAAG;YAAC;YAAsB;SAAmB;IAEZ;IAE5D,MAAM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAiD,EAAE;QAC5E,IAAI;YACA,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;YAGtC,IAAIA,WAAW,OAAO,CAAC,gBAAgB,IACnC,OAAOA,WAAW,QAAQ,CAAC,QAAQ,CAACD;YAGxC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACA,MAAM,MAAM;YAEzC,OAAOC,WAAW,QAAQ,CAAC,IAAI,CAAC;QACpC,EAAE,OAAOC,OAAO;YACZ,OAAOD,WAAW,QAAQ,CAAC,KAAK,CAACC;QACrC;IACJ;AACJ;AAEO,MAAMC,gBAAgBC,eAAe,oBAAoB,CAAC;IAC7D,gBAAgBP;IAChB,cAAc;QAACQ;KAAiB;AACpC"}
1
+ {"version":3,"file":"flp/tasks/createFlp.task.js","sources":["../../../src/flp/tasks/createFlp.task.ts"],"sourcesContent":["import {\n TaskDefinition,\n TaskHandler\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CREATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { type ICreateFlpTaskInput } from \"~/types.js\";\nimport { CreateFlpUseCase } from \"~/features/flp/CreateFlp/index.js\";\nimport { NotifyFolderChangeUseCase } from \"~/features/folder/NotifyFolderChange/index.js\";\n\nclass CreateFlpTaskHandlerImpl implements TaskHandler.Interface<ICreateFlpTaskInput> {\n constructor(\n private createFlp: CreateFlpUseCase.Interface,\n private notifyFolderChange: NotifyFolderChangeUseCase.Interface\n ) {}\n\n async run({ input, controller }: TaskHandler.RunParams<ICreateFlpTaskInput>) {\n try {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n if (controller.runtime.isCloseToTimeout()) {\n return controller.response.continue(input);\n }\n\n await this.createFlp.execute(input.folder);\n\n // Only now can the admin read the folder back with its permissions.\n if (input.notifyIdentityId) {\n await this.notifyFolderChange.execute({\n id: input.folder.id,\n change: \"created\",\n identityId: input.notifyIdentityId\n });\n }\n\n return controller.response.done(\"Task done: FLP record created.\");\n } catch (error) {\n return controller.response.error(error);\n }\n }\n}\n\nconst CreateFlpTaskHandler = TaskHandler.createImplementation({\n implementation: CreateFlpTaskHandlerImpl,\n dependencies: [CreateFlpUseCase, NotifyFolderChangeUseCase]\n});\n\nclass CreateFlpTaskImpl implements TaskDefinition.Interface {\n public readonly id = CREATE_FLP_TASK_ID;\n public readonly title = \"ACO - Create FLP record\";\n public readonly description =\n \"Synchronizes the FLP catalog by creating the FLP record based on the provided folder.\";\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n handler = CreateFlpTaskHandler;\n}\n\nexport const CreateFlpTask = TaskDefinition.createImplementation({\n implementation: CreateFlpTaskImpl,\n dependencies: []\n});\n"],"names":["CreateFlpTaskHandlerImpl","createFlp","notifyFolderChange","input","controller","error","CreateFlpTaskHandler","TaskHandler","CreateFlpUseCase","NotifyFolderChangeUseCase","CreateFlpTaskImpl","CREATE_FLP_TASK_ID","CreateFlpTask","TaskDefinition"],"mappings":";;;;AASA,MAAMA;IACF,YACYC,SAAqC,EACrCC,kBAAuD,CACjE;aAFUD,SAAS,GAATA;aACAC,kBAAkB,GAAlBA;IACT;IAEH,MAAM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAA8C,EAAE;QACzE,IAAI;YACA,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;YAGtC,IAAIA,WAAW,OAAO,CAAC,gBAAgB,IACnC,OAAOA,WAAW,QAAQ,CAAC,QAAQ,CAACD;YAGxC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACA,MAAM,MAAM;YAGzC,IAAIA,MAAM,gBAAgB,EACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBAClC,IAAIA,MAAM,MAAM,CAAC,EAAE;gBACnB,QAAQ;gBACR,YAAYA,MAAM,gBAAgB;YACtC;YAGJ,OAAOC,WAAW,QAAQ,CAAC,IAAI,CAAC;QACpC,EAAE,OAAOC,OAAO;YACZ,OAAOD,WAAW,QAAQ,CAAC,KAAK,CAACC;QACrC;IACJ;AACJ;AAEA,MAAMC,uBAAuBC,YAAY,oBAAoB,CAAC;IAC1D,gBAAgBP;IAChB,cAAc;QAACQ;QAAkBC;KAA0B;AAC/D;AAEA,MAAMC;;aACc,EAAE,GAAGC;aACL,KAAK,GAAG;aACR,WAAW,GACvB;aACY,YAAY,GAAG;aACf,SAAS,GAAG;aACZ,WAAW,GAAG;YAAC;YAAsB;SAAmB;aAExE,OAAO,GAAGL;;AACd;AAEO,MAAMM,gBAAgBC,eAAe,oBAAoB,CAAC;IAC7D,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
@@ -1,16 +1,21 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { type IDeleteFlpTaskInput } from "../../types.js";
3
3
  import { DeleteFlpUseCase } from "../../features/flp/DeleteFlp/index.js";
4
- declare class DeleteFlpTaskImpl implements TaskDefinition.Interface<IDeleteFlpTaskInput> {
4
+ declare class DeleteFlpTaskHandlerImpl implements TaskHandler.Interface<IDeleteFlpTaskInput> {
5
5
  private deleteFlp;
6
+ constructor(deleteFlp: DeleteFlpUseCase.Interface);
7
+ run({ input, controller }: TaskHandler.RunParams<IDeleteFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultContinue<IDeleteFlpTaskInput> | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
8
+ }
9
+ declare class DeleteFlpTaskImpl implements TaskDefinition.Interface {
6
10
  readonly id = "acoDeleteFlp";
7
11
  readonly title = "ACO - Delete FLP record";
8
12
  readonly description = "Synchronizes the FLP catalog by deleting the FLP record based on the provided folder.";
9
13
  readonly databaseLogs = false;
10
14
  readonly isPrivate = true;
11
15
  readonly selfCleanup: ("onAbort" | "onSuccess")[];
12
- constructor(deleteFlp: DeleteFlpUseCase.Interface);
13
- run({ input, controller }: TaskDefinition.RunParams<IDeleteFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultContinue<IDeleteFlpTaskInput> | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
16
+ handler: typeof DeleteFlpTaskHandlerImpl & {
17
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
18
+ };
14
19
  }
15
20
  export declare const DeleteFlpTask: typeof DeleteFlpTaskImpl & {
16
21
  __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
@@ -1,18 +1,9 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { DELETE_FLP_TASK_ID } from "./index.js";
3
3
  import { DeleteFlpUseCase } from "../../features/flp/DeleteFlp/index.js";
4
- class DeleteFlpTaskImpl {
4
+ class DeleteFlpTaskHandlerImpl {
5
5
  constructor(deleteFlp){
6
6
  this.deleteFlp = deleteFlp;
7
- this.id = DELETE_FLP_TASK_ID;
8
- this.title = "ACO - Delete FLP record";
9
- this.description = "Synchronizes the FLP catalog by deleting the FLP record based on the provided folder.";
10
- this.databaseLogs = false;
11
- this.isPrivate = true;
12
- this.selfCleanup = [
13
- "onSuccess",
14
- "onAbort"
15
- ];
16
7
  }
17
8
  async run({ input, controller }) {
18
9
  try {
@@ -25,12 +16,30 @@ class DeleteFlpTaskImpl {
25
16
  }
26
17
  }
27
18
  }
28
- const DeleteFlpTask = TaskDefinition.createImplementation({
29
- implementation: DeleteFlpTaskImpl,
19
+ const DeleteFlpTaskHandler = TaskHandler.createImplementation({
20
+ implementation: DeleteFlpTaskHandlerImpl,
30
21
  dependencies: [
31
22
  DeleteFlpUseCase
32
23
  ]
33
24
  });
25
+ class DeleteFlpTaskImpl {
26
+ constructor(){
27
+ this.id = DELETE_FLP_TASK_ID;
28
+ this.title = "ACO - Delete FLP record";
29
+ this.description = "Synchronizes the FLP catalog by deleting the FLP record based on the provided folder.";
30
+ this.databaseLogs = false;
31
+ this.isPrivate = true;
32
+ this.selfCleanup = [
33
+ "onSuccess",
34
+ "onAbort"
35
+ ];
36
+ this.handler = DeleteFlpTaskHandler;
37
+ }
38
+ }
39
+ const DeleteFlpTask = TaskDefinition.createImplementation({
40
+ implementation: DeleteFlpTaskImpl,
41
+ dependencies: []
42
+ });
34
43
  export { DeleteFlpTask };
35
44
 
36
45
  //# sourceMappingURL=deleteFlp.task.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flp/tasks/deleteFlp.task.js","sources":["../../../src/flp/tasks/deleteFlp.task.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { DELETE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { type IDeleteFlpTaskInput } from \"~/types.js\";\nimport { DeleteFlpUseCase } from \"~/features/flp/DeleteFlp/index.js\";\n\nclass DeleteFlpTaskImpl implements TaskDefinition.Interface<IDeleteFlpTaskInput> {\n public readonly id = DELETE_FLP_TASK_ID;\n public readonly title = \"ACO - Delete FLP record\";\n public readonly description =\n \"Synchronizes the FLP catalog by deleting the FLP record based on the provided folder.\";\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n constructor(private deleteFlp: DeleteFlpUseCase.Interface) {}\n\n async run({ input, controller }: TaskDefinition.RunParams<IDeleteFlpTaskInput>) {\n try {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n if (controller.runtime.isCloseToTimeout()) {\n return controller.response.continue(input);\n }\n\n await this.deleteFlp.execute(input.folder);\n\n return controller.response.done(\"Task done: FLP record deleted.\");\n } catch (error) {\n return controller.response.error(error);\n }\n }\n}\n\nexport const DeleteFlpTask = TaskDefinition.createImplementation({\n implementation: DeleteFlpTaskImpl,\n dependencies: [DeleteFlpUseCase]\n});\n"],"names":["DeleteFlpTaskImpl","deleteFlp","DELETE_FLP_TASK_ID","input","controller","error","DeleteFlpTask","TaskDefinition","DeleteFlpUseCase"],"mappings":";;;AAKA,MAAMA;IASF,YAAoBC,SAAqC,CAAE;aAAvCA,SAAS,GAATA;aARJ,EAAE,GAAGC;aACL,KAAK,GAAG;aACR,WAAW,GACvB;aACY,YAAY,GAAG;aACf,SAAS,GAAG;aACZ,WAAW,GAAG;YAAC;YAAsB;SAAmB;IAEZ;IAE5D,MAAM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAiD,EAAE;QAC5E,IAAI;YACA,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;YAGtC,IAAIA,WAAW,OAAO,CAAC,gBAAgB,IACnC,OAAOA,WAAW,QAAQ,CAAC,QAAQ,CAACD;YAGxC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACA,MAAM,MAAM;YAEzC,OAAOC,WAAW,QAAQ,CAAC,IAAI,CAAC;QACpC,EAAE,OAAOC,OAAO;YACZ,OAAOD,WAAW,QAAQ,CAAC,KAAK,CAACC;QACrC;IACJ;AACJ;AAEO,MAAMC,gBAAgBC,eAAe,oBAAoB,CAAC;IAC7D,gBAAgBP;IAChB,cAAc;QAACQ;KAAiB;AACpC"}
1
+ {"version":3,"file":"flp/tasks/deleteFlp.task.js","sources":["../../../src/flp/tasks/deleteFlp.task.ts"],"sourcesContent":["import {\n TaskDefinition,\n TaskHandler\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { DELETE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { type IDeleteFlpTaskInput } from \"~/types.js\";\nimport { DeleteFlpUseCase } from \"~/features/flp/DeleteFlp/index.js\";\n\nclass DeleteFlpTaskHandlerImpl implements TaskHandler.Interface<IDeleteFlpTaskInput> {\n constructor(private deleteFlp: DeleteFlpUseCase.Interface) {}\n\n async run({ input, controller }: TaskHandler.RunParams<IDeleteFlpTaskInput>) {\n try {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n if (controller.runtime.isCloseToTimeout()) {\n return controller.response.continue(input);\n }\n\n await this.deleteFlp.execute(input.folder);\n\n return controller.response.done(\"Task done: FLP record deleted.\");\n } catch (error) {\n return controller.response.error(error);\n }\n }\n}\n\nconst DeleteFlpTaskHandler = TaskHandler.createImplementation({\n implementation: DeleteFlpTaskHandlerImpl,\n dependencies: [DeleteFlpUseCase]\n});\n\nclass DeleteFlpTaskImpl implements TaskDefinition.Interface {\n public readonly id = DELETE_FLP_TASK_ID;\n public readonly title = \"ACO - Delete FLP record\";\n public readonly description =\n \"Synchronizes the FLP catalog by deleting the FLP record based on the provided folder.\";\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n handler = DeleteFlpTaskHandler;\n}\n\nexport const DeleteFlpTask = TaskDefinition.createImplementation({\n implementation: DeleteFlpTaskImpl,\n dependencies: []\n});\n"],"names":["DeleteFlpTaskHandlerImpl","deleteFlp","input","controller","error","DeleteFlpTaskHandler","TaskHandler","DeleteFlpUseCase","DeleteFlpTaskImpl","DELETE_FLP_TASK_ID","DeleteFlpTask","TaskDefinition"],"mappings":";;;AAQA,MAAMA;IACF,YAAoBC,SAAqC,CAAE;aAAvCA,SAAS,GAATA;IAAwC;IAE5D,MAAM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAA8C,EAAE;QACzE,IAAI;YACA,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;YAGtC,IAAIA,WAAW,OAAO,CAAC,gBAAgB,IACnC,OAAOA,WAAW,QAAQ,CAAC,QAAQ,CAACD;YAGxC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACA,MAAM,MAAM;YAEzC,OAAOC,WAAW,QAAQ,CAAC,IAAI,CAAC;QACpC,EAAE,OAAOC,OAAO;YACZ,OAAOD,WAAW,QAAQ,CAAC,KAAK,CAACC;QACrC;IACJ;AACJ;AAEA,MAAMC,uBAAuBC,YAAY,oBAAoB,CAAC;IAC1D,gBAAgBN;IAChB,cAAc;QAACO;KAAiB;AACpC;AAEA,MAAMC;;aACc,EAAE,GAAGC;aACL,KAAK,GAAG;aACR,WAAW,GACvB;aACY,YAAY,GAAG;aACf,SAAS,GAAG;aACZ,WAAW,GAAG;YAAC;YAAsB;SAAmB;aAExE,OAAO,GAAGJ;;AACd;AAEO,MAAMK,gBAAgBC,eAAe,oBAAoB,CAAC;IAC7D,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
@@ -2,4 +2,3 @@ export declare const CREATE_FLP_TASK_ID = "acoCreateFlp";
2
2
  export declare const DELETE_FLP_TASK_ID = "acoDeleteFlp";
3
3
  export declare const UPDATE_FLP_TASK_ID = "acoUpdateFlp";
4
4
  export declare const SYNC_FLP_TASK_ID = "acoSyncFlp";
5
- export declare const flpTasks: () => import("@webiny/api").ContextPlugin<import("@webiny/api/types.js").Context>[];
@@ -1,20 +1,7 @@
1
- import { CreateFlpTask } from "./createFlp.task.js";
2
- import { UpdateFlpTask } from "./updateFlp.task.js";
3
- import { DeleteFlpTask } from "./deleteFlp.task.js";
4
- import { SyncFlpTask } from "./syncFlp.task.js";
5
- import { createContextPlugin } from "@webiny/api";
6
1
  const CREATE_FLP_TASK_ID = "acoCreateFlp";
7
2
  const DELETE_FLP_TASK_ID = "acoDeleteFlp";
8
3
  const UPDATE_FLP_TASK_ID = "acoUpdateFlp";
9
4
  const SYNC_FLP_TASK_ID = "acoSyncFlp";
10
- const flpTasks = ()=>[
11
- createContextPlugin((context)=>{
12
- context.container.register(CreateFlpTask);
13
- context.container.register(UpdateFlpTask);
14
- context.container.register(DeleteFlpTask);
15
- context.container.register(SyncFlpTask);
16
- })
17
- ];
18
- export { CREATE_FLP_TASK_ID, DELETE_FLP_TASK_ID, SYNC_FLP_TASK_ID, UPDATE_FLP_TASK_ID, flpTasks };
5
+ export { CREATE_FLP_TASK_ID, DELETE_FLP_TASK_ID, SYNC_FLP_TASK_ID, UPDATE_FLP_TASK_ID };
19
6
 
20
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flp/tasks/index.js","sources":["../../../src/flp/tasks/index.ts"],"sourcesContent":["import { CreateFlpTask } from \"./createFlp.task.js\";\nimport { UpdateFlpTask } from \"./updateFlp.task.js\";\nimport { DeleteFlpTask } from \"./deleteFlp.task.js\";\nimport { SyncFlpTask } from \"./syncFlp.task.js\";\nimport { createContextPlugin } from \"@webiny/api\";\n\nexport const CREATE_FLP_TASK_ID = \"acoCreateFlp\";\nexport const DELETE_FLP_TASK_ID = \"acoDeleteFlp\";\nexport const UPDATE_FLP_TASK_ID = \"acoUpdateFlp\";\nexport const SYNC_FLP_TASK_ID = \"acoSyncFlp\";\n\nexport const flpTasks = () => {\n return [\n createContextPlugin(context => {\n context.container.register(CreateFlpTask);\n context.container.register(UpdateFlpTask);\n context.container.register(DeleteFlpTask);\n context.container.register(SyncFlpTask);\n })\n ];\n};\n"],"names":["CREATE_FLP_TASK_ID","DELETE_FLP_TASK_ID","UPDATE_FLP_TASK_ID","SYNC_FLP_TASK_ID","flpTasks","createContextPlugin","context","CreateFlpTask","UpdateFlpTask","DeleteFlpTask","SyncFlpTask"],"mappings":";;;;;AAMO,MAAMA,qBAAqB;AAC3B,MAAMC,qBAAqB;AAC3B,MAAMC,qBAAqB;AAC3B,MAAMC,mBAAmB;AAEzB,MAAMC,WAAW,IACb;QACHC,oBAAoBC,CAAAA;YAChBA,QAAQ,SAAS,CAAC,QAAQ,CAACC;YAC3BD,QAAQ,SAAS,CAAC,QAAQ,CAACE;YAC3BF,QAAQ,SAAS,CAAC,QAAQ,CAACG;YAC3BH,QAAQ,SAAS,CAAC,QAAQ,CAACI;QAC/B;KACH"}
1
+ {"version":3,"file":"flp/tasks/index.js","sources":["../../../src/flp/tasks/index.ts"],"sourcesContent":["export const CREATE_FLP_TASK_ID = \"acoCreateFlp\";\nexport const DELETE_FLP_TASK_ID = \"acoDeleteFlp\";\nexport const UPDATE_FLP_TASK_ID = \"acoUpdateFlp\";\nexport const SYNC_FLP_TASK_ID = \"acoSyncFlp\";\n"],"names":["CREATE_FLP_TASK_ID","DELETE_FLP_TASK_ID","UPDATE_FLP_TASK_ID","SYNC_FLP_TASK_ID"],"mappings":"AAAO,MAAMA,qBAAqB;AAC3B,MAAMC,qBAAqB;AAC3B,MAAMC,qBAAqB;AAC3B,MAAMC,mBAAmB"}
@@ -1,20 +1,25 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
3
3
  import { type ISyncFlpTaskInput } from "../../types.js";
4
4
  import { GetFolderUseCase } from "../../features/folder/GetFolder/index.js";
5
5
  import { ListFoldersUseCase } from "../../features/folder/ListFolders/index.js";
6
- declare class SyncFlpTaskImpl implements TaskDefinition.Interface<ISyncFlpTaskInput> {
6
+ declare class SyncFlpTaskHandlerImpl implements TaskHandler.Interface<ISyncFlpTaskInput> {
7
7
  private getFolder;
8
8
  private listFolders;
9
9
  private listModels;
10
+ constructor(getFolder: GetFolderUseCase.Interface, listFolders: ListFoldersUseCase.Interface, listModels: ListModelsUseCase.Interface);
11
+ run({ input, controller }: TaskHandler.RunParams<ISyncFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
12
+ }
13
+ declare class SyncFlpTaskImpl implements TaskDefinition.Interface {
10
14
  readonly id = "acoSyncFlp";
11
15
  readonly title = "ACO - Sync FLP record";
12
16
  readonly description = "Synchronizes the FLP catalog by updating the FLP record and its descendants.";
13
17
  readonly databaseLogs = false;
14
18
  readonly isPrivate = true;
15
19
  readonly selfCleanup: ("onAbort" | "onSuccess")[];
16
- constructor(getFolder: GetFolderUseCase.Interface, listFolders: ListFoldersUseCase.Interface, listModels: ListModelsUseCase.Interface);
17
- run({ input, controller }: TaskDefinition.RunParams<ISyncFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
20
+ handler: typeof SyncFlpTaskHandlerImpl & {
21
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
22
+ };
18
23
  }
19
24
  export declare const SyncFlpTask: typeof SyncFlpTaskImpl & {
20
25
  __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
@@ -1,23 +1,14 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
3
3
  import { SYNC_FLP_TASK_ID, UPDATE_FLP_TASK_ID } from "./index.js";
4
4
  import { FM_FILE_TYPE } from "../../constants.js";
5
5
  import { GetFolderUseCase } from "../../features/folder/GetFolder/index.js";
6
6
  import { ListFoldersUseCase } from "../../features/folder/ListFolders/index.js";
7
- class SyncFlpTaskImpl {
7
+ class SyncFlpTaskHandlerImpl {
8
8
  constructor(getFolder, listFolders, listModels){
9
9
  this.getFolder = getFolder;
10
10
  this.listFolders = listFolders;
11
11
  this.listModels = listModels;
12
- this.id = SYNC_FLP_TASK_ID;
13
- this.title = "ACO - Sync FLP record";
14
- this.description = "Synchronizes the FLP catalog by updating the FLP record and its descendants.";
15
- this.databaseLogs = false;
16
- this.isPrivate = true;
17
- this.selfCleanup = [
18
- "onSuccess",
19
- "onAbort"
20
- ];
21
12
  }
22
13
  async run({ input, controller }) {
23
14
  try {
@@ -99,14 +90,32 @@ class SyncFlpTaskImpl {
99
90
  }
100
91
  }
101
92
  }
102
- const SyncFlpTask = TaskDefinition.createImplementation({
103
- implementation: SyncFlpTaskImpl,
93
+ const SyncFlpTaskHandler = TaskHandler.createImplementation({
94
+ implementation: SyncFlpTaskHandlerImpl,
104
95
  dependencies: [
105
96
  GetFolderUseCase,
106
97
  ListFoldersUseCase,
107
98
  ListModelsUseCase
108
99
  ]
109
100
  });
101
+ class SyncFlpTaskImpl {
102
+ constructor(){
103
+ this.id = SYNC_FLP_TASK_ID;
104
+ this.title = "ACO - Sync FLP record";
105
+ this.description = "Synchronizes the FLP catalog by updating the FLP record and its descendants.";
106
+ this.databaseLogs = false;
107
+ this.isPrivate = true;
108
+ this.selfCleanup = [
109
+ "onSuccess",
110
+ "onAbort"
111
+ ];
112
+ this.handler = SyncFlpTaskHandler;
113
+ }
114
+ }
115
+ const SyncFlpTask = TaskDefinition.createImplementation({
116
+ implementation: SyncFlpTaskImpl,
117
+ dependencies: []
118
+ });
110
119
  export { SyncFlpTask };
111
120
 
112
121
  //# sourceMappingURL=syncFlp.task.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flp/tasks/syncFlp.task.js","sources":["../../../src/flp/tasks/syncFlp.task.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels/index.js\";\nimport { SYNC_FLP_TASK_ID, UPDATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { type ISyncFlpTaskInput, type IUpdateFlpTaskInput } from \"~/types.js\";\nimport { FM_FILE_TYPE } from \"~/constants.js\";\nimport { GetFolderUseCase } from \"~/features/folder/GetFolder/index.js\";\nimport { ListFoldersUseCase } from \"~/features/folder/ListFolders/index.js\";\n\nclass SyncFlpTaskImpl implements TaskDefinition.Interface<ISyncFlpTaskInput> {\n public readonly id = SYNC_FLP_TASK_ID;\n public readonly title = \"ACO - Sync FLP record\";\n public readonly description =\n \"Synchronizes the FLP catalog by updating the FLP record and its descendants.\";\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n public constructor(\n private getFolder: GetFolderUseCase.Interface,\n private listFolders: ListFoldersUseCase.Interface,\n private listModels: ListModelsUseCase.Interface\n ) {}\n\n async run({ input, controller }: TaskDefinition.RunParams<ISyncFlpTaskInput>) {\n try {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n /**\n * `folderId` provided in the task input. We need to:\n *\n * - update the FLP records for the found folder and all its descendants.\n */\n if (input.folderId) {\n const result = await this.getFolder.execute(input.folderId);\n if (result.isFail()) {\n return controller.response.error(result.error);\n }\n const folder = result.value;\n\n await controller.task.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n\n return controller.response.done(\n `Task completed successfully: all FLP records for folderId \"${input.folderId}\" and its children have been queued to be synchronized.`\n );\n }\n\n /**\n * Full update required. We need to:\n *\n * - list cms models to collect their types, together with the default ones [FM_FILE_TYPE]\n * - list all root folders\n * - update the FLP records for the found folders and all its descendants.\n */\n if (input.type && input.type === \"*\") {\n // Some folder types are fixed: pages and files.\n const folderTypes = [FM_FILE_TYPE];\n\n // List all non-private models\n const modelsResult = await this.listModels.execute();\n if (modelsResult.isOk()) {\n const models = modelsResult.value;\n for (const model of models) {\n folderTypes.push(`cms:${model.modelId}`);\n }\n }\n\n for (const folderType of folderTypes) {\n const result = await this.listFolders.execute({\n where: {\n type: folderType,\n parentId: null\n }\n });\n if (result.isFail()) {\n await controller.logger.error({\n message: `Failed to list root folders for type ${folderType}`,\n data: {\n type: folderType,\n error: result.error\n }\n });\n continue;\n }\n\n const { folders } = result.value;\n\n for (const folder of folders) {\n await controller.task.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n }\n\n await controller.logger.info({\n message: `FLP Update task triggered for type ${folderType}`,\n data: {\n type: folderType\n }\n });\n }\n\n return controller.response.done(\n `Task completed successfully: all FLP records have been queued to be synchronized.`\n );\n }\n\n /**\n * `type` provided in the task input. We need to:\n *\n * - list all root folders for the provided type\n * - update the FLP records for the found folders and all its descendants.\n */\n if (input.type) {\n const result = await this.listFolders.execute({\n where: {\n type: input.type!,\n parentId: null\n }\n });\n if (result.isFail()) {\n return controller.response.error(result.error);\n }\n\n const { folders } = result.value;\n\n for (const folder of folders) {\n await controller.task.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n }\n\n return controller.response.done(\n `Task completed successfully: all FLP records for type \"${input.type}\" have been queued to be synchronized.`\n );\n }\n\n return controller.response.error(\n \"Invalid input: please provide either `type` or `folderId`.\"\n );\n } catch (error) {\n return controller.response.error(error);\n }\n }\n}\n\nexport const SyncFlpTask = TaskDefinition.createImplementation({\n implementation: SyncFlpTaskImpl,\n dependencies: [GetFolderUseCase, ListFoldersUseCase, ListModelsUseCase]\n});\n"],"names":["SyncFlpTaskImpl","getFolder","listFolders","listModels","SYNC_FLP_TASK_ID","input","controller","result","folder","UPDATE_FLP_TASK_ID","folderTypes","FM_FILE_TYPE","modelsResult","models","model","folderType","folders","error","SyncFlpTask","TaskDefinition","GetFolderUseCase","ListFoldersUseCase","ListModelsUseCase"],"mappings":"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"}
1
+ {"version":3,"file":"flp/tasks/syncFlp.task.js","sources":["../../../src/flp/tasks/syncFlp.task.ts"],"sourcesContent":["import {\n TaskDefinition,\n TaskHandler\n} from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels/index.js\";\nimport { SYNC_FLP_TASK_ID, UPDATE_FLP_TASK_ID } from \"~/flp/tasks/index.js\";\nimport { type ISyncFlpTaskInput, type IUpdateFlpTaskInput } from \"~/types.js\";\nimport { FM_FILE_TYPE } from \"~/constants.js\";\nimport { GetFolderUseCase } from \"~/features/folder/GetFolder/index.js\";\nimport { ListFoldersUseCase } from \"~/features/folder/ListFolders/index.js\";\n\nclass SyncFlpTaskHandlerImpl implements TaskHandler.Interface<ISyncFlpTaskInput> {\n public constructor(\n private getFolder: GetFolderUseCase.Interface,\n private listFolders: ListFoldersUseCase.Interface,\n private listModels: ListModelsUseCase.Interface\n ) {}\n\n async run({ input, controller }: TaskHandler.RunParams<ISyncFlpTaskInput>) {\n try {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n /**\n * `folderId` provided in the task input. We need to:\n *\n * - update the FLP records for the found folder and all its descendants.\n */\n if (input.folderId) {\n const result = await this.getFolder.execute(input.folderId);\n if (result.isFail()) {\n return controller.response.error(result.error);\n }\n const folder = result.value;\n\n await controller.task.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n\n return controller.response.done(\n `Task completed successfully: all FLP records for folderId \"${input.folderId}\" and its children have been queued to be synchronized.`\n );\n }\n\n /**\n * Full update required. We need to:\n *\n * - list cms models to collect their types, together with the default ones [FM_FILE_TYPE]\n * - list all root folders\n * - update the FLP records for the found folders and all its descendants.\n */\n if (input.type && input.type === \"*\") {\n // Some folder types are fixed: pages and files.\n const folderTypes = [FM_FILE_TYPE];\n\n // List all non-private models\n const modelsResult = await this.listModels.execute();\n if (modelsResult.isOk()) {\n const models = modelsResult.value;\n for (const model of models) {\n folderTypes.push(`cms:${model.modelId}`);\n }\n }\n\n for (const folderType of folderTypes) {\n const result = await this.listFolders.execute({\n where: {\n type: folderType,\n parentId: null\n }\n });\n if (result.isFail()) {\n await controller.logger.error({\n message: `Failed to list root folders for type ${folderType}`,\n data: {\n type: folderType,\n error: result.error\n }\n });\n continue;\n }\n\n const { folders } = result.value;\n\n for (const folder of folders) {\n await controller.task.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n }\n\n await controller.logger.info({\n message: `FLP Update task triggered for type ${folderType}`,\n data: {\n type: folderType\n }\n });\n }\n\n return controller.response.done(\n `Task completed successfully: all FLP records have been queued to be synchronized.`\n );\n }\n\n /**\n * `type` provided in the task input. We need to:\n *\n * - list all root folders for the provided type\n * - update the FLP records for the found folders and all its descendants.\n */\n if (input.type) {\n const result = await this.listFolders.execute({\n where: {\n type: input.type!,\n parentId: null\n }\n });\n if (result.isFail()) {\n return controller.response.error(result.error);\n }\n\n const { folders } = result.value;\n\n for (const folder of folders) {\n await controller.task.trigger<IUpdateFlpTaskInput>({\n definition: UPDATE_FLP_TASK_ID,\n input: {\n folder\n }\n });\n }\n\n return controller.response.done(\n `Task completed successfully: all FLP records for type \"${input.type}\" have been queued to be synchronized.`\n );\n }\n\n return controller.response.error(\n \"Invalid input: please provide either `type` or `folderId`.\"\n );\n } catch (error) {\n return controller.response.error(error);\n }\n }\n}\n\nconst SyncFlpTaskHandler = TaskHandler.createImplementation({\n implementation: SyncFlpTaskHandlerImpl,\n dependencies: [GetFolderUseCase, ListFoldersUseCase, ListModelsUseCase]\n});\n\nclass SyncFlpTaskImpl implements TaskDefinition.Interface {\n public readonly id = SYNC_FLP_TASK_ID;\n public readonly title = \"ACO - Sync FLP record\";\n public readonly description =\n \"Synchronizes the FLP catalog by updating the FLP record and its descendants.\";\n public readonly databaseLogs = false;\n public readonly isPrivate = true;\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n handler = SyncFlpTaskHandler;\n}\n\nexport const SyncFlpTask = TaskDefinition.createImplementation({\n implementation: SyncFlpTaskImpl,\n dependencies: []\n});\n"],"names":["SyncFlpTaskHandlerImpl","getFolder","listFolders","listModels","input","controller","result","folder","UPDATE_FLP_TASK_ID","folderTypes","FM_FILE_TYPE","modelsResult","models","model","folderType","folders","error","SyncFlpTaskHandler","TaskHandler","GetFolderUseCase","ListFoldersUseCase","ListModelsUseCase","SyncFlpTaskImpl","SYNC_FLP_TASK_ID","SyncFlpTask","TaskDefinition"],"mappings":"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"}
@@ -1,16 +1,23 @@
1
- import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
1
+ import { TaskDefinition, TaskHandler } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
2
  import { type IUpdateFlpTaskInput } from "../../types.js";
3
3
  import { UpdateFlpUseCase } from "../../features/flp/UpdateFlp/index.js";
4
- declare class UpdateFlpTaskImpl implements TaskDefinition.Interface<IUpdateFlpTaskInput> {
4
+ import { NotifyFolderChangeUseCase } from "../../features/folder/NotifyFolderChange/index.js";
5
+ declare class UpdateFlpTaskHandlerImpl implements TaskHandler.Interface<IUpdateFlpTaskInput> {
5
6
  private updateFlp;
7
+ private notifyFolderChange;
8
+ constructor(updateFlp: UpdateFlpUseCase.Interface, notifyFolderChange: NotifyFolderChangeUseCase.Interface);
9
+ run({ input, controller }: TaskHandler.RunParams<IUpdateFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultContinue<IUpdateFlpTaskInput> | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
10
+ }
11
+ declare class UpdateFlpTaskImpl implements TaskDefinition.Interface {
6
12
  readonly id = "acoUpdateFlp";
7
13
  readonly title = "ACO - Update FLP record";
8
14
  readonly description = "Synchronizes the FLP catalog by updating the FLP record and its descendants based on the provided folder.";
9
15
  readonly databaseLogs = false;
10
16
  readonly isPrivate = true;
11
17
  readonly selfCleanup: ("onAbort" | "onSuccess")[];
12
- constructor(updateFlp: UpdateFlpUseCase.Interface);
13
- run({ input, controller }: TaskDefinition.RunParams<IUpdateFlpTaskInput>): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultAborted | import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskResultError | TaskDefinition.ResultDone<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
18
+ handler: typeof UpdateFlpTaskHandlerImpl & {
19
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskHandler<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;
20
+ };
14
21
  }
15
22
  export declare const UpdateFlpTask: typeof UpdateFlpTaskImpl & {
16
23
  __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions").ITaskOutput>>;