@webiny/api-apw 0.0.0-unstable.6e5425ee89 → 0.0.0-unstable.78f581c1d2

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 (207) hide show
  1. package/ApwChangeRequestNotification.js +10 -0
  2. package/ApwChangeRequestNotification.js.map +1 -1
  3. package/ApwCommentNotification.js +10 -0
  4. package/ApwCommentNotification.js.map +1 -1
  5. package/ApwContentReviewNotification.js +10 -0
  6. package/ApwContentReviewNotification.js.map +1 -1
  7. package/ApwContentUrlPlugin.js +10 -0
  8. package/ApwContentUrlPlugin.js.map +1 -1
  9. package/ContentApwSettingsPlugin.js +5 -0
  10. package/ContentApwSettingsPlugin.js.map +1 -1
  11. package/crud/createChangeRequestMethods.js +11 -4
  12. package/crud/createChangeRequestMethods.js.map +1 -1
  13. package/crud/createCommentMethods.js +12 -4
  14. package/crud/createCommentMethods.js.map +1 -1
  15. package/crud/createContentReviewMethods.js +84 -20
  16. package/crud/createContentReviewMethods.js.map +1 -1
  17. package/crud/createReviewerMethods.js +12 -4
  18. package/crud/createReviewerMethods.js.map +1 -1
  19. package/crud/createWorkflowMethods.js +17 -4
  20. package/crud/createWorkflowMethods.js.map +1 -1
  21. package/crud/index.js +25 -0
  22. package/crud/index.js.map +1 -1
  23. package/crud/utils.js +28 -0
  24. package/crud/utils.js.map +1 -1
  25. package/index.js +11 -1
  26. package/index.js.map +1 -1
  27. package/package.json +34 -34
  28. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +15 -0
  29. package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -1
  30. package/plugins/cms/apwEntryPlugins.js +8 -0
  31. package/plugins/cms/apwEntryPlugins.js.map +1 -1
  32. package/plugins/cms/index.js +13 -0
  33. package/plugins/cms/index.js.map +1 -1
  34. package/plugins/cms/linkContentReviewToEntry.js +17 -0
  35. package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
  36. package/plugins/cms/linkWorkflowToEntry.js +31 -2
  37. package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
  38. package/plugins/cms/notifications/changeRequestNotification.js +4 -0
  39. package/plugins/cms/notifications/changeRequestNotification.js.map +1 -1
  40. package/plugins/cms/notifications/commentNotification.js +4 -0
  41. package/plugins/cms/notifications/commentNotification.js.map +1 -1
  42. package/plugins/cms/notifications/contentReviewNotification.js +4 -0
  43. package/plugins/cms/notifications/contentReviewNotification.js.map +1 -1
  44. package/plugins/cms/notifications/contentUrl.js +8 -1
  45. package/plugins/cms/notifications/contentUrl.js.map +1 -1
  46. package/plugins/cms/triggerContentReview.js +14 -0
  47. package/plugins/cms/triggerContentReview.js.map +1 -1
  48. package/plugins/cms/updateContentReviewStatus.js +18 -0
  49. package/plugins/cms/updateContentReviewStatus.js.map +1 -1
  50. package/plugins/cms/utils.js +47 -2
  51. package/plugins/cms/utils.js.map +1 -1
  52. package/plugins/context.js +31 -0
  53. package/plugins/context.js.map +1 -1
  54. package/plugins/graphql/changeRequest.gql.js +8 -1
  55. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  56. package/plugins/graphql/comment.gql.js +8 -1
  57. package/plugins/graphql/comment.gql.js.map +1 -1
  58. package/plugins/graphql/contentReview.gql.js +20 -1
  59. package/plugins/graphql/contentReview.gql.js.map +1 -1
  60. package/plugins/graphql/reviewer.gql.js +8 -1
  61. package/plugins/graphql/reviewer.gql.js.map +1 -1
  62. package/plugins/graphql/workflow.gql.js +8 -1
  63. package/plugins/graphql/workflow.gql.js.map +1 -1
  64. package/plugins/graphql.js +16 -1
  65. package/plugins/graphql.js.map +1 -1
  66. package/plugins/hooks/createReviewerFromIdentity.js +11 -2
  67. package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
  68. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +9 -1
  69. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
  70. package/plugins/hooks/deleteCommentsAfterChangeRequest.js +8 -1
  71. package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
  72. package/plugins/hooks/index.js +14 -0
  73. package/plugins/hooks/index.js.map +1 -1
  74. package/plugins/hooks/initializeContentReviewSteps.js +15 -2
  75. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  76. package/plugins/hooks/initializeNotifications.js +5 -0
  77. package/plugins/hooks/initializeNotifications.js.map +1 -1
  78. package/plugins/hooks/listContentReviews.js +12 -0
  79. package/plugins/hooks/listContentReviews.js.map +1 -1
  80. package/plugins/hooks/notifications/appUrl.js +4 -0
  81. package/plugins/hooks/notifications/appUrl.js.map +1 -1
  82. package/plugins/hooks/notifications/changeRequestAfterCreate.js +28 -0
  83. package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
  84. package/plugins/hooks/notifications/changeRequestUrl.js +4 -0
  85. package/plugins/hooks/notifications/changeRequestUrl.js.map +1 -1
  86. package/plugins/hooks/notifications/commentAfterCreate.js +30 -0
  87. package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
  88. package/plugins/hooks/notifications/commentUrl.js +4 -0
  89. package/plugins/hooks/notifications/commentUrl.js.map +1 -1
  90. package/plugins/hooks/notifications/contentReviewAfterCreate.js +24 -1
  91. package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
  92. package/plugins/hooks/notifications/contentReviewUrl.js +4 -0
  93. package/plugins/hooks/notifications/contentReviewUrl.js.map +1 -1
  94. package/plugins/hooks/notifications/contentUrl.js +5 -0
  95. package/plugins/hooks/notifications/contentUrl.js.map +1 -1
  96. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js +4 -0
  97. package/plugins/hooks/notifications/lastChangeRequestNotificationPlugin.js.map +1 -1
  98. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js +4 -0
  99. package/plugins/hooks/notifications/lastCommentNotificationPlugin.js.map +1 -1
  100. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js +4 -0
  101. package/plugins/hooks/notifications/lastContentReviewNotificationPlugin.js.map +1 -1
  102. package/plugins/hooks/notifications/reviewers.js +7 -0
  103. package/plugins/hooks/notifications/reviewers.js.map +1 -1
  104. package/plugins/hooks/notifications/sendChangeRequestNotification.js +11 -0
  105. package/plugins/hooks/notifications/sendChangeRequestNotification.js.map +1 -1
  106. package/plugins/hooks/notifications/sendCommentNotification.js +11 -0
  107. package/plugins/hooks/notifications/sendCommentNotification.js.map +1 -1
  108. package/plugins/hooks/notifications/sendContentReviewNotification.js +11 -0
  109. package/plugins/hooks/notifications/sendContentReviewNotification.js.map +1 -1
  110. package/plugins/hooks/updatePendingChangeRequests.js +8 -0
  111. package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
  112. package/plugins/hooks/updateTotalComments.js +9 -0
  113. package/plugins/hooks/updateTotalComments.js.map +1 -1
  114. package/plugins/hooks/validateChangeRequest.js +16 -0
  115. package/plugins/hooks/validateChangeRequest.js.map +1 -1
  116. package/plugins/hooks/validateComment.js +12 -1
  117. package/plugins/hooks/validateComment.js.map +1 -1
  118. package/plugins/hooks/validateContentReview.js +6 -0
  119. package/plugins/hooks/validateContentReview.js.map +1 -1
  120. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +15 -0
  121. package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -1
  122. package/plugins/pageBuilder/apwContentPagePlugins.js +4 -0
  123. package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -1
  124. package/plugins/pageBuilder/extendPbPageSettingsSchema.js +6 -1
  125. package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -1
  126. package/plugins/pageBuilder/index.js +11 -0
  127. package/plugins/pageBuilder/index.js.map +1 -1
  128. package/plugins/pageBuilder/linkContentReviewToPage.js +16 -0
  129. package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
  130. package/plugins/pageBuilder/linkWorkflowToPage.js +31 -1
  131. package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -1
  132. package/plugins/pageBuilder/notifications/changeRequestNotification.js +4 -0
  133. package/plugins/pageBuilder/notifications/changeRequestNotification.js.map +1 -1
  134. package/plugins/pageBuilder/notifications/commentNotification.js +4 -0
  135. package/plugins/pageBuilder/notifications/commentNotification.js.map +1 -1
  136. package/plugins/pageBuilder/notifications/contentReviewNotification.js +4 -0
  137. package/plugins/pageBuilder/notifications/contentReviewNotification.js.map +1 -1
  138. package/plugins/pageBuilder/notifications/contentUrl.js +7 -1
  139. package/plugins/pageBuilder/notifications/contentUrl.js.map +1 -1
  140. package/plugins/pageBuilder/triggerContentReview.js +11 -0
  141. package/plugins/pageBuilder/triggerContentReview.js.map +1 -1
  142. package/plugins/pageBuilder/updateContentReviewStatus.js +12 -0
  143. package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
  144. package/plugins/pageBuilder/utils.js +35 -1
  145. package/plugins/pageBuilder/utils.js.map +1 -1
  146. package/plugins/utils.js +43 -0
  147. package/plugins/utils.js.map +1 -1
  148. package/scheduler/createScheduleActionMethods.js +20 -1
  149. package/scheduler/createScheduleActionMethods.js.map +1 -1
  150. package/scheduler/handlers/executeAction/index.js +33 -9
  151. package/scheduler/handlers/executeAction/index.js.map +1 -1
  152. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +5 -0
  153. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
  154. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +21 -0
  155. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
  156. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +27 -4
  157. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
  158. package/scheduler/handlers/executeAction/security.js +11 -0
  159. package/scheduler/handlers/executeAction/security.js.map +1 -1
  160. package/scheduler/handlers/scheduleAction/index.js +25 -5
  161. package/scheduler/handlers/scheduleAction/index.js.map +1 -1
  162. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +23 -2
  163. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
  164. package/scheduler/handlers/utils.js +40 -3
  165. package/scheduler/handlers/utils.js.map +1 -1
  166. package/scheduler/index.js +3 -0
  167. package/scheduler/index.js.map +1 -1
  168. package/scheduler/types.js +6 -0
  169. package/scheduler/types.js.map +1 -1
  170. package/storageOperations/changeRequestStorageOperations.js +19 -0
  171. package/storageOperations/changeRequestStorageOperations.js.map +1 -1
  172. package/storageOperations/commentStorageOperations.js +21 -0
  173. package/storageOperations/commentStorageOperations.js.map +1 -1
  174. package/storageOperations/contentReviewStorageOperations.js +17 -0
  175. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  176. package/storageOperations/index.js +14 -0
  177. package/storageOperations/index.js.map +1 -1
  178. package/storageOperations/models/changeRequest.model.js +9 -0
  179. package/storageOperations/models/changeRequest.model.js.map +1 -1
  180. package/storageOperations/models/comment.model.js +8 -0
  181. package/storageOperations/models/comment.model.js.map +1 -1
  182. package/storageOperations/models/contentModelPluginFactory.js +5 -0
  183. package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
  184. package/storageOperations/models/contentReview.model.js +26 -0
  185. package/storageOperations/models/contentReview.model.js.map +1 -1
  186. package/storageOperations/models/index.js +24 -2
  187. package/storageOperations/models/index.js.map +1 -1
  188. package/storageOperations/models/reviewer.model.js +8 -0
  189. package/storageOperations/models/reviewer.model.js.map +1 -1
  190. package/storageOperations/models/utils.js +4 -0
  191. package/storageOperations/models/utils.js.map +1 -1
  192. package/storageOperations/models/workflow.model.js +23 -0
  193. package/storageOperations/models/workflow.model.js.map +1 -1
  194. package/storageOperations/reviewerStorageOperations.js +17 -0
  195. package/storageOperations/reviewerStorageOperations.js.map +1 -1
  196. package/storageOperations/workflowStorageOperations.js +19 -0
  197. package/storageOperations/workflowStorageOperations.js.map +1 -1
  198. package/types.js +14 -0
  199. package/types.js.map +1 -1
  200. package/utils/contentApwSettingsPlugin.js +6 -0
  201. package/utils/contentApwSettingsPlugin.js.map +1 -1
  202. package/utils/errors.js +17 -0
  203. package/utils/errors.js.map +1 -1
  204. package/utils/fieldResolver.js +12 -2
  205. package/utils/fieldResolver.js.map +1 -1
  206. package/utils/resolve.js +3 -0
  207. package/utils/resolve.js.map +1 -1
