@webiny/api-apw 0.0.0-unstable.d16f688daf → 0.0.0-unstable.d7f521b032

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/ApwChangeRequestNotification.js +0 -10
  2. package/ApwChangeRequestNotification.js.map +1 -1
  3. package/ApwCommentNotification.js +0 -10
  4. package/ApwCommentNotification.js.map +1 -1
  5. package/ApwContentReviewNotification.js +0 -10
  6. package/ApwContentReviewNotification.js.map +1 -1
  7. package/ApwContentUrlPlugin.js +0 -10
  8. package/ApwContentUrlPlugin.js.map +1 -1
  9. package/ContentApwSettingsPlugin.js +0 -5
  10. package/ContentApwSettingsPlugin.js.map +1 -1
  11. package/crud/createChangeRequestMethods.js +4 -11
  12. package/crud/createChangeRequestMethods.js.map +1 -1
  13. package/crud/createCommentMethods.js +4 -12
  14. package/crud/createCommentMethods.js.map +1 -1
  15. package/crud/createContentReviewMethods.js +20 -84
  16. package/crud/createContentReviewMethods.js.map +1 -1
  17. package/crud/createReviewerMethods.js +4 -12
  18. package/crud/createReviewerMethods.js.map +1 -1
  19. package/crud/createWorkflowMethods.js +4 -17
  20. package/crud/createWorkflowMethods.js.map +1 -1
  21. package/crud/index.js +0 -25
  22. package/crud/index.js.map +1 -1
  23. package/crud/utils.js +0 -28
  24. package/crud/utils.js.map +1 -1
  25. package/index.d.ts +1 -2
  26. package/index.js +1 -15
  27. package/index.js.map +1 -1
  28. package/package.json +34 -34
  29. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +0 -15
  30. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -1
  31. package/plugins/cms/apwEntryPlugins.js +0 -8
  32. package/plugins/cms/apwEntryPlugins.js.map +1 -1
  33. package/plugins/cms/index.js +0 -13
  34. package/plugins/cms/index.js.map +1 -1
  35. package/plugins/cms/linkContentReviewToEntry.js +0 -17
  36. package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
  37. package/plugins/cms/linkWorkflowToEntry.js +2 -31
  38. package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
  39. package/plugins/cms/notifications/changeRequestNotification.js +0 -4
  40. package/plugins/cms/notifications/changeRequestNotification.js.map +1 -1
  41. package/plugins/cms/notifications/commentNotification.js +0 -4
  42. package/plugins/cms/notifications/commentNotification.js.map +1 -1
  43. package/plugins/cms/notifications/contentReviewNotification.js +0 -4
  44. package/plugins/cms/notifications/contentReviewNotification.js.map +1 -1
  45. package/plugins/cms/notifications/contentUrl.js +1 -8
  46. package/plugins/cms/notifications/contentUrl.js.map +1 -1
  47. package/plugins/cms/triggerContentReview.js +0 -14
  48. package/plugins/cms/triggerContentReview.js.map +1 -1
  49. package/plugins/cms/updateContentReviewStatus.js +0 -18
  50. package/plugins/cms/updateContentReviewStatus.js.map +1 -1
  51. package/plugins/cms/utils.js +2 -47
  52. package/plugins/cms/utils.js.map +1 -1
  53. package/plugins/context.d.ts +0 -1
  54. package/plugins/context.js +2 -47
  55. package/plugins/context.js.map +1 -1
  56. package/plugins/graphql/changeRequest.gql.js +1 -8
  57. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  58. package/plugins/graphql/comment.gql.js +1 -8
  59. package/plugins/graphql/comment.gql.js.map +1 -1
  60. package/plugins/graphql/contentReview.gql.js +1 -20
  61. package/plugins/graphql/contentReview.gql.js.map +1 -1
  62. package/plugins/graphql/reviewer.gql.js +1 -8
  63. package/plugins/graphql/reviewer.gql.js.map +1 -1
  64. package/plugins/graphql/workflow.gql.js +1 -8
  65. package/plugins/graphql/workflow.gql.js.map +1 -1
  66. package/plugins/graphql.js +2 -17
  67. package/plugins/graphql.js.map +1 -1
  68. package/plugins/hooks/createReviewerFromIdentity.js +2 -11
  69. package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
  70. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +1 -9
  71. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
  72. package/plugins/hooks/deleteCommentsAfterChangeRequest.js +1 -8
  73. package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
  74. package/plugins/hooks/index.js +0 -14
  75. package/plugins/hooks/index.js.map +1 -1
  76. package/plugins/hooks/initializeContentReviewSteps.js +10 -17
  77. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  78. package/plugins/hooks/initializeNotifications.js +0 -5
  79. package/plugins/hooks/initializeNotifications.js.map +1 -1
  80. package/plugins/hooks/listContentReviews.js +0 -12
  81. package/plugins/hooks/listContentReviews.js.map +1 -1
  82. package/plugins/hooks/notifications/appUrl.js +0 -4
  83. package/plugins/hooks/notifications/appUrl.js.map +1 -1
  84. package/plugins/hooks/notifications/changeRequestAfterCreate.js +0 -28
  85. package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
  86. package/plugins/hooks/notifications/changeRequestUrl.js +0 -4
  87. package/plugins/hooks/notifications/changeRequestUrl.js.map +1 -1
  88. package/plugins/hooks/notifications/commentAfterCreate.js +0 -30
  89. package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
  90. package/plugins/hooks/notifications/commentUrl.js +0 -4
  91. package/plugins/hooks/notifications/commentUrl.js.map +1 -1
  92. package/plugins/hooks/notifications/contentReviewAfterCreate.js +1 -24
  93. package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
  94. package/plugins/hooks/notifications/contentReviewUrl.js +0 -4
  95. package/plugins/hooks/notifications/contentReviewUrl.js.map +1 -1
  96. package/plugins/hooks/notifications/contentUrl.js +0 -5
  97. package/plugins/hooks/notifications/contentUrl.js.map +1 -1
  98. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js +0 -4
  99. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js.map +1 -1
  100. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js +0 -4
  101. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js.map +1 -1
  102. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js +0 -4
  103. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js.map +1 -1
  104. package/plugins/hooks/notifications/reviewers.js +0 -7
  105. package/plugins/hooks/notifications/reviewers.js.map +1 -1
  106. package/plugins/hooks/notifications/sendChangeRequestNotification.js +0 -11
  107. package/plugins/hooks/notifications/sendChangeRequestNotification.js.map +1 -1
  108. package/plugins/hooks/notifications/sendCommentNotification.js +0 -11
  109. package/plugins/hooks/notifications/sendCommentNotification.js.map +1 -1
  110. package/plugins/hooks/notifications/sendContentReviewNotification.js +0 -11
  111. package/plugins/hooks/notifications/sendContentReviewNotification.js.map +1 -1
  112. package/plugins/hooks/updatePendingChangeRequests.js +0 -8
  113. package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
  114. package/plugins/hooks/updateTotalComments.js +0 -9
  115. package/plugins/hooks/updateTotalComments.js.map +1 -1
  116. package/plugins/hooks/validateChangeRequest.js +0 -16
  117. package/plugins/hooks/validateChangeRequest.js.map +1 -1
  118. package/plugins/hooks/validateComment.js +1 -12
  119. package/plugins/hooks/validateComment.js.map +1 -1
  120. package/plugins/hooks/validateContentReview.js +0 -6
  121. package/plugins/hooks/validateContentReview.js.map +1 -1
  122. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +0 -15
  123. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -1
  124. package/plugins/pageBuilder/apwContentPagePlugins.js +0 -4
  125. package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -1
  126. package/plugins/pageBuilder/extendPbPageSettingsSchema.js +1 -6
  127. package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -1
  128. package/plugins/pageBuilder/index.js +0 -11
  129. package/plugins/pageBuilder/index.js.map +1 -1
  130. package/plugins/pageBuilder/linkContentReviewToPage.js +0 -16
  131. package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
  132. package/plugins/pageBuilder/linkWorkflowToPage.js +1 -31
  133. package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -1
  134. package/plugins/pageBuilder/notifications/changeRequestNotification.js +0 -4
  135. package/plugins/pageBuilder/notifications/changeRequestNotification.js.map +1 -1
  136. package/plugins/pageBuilder/notifications/commentNotification.js +0 -4
  137. package/plugins/pageBuilder/notifications/commentNotification.js.map +1 -1
  138. package/plugins/pageBuilder/notifications/contentReviewNotification.js +0 -4
  139. package/plugins/pageBuilder/notifications/contentReviewNotification.js.map +1 -1
  140. package/plugins/pageBuilder/notifications/contentUrl.js +1 -7
  141. package/plugins/pageBuilder/notifications/contentUrl.js.map +1 -1
  142. package/plugins/pageBuilder/triggerContentReview.js +0 -11
  143. package/plugins/pageBuilder/triggerContentReview.js.map +1 -1
  144. package/plugins/pageBuilder/updateContentReviewStatus.js +0 -12
  145. package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
  146. package/plugins/pageBuilder/utils.js +1 -35
  147. package/plugins/pageBuilder/utils.js.map +1 -1
  148. package/plugins/utils.js +0 -43
  149. package/plugins/utils.js.map +1 -1
  150. package/scheduler/createScheduleActionMethods.js +1 -20
  151. package/scheduler/createScheduleActionMethods.js.map +1 -1
  152. package/scheduler/handlers/executeAction/index.d.ts +1 -1
  153. package/scheduler/handlers/executeAction/index.js +19 -34
  154. package/scheduler/handlers/executeAction/index.js.map +1 -1
  155. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.d.ts +6 -0
  156. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +14 -5
  157. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
  158. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.d.ts +2 -3
  159. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +7 -23
  160. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
  161. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.d.ts +2 -2
  162. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +7 -86
  163. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
  164. package/scheduler/handlers/executeAction/security.js +0 -11
  165. package/scheduler/handlers/executeAction/security.js.map +1 -1
  166. package/scheduler/handlers/scheduleAction/index.d.ts +1 -1
  167. package/scheduler/handlers/scheduleAction/index.js +5 -25
  168. package/scheduler/handlers/scheduleAction/index.js.map +1 -1
  169. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +2 -23
  170. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
  171. package/scheduler/handlers/utils.d.ts +1 -2
  172. package/scheduler/handlers/utils.js +3 -41
  173. package/scheduler/handlers/utils.js.map +1 -1
  174. package/scheduler/index.js +0 -3
  175. package/scheduler/index.js.map +1 -1
  176. package/scheduler/types.js +0 -6
  177. package/scheduler/types.js.map +1 -1
  178. package/storageOperations/changeRequestStorageOperations.js +0 -19
  179. package/storageOperations/changeRequestStorageOperations.js.map +1 -1
  180. package/storageOperations/commentStorageOperations.js +0 -21
  181. package/storageOperations/commentStorageOperations.js.map +1 -1
  182. package/storageOperations/contentReviewStorageOperations.js +0 -17
  183. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  184. package/storageOperations/index.js +0 -14
  185. package/storageOperations/index.js.map +1 -1
  186. package/storageOperations/models/changeRequest.model.js +0 -9
  187. package/storageOperations/models/changeRequest.model.js.map +1 -1
  188. package/storageOperations/models/comment.model.js +0 -8
  189. package/storageOperations/models/comment.model.js.map +1 -1
  190. package/storageOperations/models/contentModelPluginFactory.d.ts +0 -7
  191. package/storageOperations/models/contentModelPluginFactory.js +1 -10
  192. package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
  193. package/storageOperations/models/contentReview.model.js +0 -26
  194. package/storageOperations/models/contentReview.model.js.map +1 -1
  195. package/storageOperations/models/index.js +2 -26
  196. package/storageOperations/models/index.js.map +1 -1
  197. package/storageOperations/models/reviewer.model.js +0 -8
  198. package/storageOperations/models/reviewer.model.js.map +1 -1
  199. package/storageOperations/models/utils.js +0 -4
  200. package/storageOperations/models/utils.js.map +1 -1
  201. package/storageOperations/models/workflow.model.js +0 -23
  202. package/storageOperations/models/workflow.model.js.map +1 -1
  203. package/storageOperations/reviewerStorageOperations.js +0 -17
  204. package/storageOperations/reviewerStorageOperations.js.map +1 -1
  205. package/storageOperations/workflowStorageOperations.js +0 -19
  206. package/storageOperations/workflowStorageOperations.js.map +1 -1
  207. package/types.js +0 -14
  208. package/types.js.map +1 -1
  209. package/utils/contentApwSettingsPlugin.js +0 -6
  210. package/utils/contentApwSettingsPlugin.js.map +1 -1
  211. package/utils/errors.js +0 -17
  212. package/utils/errors.js.map +1 -1
  213. package/utils/fieldResolver.js +2 -12
  214. package/utils/fieldResolver.js.map +1 -1
  215. package/utils/resolve.d.ts +1 -1
  216. package/utils/resolve.js +0 -3
  217. package/utils/resolve.js.map +1 -1
