@webiny/api-apw 0.0.0-unstable.13771d80a8 → 0.0.0-unstable.2696f9d9e8

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 (234) hide show
  1. package/ApwChangeRequestNotification.js +4 -6
  2. package/ApwChangeRequestNotification.js.map +1 -1
  3. package/ApwCommentNotification.js +4 -6
  4. package/ApwCommentNotification.js.map +1 -1
  5. package/ApwContentReviewNotification.js +4 -6
  6. package/ApwContentReviewNotification.js.map +1 -1
  7. package/ApwContentUrlPlugin.js +4 -6
  8. package/ApwContentUrlPlugin.js.map +1 -1
  9. package/ContentApwSettingsPlugin.js +5 -4
  10. package/ContentApwSettingsPlugin.js.map +1 -1
  11. package/README.md +3 -3
  12. package/crud/createChangeRequestMethods.js +3 -1
  13. package/crud/createChangeRequestMethods.js.map +1 -1
  14. package/crud/createCommentMethods.js +3 -1
  15. package/crud/createCommentMethods.js.map +1 -1
  16. package/crud/createContentReviewMethods.js +56 -30
  17. package/crud/createContentReviewMethods.js.map +1 -1
  18. package/crud/createReviewerMethods.js +3 -1
  19. package/crud/createReviewerMethods.js.map +1 -1
  20. package/crud/createWorkflowMethods.js +3 -1
  21. package/crud/createWorkflowMethods.js.map +1 -1
  22. package/crud/index.js +6 -5
  23. package/crud/index.js.map +1 -1
  24. package/crud/utils.js +7 -6
  25. package/crud/utils.js.map +1 -1
  26. package/index.d.ts +1 -1
  27. package/index.js +3 -1
  28. package/index.js.map +1 -1
  29. package/package.json +39 -46
  30. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +5 -5
  31. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -1
  32. package/plugins/cms/apwEntryPlugins.js +9 -6
  33. package/plugins/cms/apwEntryPlugins.js.map +1 -1
  34. package/plugins/cms/index.js +3 -1
  35. package/plugins/cms/index.js.map +1 -1
  36. package/plugins/cms/linkContentReviewToEntry.js +5 -4
  37. package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
  38. package/plugins/cms/linkWorkflowToEntry.js +16 -15
  39. package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
  40. package/plugins/cms/notifications/changeRequestNotification.js +3 -1
  41. package/plugins/cms/notifications/changeRequestNotification.js.map +1 -1
  42. package/plugins/cms/notifications/commentNotification.js +3 -1
  43. package/plugins/cms/notifications/commentNotification.js.map +1 -1
  44. package/plugins/cms/notifications/contentReviewNotification.js +3 -1
  45. package/plugins/cms/notifications/contentReviewNotification.js.map +1 -1
  46. package/plugins/cms/notifications/contentUrl.js +3 -1
  47. package/plugins/cms/notifications/contentUrl.js.map +1 -1
  48. package/plugins/cms/triggerContentReview.js +6 -5
  49. package/plugins/cms/triggerContentReview.js.map +1 -1
  50. package/plugins/cms/updateContentReviewStatus.js +15 -13
  51. package/plugins/cms/updateContentReviewStatus.js.map +1 -1
  52. package/plugins/cms/utils.d.ts +3 -2
  53. package/plugins/cms/utils.js +22 -14
  54. package/plugins/cms/utils.js.map +1 -1
  55. package/plugins/context.js +3 -1
  56. package/plugins/context.js.map +1 -1
  57. package/plugins/graphql/changeRequest.gql.js +16 -12
  58. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  59. package/plugins/graphql/comment.gql.js +41 -35
  60. package/plugins/graphql/comment.gql.js.map +1 -1
  61. package/plugins/graphql/contentReview.gql.js +23 -13
  62. package/plugins/graphql/contentReview.gql.js.map +1 -1
  63. package/plugins/graphql/reviewer.gql.js +15 -12
  64. package/plugins/graphql/reviewer.gql.js.map +1 -1
  65. package/plugins/graphql/utils.d.ts +2 -0
  66. package/plugins/graphql/utils.js +12 -0
  67. package/plugins/graphql/utils.js.map +1 -0
  68. package/plugins/graphql/workflow.gql.js +15 -12
  69. package/plugins/graphql/workflow.gql.js.map +1 -1
  70. package/plugins/graphql.js +3 -1
  71. package/plugins/graphql.js.map +1 -1
  72. package/plugins/hooks/createReviewerFromIdentity.js +4 -2
  73. package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
  74. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +3 -1
  75. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
  76. package/plugins/hooks/deleteCommentsAfterChangeRequest.js +3 -1
  77. package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
  78. package/plugins/hooks/index.js +3 -1
  79. package/plugins/hooks/index.js.map +1 -1
  80. package/plugins/hooks/initializeContentReviewSteps.js +6 -4
  81. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  82. package/plugins/hooks/initializeNotifications.js +3 -1
  83. package/plugins/hooks/initializeNotifications.js.map +1 -1
  84. package/plugins/hooks/listContentReviews.js +4 -2
  85. package/plugins/hooks/listContentReviews.js.map +1 -1
  86. package/plugins/hooks/notifications/appUrl.js +3 -1
  87. package/plugins/hooks/notifications/appUrl.js.map +1 -1
  88. package/plugins/hooks/notifications/changeRequestAfterCreate.js +6 -9
  89. package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
  90. package/plugins/hooks/notifications/changeRequestUrl.js +3 -1
  91. package/plugins/hooks/notifications/changeRequestUrl.js.map +1 -1
  92. package/plugins/hooks/notifications/commentAfterCreate.js +6 -9
  93. package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
  94. package/plugins/hooks/notifications/commentUrl.js +3 -1
  95. package/plugins/hooks/notifications/commentUrl.js.map +1 -1
  96. package/plugins/hooks/notifications/contentReviewAfterCreate.js +7 -10
  97. package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
  98. package/plugins/hooks/notifications/contentReviewUrl.js +3 -1
  99. package/plugins/hooks/notifications/contentReviewUrl.js.map +1 -1
  100. package/plugins/hooks/notifications/contentUrl.js +3 -1
  101. package/plugins/hooks/notifications/contentUrl.js.map +1 -1
  102. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js +3 -1
  103. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js.map +1 -1
  104. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js +3 -1
  105. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js.map +1 -1
  106. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js +3 -1
  107. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js.map +1 -1
  108. package/plugins/hooks/notifications/reviewers.js +18 -15
  109. package/plugins/hooks/notifications/reviewers.js.map +1 -1
  110. package/plugins/hooks/notifications/sendChangeRequestNotification.js +3 -1
  111. package/plugins/hooks/notifications/sendChangeRequestNotification.js.map +1 -1
  112. package/plugins/hooks/notifications/sendCommentNotification.js +3 -1
  113. package/plugins/hooks/notifications/sendCommentNotification.js.map +1 -1
  114. package/plugins/hooks/notifications/sendContentReviewNotification.js +3 -1
  115. package/plugins/hooks/notifications/sendContentReviewNotification.js.map +1 -1
  116. package/plugins/hooks/updatePendingChangeRequests.js +8 -6
  117. package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
  118. package/plugins/hooks/updateTotalComments.js +22 -15
  119. package/plugins/hooks/updateTotalComments.js.map +1 -1
  120. package/plugins/hooks/validateChangeRequest.js +3 -1
  121. package/plugins/hooks/validateChangeRequest.js.map +1 -1
  122. package/plugins/hooks/validateComment.js +3 -1
  123. package/plugins/hooks/validateComment.js.map +1 -1
  124. package/plugins/hooks/validateContentReview.js +3 -1
  125. package/plugins/hooks/validateContentReview.js.map +1 -1
  126. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +5 -5
  127. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -1
  128. package/plugins/pageBuilder/apwContentPagePlugins.js +3 -1
  129. package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -1
  130. package/plugins/pageBuilder/extendPbPageSettingsSchema.js +3 -1
  131. package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -1
  132. package/plugins/pageBuilder/index.js +3 -1
  133. package/plugins/pageBuilder/index.js.map +1 -1
  134. package/plugins/pageBuilder/linkContentReviewToPage.js +16 -12
  135. package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
  136. package/plugins/pageBuilder/linkWorkflowToPage.js +3 -1
  137. package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -1
  138. package/plugins/pageBuilder/notifications/changeRequestNotification.js +3 -1
  139. package/plugins/pageBuilder/notifications/changeRequestNotification.js.map +1 -1
  140. package/plugins/pageBuilder/notifications/commentNotification.js +3 -1
  141. package/plugins/pageBuilder/notifications/commentNotification.js.map +1 -1
  142. package/plugins/pageBuilder/notifications/contentReviewNotification.js +3 -1
  143. package/plugins/pageBuilder/notifications/contentReviewNotification.js.map +1 -1
  144. package/plugins/pageBuilder/notifications/contentUrl.js +3 -1
  145. package/plugins/pageBuilder/notifications/contentUrl.js.map +1 -1
  146. package/plugins/pageBuilder/triggerContentReview.js +3 -1
  147. package/plugins/pageBuilder/triggerContentReview.js.map +1 -1
  148. package/plugins/pageBuilder/updateContentReviewStatus.js +11 -6
  149. package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
  150. package/plugins/pageBuilder/utils.d.ts +2 -2
  151. package/plugins/pageBuilder/utils.js +3 -1
  152. package/plugins/pageBuilder/utils.js.map +1 -1
  153. package/plugins/utils.d.ts +1 -1
  154. package/plugins/utils.js +6 -3
  155. package/plugins/utils.js.map +1 -1
  156. package/scheduler/createScheduleActionMethods.js +44 -30
  157. package/scheduler/createScheduleActionMethods.js.map +1 -1
  158. package/scheduler/handlers/executeAction/index.d.ts +1 -1
  159. package/scheduler/handlers/executeAction/index.js +11 -6
  160. package/scheduler/handlers/executeAction/index.js.map +1 -1
  161. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +5 -4
  162. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
  163. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +6 -7
  164. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
  165. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +4 -7
  166. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
  167. package/scheduler/handlers/executeAction/security.js +3 -1
  168. package/scheduler/handlers/executeAction/security.js.map +1 -1
  169. package/scheduler/handlers/scheduleAction/index.d.ts +1 -1
  170. package/scheduler/handlers/scheduleAction/index.js +21 -14
  171. package/scheduler/handlers/scheduleAction/index.js.map +1 -1
  172. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +17 -14
  173. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
  174. package/scheduler/handlers/utils.d.ts +2 -3
  175. package/scheduler/handlers/utils.js +6 -7
  176. package/scheduler/handlers/utils.js.map +1 -1
  177. package/scheduler/index.js +3 -1
  178. package/scheduler/index.js.map +1 -1
  179. package/scheduler/types.d.ts +10 -8
  180. package/scheduler/types.js +14 -12
  181. package/scheduler/types.js.map +1 -1
  182. package/storageOperations/changeRequestStorageOperations.js +60 -27
  183. package/storageOperations/changeRequestStorageOperations.js.map +1 -1
  184. package/storageOperations/commentStorageOperations.js +36 -30
  185. package/storageOperations/commentStorageOperations.js.map +1 -1
  186. package/storageOperations/contentReviewStorageOperations.d.ts +1 -1
  187. package/storageOperations/contentReviewStorageOperations.js +35 -27
  188. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  189. package/storageOperations/index.d.ts +1 -7
  190. package/storageOperations/index.js +11 -16
  191. package/storageOperations/index.js.map +1 -1
  192. package/storageOperations/models/changeRequest.model.d.ts +1 -2
  193. package/storageOperations/models/changeRequest.model.js +7 -7
  194. package/storageOperations/models/changeRequest.model.js.map +1 -1
  195. package/storageOperations/models/comment.model.d.ts +1 -2
  196. package/storageOperations/models/comment.model.js +7 -7
  197. package/storageOperations/models/comment.model.js.map +1 -1
  198. package/storageOperations/models/contentReview.model.d.ts +1 -2
  199. package/storageOperations/models/contentReview.model.js +13 -11
  200. package/storageOperations/models/contentReview.model.js.map +1 -1
  201. package/storageOperations/models/index.js +6 -26
  202. package/storageOperations/models/index.js.map +1 -1
  203. package/storageOperations/models/reviewer.model.d.ts +1 -2
  204. package/storageOperations/models/reviewer.model.js +8 -8
  205. package/storageOperations/models/reviewer.model.js.map +1 -1
  206. package/storageOperations/models/utils.js +3 -1
  207. package/storageOperations/models/utils.js.map +1 -1
  208. package/storageOperations/models/workflow.model.d.ts +1 -2
  209. package/storageOperations/models/workflow.model.js +19 -19
  210. package/storageOperations/models/workflow.model.js.map +1 -1
  211. package/storageOperations/reviewerStorageOperations.d.ts +1 -1
  212. package/storageOperations/reviewerStorageOperations.js +38 -35
  213. package/storageOperations/reviewerStorageOperations.js.map +1 -1
  214. package/storageOperations/types.js +3 -1
  215. package/storageOperations/workflowStorageOperations.js +41 -31
  216. package/storageOperations/workflowStorageOperations.js.map +1 -1
  217. package/types.d.ts +16 -16
  218. package/types.js +126 -28
  219. package/types.js.map +1 -1
  220. package/utils/contentApwSettingsPlugin.js +3 -1
  221. package/utils/contentApwSettingsPlugin.js.map +1 -1
  222. package/utils/errors.js +3 -1
  223. package/utils/errors.js.map +1 -1
  224. package/utils/fieldResolver.js +7 -7
  225. package/utils/fieldResolver.js.map +1 -1
  226. package/utils/pickEntryFieldValues.d.ts +3 -0
  227. package/utils/pickEntryFieldValues.js +31 -0
  228. package/utils/pickEntryFieldValues.js.map +1 -0
  229. package/utils/resolve.d.ts +1 -1
  230. package/utils/resolve.js +3 -1
  231. package/utils/resolve.js.map +1 -1
  232. package/storageOperations/models/contentModelPluginFactory.d.ts +0 -11
  233. package/storageOperations/models/contentModelPluginFactory.js +0 -19
  234. package/storageOperations/models/contentModelPluginFactory.js.map +0 -1