@@ -1,36 +1,51 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  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;
9
+
8
10
  var _dayjs = _interopRequireDefault(require("dayjs"));
11
+
9
12
  var _utc = _interopRequireDefault(require("dayjs/plugin/utc"));
13
+
10
14
  var _dynamodb = require("aws-sdk/clients/dynamodb");
15
+
11
16
  var _handlerDb = _interopRequireDefault(require("@webiny/handler-db"));
17
+
12
18
  var _dbDynamodb = require("@webiny/db-dynamodb");
19
+
13
20
  var _plugins = _interopRequireDefault(require("@webiny/db-dynamodb/plugins"));
21
+
14
22
  var _handlerLogs = _interopRequireDefault(require("@webiny/handler-logs"));
23
+
15
24
  var _types = require("../types");
25
+
16
26
  /**
17
27
  * https://day.js.org/docs/en/plugin/utc
18
28
  */
19
29
  _dayjs.default.extend(_utc.default);
30
+
20
31
  const TIME_SEPARATOR = ":";
21
32
  const ELAPSED_CRON_EXPRESSION = "* * * * ? 2000";
33
+
22
34
  const getIsoStringTillMinutes = datetime => {
23
35
  /**
24
36
  * Validate datetime.
25
37
  */
26
38
  if (isNaN(Date.parse(datetime))) {
27
39
  return datetime;
28
- }
29
- // input = "2022-03-08T05:41:13.230Z"
40
+ } // input = "2022-03-08T05:41:13.230Z"
30
41
  // output = "2022-03-08T05:41"