package/plugins/utils.js CHANGED
@@ -1,44 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.workflowByPrecedenceDesc = exports.workflowByCreatedOnDesc = exports.updateContentReviewStep = exports.updateContentReview = exports.safelyGetContentReview = exports.isInstallationPending = exports.hasReviewer = exports.getValue = exports.getNextStepStatus = exports.getContentReviewStepInitialStatus = exports.extractContentReviewIdAndStep = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _get = _interopRequireDefault(require("lodash/get"));
13
-
14
10
  var _types = require("../types");
15
-
16
11
  const hasReviewer = async params => {
17
12
  const {
18
13
  getReviewer,
19
14
  identity,
20
15
  step
21
16
  } = params;
22
-
23
17
  for (const stepReviewer of step.reviewers) {
24
18
  const entry = await getReviewer(stepReviewer.id);
25
-
26
19
  if (entry.identityId === identity.id) {
27
20
  return true;
28
21
  }
29
22
  }
30
-
31
23
  return false;
32
24
  };
33
-
34
25
  exports.hasReviewer = hasReviewer;
35
-
36
26
  const getValue = (object, key) => {
37
27
  return (0, _get.default)(object, `values.${key}`);
38
28
  };
39
-
40
29
  exports.getValue = getValue;
41
-
42
30
  const getContentReviewStepInitialStatus = (workflowSteps, index, previousStepStatus) => {
43
31
  /**
44
32
  * Always set first step 'active' by default.
@@ -46,32 +34,23 @@ const getContentReviewStepInitialStatus = (workflowSteps, index, previousStepSta
46
34
  if (index === 0) {
47
35
  return _types.ApwContentReviewStepStatus.ACTIVE;
48
36
  }
49
-
50
37
  const previousStep = workflowSteps[index - 1];
51
-
52
38
  if (previousStepStatus === _types.ApwContentReviewStepStatus.ACTIVE && previousStep.type !== _types.ApwWorkflowStepTypes.MANDATORY_BLOCKING) {
53
39
  return _types.ApwContentReviewStepStatus.ACTIVE;
54
40
  }
55
-
56
41
  return _types.ApwContentReviewStepStatus.INACTIVE;
57
42
  };
58
-
59
43
  exports.getContentReviewStepInitialStatus = getContentReviewStepInitialStatus;
60
-
61
44
  const getNextStepStatus = (previousStepType, previousStepStatus) => {
62
45
  if (previousStepStatus === _types.ApwContentReviewStepStatus.DONE) {
63
46
  return _types.ApwContentReviewStepStatus.ACTIVE;
64
47
  }
65
-
66
48
  if (previousStepStatus === _types.ApwContentReviewStepStatus.ACTIVE && previousStepType !== _types.ApwWorkflowStepTypes.MANDATORY_BLOCKING) {
67
49
  return _types.ApwContentReviewStepStatus.ACTIVE;
68
50
  }
69
-
70
51
  return _types.ApwContentReviewStepStatus.INACTIVE;
71
52
  };
72
-
73
53
  exports.getNextStepStatus = getNextStepStatus;
74
-
75
54
  const extractContentReviewIdAndStep = step => {
76
55
  /*
77
56
  * Get associated content review entry.
@@ -83,15 +62,12 @@ const extractContentReviewIdAndStep = step => {
83
62
  stepId
84
63
  };
85
64
  };
86
-
87
65
  exports.extractContentReviewIdAndStep = extractContentReviewIdAndStep;
88
-
89
66
  const safelyGetContentReview = async ({
90
67
  id,
91
68
  contentReviewMethods
92
69
  }) => {
93
70
  let contentReviewEntry = null;
94
-
95
71
  try {
96
72
  contentReviewEntry = await contentReviewMethods.get(id);
97
73
  } catch (e) {
@@ -99,12 +75,9 @@ const safelyGetContentReview = async ({
99
75
  throw e;
100
76
  }
101
77
  }
102
-
103
78
  return contentReviewEntry;
104
79
  };
105
-
106
80
  exports.safelyGetContentReview = safelyGetContentReview;
107
-
108
81
  const updateContentReview = async ({
109
82
  contentReviewMethods,
110
83
  id,
@@ -114,31 +87,24 @@ const updateContentReview = async ({
114
87
  id,
115
88
  contentReviewMethods
116
89
  });
117
-
118
90
  if (contentReviewEntry) {
119
91
  const newContentReviewData = getNewContentReviewData(contentReviewEntry);
120
92
  /**
121
93
  * Update content review entry.
122
94
  */
123
-
124
95
  await contentReviewMethods.update(contentReviewEntry.id, newContentReviewData);
125
96
  }
126
97
  };
127
-
128
98
  exports.updateContentReview = updateContentReview;
129
-
130
99
  const updateContentReviewStep = (steps, stepId, updater) => {
131
100
  return steps.map(step => {
132
101
  if (step.id === stepId) {
133
102
  return (0, _objectSpread2.default)({}, updater(step));
134
103
  }
135
-
136
104
  return step;
137
105
  });
138
106
  };