@@ -54,4 +54,6 @@ const createCustomAuth = ({
54
54
  });
55
55
  });
56
56
  };
57
- exports.createCustomAuth = createCustomAuth;
57
+ exports.createCustomAuth = createCustomAuth;
58
+
59
+ //# sourceMappingURL=security.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createCustomAuth","storageOperations","ContextPlugin","security","hasApwToken","addAuthenticator","token","startsWith","TOKEN_PREFIX","id","tenant","locale","decodeToken","item","get","where","createdBy","addAuthorizer","name"],"sources":["security.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CreateApwContextParams } from \"~/scheduler/types\";\nimport { decodeToken, TOKEN_PREFIX } from \"~/scheduler/handlers/utils\";\nimport { ApwContext } from \"~/types\";\n\nexport const createCustomAuth = ({ storageOperations }: CreateApwContextParams) => {\n return new ContextPlugin<ApwContext>(({ security }) => {\n let hasApwToken = false;\n\n security.addAuthenticator(async token => {\n if (!token.startsWith(TOKEN_PREFIX)) {\n return null;\n }\n\n const { id, tenant, locale } = decodeToken(token);\n /**\n * No point in going further if any piece of information is missing.\n */\n if (!id || !tenant || !locale) {\n return null;\n }\n /**\n * We must verify that action we are trying to execute actually exists.\n */\n const item = await storageOperations.get({\n where: {\n id,\n tenant,\n locale\n }\n });\n\n if (!item) {\n return null;\n }\n\n hasApwToken = true;\n\n return item.createdBy;\n });\n\n security.addAuthorizer(async () => {\n if (!hasApwToken) {\n return null;\n }\n return [{ name: \"*\" }];\n });\n });\n};\n"],"mappings":";;;;;;AAAA;AAEA;AAGO,MAAMA,gBAAgB,GAAG,CAAC;EAAEC;AAA0C,CAAC,KAAK;EAC/E,OAAO,IAAIC,kBAAa,CAAa,CAAC;IAAEC;EAAS,CAAC,KAAK;IACnD,IAAIC,WAAW,GAAG,KAAK;IAEvBD,QAAQ,CAACE,gBAAgB,CAAC,MAAMC,KAAK,IAAI;MACrC,IAAI,CAACA,KAAK,CAACC,UAAU,CAACC,mBAAY,CAAC,EAAE;QACjC,OAAO,IAAI;MACf;MAEA,MAAM;QAAEC,EAAE;QAAEC,MAAM;QAAEC;MAAO,CAAC,GAAG,IAAAC,kBAAW,EAACN,KAAK,CAAC;MACjD;AACZ;AACA;MACY,IAAI,CAACG,EAAE,IAAI,CAACC,MAAM,IAAI,CAACC,MAAM,EAAE;QAC3B,OAAO,IAAI;MACf;MACA;AACZ;AACA;MACY,MAAME,IAAI,GAAG,MAAMZ,iBAAiB,CAACa,GAAG,CAAC;QACrCC,KAAK,EAAE;UACHN,EAAE;UACFC,MAAM;UACNC;QACJ;MACJ,CAAC,CAAC;MAEF,IAAI,CAACE,IAAI,EAAE;QACP,OAAO,IAAI;MACf;MAEAT,WAAW,GAAG,IAAI;MAElB,OAAOS,IAAI,CAACG,SAAS;IACzB,CAAC,CAAC;IAEFb,QAAQ,CAACc,aAAa,CAAC,YAAY;MAC/B,IAAI,CAACb,WAAW,EAAE;QACd,OAAO,IAAI;MACf;MACA,OAAO,CAAC;QAAEc,IAAI,EAAE;MAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAC"}
1
+ {"version":3,"names":["_api","require","_utils","createCustomAuth","storageOperations","ContextPlugin","security","hasApwToken","addAuthenticator","token","startsWith","TOKEN_PREFIX","id","tenant","locale","decodeToken","item","get","where","createdBy","addAuthorizer","name","exports"],"sources":["security.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CreateApwContextParams } from \"~/scheduler/types\";\nimport { decodeToken, TOKEN_PREFIX } from \"~/scheduler/handlers/utils\";\nimport { ApwContext } from \"~/types\";\n\nexport const createCustomAuth = ({ storageOperations }: CreateApwContextParams) => {\n return new ContextPlugin<ApwContext>(({ security }) => {\n let hasApwToken = false;\n\n security.addAuthenticator(async token => {\n if (!token.startsWith(TOKEN_PREFIX)) {\n return null;\n }\n\n const { id, tenant, locale } = decodeToken(token);\n /**\n * No point in going further if any piece of information is missing.\n */\n if (!id || !tenant || !locale) {\n return null;\n }\n /**\n * We must verify that action we are trying to execute actually exists.\n */\n const item = await storageOperations.get({\n where: {\n id,\n tenant,\n locale\n }\n });\n\n if (!item) {\n return null;\n }\n\n hasApwToken = true;\n\n return item.createdBy;\n });\n\n security.addAuthorizer(async () => {\n if (!hasApwToken) {\n return null;\n }\n return [{ name: \"*\" }];\n });\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAGO,MAAME,gBAAgB,GAAGA,CAAC;EAAEC;AAA0C,CAAC,KAAK;EAC/E,OAAO,IAAIC,kBAAa,CAAa,CAAC;IAAEC;EAAS,CAAC,KAAK;IACnD,IAAIC,WAAW,GAAG,KAAK;IAEvBD,QAAQ,CAACE,gBAAgB,CAAC,MAAMC,KAAK,IAAI;MACrC,IAAI,CAACA,KAAK,CAACC,UAAU,CAACC,mBAAY,CAAC,EAAE;QACjC,OAAO,IAAI;MACf;MAEA,MAAM;QAAEC,EAAE;QAAEC,MAAM;QAAEC;MAAO,CAAC,GAAG,IAAAC,kBAAW,EAACN,KAAK,CAAC;MACjD;AACZ;AACA;MACY,IAAI,CAACG,EAAE,IAAI,CAACC,MAAM,IAAI,CAACC,MAAM,EAAE;QAC3B,OAAO,IAAI;MACf;MACA;AACZ;AACA;MACY,MAAME,IAAI,GAAG,MAAMZ,iBAAiB,CAACa,GAAG,CAAC;QACrCC,KAAK,EAAE;UACHN,EAAE;UACFC,MAAM;UACNC;QACJ;MACJ,CAAC,CAAC;MAEF,IAAI,CAACE,IAAI,EAAE;QACP,OAAO,IAAI;MACf;MAEAT,WAAW,GAAG,IAAI;MAElB,OAAOS,IAAI,CAACG,SAAS;IACzB,CAAC,CAAC;IAEFb,QAAQ,CAACc,aAAa,CAAC,YAAY;MAC/B,IAAI,CAACb,WAAW,EAAE;QACd,OAAO,IAAI;MACf;MACA,OAAO,CAAC;QAAEc,IAAI,EAAE;MAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAnB,gBAAA,GAAAA,gBAAA"}
@@ -19,4 +19,4 @@ export interface Configuration {
19
19
  executeAction: string;
20
20
  };
21
21
  }
22
- export declare const scheduleActionHandlerPlugins: (config: Configuration) => ((import("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin").ValueFilterPlugin[][] | import("@webiny/handler").HandlerResultPlugin<import("@webiny/handler/types").Context> | import("@webiny/api").ContextPlugin<import("@webiny/handler-db/types").DbContext>[])[] | import("@webiny/handler-aws").RawEventHandler<HandlerArgs, import("@webiny/handler/types").Context, any>)[];
22
+ export declare const scheduleActionHandlerPlugins: (config: Configuration) => ((import("@webiny/handler").HandlerResultPlugin<import("@webiny/handler/types").Context> | import("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin").ValueFilterPlugin[][] | import("@webiny/api").ContextPlugin<import("@webiny/handler-db/types").DbContext>[])[] | import("@webiny/handler-aws").RawEventHandler<HandlerArgs, import("@webiny/handler/types").Context, any>)[];
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.scheduleActionHandlerPlugins = exports.InvocationTypes = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
7
  var _utils = require("../utils");