42
+
43
+
31
44
  return datetime.slice(0, datetime.lastIndexOf(TIME_SEPARATOR));
32
45
  };
46
+
33
47
  exports.getIsoStringTillMinutes = getIsoStringTillMinutes;
48
+
34
49
  const dateTimeToCronExpression = datetime => {
35
50
  if (!datetime) {
36
51
  return ELAPSED_CRON_EXPRESSION;
@@ -41,22 +56,32 @@ const dateTimeToCronExpression = datetime => {
41
56
  *
42
57
  * https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
43
58
  */
59
+
60
+
44
61
  const dayOfWeek = "?";
45
62
  return _dayjs.default.utc(datetime).format(`mm H D M [${dayOfWeek}] YYYY`);
46
63
  };
64
+
47
65
  exports.dateTimeToCronExpression = dateTimeToCronExpression;
66
+
48
67
  const moveDateTimeToNextCentury = datetime => {
49
68
  return _dayjs.default.utc(datetime).add(100, "year").toISOString();
50
69
  };
70
+
51
71
  exports.moveDateTimeToNextCentury = moveDateTimeToNextCentury;
72
+
52
73
  const moveDateTimeToCurrentCentury = datetime => {
53
74
  return _dayjs.default.utc(datetime).subtract(100, "year").toISOString();
54
75
  };
76
+
55
77
  exports.moveDateTimeToCurrentCentury = moveDateTimeToCurrentCentury;
78
+
56
79
  const isDateTimeInNextCentury = datetime => {
57
80
  return _dayjs.default.utc(datetime).isAfter("2100-01-01", "year");
58
81
  };
82
+
59
83
  exports.isDateTimeInNextCentury = isDateTimeInNextCentury;
84
+
60
85
  const shouldRestoreDatetime = ({
61
86
  invocationType,
62
87
  datetime
@@ -68,11 +93,16 @@ const shouldRestoreDatetime = ({
68
93
  * scheduled action if it has not been executed already.
69
94
  */
70
95
  const selfInvoked = invocationType === _types.InvocationTypes.SCHEDULED;
96
+
71
97
  const today = _dayjs.default.utc();
98
+
72
99
  const isExecutionPending = _dayjs.default.utc(datetime).isAfter(today);
100
+
73
101
  return !selfInvoked && isExecutionPending;
74
102
  };
103
+
75
104
  exports.shouldRestoreDatetime = shouldRestoreDatetime;
105
+
76
106
  const encodeToken = ({
77
107
  id,
78
108
  tenant,
@@ -80,9 +110,11 @@ const encodeToken = ({
80
110
  }) => {
81
111
  return `${TOKEN_PREFIX}${id}__${tenant}__${locale}`;
82
112
  };
113
+
83
114
  exports.encodeToken = encodeToken;
84
115
  const TOKEN_PREFIX = "apw-";
85
116
  exports.TOKEN_PREFIX = TOKEN_PREFIX;
117
+
86
118
  const decodeToken = token => {
87
119
  const auth = token.slice(TOKEN_PREFIX.length);
88
120
  const [id, tenant, locale] = auth.split("__");
@@ -92,23 +124,27 @@ const decodeToken = token => {
92
124
  locale
93
125
  };
94
126
  };
127
+
95
128
  exports.decodeToken = decodeToken;
96
129
  const documentClient = new _dynamodb.DocumentClient({
97
130
  convertEmptyValues: true,
98
131
  region: process.env.AWS_REGION
99
132
  });
100
133
  exports.documentClient = documentClient;
134
+
101
135
  const basePlugins = () => [(0, _plugins.default)(), (0, _handlerLogs.default)(), (0, _handlerDb.default)({
102
136
  table: process.env.DB_TABLE,
103
137
  driver: new _dbDynamodb.DynamoDbDriver({
104
138
  documentClient
105
139
  })
106
140
  })];
107
-
108
141
  /**
109
142
  * Get APW settings record from DDB.
110
143
  */
144
+
145
+
111
146
  exports.basePlugins = basePlugins;
147
+
112
148
  const getApwSettings = async () => {
113
149
  const variant = process.env.STAGED_ROLLOUTS_VARIANT;
114
150
  const params = {
@@ -128,4 +164,5 @@ const getApwSettings = async () => {
128
164
  eventTargetId: Item ? Item["eventTargetId"] : "eventTargetId"
129
165
  };
130
166
  };
167
+
131
168
  exports.getApwSettings = getApwSettings;
@@ -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","cmsGraphqlFunctionArn","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 cmsGraphqlFunctionArn: 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 cmsGraphqlFunctionArn: Item ? Item[\"cmsGraphqlFunctionArn\"] : \"cmsGraphqlFunctionArn\",\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","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","cmsGraphqlFunctionArn","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 cmsGraphqlFunctionArn: 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 cmsGraphqlFunctionArn: Item ? Item[\"cmsGraphqlFunctionArn\"] : \"cmsGraphqlFunctionArn\",\n eventRuleName: Item ? Item[\"eventRuleName\"] : \"eventRuleName\",\n eventTargetId: Item ? Item[\"eventTargetId\"] : \"eventTargetId\"\n };\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;AACA;AACA;AACAA,cAAA,CAAMC,MAAN,CAAaC,YAAb;;AAEA,MAAMC,cAAc,GAAG,GAAvB;AACA,MAAMC,uBAAuB,GAAG,gBAAhC;;AAEO,MAAMC,uBAAuB,GAAIC,QAAD,IAA8B;EACjE;AACJ;AACA;EACI,IAAIC,KAAK,CAACC,IAAI,CAACC,KAAL,CAAWH,QAAX,CAAD,CAAT,EAAiC;IAC7B,OAAOA,QAAP;EACH,CANgE,CAOjE;EACA;;;EACA,OAAOA,QAAQ,CAACI,KAAT,CAAe,CAAf,EAAkBJ,QAAQ,CAACK,WAAT,CAAqBR,cAArB,CAAlB,CAAP;AACH,CAVM;;;;AAYA,MAAMS,wBAAwB,GAAIN,QAAD,IAA8B;EAClE,IAAI,CAACA,QAAL,EAAe;IACX,OAAOF,uBAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;;;EACI,MAAMS,SAAS,GAAG,GAAlB;EAEA,OAAOb,cAAA,CAAME,GAAN,CAAUI,QAAV,EAAoBQ,MAApB,CAA4B,aAAYD,SAAU,QAAlD,CAAP;AACH,CAbM;;;;AAeA,MAAME,yBAAyB,GAAIT,QAAD,IAA8B;EACnE,OAAON,cAAA,CAAME,GAAN,CAAUI,QAAV,EAAoBU,GAApB,CAAwB,GAAxB,EAA6B,MAA7B,EAAqCC,WAArC,EAAP;AACH,CAFM;;;;AAIA,MAAMC,4BAA4B,GAAIZ,QAAD,IAA8B;EACtE,OAAON,cAAA,CAAME,GAAN,CAAUI,QAAV,EAAoBa,QAApB,CAA6B,GAA7B,EAAkC,MAAlC,EAA0CF,WAA1C,EAAP;AACH,CAFM;;;;AAIA,MAAMG,uBAAuB,GAAId,QAAD,IAA+B;EAClE,OAAON,cAAA,CAAME,GAAN,CAAUI,QAAV,EAAoBe,OAApB,CAA4B,YAA5B,EAA0C,MAA1C,CAAP;AACH,CAFM;;;;AASA,MAAMC,qBAAqB,GAAG,CAAC;EAClCC,cADkC;EAElCjB;AAFkC,CAAD,KAGO;EACxC;AACJ;AACA;AACA;AACA;AACA;EACI,MAAMkB,WAAW,GAAGD,cAAc,KAAKE,sBAAA,CAAgBC,SAAvD;;EAEA,MAAMC,KAAK,GAAG3B,cAAA,CAAME,GAAN,EAAd;;EACA,MAAM0B,kBAAkB,GAAG5B,cAAA,CAAME,GAAN,CAAUI,QAAV,EAAoBe,OAApB,CAA4BM,KAA5B,CAA3B;;EAEA,OAAO,CAACH,WAAD,IAAgBI,kBAAvB;AACH,CAhBM;;;;AAwBA,MAAMC,WAAW,GAAG,CAAC;EAAEC,EAAF;EAAMC,MAAN;EAAcC;AAAd,CAAD,KAA+C;EACtE,OAAQ,GAAEC,YAAa,GAAEH,EAAG,KAAIC,MAAO,KAAIC,MAAO,EAAlD;AACH,CAFM;;;AAIA,MAAMC,YAAY,GAAG,MAArB;;;AAEA,MAAMC,WAAW,GAAIC,KAAD,IAA+C;EACtE,MAAMC,IAAI,GAAGD,KAAK,CAACzB,KAAN,CAAYuB,YAAY,CAACI,MAAzB,CAAb;EACA,MAAM,CAACP,EAAD,EAAKC,MAAL,EAAaC,MAAb,IAAuBI,IAAI,CAACE,KAAL,CAAW,IAAX,CAA7B;EAEA,OAAO;IACHR,EADG;IAEHC,MAFG;IAGHC;EAHG,CAAP;AAKH,CATM;;;AAWA,MAAMO,cAAc,GAAG,IAAIC,wBAAJ,CAAmB;EAC7CC,kBAAkB,EAAE,IADyB;EAE7CC,MAAM,EAAEC,OAAO,CAACC,GAAR,CAAYC;AAFyB,CAAnB,CAAvB;;;AAKA,MAAMC,WAAW,GAAG,MAAM,CAC7B,IAAAC,gBAAA,GAD6B,EAE7B,IAAAC,oBAAA,GAF6B,EAG7B,IAAAC,kBAAA,EAAU;EACNC,KAAK,EAAEP,OAAO,CAACC,GAAR,CAAYO,QADb;EAENC,MAAM,EAAE,IAAIC,0BAAJ,CAAmB;IACvBd;EADuB,CAAnB;AAFF,CAAV,CAH6B,CAA1B;AAWP;AACA;AACA;;;;;AAQO,MAAMe,cAAc,GAAG,YAAkC;EAC5D,MAAMC,OAAO,GAAGZ,OAAO,CAACC,GAAR,CAAYY,uBAA5B;EAEA,MAAMC,MAAM,GAAG;IACXC,SAAS,EAAEf,OAAO,CAACC,GAAR,CAAYO,QADZ;IAEXQ,GAAG,EAAE;MACDC,EAAE,EAAG,cADJ;MAEDC,EAAE,EAAEN,OAAO,IAAI;IAFd;EAFM,CAAf;EAQA,MAAM;IAAEO;EAAF,IAAW,MAAMvB,cAAc,CAACwB,GAAf,CAAmBN,MAAnB,EAA2BO,OAA3B,EAAvB;EAEA,OAAO;IACHC,sBAAsB,EAAEH,IAAI,GAAGA,IAAI,CAAC,wBAAD,CAAP,GAAoC,wBAD7D;IAEHI,qBAAqB,EAAEJ,IAAI,GAAGA,IAAI,CAAC,uBAAD,CAAP,GAAmC,uBAF3D;IAGHK,aAAa,EAAEL,IAAI,GAAGA,IAAI,CAAC,eAAD,CAAP,GAA2B,eAH3C;IAIHM,aAAa,EAAEN,IAAI,GAAGA,IAAI,CAAC,eAAD,CAAP,GAA2B;EAJ3C,CAAP;AAMH,CAnBM"}
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createScheduler = void 0;
7
+
7
8
  var _createScheduleActionMethods = require("./createScheduleActionMethods");
9
+
8
10
  const createScheduler = params => {
9
11
  const {
10
12
  getLocale,
@@ -21,4 +23,5 @@ const createScheduler = params => {
21
23
  storageOperations
22
24
  });
23
25
  };
26
+
24
27
  exports.createScheduler = createScheduler;
@@ -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":["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,MAAD,IAA+D;EAC1F,MAAM;IAAEC,SAAF;IAAaC,WAAb;IAA0BC,SAA1B;IAAqCC,aAArC;IAAoDC;EAApD,IAA0EL,MAAhF;EAEA,OAAO,IAAAM,wDAAA,EAA4B;IAC/BL,SAD+B;IAE/BC,WAF+B;IAG/BC,SAH+B;IAI/BC,aAJ+B;IAK/BC;EAL+B,CAA5B,CAAP;AAOH,CAVM"}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.InvocationTypes = exports.ApwScheduleActionTypes = exports.ApwContentTypes = void 0;
7
+
7
8
  /**
8
9
  * A interface describing the reference to a user that created some data in the database.
9
10
  *
@@ -11,18 +12,23 @@ exports.InvocationTypes = exports.ApwScheduleActionTypes = exports.ApwContentTyp
11
12
  */
12
13
  let ApwContentTypes;
13
14
  exports.ApwContentTypes = ApwContentTypes;
15
+
14
16
  (function (ApwContentTypes) {
15
17
  ApwContentTypes["PAGE"] = "page";
16
18
  ApwContentTypes["CMS_ENTRY"] = "cms_entry";
17
19
  })(ApwContentTypes || (exports.ApwContentTypes = ApwContentTypes = {}));
20
+
18
21
  let ApwScheduleActionTypes;
19
22
  exports.ApwScheduleActionTypes = ApwScheduleActionTypes;
23
+
20
24
  (function (ApwScheduleActionTypes) {
21
25
  ApwScheduleActionTypes["PUBLISH"] = "publish";
22
26
  ApwScheduleActionTypes["UNPUBLISH"] = "unpublish";
23
27
  })(ApwScheduleActionTypes || (exports.ApwScheduleActionTypes = ApwScheduleActionTypes = {}));
28
+
24
29
  let InvocationTypes;
25
30
  exports.InvocationTypes = InvocationTypes;
31
+
26
32
  (function (InvocationTypes) {
27
33
  InvocationTypes["SCHEDULED"] = "scheduled";
28
34
  })(InvocationTypes || (exports.InvocationTypes = InvocationTypes = {}));
@@ -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\";\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\n/**\n * A interface describing the reference to a user that created some data in the database.\n *\n * @category General\n */\nexport interface CreatedBy {\n /**\n * ID if the user.\n */\n id: string;\n /**\n * Full name of the user.\n */\n displayName: string | null;\n /**\n * Type of the user (admin, user)\n */\n type: 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: CreatedBy;\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":";;;;;;AAkCA;AACA;AACA;AACA;AACA;AAJA,IAmCYA,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","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\";\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\n/**\n * A interface describing the reference to a user that created some data in the database.\n *\n * @category General\n */\nexport interface CreatedBy {\n /**\n * ID if the user.\n */\n id: string;\n /**\n * Full name of the user.\n */\n displayName: string | null;\n /**\n * Type of the user (admin, user)\n */\n type: 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: CreatedBy;\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":";;;;;;;AAkCA;AACA;AACA;AACA;AACA;IA+BYA,e;;;WAAAA,e;EAAAA,e;EAAAA,e;GAAAA,e,+BAAAA,e;;IAkBAC,sB;;;WAAAA,sB;EAAAA,sB;EAAAA,sB;GAAAA,sB,sCAAAA,sB;;IAiBAC,e;;;WAAAA,e;EAAAA,e;GAAAA,e,+BAAAA,e"}
@@ -1,29 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createChangeRequestStorageOperations = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _index = require("./index");
13
+
10
14
  var _fieldResolver = require("../utils/fieldResolver");
15
+
11
16
  var _error = _interopRequireDefault(require("@webiny/error"));
17
+
12
18
  const createChangeRequestStorageOperations = params => {
13
19
  const {
14
20
  cms,
15
21
  getCmsContext,
16
22
  security
17
23
  } = params;
24
+
18
25
  const getChangeRequestModel = async () => {
19
26
  security.disableAuthorization();
20
27
  const model = await cms.getModel("apwChangeRequestModelDefinition");
21
28
  security.enableAuthorization();
29
+
22
30
  if (!model) {
23
31
  throw new _error.default("Could not find `apwChangeRequestModelDefinition` model.", "MODEL_NOT_FOUND_ERROR");
24
32
  }
33
+
25
34
  return model;
26
35
  };
36
+
27
37
  const getChangeRequest = async ({
28
38
  id
29
39
  }) => {
@@ -38,9 +48,11 @@ const createChangeRequestStorageOperations = params => {
38
48
  transformers: [(0, _fieldResolver.getTransformer)(model, "body")]
39
49
  });
40
50
  };
51
+
41
52
  return {
42
53
  getChangeRequestModel,
43
54
  getChangeRequest,
55
+
44
56
  async listChangeRequests(params) {
45
57
  const model = await getChangeRequestModel();
46
58
  security.disableAuthorization();
@@ -48,6 +60,7 @@ const createChangeRequestStorageOperations = params => {
48
60
  where: (0, _objectSpread2.default)({}, params.where)
49
61
  }));
50
62
  security.enableAuthorization();
63
+
51
64
  try {
52
65
  const all = await Promise.all(entries.map(entry => (0, _fieldResolver.getFieldValues)({
53
66
  entry,
@@ -60,6 +73,7 @@ const createChangeRequestStorageOperations = params => {
60
73
  throw new _error.default(ex.message, ex.code, ex.data);
61
74
  }
62
75
  },
76
+
63
77
  async createChangeRequest(params) {
64
78
  const model = await getChangeRequestModel();
65
79
  security.disableAuthorization();
@@ -72,12 +86,14 @@ const createChangeRequestStorageOperations = params => {
72
86
  transformers: [(0, _fieldResolver.getTransformer)(model, "body")]
73
87
  });
74
88
  },
89
+
75
90
  async updateChangeRequest(params) {
76
91
  const model = await getChangeRequestModel();
77
92
  /**
78
93
  * We're fetching the existing entry here because we're not accepting "app" field as input,
79
94
  * but, we still need to retain its value after the "update" operation.
80
95
  */
96
+
81
97
  const existingEntry = await getChangeRequest({
82
98
  id: params.id
83
99
  });
@@ -91,6 +107,7 @@ const createChangeRequestStorageOperations = params => {
91
107
  transformers: [(0, _fieldResolver.getTransformer)(model, "body")]
92
108
  });
93
109
  },
110
+
94
111
  async deleteChangeRequest(params) {
95
112
  const model = await getChangeRequestModel();
96
113
  security.disableAuthorization();
@@ -98,6 +115,8 @@ const createChangeRequestStorageOperations = params => {
98
115
  security.enableAuthorization();
99
116
  return true;
100
117
  }
118
+
101
119
  };
102
120
  };
121
+
103
122
  exports.createChangeRequestStorageOperations = createChangeRequestStorageOperations;
@@ -1 +1 @@
1
- {"version":3,"names":["createChangeRequestStorageOperations","params","cms","getCmsContext","security","getChangeRequestModel","disableAuthorization","model","getModel","enableAuthorization","WebinyError","getChangeRequest","id","entry","getEntryById","getFieldValues","fields","baseFields","context","transformers","getTransformer","listChangeRequests","entries","meta","listLatestEntries","where","all","Promise","map","ex","message","code","data","createChangeRequest","createEntry","updateChangeRequest","existingEntry","updateEntry","deleteChangeRequest","deleteEntry"],"sources":["changeRequestStorageOperations.ts"],"sourcesContent":["import { ApwChangeRequestStorageOperations } from \"./types\";\nimport { baseFields, CreateApwStorageOperationsParams } from \"~/storageOperations/index\";\nimport { getFieldValues, getTransformer } from \"~/utils/fieldResolver\";\nimport WebinyError from \"@webiny/error\";\nimport { ApwChangeRequest } from \"~/types\";\n\nexport const createChangeRequestStorageOperations = (\n params: CreateApwStorageOperationsParams\n): ApwChangeRequestStorageOperations => {\n const { cms, getCmsContext, security } = params;\n const getChangeRequestModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(\"apwChangeRequestModelDefinition\");\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwChangeRequestModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getChangeRequest: ApwChangeRequestStorageOperations[\"getChangeRequest\"] = async ({\n id\n }) => {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n const entry = await cms.getEntryById(model, id);\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n };\n return {\n getChangeRequestModel,\n getChangeRequest,\n async listChangeRequests(params) {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where\n }\n });\n security.enableAuthorization();\n try {\n const all = await Promise.all(\n entries.map(entry =>\n getFieldValues<ApwChangeRequest>({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n })\n )\n );\n return [all, meta];\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code, ex.data);\n }\n },\n async createChangeRequest(params) {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n const entry = await cms.createEntry(model, params.data);\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async updateChangeRequest(params) {\n const model = await getChangeRequestModel();\n /**\n * We're fetching the existing entry here because we're not accepting \"app\" field as input,\n * but, we still need to retain its value after the \"update\" operation.\n */\n const existingEntry = await getChangeRequest({ id: params.id });\n\n security.disableAuthorization();\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async deleteChangeRequest(params) {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n await cms.deleteEntry(model, params.id);\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":";;;;;;;;AACA;AACA;AACA;AAGO,MAAMA,oCAAoC,GAC7CC,MAAwC,IACJ;EACpC,MAAM;IAAEC,GAAG;IAAEC,aAAa;IAAEC;EAAS,CAAC,GAAGH,MAAM;EAC/C,MAAMI,qBAAqB,GAAG,YAAY;IACtCD,QAAQ,CAACE,oBAAoB,EAAE;IAC/B,MAAMC,KAAK,GAAG,MAAML,GAAG,CAACM,QAAQ,CAAC,iCAAiC,CAAC;IACnEJ,QAAQ,CAACK,mBAAmB,EAAE;IAC9B,IAAI,CAACF,KAAK,EAAE;MACR,MAAM,IAAIG,cAAW,CACjB,yDAAyD,EACzD,uBAAuB,CAC1B;IACL;IACA,OAAOH,KAAK;EAChB,CAAC;EACD,MAAMI,gBAAuE,GAAG,OAAO;IACnFC;EACJ,CAAC,KAAK;IACF,MAAML,KAAK,GAAG,MAAMF,qBAAqB,EAAE;IAC3CD,QAAQ,CAACE,oBAAoB,EAAE;IAC/B,MAAMO,KAAK,GAAG,MAAMX,GAAG,CAACY,YAAY,CAACP,KAAK,EAAEK,EAAE,CAAC;IAC/CR,QAAQ,CAACK,mBAAmB,EAAE;IAC9B,OAAO,IAAAM,6BAAc,EAAC;MAClBF,KAAK;MACLG,MAAM,EAAEC,iBAAU;MAClBC,OAAO,EAAEf,aAAa,EAAE;MACxBgB,YAAY,EAAE,CAAC,IAAAC,6BAAc,EAACb,KAAK,EAAE,MAAM,CAAC;IAChD,CAAC,CAAC;EACN,CAAC;EACD,OAAO;IACHF,qBAAqB;IACrBM,gBAAgB;IAChB,MAAMU,kBAAkB,CAACpB,MAAM,EAAE;MAC7B,MAAMM,KAAK,GAAG,MAAMF,qBAAqB,EAAE;MAC3CD,QAAQ,CAACE,oBAAoB,EAAE;MAC/B,MAAM,CAACgB,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMrB,GAAG,CAACsB,iBAAiB,CAACjB,KAAK,8DAClDN,MAAM;QACTwB,KAAK,kCACExB,MAAM,CAACwB,KAAK;MAClB,GACH;MACFrB,QAAQ,CAACK,mBAAmB,EAAE;MAC9B,IAAI;QACA,MAAMiB,GAAG,GAAG,MAAMC,OAAO,CAACD,GAAG,CACzBJ,OAAO,CAACM,GAAG,CAACf,KAAK,IACb,IAAAE,6BAAc,EAAmB;UAC7BF,KAAK;UACLG,MAAM,EAAEC,iBAAU;UAClBC,OAAO,EAAEf,aAAa,EAAE;UACxBgB,YAAY,EAAE,CAAC,IAAAC,6BAAc,EAACb,KAAK,EAAE,MAAM,CAAC;QAChD,CAAC,CAAC,CACL,CACJ;QACD,OAAO,CAACmB,GAAG,EAAEH,IAAI,CAAC;MACtB,CAAC,CAAC,OAAOM,EAAE,EAAE;QACT,MAAM,IAAInB,cAAW,CAACmB,EAAE,CAACC,OAAO,EAAED,EAAE,CAACE,IAAI,EAAEF,EAAE,CAACG,IAAI,CAAC;MACvD;IACJ,CAAC;IACD,MAAMC,mBAAmB,CAAChC,MAAM,EAAE;MAC9B,MAAMM,KAAK,GAAG,MAAMF,qBAAqB,EAAE;MAC3CD,QAAQ,CAACE,oBAAoB,EAAE;MAC/B,MAAMO,KAAK,GAAG,MAAMX,GAAG,CAACgC,WAAW,CAAC3B,KAAK,EAAEN,MAAM,CAAC+B,IAAI,CAAC;MACvD5B,QAAQ,CAACK,mBAAmB,EAAE;MAC9B,OAAO,IAAAM,6BAAc,EAAC;QAClBF,KAAK;QACLG,MAAM,EAAEC,iBAAU;QAClBC,OAAO,EAAEf,aAAa,EAAE;QACxBgB,YAAY,EAAE,CAAC,IAAAC,6BAAc,EAACb,KAAK,EAAE,MAAM,CAAC;MAChD,CAAC,CAAC;IACN,CAAC;IACD,MAAM4B,mBAAmB,CAAClC,MAAM,EAAE;MAC9B,MAAMM,KAAK,GAAG,MAAMF,qBAAqB,EAAE;MAC3C;AACZ;AACA;AACA;MACY,MAAM+B,aAAa,GAAG,MAAMzB,gBAAgB,CAAC;QAAEC,EAAE,EAAEX,MAAM,CAACW;MAAG,CAAC,CAAC;MAE/DR,QAAQ,CAACE,oBAAoB,EAAE;MAC/B,MAAMO,KAAK,GAAG,MAAMX,GAAG,CAACmC,WAAW,CAAC9B,KAAK,EAAEN,MAAM,CAACW,EAAE,8DAC7CwB,aAAa,GACbnC,MAAM,CAAC+B,IAAI,EAChB;MACF5B,QAAQ,CAACK,mBAAmB,EAAE;MAC9B,OAAO,IAAAM,6BAAc,EAAC;QAClBF,KAAK;QACLG,MAAM,EAAEC,iBAAU;QAClBC,OAAO,EAAEf,aAAa,EAAE;QACxBgB,YAAY,EAAE,CAAC,IAAAC,6BAAc,EAACb,KAAK,EAAE,MAAM,CAAC;MAChD,CAAC,CAAC;IACN,CAAC;IACD,MAAM+B,mBAAmB,CAACrC,MAAM,EAAE;MAC9B,MAAMM,KAAK,GAAG,MAAMF,qBAAqB,EAAE;MAC3CD,QAAQ,CAACE,oBAAoB,EAAE;MAC/B,MAAMJ,GAAG,CAACqC,WAAW,CAAChC,KAAK,EAAEN,MAAM,CAACW,EAAE,CAAC;MACvCR,QAAQ,CAACK,mBAAmB,EAAE;MAC9B,OAAO,IAAI;IACf;EACJ,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["createChangeRequestStorageOperations","params","cms","getCmsContext","security","getChangeRequestModel","disableAuthorization","model","getModel","enableAuthorization","WebinyError","getChangeRequest","id","entry","getEntryById","getFieldValues","fields","baseFields","context","transformers","getTransformer","listChangeRequests","entries","meta","listLatestEntries","where","all","Promise","map","ex","message","code","data","createChangeRequest","createEntry","updateChangeRequest","existingEntry","updateEntry","deleteChangeRequest","deleteEntry"],"sources":["changeRequestStorageOperations.ts"],"sourcesContent":["import { ApwChangeRequestStorageOperations } from \"./types\";\nimport { baseFields, CreateApwStorageOperationsParams } from \"~/storageOperations/index\";\nimport { getFieldValues, getTransformer } from \"~/utils/fieldResolver\";\nimport WebinyError from \"@webiny/error\";\nimport { ApwChangeRequest } from \"~/types\";\n\nexport const createChangeRequestStorageOperations = (\n params: CreateApwStorageOperationsParams\n): ApwChangeRequestStorageOperations => {\n const { cms, getCmsContext, security } = params;\n const getChangeRequestModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(\"apwChangeRequestModelDefinition\");\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n \"Could not find `apwChangeRequestModelDefinition` model.\",\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getChangeRequest: ApwChangeRequestStorageOperations[\"getChangeRequest\"] = async ({\n id\n }) => {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n const entry = await cms.getEntryById(model, id);\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n };\n return {\n getChangeRequestModel,\n getChangeRequest,\n async listChangeRequests(params) {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...params.where\n }\n });\n security.enableAuthorization();\n try {\n const all = await Promise.all(\n entries.map(entry =>\n getFieldValues<ApwChangeRequest>({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n })\n )\n );\n return [all, meta];\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code, ex.data);\n }\n },\n async createChangeRequest(params) {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n const entry = await cms.createEntry(model, params.data);\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async updateChangeRequest(params) {\n const model = await getChangeRequestModel();\n /**\n * We're fetching the existing entry here because we're not accepting \"app\" field as input,\n * but, we still need to retain its value after the \"update\" operation.\n */\n const existingEntry = await getChangeRequest({ id: params.id });\n\n security.disableAuthorization();\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n },\n async deleteChangeRequest(params) {\n const model = await getChangeRequestModel();\n security.disableAuthorization();\n await cms.deleteEntry(model, params.id);\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
@@ -1,23 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createCommentStorageOperations = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _index = require("./index");
13
+
10
14
  var _fieldResolver = require("../utils/fieldResolver");
15
+
11
16
  var _error = _interopRequireDefault(require("@webiny/error"));
17
+
12
18
  var _comment = require("./models/comment.model");
19
+
13
20
  const pickIdFromChangeRequest = obj => {
14
21
  const rawValue = obj["changeRequest"];
22
+
15
23
  if (!rawValue) {
16
24
  return obj;
17
25
  }
26
+
18
27
  obj["changeRequest"] = rawValue.id;
19
28
  return obj;
20
29
  };
30
+
21
31
  const createCommentStorageOperations = ({
22
32
  cms,
23
33
  getCmsContext,
@@ -27,11 +37,14 @@ const createCommentStorageOperations = ({
27
37
  security.disableAuthorization();
28
38
  const model = await cms.getModel(_comment.COMMENT_MODEL_ID);
29
39
  security.enableAuthorization();
40
+
30
41
  if (!model) {
31
42
  throw new _error.default(`Could not find "${_comment.COMMENT_MODEL_ID}" model.`, "MODEL_NOT_FOUND_ERROR");
32
43
  }
44
+
33
45
  return model;
34
46
  };
47
+
35
48
  const getComment = async ({
36
49
  id
37
50
  }) => {
@@ -46,12 +59,14 @@ const createCommentStorageOperations = ({
46
59
  transformers: [(0, _fieldResolver.getTransformer)(model, "body")]
47
60
  });
48
61
  };
62
+
49
63
  return {
50
64
  getCommentModel,
51
65
  getComment: async params => {
52
66
  const values = await getComment(params);
53
67
  return pickIdFromChangeRequest(values);
54
68
  },
69
+
55
70
  async listComments(params) {
56
71
  const model = await getCommentModel();
57
72
  security.disableAuthorization();
@@ -66,6 +81,7 @@ const createCommentStorageOperations = ({
66
81
  const all = values.map(value => pickIdFromChangeRequest(value));
67
82
  return [all, meta];
68
83
  },
84
+
69
85
  async createComment(params) {
70
86
  const model = await getCommentModel();
71
87
  const refModel = await this.getChangeRequestModel();
@@ -85,12 +101,14 @@ const createCommentStorageOperations = ({
85
101
  });
86
102
  return pickIdFromChangeRequest(values);
87
103
  },
104
+
88
105
  async updateComment(params) {
89
106
  const model = await getCommentModel();
90
107
  /**
91
108
  * We're fetching the existing entry here because we're not accepting "app" field as input,
92
109
  * but, we still need to retain its value after the "update" operation.
93
110
  */
111
+
94
112
  const existingEntry = await getComment({
95
113
  id: params.id
96
114
  });
@@ -105,6 +123,7 @@ const createCommentStorageOperations = ({
105
123
  });
106
124
  return pickIdFromChangeRequest(values);
107
125
  },
126
+
108
127
  async deleteComment(params) {
109
128
  const model = await getCommentModel();
110
129
  security.disableAuthorization();
@@ -112,6 +131,8 @@ const createCommentStorageOperations = ({
112
131
  security.enableAuthorization();
113
132
  return true;
114
133
  }
134
+
115
135
  };
116
136
  };
137
+
117
138
  exports.createCommentStorageOperations = createCommentStorageOperations;
@@ -1 +1 @@
1
- {"version":3,"names":["pickIdFromChangeRequest","obj","rawValue","id","createCommentStorageOperations","cms","getCmsContext","security","getCommentModel","disableAuthorization","model","getModel","COMMENT_MODEL_ID","enableAuthorization","WebinyError","getComment","entry","getEntryById","getFieldValues","fields","baseFields","context","transformers","getTransformer","params","values","listComments","entries","meta","listLatestEntries","Promise","all","map","value","createComment","refModel","getChangeRequestModel","createEntry","data","changeRequest","modelId","updateComment","existingEntry","updateEntry","deleteComment","deleteEntry"],"sources":["commentStorageOperations.ts"],"sourcesContent":["import { ApwStorageOperations } from \"./types\";\nimport { ApwCommentStorageOperations } from \"./types\";\nimport { baseFields, CreateApwStorageOperationsParams } from \"~/storageOperations/index\";\nimport { getFieldValues, getTransformer } from \"~/utils/fieldResolver\";\nimport WebinyError from \"@webiny/error\";\nimport { ApwComment } from \"~/types\";\nimport { CmsEntryListParams } from \"@webiny/api-headless-cms/types\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\n\nconst pickIdFromChangeRequest = (obj: Record<string, any>): ApwComment => {\n const rawValue = obj[\"changeRequest\"];\n if (!rawValue) {\n return obj as unknown as ApwComment;\n }\n obj[\"changeRequest\"] = rawValue.id;\n return obj as unknown as ApwComment;\n};\n\nexport const createCommentStorageOperations = ({\n cms,\n getCmsContext,\n security\n}: CreateApwStorageOperationsParams): ApwCommentStorageOperations => {\n const getCommentModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(COMMENT_MODEL_ID);\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n `Could not find \"${COMMENT_MODEL_ID}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getComment: ApwCommentStorageOperations[\"getComment\"] = async ({ id }) => {\n const model = await getCommentModel();\n security.disableAuthorization();\n const entry = await cms.getEntryById(model, id);\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n };\n return {\n getCommentModel,\n getComment: async params => {\n const values = await getComment(params);\n return pickIdFromChangeRequest(values);\n },\n async listComments(params) {\n const model = await getCommentModel();\n security.disableAuthorization();\n const [entries, meta] = await cms.listLatestEntries(\n model,\n params as CmsEntryListParams\n );\n security.enableAuthorization();\n const values = await Promise.all(\n entries.map(entry =>\n getFieldValues<ApwComment>({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n })\n )\n );\n const all = values.map(value => pickIdFromChangeRequest(value));\n return [all, meta];\n },\n async createComment(this: ApwStorageOperations, params) {\n const model = await getCommentModel();\n const refModel = await this.getChangeRequestModel();\n security.disableAuthorization();\n const entry = await cms.createEntry(model, {\n ...params.data,\n changeRequest: {\n id: params.data.changeRequest,\n modelId: refModel.modelId\n }\n });\n security.enableAuthorization();\n\n const values = await getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n return pickIdFromChangeRequest(values);\n },\n async updateComment(params) {\n const model = await getCommentModel();\n /**\n * We're fetching the existing entry here because we're not accepting \"app\" field as input,\n * but, we still need to retain its value after the \"update\" operation.\n */\n const existingEntry = await getComment({ id: params.id });\n\n security.disableAuthorization();\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n security.enableAuthorization();\n const values = await getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n return pickIdFromChangeRequest(values);\n },\n async deleteComment(params) {\n const model = await getCommentModel();\n security.disableAuthorization();\n await cms.deleteEntry(model, params.id);\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["pickIdFromChangeRequest","obj","rawValue","id","createCommentStorageOperations","cms","getCmsContext","security","getCommentModel","disableAuthorization","model","getModel","COMMENT_MODEL_ID","enableAuthorization","WebinyError","getComment","entry","getEntryById","getFieldValues","fields","baseFields","context","transformers","getTransformer","params","values","listComments","entries","meta","listLatestEntries","Promise","all","map","value","createComment","refModel","getChangeRequestModel","createEntry","data","changeRequest","modelId","updateComment","existingEntry","updateEntry","deleteComment","deleteEntry"],"sources":["commentStorageOperations.ts"],"sourcesContent":["import { ApwStorageOperations } from \"./types\";\nimport { ApwCommentStorageOperations } from \"./types\";\nimport { baseFields, CreateApwStorageOperationsParams } from \"~/storageOperations/index\";\nimport { getFieldValues, getTransformer } from \"~/utils/fieldResolver\";\nimport WebinyError from \"@webiny/error\";\nimport { ApwComment } from \"~/types\";\nimport { CmsEntryListParams } from \"@webiny/api-headless-cms/types\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\n\nconst pickIdFromChangeRequest = (obj: Record<string, any>): ApwComment => {\n const rawValue = obj[\"changeRequest\"];\n if (!rawValue) {\n return obj as unknown as ApwComment;\n }\n obj[\"changeRequest\"] = rawValue.id;\n return obj as unknown as ApwComment;\n};\n\nexport const createCommentStorageOperations = ({\n cms,\n getCmsContext,\n security\n}: CreateApwStorageOperationsParams): ApwCommentStorageOperations => {\n const getCommentModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(COMMENT_MODEL_ID);\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n `Could not find \"${COMMENT_MODEL_ID}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n const getComment: ApwCommentStorageOperations[\"getComment\"] = async ({ id }) => {\n const model = await getCommentModel();\n security.disableAuthorization();\n const entry = await cms.getEntryById(model, id);\n security.enableAuthorization();\n return getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n };\n return {\n getCommentModel,\n getComment: async params => {\n const values = await getComment(params);\n return pickIdFromChangeRequest(values);\n },\n async listComments(params) {\n const model = await getCommentModel();\n security.disableAuthorization();\n const [entries, meta] = await cms.listLatestEntries(\n model,\n params as CmsEntryListParams\n );\n security.enableAuthorization();\n const values = await Promise.all(\n entries.map(entry =>\n getFieldValues<ApwComment>({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n })\n )\n );\n const all = values.map(value => pickIdFromChangeRequest(value));\n return [all, meta];\n },\n async createComment(this: ApwStorageOperations, params) {\n const model = await getCommentModel();\n const refModel = await this.getChangeRequestModel();\n security.disableAuthorization();\n const entry = await cms.createEntry(model, {\n ...params.data,\n changeRequest: {\n id: params.data.changeRequest,\n modelId: refModel.modelId\n }\n });\n security.enableAuthorization();\n\n const values = await getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n return pickIdFromChangeRequest(values);\n },\n async updateComment(params) {\n const model = await getCommentModel();\n /**\n * We're fetching the existing entry here because we're not accepting \"app\" field as input,\n * but, we still need to retain its value after the \"update\" operation.\n */\n const existingEntry = await getComment({ id: params.id });\n\n security.disableAuthorization();\n const entry = await cms.updateEntry(model, params.id, {\n ...existingEntry,\n ...params.data\n });\n security.enableAuthorization();\n const values = await getFieldValues({\n entry,\n fields: baseFields,\n context: getCmsContext(),\n transformers: [getTransformer(model, \"body\")]\n });\n return pickIdFromChangeRequest(values);\n },\n async deleteComment(params) {\n const model = await getCommentModel();\n security.disableAuthorization();\n await cms.deleteEntry(model, params.id);\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}