139
-
140
107
  exports.updateContentReviewStep = updateContentReviewStep;
141
-
142
108
  const isInstallationPending = ({
143
109
  tenancy,
144
110
  i18n
@@ -148,40 +114,31 @@ const isInstallationPending = ({
148
114
  * installation is completed. So, we need to skip "APW" creation till then.
149
115
  */
150
116
  const tenant = tenancy.getCurrentTenant();
151
-
152
117
  if (!tenant) {
153
118
  return true;
154
119
  }
155
-
156
120
  return !i18n.getContentLocale();
157
121
  };
158
-
159
122
  exports.isInstallationPending = isInstallationPending;
160
123
  const WORKFLOW_PRECEDENCE = {
161
124
  [_types.WorkflowScopeTypes.DEFAULT]: 0,
162
125
  [_types.WorkflowScopeTypes.CUSTOM]: 1
163
126
  };
164
-
165
127
  const workflowByPrecedenceDesc = (a, b) => {
166
128
  const scoreA = WORKFLOW_PRECEDENCE[a.scope.type];
167
129
  const scoreB = WORKFLOW_PRECEDENCE[b.scope.type];
168
130
  /**
169
131
  * In descending order of workflow precedence.
170
132
  */
171
-
172
133
  return scoreB - scoreA;
173
134
  };
174
-
175
135
  exports.workflowByPrecedenceDesc = workflowByPrecedenceDesc;
176
-
177
136
  const workflowByCreatedOnDesc = (a, b) => {
178
137
  const createdOnA = (0, _get.default)(a, "createdOn");
179
138
  const createdOnB = (0, _get.default)(b, "createdOn");
180
139
  /**
181
140
  * In descending order of workflow createdOn i.e. the most recent one first.
182
141
  */
183
-
184
142
  return new Date(createdOnB).getTime() - new Date(createdOnA).getTime();
185
143
  };
186
-
187
144
  exports.workflowByCreatedOnDesc = workflowByCreatedOnDesc;
@@ -1 +1 @@
1
- {"version":3,"names":["hasReviewer","params","getReviewer","identity","step","stepReviewer","reviewers","entry","id","identityId","getValue","object","key","get","getContentReviewStepInitialStatus","workflowSteps","index","previousStepStatus","ApwContentReviewStepStatus","ACTIVE","previousStep","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","INACTIVE","getNextStepStatus","previousStepType","DONE","extractContentReviewIdAndStep","entryId","version","stepId","split","revisionId","safelyGetContentReview","contentReviewMethods","contentReviewEntry","e","message","code","updateContentReview","getNewContentReviewData","newContentReviewData","update","updateContentReviewStep","steps","updater","map","isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale","WORKFLOW_PRECEDENCE","WorkflowScopeTypes","DEFAULT","CUSTOM","workflowByPrecedenceDesc","a","b","scoreA","scope","scoreB","workflowByCreatedOnDesc","createdOnA","createdOnB","Date","getTime"],"sources":["utils.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport {\n ApwChangeRequest,\n ApwContentReview,\n ApwContentReviewCrud,\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwContext,\n ApwReviewerCrud,\n ApwWorkflow,\n ApwWorkflowStep,\n ApwWorkflowStepTypes,\n WorkflowScopeTypes\n} from \"~/types\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n parent: string;\n}\n\nexport interface HasReviewersParams {\n identity: SecurityIdentity;\n step: ApwContentReviewStep;\n getReviewer: ApwReviewerCrud[\"get\"];\n}\n\nexport const hasReviewer = async (params: HasReviewersParams): Promise<Boolean> => {\n const { getReviewer, identity, step } = params;\n for (const stepReviewer of step.reviewers) {\n const entry = await getReviewer(stepReviewer.id);\n\n if (entry.identityId === identity.id) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const getValue = (object: Record<string, any>, key: string) => {\n return get(object, `values.${key}`);\n};\n\nexport const getContentReviewStepInitialStatus = (\n workflowSteps: ApwWorkflowStep[],\n index: number,\n previousStepStatus?: ApwContentReviewStepStatus\n): ApwContentReviewStepStatus => {\n /**\n * Always set first step 'active' by default.\n */\n if (index === 0) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n const previousStep = workflowSteps[index - 1];\n if (\n previousStepStatus === ApwContentReviewStepStatus.ACTIVE &&\n previousStep.type !== ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n return ApwContentReviewStepStatus.INACTIVE;\n};\n\nexport const getNextStepStatus = (\n previousStepType: ApwWorkflowStepTypes,\n previousStepStatus: ApwContentReviewStepStatus\n): ApwContentReviewStepStatus => {\n if (previousStepStatus === ApwContentReviewStepStatus.DONE) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n if (\n previousStepStatus === ApwContentReviewStepStatus.ACTIVE &&\n previousStepType !== ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n return ApwContentReviewStepStatus.INACTIVE;\n};\n\nexport interface ExtractContentReviewIdAndStepResult {\n id: string;\n stepId: string;\n}\n\nexport const extractContentReviewIdAndStep = (\n step: ApwChangeRequest[\"step\"]\n): ExtractContentReviewIdAndStepResult => {\n /*\n * Get associated content review entry.\n */\n const [entryId, version, stepId] = step.split(\"#\");\n const revisionId = `${entryId}#${version}`;\n\n return {\n id: revisionId,\n stepId\n };\n};\n\ntype SafelyGetContentReviewParams = Pick<UpdateContentReviewParams, \"id\" | \"contentReviewMethods\">;\n\nexport const safelyGetContentReview = async ({\n id,\n contentReviewMethods\n}: SafelyGetContentReviewParams): Promise<ApwContentReview | null> => {\n let contentReviewEntry = null;\n try {\n contentReviewEntry = await contentReviewMethods.get(id);\n } catch (e) {\n if (e.message !== \"index_not_found_exception\" && e.code !== \"NOT_FOUND\") {\n throw e;\n }\n }\n\n return contentReviewEntry;\n};\n\nexport interface UpdateContentReviewParams {\n id: string;\n contentReviewMethods: ApwContentReviewCrud;\n getNewContentReviewData: (entry: ApwContentReview) => ApwContentReview;\n}\n\nexport const updateContentReview = async ({\n contentReviewMethods,\n id,\n getNewContentReviewData\n}: UpdateContentReviewParams): Promise<void> => {\n const contentReviewEntry = await safelyGetContentReview({ id, contentReviewMethods });\n if (contentReviewEntry) {\n const newContentReviewData = getNewContentReviewData(contentReviewEntry);\n /**\n * Update content review entry.\n */\n await contentReviewMethods.update(contentReviewEntry.id, newContentReviewData);\n }\n};\n\nexport const updateContentReviewStep = (\n steps: ApwContentReviewStep[],\n stepId: string,\n updater: (step: ApwContentReviewStep) => ApwContentReviewStep\n): ApwContentReviewStep[] => {\n return steps.map(step => {\n if (step.id === stepId) {\n return {\n ...updater(step)\n };\n }\n return step;\n });\n};\n\ntype CheckInstallationParams = Pick<ApwContext, \"tenancy\" | \"i18n\">;\n\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"APW\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n\nconst WORKFLOW_PRECEDENCE = {\n [WorkflowScopeTypes.DEFAULT]: 0,\n [WorkflowScopeTypes.CUSTOM]: 1\n};\n\nexport const workflowByPrecedenceDesc = (a: ApwWorkflow, b: ApwWorkflow) => {\n const scoreA = WORKFLOW_PRECEDENCE[a.scope.type];\n const scoreB = WORKFLOW_PRECEDENCE[b.scope.type];\n /**\n * In descending order of workflow precedence.\n */\n return scoreB - scoreA;\n};\n\nexport const workflowByCreatedOnDesc = (a: ApwWorkflow, b: ApwWorkflow) => {\n const createdOnA = get(a, \"createdOn\");\n const createdOnB = get(b, \"createdOn\");\n /**\n * In descending order of workflow createdOn i.e. the most recent one first.\n */\n return new Date(createdOnB).getTime() - new Date(createdOnA).getTime();\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["hasReviewer","params","getReviewer","identity","step","stepReviewer","reviewers","entry","id","identityId","getValue","object","key","get","getContentReviewStepInitialStatus","workflowSteps","index","previousStepStatus","ApwContentReviewStepStatus","ACTIVE","previousStep","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","INACTIVE","getNextStepStatus","previousStepType","DONE","extractContentReviewIdAndStep","entryId","version","stepId","split","revisionId","safelyGetContentReview","contentReviewMethods","contentReviewEntry","e","message","code","updateContentReview","getNewContentReviewData","newContentReviewData","update","updateContentReviewStep","steps","updater","map","isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale","WORKFLOW_PRECEDENCE","WorkflowScopeTypes","DEFAULT","CUSTOM","workflowByPrecedenceDesc","a","b","scoreA","scope","scoreB","workflowByCreatedOnDesc","createdOnA","createdOnB","Date","getTime"],"sources":["utils.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport {\n ApwChangeRequest,\n ApwContentReview,\n ApwContentReviewCrud,\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwContext,\n ApwReviewerCrud,\n ApwWorkflow,\n ApwWorkflowStep,\n ApwWorkflowStepTypes,\n WorkflowScopeTypes\n} from \"~/types\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n parent: string;\n}\n\nexport interface HasReviewersParams {\n identity: SecurityIdentity;\n step: ApwContentReviewStep;\n getReviewer: ApwReviewerCrud[\"get\"];\n}\n\nexport const hasReviewer = async (params: HasReviewersParams): Promise<Boolean> => {\n const { getReviewer, identity, step } = params;\n for (const stepReviewer of step.reviewers) {\n const entry = await getReviewer(stepReviewer.id);\n\n if (entry.identityId === identity.id) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const getValue = (object: Record<string, any>, key: string) => {\n return get(object, `values.${key}`);\n};\n\nexport const getContentReviewStepInitialStatus = (\n workflowSteps: ApwWorkflowStep[],\n index: number,\n previousStepStatus?: ApwContentReviewStepStatus\n): ApwContentReviewStepStatus => {\n /**\n * Always set first step 'active' by default.\n */\n if (index === 0) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n const previousStep = workflowSteps[index - 1];\n if (\n previousStepStatus === ApwContentReviewStepStatus.ACTIVE &&\n previousStep.type !== ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n return ApwContentReviewStepStatus.INACTIVE;\n};\n\nexport const getNextStepStatus = (\n previousStepType: ApwWorkflowStepTypes,\n previousStepStatus: ApwContentReviewStepStatus\n): ApwContentReviewStepStatus => {\n if (previousStepStatus === ApwContentReviewStepStatus.DONE) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n if (\n previousStepStatus === ApwContentReviewStepStatus.ACTIVE &&\n previousStepType !== ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n return ApwContentReviewStepStatus.ACTIVE;\n }\n\n return ApwContentReviewStepStatus.INACTIVE;\n};\n\nexport interface ExtractContentReviewIdAndStepResult {\n id: string;\n stepId: string;\n}\n\nexport const extractContentReviewIdAndStep = (\n step: ApwChangeRequest[\"step\"]\n): ExtractContentReviewIdAndStepResult => {\n /*\n * Get associated content review entry.\n */\n const [entryId, version, stepId] = step.split(\"#\");\n const revisionId = `${entryId}#${version}`;\n\n return {\n id: revisionId,\n stepId\n };\n};\n\ntype SafelyGetContentReviewParams = Pick<UpdateContentReviewParams, \"id\" | \"contentReviewMethods\">;\n\nexport const safelyGetContentReview = async ({\n id,\n contentReviewMethods\n}: SafelyGetContentReviewParams): Promise<ApwContentReview | null> => {\n let contentReviewEntry = null;\n try {\n contentReviewEntry = await contentReviewMethods.get(id);\n } catch (e) {\n if (e.message !== \"index_not_found_exception\" && e.code !== \"NOT_FOUND\") {\n throw e;\n }\n }\n\n return contentReviewEntry;\n};\n\nexport interface UpdateContentReviewParams {\n id: string;\n contentReviewMethods: ApwContentReviewCrud;\n getNewContentReviewData: (entry: ApwContentReview) => ApwContentReview;\n}\n\nexport const updateContentReview = async ({\n contentReviewMethods,\n id,\n getNewContentReviewData\n}: UpdateContentReviewParams): Promise<void> => {\n const contentReviewEntry = await safelyGetContentReview({ id, contentReviewMethods });\n if (contentReviewEntry) {\n const newContentReviewData = getNewContentReviewData(contentReviewEntry);\n /**\n * Update content review entry.\n */\n await contentReviewMethods.update(contentReviewEntry.id, newContentReviewData);\n }\n};\n\nexport const updateContentReviewStep = (\n steps: ApwContentReviewStep[],\n stepId: string,\n updater: (step: ApwContentReviewStep) => ApwContentReviewStep\n): ApwContentReviewStep[] => {\n return steps.map(step => {\n if (step.id === stepId) {\n return {\n ...updater(step)\n };\n }\n return step;\n });\n};\n\ntype CheckInstallationParams = Pick<ApwContext, \"tenancy\" | \"i18n\">;\n\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"APW\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n\nconst WORKFLOW_PRECEDENCE = {\n [WorkflowScopeTypes.DEFAULT]: 0,\n [WorkflowScopeTypes.CUSTOM]: 1\n};\n\nexport const workflowByPrecedenceDesc = (a: ApwWorkflow, b: ApwWorkflow) => {\n const scoreA = WORKFLOW_PRECEDENCE[a.scope.type];\n const scoreB = WORKFLOW_PRECEDENCE[b.scope.type];\n /**\n * In descending order of workflow precedence.\n */\n return scoreB - scoreA;\n};\n\nexport const workflowByCreatedOnDesc = (a: ApwWorkflow, b: ApwWorkflow) => {\n const createdOnA = get(a, \"createdOn\");\n const createdOnB = get(b, \"createdOn\");\n /**\n * In descending order of workflow createdOn i.e. the most recent one first.\n */\n return new Date(createdOnB).getTime() - new Date(createdOnA).getTime();\n};\n"],"mappings":"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"}
@@ -1,22 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createScheduleActionMethods = createScheduleActionMethods;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _mdbid = _interopRequireDefault(require("mdbid"));
13
-
14
10
  var _fields = require("@commodo/fields");
15
-
16
11
  var _validation = require("@webiny/validation");
17
-
18
12
  var _types = require("./types");
19
-
20
13
  /**
21
14
  * Package mdbid does not have types.
22
15
  */
@@ -26,6 +19,7 @@ var _types = require("./types");
26
19
  * Package @commodo/fields does not have types.
27
20
  */
28
21
  // @ts-ignore
22
+
29
23
  const CreateDataModel = (0, _fields.withFields)(instance => {
30
24
  return {
31
25
  datetime: (0, _fields.string)({
@@ -47,13 +41,11 @@ const CreateDataModel = (0, _fields.withFields)(instance => {
47
41
  } else if (!!value) {
48
42
  return true;
49
43
  }
50
-
51
44
  throw new Error(`There is no modelId defined when type is "${_types.ApwContentTypes.CMS_ENTRY}"`);
52
45
  }
53
46
  })
54
47
  };
55
48
  })();
56
-
57
49
  function createScheduleActionMethods({
58
50
  storageOperations,
59
51
  getIdentity,
@@ -68,7 +60,6 @@ function createScheduleActionMethods({
68
60
  locale
69
61
  };
70
62
  };
71
-
72
63
  return {
73
64
  async get(id) {
74
65
  return storageOperations.get({
@@ -77,13 +68,11 @@ function createScheduleActionMethods({
77
68
  }, getTenantAndLocale())
78
69
  });
79
70
  },
80
-
81
71
  async list(params) {
82
72
  return storageOperations.list((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
83
73
  where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params.where), getTenantAndLocale())
84
74
  }));
85
75
  },
86
-
87
76
  async create(input) {
88
77
  const createDataModel = new CreateDataModel().populate(input);
89
78
  await createDataModel.validate();
@@ -106,44 +95,36 @@ function createScheduleActionMethods({
106
95
  input
107
96
  });
108
97
  },
109
-
110
98
  async update(id, data) {
111
99
  const updateDataModel = new CreateDataModel().populate(data);
112
100
  await updateDataModel.validate();
113
101
  const original = await this.get(id);
114
-
115
102
  if (!original) {
116
103
  throw new Error("Not found!");
117
104
  }
118
-
119
105
  return await storageOperations.update({
120
106
  item: original,
121
107
  input: data
122
108
  });
123
109
  },
124
-
125
110
  async delete(id) {
126
111
  await storageOperations.delete((0, _objectSpread2.default)({
127
112
  id
128
113
  }, getTenantAndLocale()));
129
114
  return true;
130
115
  },
131
-
132
116
  async getCurrentTask() {
133
117
  return await storageOperations.getCurrentTask({
134
118
  where: (0, _objectSpread2.default)({}, getTenantAndLocale())
135
119
  });
136
120
  },
137
-
138
121
  async updateCurrentTask(item) {
139
122
  return await storageOperations.updateCurrentTask({
140
123
  item
141
124
  });
142
125
  },
143
-
144
126
  async deleteCurrentTask() {
145
127
  return await storageOperations.deleteCurrentTask((0, _objectSpread2.default)({}, getTenantAndLocale()));
146
128
  }
147
-
148
129
  };
149
130
  }
@@ -1 +1 @@
1
- {"version":3,"names":["CreateDataModel","withFields","instance","datetime","string","validation","create","type","ApwContentTypes","PAGE","CMS_ENTRY","action","ApwScheduleActionTypes","PUBLISH","UNPUBLISH","entryId","modelId","value","Error","createScheduleActionMethods","storageOperations","getIdentity","getTenant","getLocale","getTenantAndLocale","tenant","id","locale","code","get","where","list","params","input","createDataModel","populate","validate","mdbid","identity","data","toJSON","scheduleAction","createdOn","Date","toISOString","savedOn","createdBy","displayName","item","update","updateDataModel","original","delete","getCurrentTask","updateCurrentTask","deleteCurrentTask"],"sources":["createScheduleActionMethods.ts"],"sourcesContent":["/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\n/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { string, withFields } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport {\n ApwContentTypes,\n ApwScheduleAction,\n ApwScheduleActionCrud,\n ApwScheduleActionData,\n ApwScheduleActionTypes,\n CreateScheduleActionParams\n} from \"~/scheduler/types\";\n\nconst CreateDataModel = withFields((instance: any) => {\n return {\n datetime: string({\n validation: validation.create(`required`)\n }),\n type: string({\n validation: validation.create(\n `required,in:${ApwContentTypes.PAGE}:${ApwContentTypes.CMS_ENTRY}`\n )\n }),\n action: string({\n validation: validation.create(\n `required,in:${ApwScheduleActionTypes.PUBLISH}:${ApwScheduleActionTypes.UNPUBLISH}`\n )\n }),\n entryId: string({\n validation: validation.create(`required`)\n }),\n modelId: string({\n validation: (value: string) => {\n if (instance.type !== ApwContentTypes.CMS_ENTRY) {\n return true;\n } else if (!!value) {\n return true;\n }\n throw new Error(\n `There is no modelId defined when type is \"${ApwContentTypes.CMS_ENTRY}\"`\n );\n }\n })\n };\n})();\n\ninterface GetTenantAndLocaleResult {\n tenant: string;\n locale: string;\n}\n\nexport function createScheduleActionMethods({\n storageOperations,\n getIdentity,\n getTenant,\n getLocale\n}: CreateScheduleActionParams): ApwScheduleActionCrud {\n const getTenantAndLocale = (): GetTenantAndLocaleResult => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n return {\n tenant,\n locale\n };\n };\n return {\n async get(id) {\n return storageOperations.get({\n where: {\n id,\n ...getTenantAndLocale()\n }\n });\n },\n async list(params) {\n return storageOperations.list({\n ...params,\n where: {\n ...params.where,\n ...getTenantAndLocale()\n }\n });\n },\n async create(input) {\n const createDataModel = new CreateDataModel().populate(input);\n\n await createDataModel.validate();\n\n const id: string = mdbid();\n const identity = getIdentity();\n\n const data: ApwScheduleActionData = await createDataModel.toJSON();\n\n const scheduleAction: ApwScheduleAction = {\n ...getTenantAndLocale(),\n data,\n id,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n type: identity.type,\n displayName: identity.displayName\n }\n };\n\n return await storageOperations.create({\n item: scheduleAction,\n input\n });\n },\n async update(id, data) {\n const updateDataModel = new CreateDataModel().populate(data);\n\n await updateDataModel.validate();\n\n const original = await this.get(id);\n\n if (!original) {\n throw new Error(\"Not found!\");\n }\n\n return await storageOperations.update({ item: original, input: data });\n },\n async delete(id: string) {\n await storageOperations.delete({ id, ...getTenantAndLocale() });\n\n return true;\n },\n async getCurrentTask() {\n return await storageOperations.getCurrentTask({ where: { ...getTenantAndLocale() } });\n },\n async updateCurrentTask(item) {\n return await storageOperations.updateCurrentTask({ item });\n },\n async deleteCurrentTask() {\n return await storageOperations.deleteCurrentTask({ ...getTenantAndLocale() });\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["CreateDataModel","withFields","instance","datetime","string","validation","create","type","ApwContentTypes","PAGE","CMS_ENTRY","action","ApwScheduleActionTypes","PUBLISH","UNPUBLISH","entryId","modelId","value","Error","createScheduleActionMethods","storageOperations","getIdentity","getTenant","getLocale","getTenantAndLocale","tenant","id","locale","code","get","where","list","params","input","createDataModel","populate","validate","mdbid","identity","data","toJSON","scheduleAction","createdOn","Date","toISOString","savedOn","createdBy","displayName","item","update","updateDataModel","original","delete","getCurrentTask","updateCurrentTask","deleteCurrentTask"],"sources":["createScheduleActionMethods.ts"],"sourcesContent":["/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\n/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { string, withFields } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport {\n ApwContentTypes,\n ApwScheduleAction,\n ApwScheduleActionCrud,\n ApwScheduleActionData,\n ApwScheduleActionTypes,\n CreateScheduleActionParams\n} from \"~/scheduler/types\";\n\nconst CreateDataModel = withFields((instance: any) => {\n return {\n datetime: string({\n validation: validation.create(`required`)\n }),\n type: string({\n validation: validation.create(\n `required,in:${ApwContentTypes.PAGE}:${ApwContentTypes.CMS_ENTRY}`\n )\n }),\n action: string({\n validation: validation.create(\n `required,in:${ApwScheduleActionTypes.PUBLISH}:${ApwScheduleActionTypes.UNPUBLISH}`\n )\n }),\n entryId: string({\n validation: validation.create(`required`)\n }),\n modelId: string({\n validation: (value: string) => {\n if (instance.type !== ApwContentTypes.CMS_ENTRY) {\n return true;\n } else if (!!value) {\n return true;\n }\n throw new Error(\n `There is no modelId defined when type is \"${ApwContentTypes.CMS_ENTRY}\"`\n );\n }\n })\n };\n})();\n\ninterface GetTenantAndLocaleResult {\n tenant: string;\n locale: string;\n}\n\nexport function createScheduleActionMethods({\n storageOperations,\n getIdentity,\n getTenant,\n getLocale\n}: CreateScheduleActionParams): ApwScheduleActionCrud {\n const getTenantAndLocale = (): GetTenantAndLocaleResult => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n return {\n tenant,\n locale\n };\n };\n return {\n async get(id) {\n return storageOperations.get({\n where: {\n id,\n ...getTenantAndLocale()\n }\n });\n },\n async list(params) {\n return storageOperations.list({\n ...params,\n where: {\n ...params.where,\n ...getTenantAndLocale()\n }\n });\n },\n async create(input) {\n const createDataModel = new CreateDataModel().populate(input);\n\n await createDataModel.validate();\n\n const id: string = mdbid();\n const identity = getIdentity();\n\n const data: ApwScheduleActionData = await createDataModel.toJSON();\n\n const scheduleAction: ApwScheduleAction = {\n ...getTenantAndLocale(),\n data,\n id,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n type: identity.type,\n displayName: identity.displayName\n }\n };\n\n return await storageOperations.create({\n item: scheduleAction,\n input\n });\n },\n async update(id, data) {\n const updateDataModel = new CreateDataModel().populate(data);\n\n await updateDataModel.validate();\n\n const original = await this.get(id);\n\n if (!original) {\n throw new Error(\"Not found!\");\n }\n\n return await storageOperations.update({ item: original, input: data });\n },\n async delete(id: string) {\n await storageOperations.delete({ id, ...getTenantAndLocale() });\n\n return true;\n },\n async getCurrentTask() {\n return await storageOperations.getCurrentTask({ where: { ...getTenantAndLocale() } });\n },\n async updateCurrentTask(item) {\n return await storageOperations.updateCurrentTask({ item });\n },\n async deleteCurrentTask() {\n return await storageOperations.deleteCurrentTask({ ...getTenantAndLocale() });\n }\n };\n}\n"],"mappings":"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"}
@@ -9,5 +9,5 @@ export interface HandlerArgs {
9
9
  interface Configuration {
10
10
  storageOperations: ApwScheduleActionStorageOperations;
11
11
  }
12
- export declare const executeActionHandlerPlugins: (config: Configuration) => ((import("@webiny/handler").HandlerResultPlugin<import("@webiny/handler/types").Context> | import("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin").ValueFilterPlugin[][] | ContextPlugin<import("@webiny/handler-db/types").DbContext>[])[] | import("@webiny/handler").EventPlugin<HandlerArgs, import("@webiny/handler/types").Context, any> | ContextPlugin<import("@webiny/api/types").Context>)[];
12
+ export declare const executeActionHandlerPlugins: (config: Configuration) => ((import("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin").ValueFilterPlugin[][] | import("@webiny/handler").HandlerResultPlugin<import("@webiny/handler/types").Context> | ContextPlugin<import("@webiny/handler-db/types").DbContext>[])[] | import("@webiny/handler").EventPlugin<HandlerArgs, import("@webiny/handler/types").Context, any> | ContextPlugin<import("@webiny/api/types").Context>)[];
13
13
  export {};
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.executeActionHandlerPlugins = void 0;
7
-
8
7
  var _utils = require("../utils");
9
-
10
8
  var _api = require("@webiny/api");
11
-
12
9
  var _PageBuilderGraphQL = require("./plugins/PageBuilderGraphQL");
13
-
14
10
  var _HeadlessCMSGraphQL = require("./plugins/HeadlessCMSGraphQL");
15
-
16
11
  var _ApplicationGraphQL = require("./plugins/ApplicationGraphQL");
17
-
18
12
  var _handler = require("@webiny/handler");
19
-
20
13
  /**
21
14
  * Handler that execute the provided action(s) for the schedule action workflow.
22
15
  */
@@ -30,35 +23,27 @@ const createExecuteActionLambda = params => {
30
23
  }) => {
31
24
  const log = console.log;
32
25
  const applicationGraphQLPlugins = context.plugins.byType(_ApplicationGraphQL.ApplicationGraphQL.type);
33
-
34
26
  if (applicationGraphQLPlugins.length === 0) {
35
27
  console.error(`There are no plugins to determine GraphQL endpoints or mutations.`);
36
28
  return;
37
29
  }
38
-
39
30
  const applicationGraphQLPluginCache = {};
40
-
41
31
  const getApplicationGraphQLPlugin = data => {
42
32
  const {
43
33
  type
44
34
  } = data;
45
-
46
35
  if (applicationGraphQLPluginCache[type]) {
47
36
  return applicationGraphQLPluginCache[type];
48
37
  }
49
-
50
38
  for (const plugin of applicationGraphQLPlugins) {
51
39
  if (!plugin.canUse(data)) {
52
40
  continue;
53
41
  }
54
-
55
42
  applicationGraphQLPluginCache[type] = plugin;
56
43
  return plugin;
57
44
  }
58
-
59
45
  return null;
60
46
  };
61
-
62
47
  try {
63
48
  const apwSettings = await (0, _utils.getApwSettings)();
64
49
  const {
@@ -69,16 +54,14 @@ const createExecuteActionLambda = params => {
69
54
  /**
70
55
  * If there is no datetime we bail out early.
71
56
  */
72
-
73
57
  if (!datetime || typeof datetime !== "string") {
74
58
  log(`Bailing out!!`);
75
59
  return;
76
60
  }
61
+
77
62
  /**
78
63
  * Get tasks from the DB by datetime.
79
64
  */
80
-
81
-
82
65
  const [items] = await storageOperations.list({
83
66
  where: {
84
67
  tenant,
@@ -88,28 +71,23 @@ const createExecuteActionLambda = params => {
88
71
  sort: ["datetime_ASC"],
89
72
  limit: 1000
90
73
  });
74
+
91
75
  /**
92
76
  * Execute all actions.
93
77
  */
94
-
95
78
  if (!items || items.length === 0) {
96
79
  return;
97
80
  }
98
-
99
81
  log(`Found ${items.length} actions.`);
100
-
101
82
  for (const item of items) {
102
83
  log(`Performing mutation "${item.data.action}" on "${item.data.type}" at "${item.data.datetime}"`);
103
84
  const plugin = getApplicationGraphQLPlugin(item.data);
104
-
105
85
  if (!plugin) {
106
86
  console.error(`There is no plugin to determine GraphQL endpoint and mutations for type "${item.data.type}".`);
107
87
  console.log(JSON.stringify(item));
108
88
  continue;
109
89
  }
110
-
111
90
  const name = plugin.getArn(apwSettings);
112
-
113
91
  if (!name) {
114
92
  console.error(`There is no FunctionName found for type "${item.data.type}".`);
115
93
  console.log(JSON.stringify({
@@ -118,21 +96,28 @@ const createExecuteActionLambda = params => {
118
96
  }));
119
97
  continue;
120
98
  }
121
-
99
+ const url = plugin.getUrl({
100
+ locale,
101
+ tenant
102
+ });
103
+ if (!url) {
104
+ console.error(`There is no url defined, in the Plugin, for type "${item.data.type}".`);
105
+ console.log(JSON.stringify(item));
106
+ continue;
107
+ }
122
108
  const body = plugin.getGraphQLBody(item.data);
123
-
124
109
  if (!body) {
125
110
  console.error(`There is no GraphQL body defined, in the Plugin, for type "${item.data.type}".`);
126
111
  console.log(JSON.stringify(item));
127
112
  continue;
128
- } // Perform the actual action call.
129
-
113
+ }
130
114
 
115
+ // Perform the actual action call.
131
116
  const response = await context.handlerClient.invoke({
132
117
  name,
133
118
  payload: {
134
119
  httpMethod: "POST",
135
- path: `/cms/manage/${locale}`,
120
+ path: url,
136
121
  headers: {
137
122
  ["content-type"]: "application/json",
138
123
  Authorization: (0, _utils.encodeToken)({
@@ -147,20 +132,21 @@ const createExecuteActionLambda = params => {
147
132
  },
148
133
  await: true
149
134
  });
150
-
151
135
  if (response !== null && response !== void 0 && response.body) {
152
136
  console.log(JSON.stringify({
153
137
  body: response.body
154
138
  }, null, 2));
155
139
  continue;
156
140
  }
157
-
158
141
  console.log(JSON.stringify({
159
142
  response
160
- }, null, 2)); // TODO: Maybe update the status like error in original item in DB.
143
+ }, null, 2));
144
+
145
+ // TODO: Maybe update the status like error in original item in DB.
161
146
  }
162
147
  } catch (e) {
163
- log("[HANDLER_EXECUTE_ACTION] Error => ", e); // TODO: Maybe update the status like error in original item in DB.
148
+ log("[HANDLER_EXECUTE_ACTION] Error => ", e);
149
+ // TODO: Maybe update the status like error in original item in DB.
164
150
  }
165
151
  });
166
152
  };
@@ -168,5 +154,4 @@ const createExecuteActionLambda = params => {
168
154
  const executeActionHandlerPlugins = config => [new _api.ContextPlugin(async context => {
169
155
  context.plugins.register([new _PageBuilderGraphQL.PageBuilderGraphQL(), new _HeadlessCMSGraphQL.HeadlessCMSGraphQL()]);
170
156
  }), (0, _utils.basePlugins)(), createExecuteActionLambda(config)];
171
-
172
157
  exports.executeActionHandlerPlugins = executeActionHandlerPlugins;
@@ -1 +1 @@
1
- {"version":3,"names":["createExecuteActionLambda","params","storageOperations","createEvent","payload","context","log","console","applicationGraphQLPlugins","plugins","byType","ApplicationGraphQL","type","length","error","applicationGraphQLPluginCache","getApplicationGraphQLPlugin","data","plugin","canUse","apwSettings","getApwSettings","futureDatetime","datetime","locale","tenant","items","list","where","datetime_startsWith","getIsoStringTillMinutes","sort","limit","item","action","JSON","stringify","name","getArn","settings","body","getGraphQLBody","response","handlerClient","invoke","httpMethod","path","headers","Authorization","encodeToken","id","await","e","executeActionHandlerPlugins","config","ContextPlugin","register","PageBuilderGraphQL","HeadlessCMSGraphQL","basePlugins"],"sources":["index.ts"],"sourcesContent":["import { ApwScheduleActionData, ApwScheduleActionStorageOperations } from \"~/scheduler/types\";\nimport { getIsoStringTillMinutes, encodeToken, basePlugins } from \"~/scheduler/handlers/utils\";\nimport { getApwSettings } from \"~/scheduler/handlers/utils\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { PageBuilderGraphQL } from \"./plugins/PageBuilderGraphQL\";\nimport { HeadlessCMSGraphQL } from \"./plugins/HeadlessCMSGraphQL\";\nimport { ApplicationGraphQL } from \"./plugins/ApplicationGraphQL\";\nimport { createEvent } from \"@webiny/handler\";\n\nexport interface HandlerArgs {\n datetime: string;\n tenant: string;\n locale: string;\n futureDatetime?: string;\n}\n\ninterface Configuration {\n storageOperations: ApwScheduleActionStorageOperations;\n}\n\n/**\n * Handler that execute the provided action(s) for the schedule action workflow.\n */\nconst createExecuteActionLambda = (params: Configuration) => {\n const { storageOperations } = params;\n\n return createEvent<HandlerArgs>(async ({ payload, context }) => {\n const log = console.log;\n\n const applicationGraphQLPlugins = context.plugins.byType<ApplicationGraphQL>(\n ApplicationGraphQL.type\n );\n\n if (applicationGraphQLPlugins.length === 0) {\n console.error(`There are no plugins to determine GraphQL endpoints or mutations.`);\n return;\n }\n\n const applicationGraphQLPluginCache: Record<string, ApplicationGraphQL> = {};\n\n const getApplicationGraphQLPlugin = (\n data: ApwScheduleActionData\n ): ApplicationGraphQL | null => {\n const { type } = data;\n if (applicationGraphQLPluginCache[type]) {\n return applicationGraphQLPluginCache[type];\n }\n for (const plugin of applicationGraphQLPlugins) {\n if (!plugin.canUse(data)) {\n continue;\n }\n applicationGraphQLPluginCache[type] = plugin;\n return plugin;\n }\n return null;\n };\n\n try {\n const apwSettings = await getApwSettings();\n\n const { futureDatetime: datetime, locale, tenant } = payload;\n /**\n * If there is no datetime we bail out early.\n */\n if (!datetime || typeof datetime !== \"string\") {\n log(`Bailing out!!`);\n return;\n }\n\n /**\n * Get tasks from the DB by datetime.\n */\n const [items] = await storageOperations.list({\n where: {\n tenant,\n locale,\n datetime_startsWith: getIsoStringTillMinutes(datetime)\n },\n sort: [\"datetime_ASC\"],\n limit: 1000\n });\n\n /**\n * Execute all actions.\n */\n if (!items || items.length === 0) {\n return;\n }\n log(`Found ${items.length} actions.`);\n for (const item of items) {\n log(\n `Performing mutation \"${item.data.action}\" on \"${item.data.type}\" at \"${item.data.datetime}\"`\n );\n\n const plugin = getApplicationGraphQLPlugin(item.data);\n if (!plugin) {\n console.error(\n `There is no plugin to determine GraphQL endpoint and mutations for type \"${item.data.type}\".`\n );\n console.log(JSON.stringify(item));\n continue;\n }\n\n const name = plugin.getArn(apwSettings);\n if (!name) {\n console.error(`There is no FunctionName found for type \"${item.data.type}\".`);\n console.log(\n JSON.stringify({\n item,\n settings: apwSettings\n })\n );\n continue;\n }\n\n const body = plugin.getGraphQLBody(item.data);\n\n if (!body) {\n console.error(\n `There is no GraphQL body defined, in the Plugin, for type \"${item.data.type}\".`\n );\n console.log(JSON.stringify(item));\n continue;\n }\n\n // Perform the actual action call.\n const response = await context.handlerClient.invoke({\n name,\n payload: {\n httpMethod: \"POST\",\n path: `/cms/manage/${locale}`,\n headers: {\n [\"content-type\"]: \"application/json\",\n Authorization: encodeToken({\n id: item.id,\n locale: item.locale,\n tenant: item.tenant\n }),\n [\"x-tenant\"]: tenant,\n [\"x-i18n-locale\"]: `default:${locale};content:${locale};`\n },\n body: JSON.stringify(body)\n },\n await: true\n });\n if (response?.body) {\n console.log(JSON.stringify({ body: response.body }, null, 2));\n continue;\n }\n console.log(JSON.stringify({ response }, null, 2));\n\n // TODO: Maybe update the status like error in original item in DB.\n }\n } catch (e) {\n log(\"[HANDLER_EXECUTE_ACTION] Error => \", e);\n // TODO: Maybe update the status like error in original item in DB.\n }\n });\n};\n\nexport const executeActionHandlerPlugins = (config: Configuration) => [\n new ContextPlugin(async context => {\n context.plugins.register([new PageBuilderGraphQL(), new HeadlessCMSGraphQL()]);\n }),\n basePlugins(),\n createExecuteActionLambda(config)\n];\n"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAaA;AACA;AACA;AACA,MAAMA,yBAAyB,GAAIC,MAAD,IAA2B;EACzD,MAAM;IAAEC;EAAF,IAAwBD,MAA9B;EAEA,OAAO,IAAAE,oBAAA,EAAyB,OAAO;IAAEC,OAAF;IAAWC;EAAX,CAAP,KAAgC;IAC5D,MAAMC,GAAG,GAAGC,OAAO,CAACD,GAApB;IAEA,MAAME,yBAAyB,GAAGH,OAAO,CAACI,OAAR,CAAgBC,MAAhB,CAC9BC,sCAAA,CAAmBC,IADW,CAAlC;;IAIA,IAAIJ,yBAAyB,CAACK,MAA1B,KAAqC,CAAzC,EAA4C;MACxCN,OAAO,CAACO,KAAR,CAAe,mEAAf;MACA;IACH;;IAED,MAAMC,6BAAiE,GAAG,EAA1E;;IAEA,MAAMC,2BAA2B,GAC7BC,IADgC,IAEJ;MAC5B,MAAM;QAAEL;MAAF,IAAWK,IAAjB;;MACA,IAAIF,6BAA6B,CAACH,IAAD,CAAjC,EAAyC;QACrC,OAAOG,6BAA6B,CAACH,IAAD,CAApC;MACH;;MACD,KAAK,MAAMM,MAAX,IAAqBV,yBAArB,EAAgD;QAC5C,IAAI,CAACU,MAAM,CAACC,MAAP,CAAcF,IAAd,CAAL,EAA0B;UACtB;QACH;;QACDF,6BAA6B,CAACH,IAAD,CAA7B,GAAsCM,MAAtC;QACA,OAAOA,MAAP;MACH;;MACD,OAAO,IAAP;IACH,CAfD;;IAiBA,IAAI;MACA,MAAME,WAAW,GAAG,MAAM,IAAAC,qBAAA,GAA1B;MAEA,MAAM;QAAEC,cAAc,EAAEC,QAAlB;QAA4BC,MAA5B;QAAoCC;MAApC,IAA+CrB,OAArD;MACA;AACZ;AACA;;MACY,IAAI,CAACmB,QAAD,IAAa,OAAOA,QAAP,KAAoB,QAArC,EAA+C;QAC3CjB,GAAG,CAAE,eAAF,CAAH;QACA;MACH;MAED;AACZ;AACA;;;MACY,MAAM,CAACoB,KAAD,IAAU,MAAMxB,iBAAiB,CAACyB,IAAlB,CAAuB;QACzCC,KAAK,EAAE;UACHH,MADG;UAEHD,MAFG;UAGHK,mBAAmB,EAAE,IAAAC,8BAAA,EAAwBP,QAAxB;QAHlB,CADkC;QAMzCQ,IAAI,EAAE,CAAC,cAAD,CANmC;QAOzCC,KAAK,EAAE;MAPkC,CAAvB,CAAtB;MAUA;AACZ;AACA;;MACY,IAAI,CAACN,KAAD,IAAUA,KAAK,CAACb,MAAN,KAAiB,CAA/B,EAAkC;QAC9B;MACH;;MACDP,GAAG,CAAE,SAAQoB,KAAK,CAACb,MAAO,WAAvB,CAAH;;MACA,KAAK,MAAMoB,IAAX,IAAmBP,KAAnB,EAA0B;QACtBpB,GAAG,CACE,wBAAuB2B,IAAI,CAAChB,IAAL,CAAUiB,MAAO,SAAQD,IAAI,CAAChB,IAAL,CAAUL,IAAK,SAAQqB,IAAI,CAAChB,IAAL,CAAUM,QAAS,GAD5F,CAAH;QAIA,MAAML,MAAM,GAAGF,2BAA2B,CAACiB,IAAI,CAAChB,IAAN,CAA1C;;QACA,IAAI,CAACC,MAAL,EAAa;UACTX,OAAO,CAACO,KAAR,CACK,4EAA2EmB,IAAI,CAAChB,IAAL,CAAUL,IAAK,IAD/F;UAGAL,OAAO,CAACD,GAAR,CAAY6B,IAAI,CAACC,SAAL,CAAeH,IAAf,CAAZ;UACA;QACH;;QAED,MAAMI,IAAI,GAAGnB,MAAM,CAACoB,MAAP,CAAclB,WAAd,CAAb;;QACA,IAAI,CAACiB,IAAL,EAAW;UACP9B,OAAO,CAACO,KAAR,CAAe,4CAA2CmB,IAAI,CAAChB,IAAL,CAAUL,IAAK,IAAzE;UACAL,OAAO,CAACD,GAAR,CACI6B,IAAI,CAACC,SAAL,CAAe;YACXH,IADW;YAEXM,QAAQ,EAAEnB;UAFC,CAAf,CADJ;UAMA;QACH;;QAED,MAAMoB,IAAI,GAAGtB,MAAM,CAACuB,cAAP,CAAsBR,IAAI,CAAChB,IAA3B,CAAb;;QAEA,IAAI,CAACuB,IAAL,EAAW;UACPjC,OAAO,CAACO,KAAR,CACK,8DAA6DmB,IAAI,CAAChB,IAAL,CAAUL,IAAK,IADjF;UAGAL,OAAO,CAACD,GAAR,CAAY6B,IAAI,CAACC,SAAL,CAAeH,IAAf,CAAZ;UACA;QACH,CAlCqB,CAoCtB;;;QACA,MAAMS,QAAQ,GAAG,MAAMrC,OAAO,CAACsC,aAAR,CAAsBC,MAAtB,CAA6B;UAChDP,IADgD;UAEhDjC,OAAO,EAAE;YACLyC,UAAU,EAAE,MADP;YAELC,IAAI,EAAG,eAActB,MAAO,EAFvB;YAGLuB,OAAO,EAAE;cACL,CAAC,cAAD,GAAkB,kBADb;cAELC,aAAa,EAAE,IAAAC,kBAAA,EAAY;gBACvBC,EAAE,EAAEjB,IAAI,CAACiB,EADc;gBAEvB1B,MAAM,EAAES,IAAI,CAACT,MAFU;gBAGvBC,MAAM,EAAEQ,IAAI,CAACR;cAHU,CAAZ,CAFV;cAOL,CAAC,UAAD,GAAcA,MAPT;cAQL,CAAC,eAAD,GAAoB,WAAUD,MAAO,YAAWA,MAAO;YARlD,CAHJ;YAaLgB,IAAI,EAAEL,IAAI,CAACC,SAAL,CAAeI,IAAf;UAbD,CAFuC;UAiBhDW,KAAK,EAAE;QAjByC,CAA7B,CAAvB;;QAmBA,IAAIT,QAAJ,aAAIA,QAAJ,eAAIA,QAAQ,CAAEF,IAAd,EAAoB;UAChBjC,OAAO,CAACD,GAAR,CAAY6B,IAAI,CAACC,SAAL,CAAe;YAAEI,IAAI,EAAEE,QAAQ,CAACF;UAAjB,CAAf,EAAwC,IAAxC,EAA8C,CAA9C,CAAZ;UACA;QACH;;QACDjC,OAAO,CAACD,GAAR,CAAY6B,IAAI,CAACC,SAAL,CAAe;UAAEM;QAAF,CAAf,EAA6B,IAA7B,EAAmC,CAAnC,CAAZ,EA5DsB,CA8DtB;MACH;IACJ,CAhGD,CAgGE,OAAOU,CAAP,EAAU;MACR9C,GAAG,CAAC,oCAAD,EAAuC8C,CAAvC,CAAH,CADQ,CAER;IACH;EACJ,CAnIM,CAAP;AAoIH,CAvID;;AAyIO,MAAMC,2BAA2B,GAAIC,MAAD,IAA2B,CAClE,IAAIC,kBAAJ,CAAkB,MAAMlD,OAAN,IAAiB;EAC/BA,OAAO,CAACI,OAAR,CAAgB+C,QAAhB,CAAyB,CAAC,IAAIC,sCAAJ,EAAD,EAA2B,IAAIC,sCAAJ,EAA3B,CAAzB;AACH,CAFD,CADkE,EAIlE,IAAAC,kBAAA,GAJkE,EAKlE3D,yBAAyB,CAACsD,MAAD,CALyC,CAA/D"}
1
+ {"version":3,"names":["createExecuteActionLambda","params","storageOperations","createEvent","payload","context","log","console","applicationGraphQLPlugins","plugins","byType","ApplicationGraphQL","type","length","error","applicationGraphQLPluginCache","getApplicationGraphQLPlugin","data","plugin","canUse","apwSettings","getApwSettings","futureDatetime","datetime","locale","tenant","items","list","where","datetime_startsWith","getIsoStringTillMinutes","sort","limit","item","action","JSON","stringify","name","getArn","settings","url","getUrl","body","getGraphQLBody","response","handlerClient","invoke","httpMethod","path","headers","Authorization","encodeToken","id","await","e","executeActionHandlerPlugins","config","ContextPlugin","register","PageBuilderGraphQL","HeadlessCMSGraphQL","basePlugins"],"sources":["index.ts"],"sourcesContent":["import { ApwScheduleActionData, ApwScheduleActionStorageOperations } from \"~/scheduler/types\";\nimport { getIsoStringTillMinutes, encodeToken, basePlugins } from \"~/scheduler/handlers/utils\";\nimport { getApwSettings } from \"~/scheduler/handlers/utils\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { PageBuilderGraphQL } from \"./plugins/PageBuilderGraphQL\";\nimport { HeadlessCMSGraphQL } from \"./plugins/HeadlessCMSGraphQL\";\nimport { ApplicationGraphQL } from \"./plugins/ApplicationGraphQL\";\nimport { createEvent } from \"@webiny/handler\";\n\nexport interface HandlerArgs {\n datetime: string;\n tenant: string;\n locale: string;\n futureDatetime?: string;\n}\n\ninterface Configuration {\n storageOperations: ApwScheduleActionStorageOperations;\n}\n\n/**\n * Handler that execute the provided action(s) for the schedule action workflow.\n */\nconst createExecuteActionLambda = (params: Configuration) => {\n const { storageOperations } = params;\n\n return createEvent<HandlerArgs>(async ({ payload, context }) => {\n const log = console.log;\n\n const applicationGraphQLPlugins = context.plugins.byType<ApplicationGraphQL>(\n ApplicationGraphQL.type\n );\n\n if (applicationGraphQLPlugins.length === 0) {\n console.error(`There are no plugins to determine GraphQL endpoints or mutations.`);\n return;\n }\n\n const applicationGraphQLPluginCache: Record<string, ApplicationGraphQL> = {};\n\n const getApplicationGraphQLPlugin = (\n data: ApwScheduleActionData\n ): ApplicationGraphQL | null => {\n const { type } = data;\n if (applicationGraphQLPluginCache[type]) {\n return applicationGraphQLPluginCache[type];\n }\n for (const plugin of applicationGraphQLPlugins) {\n if (!plugin.canUse(data)) {\n continue;\n }\n applicationGraphQLPluginCache[type] = plugin;\n return plugin;\n }\n return null;\n };\n\n try {\n const apwSettings = await getApwSettings();\n\n const { futureDatetime: datetime, locale, tenant } = payload;\n /**\n * If there is no datetime we bail out early.\n */\n if (!datetime || typeof datetime !== \"string\") {\n log(`Bailing out!!`);\n return;\n }\n\n /**\n * Get tasks from the DB by datetime.\n */\n const [items] = await storageOperations.list({\n where: {\n tenant,\n locale,\n datetime_startsWith: getIsoStringTillMinutes(datetime)\n },\n sort: [\"datetime_ASC\"],\n limit: 1000\n });\n\n /**\n * Execute all actions.\n */\n if (!items || items.length === 0) {\n return;\n }\n log(`Found ${items.length} actions.`);\n for (const item of items) {\n log(\n `Performing mutation \"${item.data.action}\" on \"${item.data.type}\" at \"${item.data.datetime}\"`\n );\n\n const plugin = getApplicationGraphQLPlugin(item.data);\n if (!plugin) {\n console.error(\n `There is no plugin to determine GraphQL endpoint and mutations for type \"${item.data.type}\".`\n );\n console.log(JSON.stringify(item));\n continue;\n }\n\n const name = plugin.getArn(apwSettings);\n if (!name) {\n console.error(`There is no FunctionName found for type \"${item.data.type}\".`);\n console.log(\n JSON.stringify({\n item,\n settings: apwSettings\n })\n );\n continue;\n }\n\n const url = plugin.getUrl({\n locale,\n tenant\n });\n if (!url) {\n console.error(\n `There is no url defined, in the Plugin, for type \"${item.data.type}\".`\n );\n console.log(JSON.stringify(item));\n continue;\n }\n\n const body = plugin.getGraphQLBody(item.data);\n\n if (!body) {\n console.error(\n `There is no GraphQL body defined, in the Plugin, for type \"${item.data.type}\".`\n );\n console.log(JSON.stringify(item));\n continue;\n }\n\n // Perform the actual action call.\n const response = await context.handlerClient.invoke({\n name,\n payload: {\n httpMethod: \"POST\",\n path: url,\n headers: {\n [\"content-type\"]: \"application/json\",\n Authorization: encodeToken({\n id: item.id,\n locale: item.locale,\n tenant: item.tenant\n }),\n [\"x-tenant\"]: tenant,\n [\"x-i18n-locale\"]: `default:${locale};content:${locale};`\n },\n body: JSON.stringify(body)\n },\n await: true\n });\n if (response?.body) {\n console.log(JSON.stringify({ body: response.body }, null, 2));\n continue;\n }\n console.log(JSON.stringify({ response }, null, 2));\n\n // TODO: Maybe update the status like error in original item in DB.\n }\n } catch (e) {\n log(\"[HANDLER_EXECUTE_ACTION] Error => \", e);\n // TODO: Maybe update the status like error in original item in DB.\n }\n });\n};\n\nexport const executeActionHandlerPlugins = (config: Configuration) => [\n new ContextPlugin(async context => {\n context.plugins.register([new PageBuilderGraphQL(), new HeadlessCMSGraphQL()]);\n }),\n basePlugins(),\n createExecuteActionLambda(config)\n];\n"],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  import { Plugin } from "@webiny/plugins/Plugin";
2
2
  import { ApwScheduleActionData } from "../../../types";
3
3
  import { ApwSettings } from "../../utils";
4
+ export { ApwScheduleActionData, ApwSettings };
5
+ export interface ApplicationGraphQLGetUrlParams {
6
+ tenant: string;
7
+ locale: string;
8
+ }
4
9
  export interface ApplicationGraphQLBody<T = Record<string, any>> {
5
10
  query: string;
6
11
  variables: T;
7
12
  }
8
13
  export declare abstract class ApplicationGraphQL extends Plugin {
9
14
  static readonly type: string;
15
+ abstract getUrl(params: ApplicationGraphQLGetUrlParams): string;
10
16
  abstract canUse(data: ApwScheduleActionData): boolean;
11
17
  abstract getArn(settings: ApwSettings): string;
12
18
  abstract getGraphQLBody(data: ApwScheduleActionData): ApplicationGraphQLBody | null;