10
8
  var _scheduleAction = require("./scheduleAction.utils");
11
9
  var _handlerAws = require("@webiny/handler-aws");
12
10
  /**
13
11
  * This logic/file should be moved somewhere else as it is relying on AWS specific stuff.
14
12
  */
15
- let InvocationTypes;
16
- exports.InvocationTypes = InvocationTypes;
17
- (function (InvocationTypes) {
13
+ let InvocationTypes = /*#__PURE__*/function (InvocationTypes) {
18
14
  InvocationTypes["SCHEDULED"] = "scheduled";
19
- })(InvocationTypes || (exports.InvocationTypes = InvocationTypes = {}));
15
+ return InvocationTypes;
16
+ }({});
17
+ exports.InvocationTypes = InvocationTypes;
20
18
  const log = console.log;
21
19
 
22
20
  /**
@@ -92,14 +90,17 @@ const createScheduleActionLambda = params => {
92
90
  */
93
91
  log(`Update task's datetime to `, futureDatetime);
94
92
  await storageOperations.update({
95
- item: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, nextItem), {}, {
96
- data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, nextItem.data), {}, {
93
+ item: {
94
+ ...nextItem,
95
+ data: {
96
+ ...nextItem.data,
97
97
  datetime: futureDatetime
98
- })
99
- }),
100
- input: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, nextItem.data), {}, {
98
+ }
99
+ },
100
+ input: {
101
+ ...nextItem.data,
101
102
  datetime: futureDatetime
102
- })
103
+ }
103
104
  });
104
105
  /**
105
106
  * Restore "datetime" of current task so that it can be schedule in next cycle.
@@ -134,11 +135,17 @@ const createScheduleActionLambda = params => {
134
135
  item: nextItem
135
136
  });
136
137
  } catch (ex) {
137
- log("[HANDLER_CREATE_RULE] Error => ", ex);
138
+ console.error("[HANDLER_CREATE_RULE] => ", JSON.stringify({
139
+ message: ex.message,
140
+ code: ex.code,
141
+ data: ex.data
142
+ }));
138
143
  // TODO: Handler error. Maybe save it into DB.
139
144
  }
140
145
  });
141
146
  };
142
147
 
143
148
  const scheduleActionHandlerPlugins = config => [(0, _utils.basePlugins)(), createScheduleActionLambda(config)];
144
- exports.scheduleActionHandlerPlugins = scheduleActionHandlerPlugins;
149
+ exports.scheduleActionHandlerPlugins = scheduleActionHandlerPlugins;
150
+
151
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["InvocationTypes","log","console","createScheduleActionLambda","params","cwClient","cloudWatchEventClient","storageOperations","handlers","createRawEventHandler","payload","context","lambdaContext","eventContext","locale","tenant","invocationType","SCHEDULED","executeTask","args","lambdaName","executeAction","handlerClient","currentTask","getCurrentTask","where","nextItem","list","sort","limit","nextTaskDatetime","data","datetime","currentTaskDatetime","isDateTimeInNextCentury","shouldScheduleTask","futureDatetime","moveDateTimeToNextCentury","update","item","input","shouldRestoreDatetime","restoreDateTime","task","scheduleLambdaExecution","invokedFunctionArn","updateCurrentTask","ex","scheduleActionHandlerPlugins","config","basePlugins"],"sources":["index.ts"],"sourcesContent":["/**\n * This logic/file should be moved somewhere else as it is relying on AWS specific stuff.\n */\nimport { ApwScheduleActionStorageOperations } from \"~/scheduler/types\";\nimport {\n isDateTimeInNextCentury,\n moveDateTimeToNextCentury,\n shouldRestoreDatetime,\n basePlugins\n} from \"~/scheduler/handlers/utils\";\nimport {\n executeTask,\n shouldScheduleTask,\n restoreDateTime,\n scheduleLambdaExecution\n} from \"./scheduleAction.utils\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\n\nexport enum InvocationTypes {\n SCHEDULED = \"scheduled\"\n}\n\nexport interface HandlerArgs {\n datetime: string;\n tenant: string;\n locale: string;\n invocationType?: InvocationTypes;\n futureDatetime?: string;\n}\n\nexport interface Configuration {\n cwClient: any;\n storageOperations: ApwScheduleActionStorageOperations;\n handlers: {\n executeAction: string;\n };\n}\n\nconst log = console.log;\n\n/**\n * Handler that creates a cloudwatch event rule for the schedule action workflow.\n */\nconst createScheduleActionLambda = (params: Configuration) => {\n const { cwClient: cloudWatchEventClient, storageOperations, handlers } = params;\n\n return createRawEventHandler<HandlerArgs>(\n async ({ payload, context, lambdaContext: eventContext }) => {\n try {\n const { locale, tenant, invocationType } = payload;\n /**\n * If invocationType is \"scheduled\", execute the action.\n */\n if (invocationType === InvocationTypes.SCHEDULED) {\n await executeTask({\n args: payload,\n lambdaName: handlers.executeAction,\n handlerClient: context.handlerClient,\n storageOperations\n });\n }\n\n /**\n * Get current scheduled task from the DB.\n */\n const currentTask = await storageOperations.getCurrentTask({\n where: {\n tenant,\n locale\n }\n });\n\n /**\n * Get next task from the DB.\n */\n const [[nextItem]] = await storageOperations.list({\n where: {\n tenant,\n locale\n },\n sort: [\"datetime_ASC\"],\n limit: 1\n });\n\n if (!nextItem) {\n log(`No item found.`);\n return;\n }\n\n const nextTaskDatetime = nextItem.data.datetime;\n const currentTaskDatetime = currentTask && currentTask.data.datetime;\n\n if (isDateTimeInNextCentury(nextTaskDatetime)) {\n log(`Already processed the task.`);\n return;\n }\n\n if (!shouldScheduleTask(nextTaskDatetime, currentTaskDatetime)) {\n log(`Already scheduled the task.`);\n return;\n }\n\n const futureDatetime = moveDateTimeToNextCentury(nextItem.data.datetime);\n /**\n * Update \"datetime\" to a future date to mark it as scheduled.\n */\n log(`Update task's datetime to `, futureDatetime);\n await storageOperations.update({\n item: {\n ...nextItem,\n data: { ...nextItem.data, datetime: futureDatetime }\n },\n input: { ...nextItem.data, datetime: futureDatetime }\n });\n /**\n * Restore \"datetime\" of current task so that it can be schedule in next cycle.\n */\n if (\n currentTaskDatetime &&\n shouldRestoreDatetime({\n invocationType,\n datetime: currentTaskDatetime\n })\n ) {\n await restoreDateTime({\n tenant,\n locale,\n task: currentTask,\n storageOperations\n });\n }\n /**\n * Schedule Lambda\n */\n log(`Schedule Lambda Execution...`);\n await scheduleLambdaExecution({\n cloudWatchEventClient,\n invokedFunctionArn: eventContext.invokedFunctionArn,\n datetime: nextItem.data.datetime,\n futureDatetime: futureDatetime,\n tenant,\n locale\n });\n /**\n * Update current task.\n */\n await storageOperations.updateCurrentTask({ item: nextItem });\n } catch (ex) {\n log(\"[HANDLER_CREATE_RULE] Error => \", ex);\n // TODO: Handler error. Maybe save it into DB.\n }\n }\n );\n};\n\nexport const scheduleActionHandlerPlugins = (config: Configuration) => [\n basePlugins(),\n createScheduleActionLambda(config)\n];\n"],"mappings":"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"}
1
+ {"version":3,"names":["_utils","require","_scheduleAction","_handlerAws","InvocationTypes","exports","log","console","createScheduleActionLambda","params","cwClient","cloudWatchEventClient","storageOperations","handlers","createRawEventHandler","payload","context","lambdaContext","eventContext","locale","tenant","invocationType","SCHEDULED","executeTask","args","lambdaName","executeAction","handlerClient","currentTask","getCurrentTask","where","nextItem","list","sort","limit","nextTaskDatetime","data","datetime","currentTaskDatetime","isDateTimeInNextCentury","shouldScheduleTask","futureDatetime","moveDateTimeToNextCentury","update","item","input","shouldRestoreDatetime","restoreDateTime","task","scheduleLambdaExecution","invokedFunctionArn","updateCurrentTask","ex","error","JSON","stringify","message","code","scheduleActionHandlerPlugins","config","basePlugins"],"sources":["index.ts"],"sourcesContent":["/**\n * This logic/file should be moved somewhere else as it is relying on AWS specific stuff.\n */\nimport { ApwScheduleActionStorageOperations } from \"~/scheduler/types\";\nimport {\n isDateTimeInNextCentury,\n moveDateTimeToNextCentury,\n shouldRestoreDatetime,\n basePlugins\n} from \"~/scheduler/handlers/utils\";\nimport {\n executeTask,\n shouldScheduleTask,\n restoreDateTime,\n scheduleLambdaExecution\n} from \"./scheduleAction.utils\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\n\nexport enum InvocationTypes {\n SCHEDULED = \"scheduled\"\n}\n\nexport interface HandlerArgs {\n datetime: string;\n tenant: string;\n locale: string;\n invocationType?: InvocationTypes;\n futureDatetime?: string;\n}\n\nexport interface Configuration {\n cwClient: any;\n storageOperations: ApwScheduleActionStorageOperations;\n handlers: {\n executeAction: string;\n };\n}\n\nconst log = console.log;\n\n/**\n * Handler that creates a cloudwatch event rule for the schedule action workflow.\n */\nconst createScheduleActionLambda = (params: Configuration) => {\n const { cwClient: cloudWatchEventClient, storageOperations, handlers } = params;\n\n return createRawEventHandler<HandlerArgs>(\n async ({ payload, context, lambdaContext: eventContext }) => {\n try {\n const { locale, tenant, invocationType } = payload;\n /**\n * If invocationType is \"scheduled\", execute the action.\n */\n if (invocationType === InvocationTypes.SCHEDULED) {\n await executeTask({\n args: payload,\n lambdaName: handlers.executeAction,\n handlerClient: context.handlerClient,\n storageOperations\n });\n }\n\n /**\n * Get current scheduled task from the DB.\n */\n const currentTask = await storageOperations.getCurrentTask({\n where: {\n tenant,\n locale\n }\n });\n\n /**\n * Get next task from the DB.\n */\n const [[nextItem]] = await storageOperations.list({\n where: {\n tenant,\n locale\n },\n sort: [\"datetime_ASC\"],\n limit: 1\n });\n\n if (!nextItem) {\n log(`No item found.`);\n return;\n }\n\n const nextTaskDatetime = nextItem.data.datetime;\n const currentTaskDatetime = currentTask && currentTask.data.datetime;\n\n if (isDateTimeInNextCentury(nextTaskDatetime)) {\n log(`Already processed the task.`);\n return;\n }\n\n if (!shouldScheduleTask(nextTaskDatetime, currentTaskDatetime)) {\n log(`Already scheduled the task.`);\n return;\n }\n\n const futureDatetime = moveDateTimeToNextCentury(nextItem.data.datetime);\n /**\n * Update \"datetime\" to a future date to mark it as scheduled.\n */\n log(`Update task's datetime to `, futureDatetime);\n await storageOperations.update({\n item: {\n ...nextItem,\n data: { ...nextItem.data, datetime: futureDatetime }\n },\n input: { ...nextItem.data, datetime: futureDatetime }\n });\n /**\n * Restore \"datetime\" of current task so that it can be schedule in next cycle.\n */\n if (\n currentTaskDatetime &&\n shouldRestoreDatetime({\n invocationType,\n datetime: currentTaskDatetime\n })\n ) {\n await restoreDateTime({\n tenant,\n locale,\n task: currentTask,\n storageOperations\n });\n }\n /**\n * Schedule Lambda\n */\n log(`Schedule Lambda Execution...`);\n await scheduleLambdaExecution({\n cloudWatchEventClient,\n invokedFunctionArn: eventContext.invokedFunctionArn,\n datetime: nextItem.data.datetime,\n futureDatetime: futureDatetime,\n tenant,\n locale\n });\n /**\n * Update current task.\n */\n await storageOperations.updateCurrentTask({ item: nextItem });\n } catch (ex) {\n console.error(\n \"[HANDLER_CREATE_RULE] => \",\n JSON.stringify({\n message: ex.message,\n code: ex.code,\n data: ex.data\n })\n );\n // TODO: Handler error. Maybe save it into DB.\n }\n }\n );\n};\n\nexport const scheduleActionHandlerPlugins = (config: Configuration) => [\n basePlugins(),\n createScheduleActionLambda(config)\n];\n"],"mappings":"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"}
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.restoreDateTime = exports.executeTask = void 0;
8
7
  exports.scheduleLambdaExecution = scheduleLambdaExecution;
9
8
  exports.shouldScheduleTask = void 0;
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
9
  var _utils = require("../utils");
12
10
  var _index = require("./index");
13
- var _clientCloudwatchEvents = require("@aws-sdk/client-cloudwatch-events");
11
+ var _clientCloudwatch = require("@webiny/aws-sdk/client-cloudwatch");
14
12
  const log = console.log;
15
13
  /**
16
14
  * Current API limit/quota for Cloudwatch events is sufficient for now. But, we should watch for it;
@@ -32,7 +30,7 @@ async function scheduleLambdaExecution({
32
30
  /**
33
31
  * Remove the target
34
32
  */
35
- const removeTargetsCommand = new _clientCloudwatchEvents.RemoveTargetsCommand({
33
+ const removeTargetsCommand = new _clientCloudwatch.RemoveTargetsCommand({
36
34
  Rule: eventRuleName,
37
35
  Ids: [eventTargetId]
38
36
  });
@@ -47,7 +45,7 @@ async function scheduleLambdaExecution({
47
45
  /**
48
46
  * Delete the Rule
49
47
  */
50
- const deleteRuleCommand = new _clientCloudwatchEvents.DeleteRuleCommand({
48
+ const deleteRuleCommand = new _clientCloudwatch.DeleteRuleCommand({
51
49
  Name: eventRuleName
52
50
  });
53
51
  await cloudWatchEventClient.send(deleteRuleCommand);
@@ -64,11 +62,11 @@ async function scheduleLambdaExecution({
64
62
  State: "ENABLED",
65
63
  Description: `Enable us to schedule an action in publishing workflow at a particular datetime`
66
64
  };
67
- await cloudWatchEventClient.send(new _clientCloudwatchEvents.PutRuleCommand(ruleParams));
65
+ await cloudWatchEventClient.send(new _clientCloudwatch.PutRuleCommand(ruleParams));
68
66
  /**
69
67
  * Add lambda as target for the rule.
70
68
  */
71
- await cloudWatchEventClient.send(new _clientCloudwatchEvents.PutTargetsCommand({
69
+ await cloudWatchEventClient.send(new _clientCloudwatch.PutTargetsCommand({
72
70
  Rule: eventRuleName,
73
71
  Targets: [{
74
72
  Arn: invokedFunctionArn,
@@ -104,14 +102,17 @@ const restoreDateTime = async ({
104
102
  if (item) {
105
103
  const newDateTime = (0, _utils.moveDateTimeToCurrentCentury)(item.data.datetime);
106
104
  await storageOperations.update({
107
- item: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
108
- data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item.data), {}, {
105
+ item: {
106
+ ...item,
107
+ data: {
108
+ ...item.data,
109
109
  datetime: newDateTime
110
- })
111
- }),
112
- input: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item.data), {}, {
110
+ }
111
+ },
112
+ input: {
113
+ ...item.data,
113
114
  datetime: newDateTime
114
- })
115
+ }
115
116
  });
116
117
  }
117
118
  };
@@ -150,4 +151,6 @@ const executeTask = async ({
150
151
  console.error(e);
151
152
  }
152
153
  };
153
- exports.executeTask = executeTask;
154
+ exports.executeTask = executeTask;
155
+
156
+ //# sourceMappingURL=scheduleAction.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["log","console","scheduleLambdaExecution","cloudWatchEventClient","invokedFunctionArn","datetime","futureDatetime","tenant","locale","eventTargetId","eventRuleName","getApwSettings","removeTargetsCommand","RemoveTargetsCommand","Rule","Ids","removeTargetsResponse","send","FailedEntryCount","info","FailedEntries","deleteRuleCommand","DeleteRuleCommand","Name","cronExpression","dateTimeToCronExpression","ruleParams","ScheduleExpression","State","Description","PutRuleCommand","PutTargetsCommand","Targets","Arn","Id","Input","JSON","stringify","invocationType","InvocationTypes","SCHEDULED","shouldScheduleTask","nextTaskDatetime","currentTaskDatetime","restoreDateTime","task","currentTask","storageOperations","id","item","get","where","newDateTime","moveDateTimeToCurrentCentury","data","update","input","executeTask","args","lambdaName","handlerClient","Date","toISOString","invoke","name","payload","await","deleteCurrentTask","e","error"],"sources":["scheduleAction.utils.ts"],"sourcesContent":["import { dateTimeToCronExpression, moveDateTimeToCurrentCentury } from \"~/scheduler/handlers/utils\";\nimport { ApwScheduleAction } from \"~/scheduler/types\";\nimport {\n HandlerArgs,\n InvocationTypes,\n Configuration\n} from \"~/scheduler/handlers/scheduleAction/index\";\nimport {\n DeleteRuleCommand,\n RemoveTargetsCommand,\n PutTargetsCommand,\n PutRuleCommand\n} from \"@aws-sdk/client-cloudwatch-events\";\nimport { ClientContext } from \"@webiny/handler-client/types\";\nimport { getApwSettings } from \"~/scheduler/handlers/utils\";\n\nconst log = console.log;\n\ninterface ScheduleLambdaExecutionParams extends Omit<HandlerArgs, \"invocationType\"> {\n cloudWatchEventClient: any;\n invokedFunctionArn: string;\n}\n\n/**\n * Current API limit/quota for Cloudwatch events is sufficient for now. But, we should watch for it;\n * in case of scheduling becoming the most frequently used feature.\n * https://aws.amazon.com/about-aws/whats-new/2017/07/cloudwatch-events-increases-rules-and-api-requests-limits/\n */\nexport async function scheduleLambdaExecution({\n cloudWatchEventClient,\n invokedFunctionArn,\n datetime,\n futureDatetime,\n tenant,\n locale\n}: ScheduleLambdaExecutionParams) {\n const { eventTargetId, eventRuleName } = await getApwSettings();\n /**\n * Remove the target\n */\n const removeTargetsCommand = new RemoveTargetsCommand({\n Rule: eventRuleName,\n Ids: [eventTargetId]\n });\n const removeTargetsResponse = await cloudWatchEventClient.send(removeTargetsCommand);\n /**\n * Log error.\n */\n if (\n typeof removeTargetsResponse.FailedEntryCount === \"number\" &&\n removeTargetsResponse.FailedEntryCount !== 0\n ) {\n console.info(\"Failed in removing the targets!\");\n console.info(removeTargetsResponse.FailedEntries);\n }\n /**\n * Delete the Rule\n */\n const deleteRuleCommand = new DeleteRuleCommand({\n Name: eventRuleName\n });\n await cloudWatchEventClient.send(deleteRuleCommand);\n\n /**\n * Create a new one.\n * Min H D M DW Y\n * 20 10 10 03 * 2022\n */\n const cronExpression = dateTimeToCronExpression(datetime);\n\n const ruleParams = {\n Name: eventRuleName,\n ScheduleExpression: `cron(${cronExpression})`,\n State: \"ENABLED\",\n Description: `Enable us to schedule an action in publishing workflow at a particular datetime`\n };\n\n await cloudWatchEventClient.send(new PutRuleCommand(ruleParams));\n /**\n * Add lambda as target for the rule.\n */\n await cloudWatchEventClient.send(\n new PutTargetsCommand({\n Rule: eventRuleName,\n Targets: [\n {\n Arn: invokedFunctionArn,\n Id: eventTargetId,\n Input: JSON.stringify({\n datetime: datetime,\n tenant: tenant,\n locale: locale,\n invocationType: InvocationTypes.SCHEDULED,\n futureDatetime: futureDatetime\n } as HandlerArgs)\n }\n ]\n })\n );\n}\n\nexport const shouldScheduleTask = (\n nextTaskDatetime: string,\n currentTaskDatetime: string | null\n): boolean => {\n return !currentTaskDatetime || nextTaskDatetime < currentTaskDatetime;\n};\n\ninterface RestoreDateTimeParams\n extends Pick<Configuration, \"storageOperations\">,\n Pick<HandlerArgs, \"tenant\" | \"locale\"> {\n task: ApwScheduleAction;\n}\n\nexport const restoreDateTime = async ({\n locale,\n tenant,\n task: currentTask,\n storageOperations\n}: RestoreDateTimeParams): Promise<void> => {\n log(`Mark task \"${currentTask.id}\" as undone by restoring original \"datetime\".`);\n const item = await storageOperations.get({\n where: {\n tenant,\n locale,\n id: currentTask.id\n }\n });\n if (item) {\n const newDateTime = moveDateTimeToCurrentCentury(item.data.datetime);\n await storageOperations.update({\n item: {\n ...item,\n data: { ...item.data, datetime: newDateTime }\n },\n input: { ...item.data, datetime: newDateTime }\n });\n }\n};\n\ninterface ExecuteTaskParams\n extends Pick<ClientContext, \"handlerClient\">,\n Pick<Configuration, \"storageOperations\"> {\n args: HandlerArgs;\n lambdaName: string;\n}\n\nexport const executeTask = async ({\n args,\n lambdaName,\n handlerClient,\n storageOperations\n}: ExecuteTaskParams): Promise<void> => {\n log(`Executing task at: `, new Date().toISOString());\n\n if (typeof handlerClient.invoke === \"function\") {\n await handlerClient.invoke({\n name: lambdaName,\n payload: {\n futureDatetime: args.futureDatetime,\n datetime: args.datetime,\n tenant: args.tenant,\n locale: args.locale\n },\n await: false\n });\n } else {\n console.log(`context.handlerClient.invoke is not a function!`);\n }\n\n /**\n * Delete current schedule Task. So that, we can schedule a new one later.\n */\n try {\n await storageOperations.deleteCurrentTask({\n tenant: args.tenant,\n locale: args.locale\n });\n } catch (e) {\n console.error(e);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_utils","require","_index","_clientCloudwatch","log","console","scheduleLambdaExecution","cloudWatchEventClient","invokedFunctionArn","datetime","futureDatetime","tenant","locale","eventTargetId","eventRuleName","getApwSettings","removeTargetsCommand","RemoveTargetsCommand","Rule","Ids","removeTargetsResponse","send","FailedEntryCount","info","FailedEntries","deleteRuleCommand","DeleteRuleCommand","Name","cronExpression","dateTimeToCronExpression","ruleParams","ScheduleExpression","State","Description","PutRuleCommand","PutTargetsCommand","Targets","Arn","Id","Input","JSON","stringify","invocationType","InvocationTypes","SCHEDULED","shouldScheduleTask","nextTaskDatetime","currentTaskDatetime","exports","restoreDateTime","task","currentTask","storageOperations","id","item","get","where","newDateTime","moveDateTimeToCurrentCentury","data","update","input","executeTask","args","lambdaName","handlerClient","Date","toISOString","invoke","name","payload","await","deleteCurrentTask","e","error"],"sources":["scheduleAction.utils.ts"],"sourcesContent":["import { dateTimeToCronExpression, moveDateTimeToCurrentCentury } from \"~/scheduler/handlers/utils\";\nimport { ApwScheduleAction } from \"~/scheduler/types\";\nimport {\n HandlerArgs,\n InvocationTypes,\n Configuration\n} from \"~/scheduler/handlers/scheduleAction/index\";\nimport {\n DeleteRuleCommand,\n RemoveTargetsCommand,\n PutTargetsCommand,\n PutRuleCommand,\n PutRuleCommandInput\n} from \"@webiny/aws-sdk/client-cloudwatch\";\nimport { ClientContext } from \"@webiny/handler-client/types\";\nimport { getApwSettings } from \"~/scheduler/handlers/utils\";\n\nconst log = console.log;\n\ninterface ScheduleLambdaExecutionParams extends Omit<HandlerArgs, \"invocationType\"> {\n cloudWatchEventClient: any;\n invokedFunctionArn: string;\n}\n\n/**\n * Current API limit/quota for Cloudwatch events is sufficient for now. But, we should watch for it;\n * in case of scheduling becoming the most frequently used feature.\n * https://aws.amazon.com/about-aws/whats-new/2017/07/cloudwatch-events-increases-rules-and-api-requests-limits/\n */\nexport async function scheduleLambdaExecution({\n cloudWatchEventClient,\n invokedFunctionArn,\n datetime,\n futureDatetime,\n tenant,\n locale\n}: ScheduleLambdaExecutionParams) {\n const { eventTargetId, eventRuleName } = await getApwSettings();\n /**\n * Remove the target\n */\n const removeTargetsCommand = new RemoveTargetsCommand({\n Rule: eventRuleName,\n Ids: [eventTargetId]\n });\n const removeTargetsResponse = await cloudWatchEventClient.send(removeTargetsCommand);\n /**\n * Log error.\n */\n if (\n typeof removeTargetsResponse.FailedEntryCount === \"number\" &&\n removeTargetsResponse.FailedEntryCount !== 0\n ) {\n console.info(\"Failed in removing the targets!\");\n console.info(removeTargetsResponse.FailedEntries);\n }\n /**\n * Delete the Rule\n */\n const deleteRuleCommand = new DeleteRuleCommand({\n Name: eventRuleName\n });\n await cloudWatchEventClient.send(deleteRuleCommand);\n\n /**\n * Create a new one.\n * Min H D M DW Y\n * 20 10 10 03 * 2022\n */\n const cronExpression = dateTimeToCronExpression(datetime);\n\n const ruleParams: PutRuleCommandInput = {\n Name: eventRuleName,\n ScheduleExpression: `cron(${cronExpression})`,\n State: \"ENABLED\",\n Description: `Enable us to schedule an action in publishing workflow at a particular datetime`\n };\n\n await cloudWatchEventClient.send(new PutRuleCommand(ruleParams));\n /**\n * Add lambda as target for the rule.\n */\n await cloudWatchEventClient.send(\n new PutTargetsCommand({\n Rule: eventRuleName,\n Targets: [\n {\n Arn: invokedFunctionArn,\n Id: eventTargetId,\n Input: JSON.stringify({\n datetime: datetime,\n tenant: tenant,\n locale: locale,\n invocationType: InvocationTypes.SCHEDULED,\n futureDatetime: futureDatetime\n } as HandlerArgs)\n }\n ]\n })\n );\n}\n\nexport const shouldScheduleTask = (\n nextTaskDatetime: string,\n currentTaskDatetime: string | null\n): boolean => {\n return !currentTaskDatetime || nextTaskDatetime < currentTaskDatetime;\n};\n\ninterface RestoreDateTimeParams\n extends Pick<Configuration, \"storageOperations\">,\n Pick<HandlerArgs, \"tenant\" | \"locale\"> {\n task: ApwScheduleAction;\n}\n\nexport const restoreDateTime = async ({\n locale,\n tenant,\n task: currentTask,\n storageOperations\n}: RestoreDateTimeParams): Promise<void> => {\n log(`Mark task \"${currentTask.id}\" as undone by restoring original \"datetime\".`);\n const item = await storageOperations.get({\n where: {\n tenant,\n locale,\n id: currentTask.id\n }\n });\n if (item) {\n const newDateTime = moveDateTimeToCurrentCentury(item.data.datetime);\n await storageOperations.update({\n item: {\n ...item,\n data: { ...item.data, datetime: newDateTime }\n },\n input: { ...item.data, datetime: newDateTime }\n });\n }\n};\n\ninterface ExecuteTaskParams\n extends Pick<ClientContext, \"handlerClient\">,\n Pick<Configuration, \"storageOperations\"> {\n args: HandlerArgs;\n lambdaName: string;\n}\n\nexport const executeTask = async ({\n args,\n lambdaName,\n handlerClient,\n storageOperations\n}: ExecuteTaskParams): Promise<void> => {\n log(`Executing task at: `, new Date().toISOString());\n\n if (typeof handlerClient.invoke === \"function\") {\n await handlerClient.invoke({\n name: lambdaName,\n payload: {\n futureDatetime: args.futureDatetime,\n datetime: args.datetime,\n tenant: args.tenant,\n locale: args.locale\n },\n await: false\n });\n } else {\n console.log(`context.handlerClient.invoke is not a function!`);\n }\n\n /**\n * Delete current schedule Task. So that, we can schedule a new one later.\n */\n try {\n await storageOperations.deleteCurrentTask({\n tenant: args.tenant,\n locale: args.locale\n });\n } catch (e) {\n console.error(e);\n }\n};\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { DocumentClient } from "aws-sdk/clients/dynamodb";
2
1
  import { InvocationTypes } from "../types";
3
2
  export declare const getIsoStringTillMinutes: (datetime: string) => string;
4
3
  export declare const dateTimeToCronExpression: (datetime: string) => string;
@@ -18,8 +17,8 @@ interface EncodeTokenParams {
18
17
  export declare const encodeToken: ({ id, tenant, locale }: EncodeTokenParams) => string;
19
18
  export declare const TOKEN_PREFIX = "apw-";
20
19
  export declare const decodeToken: (token: string) => Partial<EncodeTokenParams>;
21
- export declare const documentClient: DocumentClient;
22
- export declare const basePlugins: () => (import("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin").ValueFilterPlugin[][] | import("@webiny/handler").HandlerResultPlugin<import("@webiny/handler/types").Context> | import("@webiny/api").ContextPlugin<import("@webiny/handler-db/types").DbContext>[])[];
20
+ export declare const documentClient: import("@webiny/aws-sdk/client-dynamodb").DynamoDBDocument;
21
+ export declare const basePlugins: () => (import("@webiny/handler").HandlerResultPlugin<import("@webiny/handler/types").Context> | import("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin").ValueFilterPlugin[][] | import("@webiny/api").ContextPlugin<import("@webiny/handler-db/types").DbContext>[])[];
23
22
  /**
24
23
  * Get APW settings record from DDB.
25
24
  */
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.shouldRestoreDatetime = exports.moveDateTimeToNextCentury = exports.moveDateTimeToCurrentCentury = exports.isDateTimeInNextCentury = exports.getIsoStringTillMinutes = exports.getApwSettings = exports.encodeToken = exports.documentClient = exports.decodeToken = exports.dateTimeToCronExpression = exports.basePlugins = exports.TOKEN_PREFIX = void 0;
8
8
  var _dayjs = _interopRequireDefault(require("dayjs"));
9
9
  var _utc = _interopRequireDefault(require("dayjs/plugin/utc"));
10
- var _dynamodb = require("aws-sdk/clients/dynamodb");
10
+ var _clientDynamodb = require("@webiny/aws-sdk/client-dynamodb");
11
11
  var _handlerDb = _interopRequireDefault(require("@webiny/handler-db"));
12
12
  var _dbDynamodb = require("@webiny/db-dynamodb");
13
13
  var _plugins = _interopRequireDefault(require("@webiny/db-dynamodb/plugins"));
@@ -93,10 +93,7 @@ const decodeToken = token => {
93
93
  };
94
94
  };
95
95
  exports.decodeToken = decodeToken;
96
- const documentClient = new _dynamodb.DocumentClient({
97
- convertEmptyValues: true,
98
- region: process.env.AWS_REGION
99
- });
96
+ const documentClient = (0, _clientDynamodb.getDocumentClient)();
100
97
  exports.documentClient = documentClient;
101
98
  const basePlugins = () => [(0, _plugins.default)(), (0, _handlerLogs.default)(), (0, _handlerDb.default)({
102
99
  table: process.env.DB_TABLE,
@@ -120,11 +117,13 @@ const getApwSettings = async () => {
120
117
  };
121
118
  const {
122
119
  Item
123
- } = await documentClient.get(params).promise();
120
+ } = await documentClient.get(params);
124
121
  return {
125
122
  mainGraphqlFunctionArn: Item ? Item["mainGraphqlFunctionArn"] : "mainGraphqlFunctionArn",
126
123
  eventRuleName: Item ? Item["eventRuleName"] : "eventRuleName",
127
124
  eventTargetId: Item ? Item["eventTargetId"] : "eventTargetId"
128
125
  };
129
126
  };
130
- exports.getApwSettings = getApwSettings;
127
+ exports.getApwSettings = getApwSettings;
128
+
129
+ //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["dayjs","extend","utc","TIME_SEPARATOR","ELAPSED_CRON_EXPRESSION","getIsoStringTillMinutes","datetime","isNaN","Date","parse","slice","lastIndexOf","dateTimeToCronExpression","dayOfWeek","format","moveDateTimeToNextCentury","add","toISOString","moveDateTimeToCurrentCentury","subtract","isDateTimeInNextCentury","isAfter","shouldRestoreDatetime","invocationType","selfInvoked","InvocationTypes","SCHEDULED","today","isExecutionPending","encodeToken","id","tenant","locale","TOKEN_PREFIX","decodeToken","token","auth","length","split","documentClient","DocumentClient","convertEmptyValues","region","process","env","AWS_REGION","basePlugins","dynamoDbPlugins","logsPlugins","dbPlugins","table","DB_TABLE","driver","DynamoDbDriver","getApwSettings","variant","STAGED_ROLLOUTS_VARIANT","params","TableName","Key","PK","SK","Item","get","promise","mainGraphqlFunctionArn","eventRuleName","eventTargetId"],"sources":["utils.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport dbPlugins from \"@webiny/handler-db\";\nimport { DynamoDbDriver } from \"@webiny/db-dynamodb\";\nimport dynamoDbPlugins from \"@webiny/db-dynamodb/plugins\";\nimport logsPlugins from \"@webiny/handler-logs\";\nimport { InvocationTypes } from \"~/scheduler/types\";\n\n/**\n * https://day.js.org/docs/en/plugin/utc\n */\ndayjs.extend(utc);\n\nconst TIME_SEPARATOR = \":\";\nconst ELAPSED_CRON_EXPRESSION = \"* * * * ? 2000\";\n\nexport const getIsoStringTillMinutes = (datetime: string): string => {\n /**\n * Validate datetime.\n */\n if (isNaN(Date.parse(datetime))) {\n return datetime;\n }\n // input = \"2022-03-08T05:41:13.230Z\"\n // output = \"2022-03-08T05:41\"\n return datetime.slice(0, datetime.lastIndexOf(TIME_SEPARATOR));\n};\n\nexport const dateTimeToCronExpression = (datetime: string): string => {\n if (!datetime) {\n return ELAPSED_CRON_EXPRESSION;\n }\n /**\n * You can't specify the Day-of-month and Day-of-week fields in the same cron expression.\n * If you specify a value (or a *) in one of the fields, you must use a ? (question mark) in the other.\n *\n * https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html\n */\n const dayOfWeek = \"?\";\n\n return dayjs.utc(datetime).format(`mm H D M [${dayOfWeek}] YYYY`);\n};\n\nexport const moveDateTimeToNextCentury = (datetime: string): string => {\n return dayjs.utc(datetime).add(100, \"year\").toISOString();\n};\n\nexport const moveDateTimeToCurrentCentury = (datetime: string): string => {\n return dayjs.utc(datetime).subtract(100, \"year\").toISOString();\n};\n\nexport const isDateTimeInNextCentury = (datetime: string): boolean => {\n return dayjs.utc(datetime).isAfter(\"2100-01-01\", \"year\");\n};\n\ninterface ShouldRestoreDatetimeParams {\n invocationType?: InvocationTypes;\n datetime: string;\n}\n\nexport const shouldRestoreDatetime = ({\n invocationType,\n datetime\n}: ShouldRestoreDatetimeParams): boolean => {\n /**\n * \"invocationType\" will not be SCHEDULED when the lambda is called from Main GQL handler.\n *\n * Which means a new content is scheduled for \"publish\"/\"unpublish\" therefore, we need to restore the previously\n * scheduled action if it has not been executed already.\n */\n const selfInvoked = invocationType === InvocationTypes.SCHEDULED;\n\n const today = dayjs.utc();\n const isExecutionPending = dayjs.utc(datetime).isAfter(today);\n\n return !selfInvoked && isExecutionPending;\n};\n\ninterface EncodeTokenParams {\n id: string;\n tenant: string;\n locale: string;\n}\n\nexport const encodeToken = ({ id, tenant, locale }: EncodeTokenParams) => {\n return `${TOKEN_PREFIX}${id}__${tenant}__${locale}`;\n};\n\nexport const TOKEN_PREFIX = \"apw-\";\n\nexport const decodeToken = (token: string): Partial<EncodeTokenParams> => {\n const auth = token.slice(TOKEN_PREFIX.length);\n const [id, tenant, locale] = auth.split(\"__\");\n\n return {\n id,\n tenant,\n locale\n };\n};\n\nexport const documentClient = new DocumentClient({\n convertEmptyValues: true,\n region: process.env.AWS_REGION\n});\n\nexport const basePlugins = () => [\n dynamoDbPlugins(),\n logsPlugins(),\n dbPlugins({\n table: process.env.DB_TABLE,\n driver: new DynamoDbDriver({\n documentClient\n })\n })\n];\n\n/**\n * Get APW settings record from DDB.\n */\nexport interface ApwSettings {\n mainGraphqlFunctionArn: string;\n eventRuleName: string;\n eventTargetId: string;\n}\n\nexport const getApwSettings = async (): Promise<ApwSettings> => {\n const variant = process.env.STAGED_ROLLOUTS_VARIANT;\n\n const params = {\n TableName: process.env.DB_TABLE as string,\n Key: {\n PK: `APW#SETTINGS`,\n SK: variant || \"default\"\n }\n };\n\n const { Item } = await documentClient.get(params).promise();\n\n return {\n mainGraphqlFunctionArn: Item ? Item[\"mainGraphqlFunctionArn\"] : \"mainGraphqlFunctionArn\",\n eventRuleName: Item ? Item[\"eventRuleName\"] : \"eventRuleName\",\n eventTargetId: Item ? Item[\"eventTargetId\"] : \"eventTargetId\"\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dayjs","_interopRequireDefault","require","_utc","_clientDynamodb","_handlerDb","_dbDynamodb","_plugins","_handlerLogs","_types","dayjs","extend","utc","TIME_SEPARATOR","ELAPSED_CRON_EXPRESSION","getIsoStringTillMinutes","datetime","isNaN","Date","parse","slice","lastIndexOf","exports","dateTimeToCronExpression","dayOfWeek","format","moveDateTimeToNextCentury","add","toISOString","moveDateTimeToCurrentCentury","subtract","isDateTimeInNextCentury","isAfter","shouldRestoreDatetime","invocationType","selfInvoked","InvocationTypes","SCHEDULED","today","isExecutionPending","encodeToken","id","tenant","locale","TOKEN_PREFIX","decodeToken","token","auth","length","split","documentClient","getDocumentClient","basePlugins","dynamoDbPlugins","logsPlugins","dbPlugins","table","process","env","DB_TABLE","driver","DynamoDbDriver","getApwSettings","variant","STAGED_ROLLOUTS_VARIANT","params","TableName","Key","PK","SK","Item","get","mainGraphqlFunctionArn","eventRuleName","eventTargetId"],"sources":["utils.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport { getDocumentClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport dbPlugins from \"@webiny/handler-db\";\nimport { DynamoDbDriver } from \"@webiny/db-dynamodb\";\nimport dynamoDbPlugins from \"@webiny/db-dynamodb/plugins\";\nimport logsPlugins from \"@webiny/handler-logs\";\nimport { InvocationTypes } from \"~/scheduler/types\";\n\n/**\n * https://day.js.org/docs/en/plugin/utc\n */\ndayjs.extend(utc);\n\nconst TIME_SEPARATOR = \":\";\nconst ELAPSED_CRON_EXPRESSION = \"* * * * ? 2000\";\n\nexport const getIsoStringTillMinutes = (datetime: string): string => {\n /**\n * Validate datetime.\n */\n if (isNaN(Date.parse(datetime))) {\n return datetime;\n }\n // input = \"2022-03-08T05:41:13.230Z\"\n // output = \"2022-03-08T05:41\"\n return datetime.slice(0, datetime.lastIndexOf(TIME_SEPARATOR));\n};\n\nexport const dateTimeToCronExpression = (datetime: string): string => {\n if (!datetime) {\n return ELAPSED_CRON_EXPRESSION;\n }\n /**\n * You can't specify the Day-of-month and Day-of-week fields in the same cron expression.\n * If you specify a value (or a *) in one of the fields, you must use a ? (question mark) in the other.\n *\n * https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html\n */\n const dayOfWeek = \"?\";\n\n return dayjs.utc(datetime).format(`mm H D M [${dayOfWeek}] YYYY`);\n};\n\nexport const moveDateTimeToNextCentury = (datetime: string): string => {\n return dayjs.utc(datetime).add(100, \"year\").toISOString();\n};\n\nexport const moveDateTimeToCurrentCentury = (datetime: string): string => {\n return dayjs.utc(datetime).subtract(100, \"year\").toISOString();\n};\n\nexport const isDateTimeInNextCentury = (datetime: string): boolean => {\n return dayjs.utc(datetime).isAfter(\"2100-01-01\", \"year\");\n};\n\ninterface ShouldRestoreDatetimeParams {\n invocationType?: InvocationTypes;\n datetime: string;\n}\n\nexport const shouldRestoreDatetime = ({\n invocationType,\n datetime\n}: ShouldRestoreDatetimeParams): boolean => {\n /**\n * \"invocationType\" will not be SCHEDULED when the lambda is called from Main GQL handler.\n *\n * Which means a new content is scheduled for \"publish\"/\"unpublish\" therefore, we need to restore the previously\n * scheduled action if it has not been executed already.\n */\n const selfInvoked = invocationType === InvocationTypes.SCHEDULED;\n\n const today = dayjs.utc();\n const isExecutionPending = dayjs.utc(datetime).isAfter(today);\n\n return !selfInvoked && isExecutionPending;\n};\n\ninterface EncodeTokenParams {\n id: string;\n tenant: string;\n locale: string;\n}\n\nexport const encodeToken = ({ id, tenant, locale }: EncodeTokenParams) => {\n return `${TOKEN_PREFIX}${id}__${tenant}__${locale}`;\n};\n\nexport const TOKEN_PREFIX = \"apw-\";\n\nexport const decodeToken = (token: string): Partial<EncodeTokenParams> => {\n const auth = token.slice(TOKEN_PREFIX.length);\n const [id, tenant, locale] = auth.split(\"__\");\n\n return {\n id,\n tenant,\n locale\n };\n};\n\nexport const documentClient = getDocumentClient();\n\nexport const basePlugins = () => [\n dynamoDbPlugins(),\n logsPlugins(),\n dbPlugins({\n table: process.env.DB_TABLE,\n driver: new DynamoDbDriver({\n documentClient\n })\n })\n];\n\n/**\n * Get APW settings record from DDB.\n */\nexport interface ApwSettings {\n mainGraphqlFunctionArn: string;\n eventRuleName: string;\n eventTargetId: string;\n}\n\nexport const getApwSettings = async (): Promise<ApwSettings> => {\n const variant = process.env.STAGED_ROLLOUTS_VARIANT;\n\n const params = {\n TableName: process.env.DB_TABLE as string,\n Key: {\n PK: `APW#SETTINGS`,\n SK: variant || \"default\"\n }\n };\n\n const { Item } = await documentClient.get(params);\n\n return {\n mainGraphqlFunctionArn: Item ? Item[\"mainGraphqlFunctionArn\"] : \"mainGraphqlFunctionArn\",\n eventRuleName: Item ? Item[\"eventRuleName\"] : \"eventRuleName\",\n eventTargetId: Item ? Item[\"eventTargetId\"] : \"eventTargetId\"\n };\n};\n"],"mappings":"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"}
@@ -21,4 +21,6 @@ const createScheduler = params => {
21
21
  storageOperations
22
22
  });
23
23
  };
24
- exports.createScheduler = createScheduler;
24
+ exports.createScheduler = createScheduler;
25
+
26
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createScheduler","params","getLocale","getIdentity","getTenant","getPermission","storageOperations","createScheduleActionMethods"],"sources":["index.ts"],"sourcesContent":["import { createScheduleActionMethods } from \"./createScheduleActionMethods\";\nimport { ApwScheduleActionCrud, CreateScheduleActionParams } from \"./types\";\n\nexport const createScheduler = (params: CreateScheduleActionParams): ApwScheduleActionCrud => {\n const { getLocale, getIdentity, getTenant, getPermission, storageOperations } = params;\n\n return createScheduleActionMethods({\n getLocale,\n getIdentity,\n getTenant,\n getPermission,\n storageOperations\n });\n};\n"],"mappings":";;;;;;AAAA;AAGO,MAAMA,eAAe,GAAIC,MAAkC,IAA4B;EAC1F,MAAM;IAAEC,SAAS;IAAEC,WAAW;IAAEC,SAAS;IAAEC,aAAa;IAAEC;EAAkB,CAAC,GAAGL,MAAM;EAEtF,OAAO,IAAAM,wDAA2B,EAAC;IAC/BL,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,aAAa;IACbC;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
1
+ {"version":3,"names":["_createScheduleActionMethods","require","createScheduler","params","getLocale","getIdentity","getTenant","getPermission","storageOperations","createScheduleActionMethods","exports"],"sources":["index.ts"],"sourcesContent":["import { createScheduleActionMethods } from \"./createScheduleActionMethods\";\nimport { ApwScheduleActionCrud, CreateScheduleActionParams } from \"./types\";\n\nexport const createScheduler = (params: CreateScheduleActionParams): ApwScheduleActionCrud => {\n const { getLocale, getIdentity, getTenant, getPermission, storageOperations } = params;\n\n return createScheduleActionMethods({\n getLocale,\n getIdentity,\n getTenant,\n getPermission,\n storageOperations\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,4BAAA,GAAAC,OAAA;AAGO,MAAMC,eAAe,GAAIC,MAAkC,IAA4B;EAC1F,MAAM;IAAEC,SAAS;IAAEC,WAAW;IAAEC,SAAS;IAAEC,aAAa;IAAEC;EAAkB,CAAC,GAAGL,MAAM;EAEtF,OAAO,IAAAM,wDAA2B,EAAC;IAC/BL,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,aAAa;IACbC;EACJ,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAR,eAAA,GAAAA,eAAA"}
@@ -1,8 +1,7 @@
1
1
  import { Context } from "@webiny/api/types";
2
2
  import { SecurityIdentity, SecurityPermission } from "@webiny/api-security/types";
3
- import { I18NLocale, I18NContext } from "@webiny/api-i18n/types";
4
- import { Tenant } from "@webiny/api-tenancy/types";
5
- import { TenancyContext } from "@webiny/api-tenancy/types";
3
+ import { I18NContext, I18NLocale } from "@webiny/api-i18n/types";
4
+ import { TenancyContext, Tenant } from "@webiny/api-tenancy/types";
6
5
  import { ApwIdentity } from "../types";
7
6
  export interface ListWhere {
8
7
  /**
@@ -51,8 +50,11 @@ export declare enum ApwContentTypes {
51
50
  export interface BaseFields {
52
51
  id: string;
53
52
  createdOn: string;
54
- savedOn?: string;
53
+ modifiedOn: string | null;
54
+ savedOn: string;
55
55
  createdBy: ApwIdentity;
56
+ modifiedBy: ApwIdentity | null;
57
+ savedBy: ApwIdentity;
56
58
  tenant: string;
57
59
  locale: string;
58
60
  }
@@ -81,13 +83,13 @@ interface BaseApwCrud<TEntry, TCreateEntryParams, TUpdateEntryParams> {
81
83
  get(id: string): Promise<TEntry | null>;
82
84
  create(data: TCreateEntryParams): Promise<TEntry>;
83
85
  update(id: string, data: TUpdateEntryParams): Promise<TEntry>;
84
- delete(id: string): Promise<Boolean>;
86
+ delete(id: string): Promise<boolean>;
85
87
  }
86
88
  export interface ApwScheduleActionCrud extends BaseApwCrud<ApwScheduleAction, ApwScheduleActionData, ApwScheduleActionData> {
87
89
  list(params: ListParams): Promise<[ApwScheduleAction[], ListMeta]>;
88
90
  getCurrentTask(): Promise<ApwScheduleAction | null>;
89
91
  updateCurrentTask(item: ApwScheduleAction): Promise<ApwScheduleAction>;
90
- deleteCurrentTask(): Promise<Boolean>;
92
+ deleteCurrentTask(): Promise<boolean>;
91
93
  }
92
94
  export interface ScheduleActionContext extends Context, I18NContext, TenancyContext {
93
95
  scheduleAction: ApwScheduleActionCrud;
@@ -142,10 +144,10 @@ export interface ApwScheduleActionStorageOperations {
142
144
  list(params: StorageOperationsListScheduleActionsParams): Promise<StorageOperationsListScheduleActionsResponse>;
143
145
  create(params: StorageOperationsCreateScheduleActionParams): Promise<ApwScheduleAction>;
144
146
  update(params: StorageOperationsUpdateScheduleActionParams): Promise<ApwScheduleAction>;
145
- delete(params: StorageOperationsDeleteScheduleActionParams): Promise<Boolean>;
147
+ delete(params: StorageOperationsDeleteScheduleActionParams): Promise<boolean>;
146
148
  getCurrentTask(params: StorageOperationsGetCurrentTaskParams): Promise<ApwScheduleAction | null>;
147
149
  updateCurrentTask(params: StorageOperationsUpdateCurrentTaskParams): Promise<ApwScheduleAction>;
148
- deleteCurrentTask(params: StorageOperationsDeleteCurrentTaskParams): Promise<Boolean>;
150
+ deleteCurrentTask(params: StorageOperationsDeleteCurrentTaskParams): Promise<boolean>;
149
151
  }
150
152
  export interface CreateApwContextParams {
151
153
  storageOperations: ApwScheduleActionStorageOperations;
@@ -4,20 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.InvocationTypes = exports.ApwScheduleActionTypes = exports.ApwContentTypes = void 0;
7
- let ApwContentTypes;
8
- exports.ApwContentTypes = ApwContentTypes;
9
- (function (ApwContentTypes) {
7
+ let ApwContentTypes = /*#__PURE__*/function (ApwContentTypes) {
10
8
  ApwContentTypes["PAGE"] = "page";
11
9
  ApwContentTypes["CMS_ENTRY"] = "cms_entry";
12
- })(ApwContentTypes || (exports.ApwContentTypes = ApwContentTypes = {}));
13
- let ApwScheduleActionTypes;
14
- exports.ApwScheduleActionTypes = ApwScheduleActionTypes;
15
- (function (ApwScheduleActionTypes) {
10
+ return ApwContentTypes;
11
+ }({});
12
+ exports.ApwContentTypes = ApwContentTypes;
13
+ let ApwScheduleActionTypes = /*#__PURE__*/function (ApwScheduleActionTypes) {
16
14
  ApwScheduleActionTypes["PUBLISH"] = "publish";
17
15
  ApwScheduleActionTypes["UNPUBLISH"] = "unpublish";
18
- })(ApwScheduleActionTypes || (exports.ApwScheduleActionTypes = ApwScheduleActionTypes = {}));
19
- let InvocationTypes;
20
- exports.InvocationTypes = InvocationTypes;
21
- (function (InvocationTypes) {
16
+ return ApwScheduleActionTypes;
17
+ }({});
18
+ exports.ApwScheduleActionTypes = ApwScheduleActionTypes;
19
+ let InvocationTypes = /*#__PURE__*/function (InvocationTypes) {
22
20
  InvocationTypes["SCHEDULED"] = "scheduled";
23
- })(InvocationTypes || (exports.InvocationTypes = InvocationTypes = {}));
21
+ return InvocationTypes;
22
+ }({});
23
+ exports.InvocationTypes = InvocationTypes;
24
+
25
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ApwContentTypes","ApwScheduleActionTypes","InvocationTypes"],"sources":["types.ts"],"sourcesContent":["import { Context } from \"@webiny/api/types\";\nimport { SecurityIdentity, SecurityPermission } from \"@webiny/api-security/types\";\nimport { I18NLocale, I18NContext } from \"@webiny/api-i18n/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { TenancyContext } from \"@webiny/api-tenancy/types\";\nimport { ApwIdentity } from \"~/types\";\n\nexport interface ListWhere {\n /**\n * Fields.\n */\n id?: string;\n id_in?: string[];\n id_not?: string;\n id_not_in?: string[];\n /**\n * Who created the entry?\n */\n createdBy?: string;\n createdBy_not?: string;\n createdBy_in?: string[];\n createdBy_not_in?: string[];\n /**\n * By datetime field.\n */\n datetime_startsWith?: string;\n}\n\nexport interface ListParams {\n where: ListWhere;\n sort?: (\"datetime_ASC\" | \"datetime_DESC\")[];\n limit?: number;\n after?: string;\n}\n\nexport interface ListMeta {\n /**\n * A cursor for pagination.\n */\n cursor: string | null;\n /**\n * Is there more items to load?\n */\n hasMoreItems: boolean;\n /**\n * Total count of the items in the storage.\n */\n totalCount: number;\n}\n\nexport enum ApwContentTypes {\n PAGE = \"page\",\n CMS_ENTRY = \"cms_entry\"\n}\n\nexport interface BaseFields {\n id: string;\n createdOn: string;\n savedOn?: string;\n createdBy: ApwIdentity;\n tenant: string;\n locale: string;\n}\n\nexport interface ApwScheduleAction extends BaseFields {\n data: ApwScheduleActionData;\n}\n\nexport enum ApwScheduleActionTypes {\n PUBLISH = \"publish\",\n UNPUBLISH = \"unpublish\"\n}\n\nexport interface ApwScheduleActionData {\n action: ApwScheduleActionTypes;\n type: ApwContentTypes;\n datetime: string;\n entryId: string;\n /**\n * We will add modelId to the data for now.\n * TODO extract in separate package?\n */\n modelId?: string;\n}\n\nexport enum InvocationTypes {\n SCHEDULED = \"scheduled\"\n}\n\ninterface BaseApwCrud<TEntry, TCreateEntryParams, TUpdateEntryParams> {\n get(id: string): Promise<TEntry | null>;\n\n create(data: TCreateEntryParams): Promise<TEntry>;\n\n update(id: string, data: TUpdateEntryParams): Promise<TEntry>;\n\n delete(id: string): Promise<Boolean>;\n}\n\nexport interface ApwScheduleActionCrud\n extends BaseApwCrud<ApwScheduleAction, ApwScheduleActionData, ApwScheduleActionData> {\n list(params: ListParams): Promise<[ApwScheduleAction[], ListMeta]>;\n\n getCurrentTask(): Promise<ApwScheduleAction | null>;\n\n updateCurrentTask(item: ApwScheduleAction): Promise<ApwScheduleAction>;\n\n deleteCurrentTask(): Promise<Boolean>;\n}\n\nexport interface ScheduleActionContext extends Context, I18NContext, TenancyContext {\n scheduleAction: ApwScheduleActionCrud;\n}\n\nexport interface CreateScheduleActionParams {\n getLocale: () => I18NLocale;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n getPermission: (name: string) => Promise<SecurityPermission | null>;\n storageOperations: ApwScheduleActionStorageOperations;\n}\n\ninterface CreateApwScheduleActionParams {\n item: ApwScheduleAction;\n input: ApwScheduleActionData;\n}\n\ninterface StorageOperationsGetParams {\n where: {\n id: string;\n tenant: string;\n locale: string;\n };\n}\n\ninterface StorageOperationsDeleteParams {\n id: string;\n tenant: string;\n locale: string;\n}\n\nexport interface ApwScheduleActionListParams extends ListParams {\n where: ListWhere & {\n tenant: string;\n locale: string;\n };\n}\n\nexport type StorageOperationsGetScheduleActionParams = StorageOperationsGetParams;\n\nexport type StorageOperationsDeleteScheduleActionParams = StorageOperationsDeleteParams;\nexport type StorageOperationsListScheduleActionsParams = ApwScheduleActionListParams;\n\nexport type StorageOperationsCreateScheduleActionParams = CreateApwScheduleActionParams;\n\nexport interface StorageOperationsUpdateScheduleActionParams {\n item: ApwScheduleAction;\n input: ApwScheduleActionData;\n}\n\nexport type StorageOperationsListScheduleActionsResponse = [ApwScheduleAction[], ListMeta];\n\nexport interface StorageOperationsUpdateCurrentTaskParams {\n item: ApwScheduleAction;\n}\n\nexport interface StorageOperationsGetCurrentTaskParams {\n where: Pick<StorageOperationsGetParams[\"where\"], \"tenant\" | \"locale\">;\n}\n\nexport type StorageOperationsDeleteCurrentTaskParams = Pick<\n StorageOperationsDeleteParams,\n \"tenant\" | \"locale\"\n>;\n\nexport interface ApwScheduleActionStorageOperations {\n get(params: StorageOperationsGetScheduleActionParams): Promise<ApwScheduleAction | null>;\n\n list(\n params: StorageOperationsListScheduleActionsParams\n ): Promise<StorageOperationsListScheduleActionsResponse>;\n\n create(params: StorageOperationsCreateScheduleActionParams): Promise<ApwScheduleAction>;\n\n update(params: StorageOperationsUpdateScheduleActionParams): Promise<ApwScheduleAction>;\n\n delete(params: StorageOperationsDeleteScheduleActionParams): Promise<Boolean>;\n\n getCurrentTask(\n params: StorageOperationsGetCurrentTaskParams\n ): Promise<ApwScheduleAction | null>;\n\n updateCurrentTask(params: StorageOperationsUpdateCurrentTaskParams): Promise<ApwScheduleAction>;\n\n deleteCurrentTask(params: StorageOperationsDeleteCurrentTaskParams): Promise<Boolean>;\n}\n\nexport interface CreateApwContextParams {\n storageOperations: ApwScheduleActionStorageOperations;\n}\n"],"mappings":";;;;;;IAkDYA,eAAe;AAAA;AAAA,WAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;AAAA,GAAfA,eAAe,+BAAfA,eAAe;AAAA,IAkBfC,sBAAsB;AAAA;AAAA,WAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;AAAA,GAAtBA,sBAAsB,sCAAtBA,sBAAsB;AAAA,IAiBtBC,eAAe;AAAA;AAAA,WAAfA,eAAe;EAAfA,eAAe;AAAA,GAAfA,eAAe,+BAAfA,eAAe"}
1
+ {"version":3,"names":["ApwContentTypes","exports","ApwScheduleActionTypes","InvocationTypes"],"sources":["types.ts"],"sourcesContent":["import { Context } from \"@webiny/api/types\";\nimport { SecurityIdentity, SecurityPermission } from \"@webiny/api-security/types\";\nimport { I18NContext, I18NLocale } from \"@webiny/api-i18n/types\";\nimport { TenancyContext, Tenant } from \"@webiny/api-tenancy/types\";\nimport { ApwIdentity } from \"~/types\";\n\nexport interface ListWhere {\n /**\n * Fields.\n */\n id?: string;\n id_in?: string[];\n id_not?: string;\n id_not_in?: string[];\n /**\n * Who created the entry?\n */\n createdBy?: string;\n createdBy_not?: string;\n createdBy_in?: string[];\n createdBy_not_in?: string[];\n /**\n * By datetime field.\n */\n datetime_startsWith?: string;\n}\n\nexport interface ListParams {\n where: ListWhere;\n sort?: (\"datetime_ASC\" | \"datetime_DESC\")[];\n limit?: number;\n after?: string;\n}\n\nexport interface ListMeta {\n /**\n * A cursor for pagination.\n */\n cursor: string | null;\n /**\n * Is there more items to load?\n */\n hasMoreItems: boolean;\n /**\n * Total count of the items in the storage.\n */\n totalCount: number;\n}\n\nexport enum ApwContentTypes {\n PAGE = \"page\",\n CMS_ENTRY = \"cms_entry\"\n}\n\nexport interface BaseFields {\n id: string;\n\n createdOn: string;\n modifiedOn: string | null;\n savedOn: string;\n createdBy: ApwIdentity;\n modifiedBy: ApwIdentity | null;\n savedBy: ApwIdentity;\n\n tenant: string;\n locale: string;\n}\n\nexport interface ApwScheduleAction extends BaseFields {\n data: ApwScheduleActionData;\n}\n\nexport enum ApwScheduleActionTypes {\n PUBLISH = \"publish\",\n UNPUBLISH = \"unpublish\"\n}\n\nexport interface ApwScheduleActionData {\n action: ApwScheduleActionTypes;\n type: ApwContentTypes;\n datetime: string;\n entryId: string;\n /**\n * We will add modelId to the data for now.\n * TODO extract in separate package?\n */\n modelId?: string;\n}\n\nexport enum InvocationTypes {\n SCHEDULED = \"scheduled\"\n}\n\ninterface BaseApwCrud<TEntry, TCreateEntryParams, TUpdateEntryParams> {\n get(id: string): Promise<TEntry | null>;\n\n create(data: TCreateEntryParams): Promise<TEntry>;\n\n update(id: string, data: TUpdateEntryParams): Promise<TEntry>;\n\n delete(id: string): Promise<boolean>;\n}\n\nexport interface ApwScheduleActionCrud\n extends BaseApwCrud<ApwScheduleAction, ApwScheduleActionData, ApwScheduleActionData> {\n list(params: ListParams): Promise<[ApwScheduleAction[], ListMeta]>;\n\n getCurrentTask(): Promise<ApwScheduleAction | null>;\n\n updateCurrentTask(item: ApwScheduleAction): Promise<ApwScheduleAction>;\n\n deleteCurrentTask(): Promise<boolean>;\n}\n\nexport interface ScheduleActionContext extends Context, I18NContext, TenancyContext {\n scheduleAction: ApwScheduleActionCrud;\n}\n\nexport interface CreateScheduleActionParams {\n getLocale: () => I18NLocale;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n getPermission: (name: string) => Promise<SecurityPermission | null>;\n storageOperations: ApwScheduleActionStorageOperations;\n}\n\ninterface CreateApwScheduleActionParams {\n item: ApwScheduleAction;\n input: ApwScheduleActionData;\n}\n\ninterface StorageOperationsGetParams {\n where: {\n id: string;\n tenant: string;\n locale: string;\n };\n}\n\ninterface StorageOperationsDeleteParams {\n id: string;\n tenant: string;\n locale: string;\n}\n\nexport interface ApwScheduleActionListParams extends ListParams {\n where: ListWhere & {\n tenant: string;\n locale: string;\n };\n}\n\nexport type StorageOperationsGetScheduleActionParams = StorageOperationsGetParams;\n\nexport type StorageOperationsDeleteScheduleActionParams = StorageOperationsDeleteParams;\nexport type StorageOperationsListScheduleActionsParams = ApwScheduleActionListParams;\n\nexport type StorageOperationsCreateScheduleActionParams = CreateApwScheduleActionParams;\n\nexport interface StorageOperationsUpdateScheduleActionParams {\n item: ApwScheduleAction;\n input: ApwScheduleActionData;\n}\n\nexport type StorageOperationsListScheduleActionsResponse = [ApwScheduleAction[], ListMeta];\n\nexport interface StorageOperationsUpdateCurrentTaskParams {\n item: ApwScheduleAction;\n}\n\nexport interface StorageOperationsGetCurrentTaskParams {\n where: Pick<StorageOperationsGetParams[\"where\"], \"tenant\" | \"locale\">;\n}\n\nexport type StorageOperationsDeleteCurrentTaskParams = Pick<\n StorageOperationsDeleteParams,\n \"tenant\" | \"locale\"\n>;\n\nexport interface ApwScheduleActionStorageOperations {\n get(params: StorageOperationsGetScheduleActionParams): Promise<ApwScheduleAction | null>;\n\n list(\n params: StorageOperationsListScheduleActionsParams\n ): Promise<StorageOperationsListScheduleActionsResponse>;\n\n create(params: StorageOperationsCreateScheduleActionParams): Promise<ApwScheduleAction>;\n\n update(params: StorageOperationsUpdateScheduleActionParams): Promise<ApwScheduleAction>;\n\n delete(params: StorageOperationsDeleteScheduleActionParams): Promise<boolean>;\n\n getCurrentTask(\n params: StorageOperationsGetCurrentTaskParams\n ): Promise<ApwScheduleAction | null>;\n\n updateCurrentTask(params: StorageOperationsUpdateCurrentTaskParams): Promise<ApwScheduleAction>;\n\n deleteCurrentTask(params: StorageOperationsDeleteCurrentTaskParams): Promise<boolean>;\n}\n\nexport interface CreateApwContextParams {\n storageOperations: ApwScheduleActionStorageOperations;\n}\n"],"mappings":";;;;;;IAiDYA,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAAC,OAAA,CAAAD,eAAA,GAAAA,eAAA;AAAA,IAuBfE,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAAD,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AAAA,IAiBtBC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAAF,OAAA,CAAAE,eAAA,GAAAA,eAAA"}