@webiny/api-apw 5.41.4-beta.6 → 5.42.0-beta.0

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 (65) hide show
  1. package/crud/createContentReviewMethods.js +1 -2
  2. package/crud/createContentReviewMethods.js.map +1 -1
  3. package/crud/index.js.map +1 -1
  4. package/crud/utils.js.map +1 -1
  5. package/package.json +31 -38
  6. package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
  7. package/plugins/cms/linkWorkflowToEntry.js +1 -1
  8. package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
  9. package/plugins/cms/notifications/changeRequestNotification.js.map +1 -1
  10. package/plugins/cms/notifications/commentNotification.js.map +1 -1
  11. package/plugins/cms/notifications/contentReviewNotification.js.map +1 -1
  12. package/plugins/cms/notifications/contentUrl.js.map +1 -1
  13. package/plugins/cms/triggerContentReview.js.map +1 -1
  14. package/plugins/cms/utils.js.map +1 -1
  15. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  16. package/plugins/graphql/comment.gql.js.map +1 -1
  17. package/plugins/graphql/contentReview.gql.js.map +1 -1
  18. package/plugins/graphql/reviewer.gql.js.map +1 -1
  19. package/plugins/graphql/workflow.gql.js.map +1 -1
  20. package/plugins/graphql.js.map +1 -1
  21. package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
  22. package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
  23. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  24. package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
  25. package/plugins/hooks/notifications/changeRequestUrl.js.map +1 -1
  26. package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
  27. package/plugins/hooks/notifications/commentUrl.js.map +1 -1
  28. package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
  29. package/plugins/hooks/notifications/contentReviewUrl.js.map +1 -1
  30. package/plugins/hooks/notifications/sendChangeRequestNotification.js.map +1 -1
  31. package/plugins/hooks/notifications/sendCommentNotification.js.map +1 -1
  32. package/plugins/hooks/notifications/sendContentReviewNotification.js.map +1 -1
  33. package/plugins/hooks/validateChangeRequest.js.map +1 -1
  34. package/plugins/hooks/validateComment.js.map +1 -1
  35. package/plugins/hooks/validateContentReview.js.map +1 -1
  36. package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -1
  37. package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
  38. package/plugins/pageBuilder/linkWorkflowToPage.js +10 -11
  39. package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -1
  40. package/plugins/pageBuilder/notifications/changeRequestNotification.js.map +1 -1
  41. package/plugins/pageBuilder/notifications/commentNotification.js.map +1 -1
  42. package/plugins/pageBuilder/notifications/contentReviewNotification.js.map +1 -1
  43. package/plugins/pageBuilder/notifications/contentUrl.js.map +1 -1
  44. package/plugins/pageBuilder/triggerContentReview.js +2 -3
  45. package/plugins/pageBuilder/triggerContentReview.js.map +1 -1
  46. package/plugins/pageBuilder/updateContentReviewStatus.js +2 -4
  47. package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
  48. package/plugins/pageBuilder/utils.js +4 -5
  49. package/plugins/pageBuilder/utils.js.map +1 -1
  50. package/plugins/utils.js +6 -5
  51. package/plugins/utils.js.map +1 -1
  52. package/scheduler/createScheduleActionMethods.js +63 -38
  53. package/scheduler/createScheduleActionMethods.js.map +1 -1
  54. package/scheduler/handlers/executeAction/index.js.map +1 -1
  55. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
  56. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
  57. package/scheduler/handlers/scheduleAction/index.js.map +1 -1
  58. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
  59. package/scheduler/handlers/utils.js.map +1 -1
  60. package/storageOperations/commentStorageOperations.js.map +1 -1
  61. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  62. package/storageOperations/models/utils.js.map +1 -1
  63. package/storageOperations/workflowStorageOperations.js.map +1 -1
  64. package/utils/contentApwSettingsPlugin.js.map +1 -1
  65. package/utils/errors.js.map +1 -1
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createContentReviewMethods = createContentReviewMethods;
8
- var _get = _interopRequireDefault(require("lodash/get"));
9
8
  var _pubsub = require("@webiny/pubsub");
10
9
  var _error = _interopRequireDefault(require("@webiny/error"));
11
10
  var _types = require("../types");
@@ -488,7 +487,7 @@ function createContentReviewMethods(params) {
488
487
  },
489
488
  async deleteScheduledAction(id) {
490
489
  const contentReview = await this.get(id);
491
- const scheduledActionId = (0, _get.default)(contentReview, "content.scheduledActionId");
490
+ const scheduledActionId = contentReview.content?.scheduledActionId;
492
491
 
493
492
  /**
494
493
  * Check if there is any action scheduled for this "content review".
@@ -1 +1 @@
1
- {"version":3,"names":["_get","_interopRequireDefault","require","_pubsub","_error","_types","_utils","_errors","_types2","_utils2","_contentApwSettingsPlugin","createContentReviewMethods","params","getIdentity","storageOperations","getReviewer","getContentGetter","getContentPublisher","getContentUnPublisher","scheduler","handlerClient","getTenant","getLocale","plugins","onContentReviewBeforeCreate","createTopic","onContentReviewAfterCreate","onContentReviewBeforeUpdate","onContentReviewAfterUpdate","onContentReviewBeforeDelete","onContentReviewAfterDelete","onContentReviewBeforeList","get","id","getContentReview","list","where","publish","reviewStatus","filterContentReviewsByRequiresMyAttention","listParams","listContentReviews","create","data","input","ApwContentReviewStatus","UNDER_REVIEW","contentReview","createContentReview","update","original","updateContentReview","delete","deleteContentReview","provideSignOff","stepId","entry","steps","stepIndex","findIndex","step","currentStep","previousStep","identity","hasPermission","hasReviewer","NotAuthorizedError","status","ApwContentReviewStepStatus","DONE","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","StepMissingError","pendingChangeRequests","PendingChangeRequestsError","ACTIVE","StepInActiveError","previousStepStatus","updatedSteps","map","index","signOffProvidedOn","Date","toISOString","signOffProvidedBy","getNextStepStatus","newStatus","pendingRequiredSteps","getPendingRequiredSteps","length","READY_TO_BE_PUBLISHED","retractSignOff","content","NoSignOffProvidedError","scheduledActionId","scheduledOn","scheduledBy","isReviewRequired","contentGetter","settings","contentReviewId","contentApwSettingsPlugin","getContentApwSettingsPlugin","getContentReviewId","workflowId","getWorkflowId","publishContent","datetime","Error","message","code","checkValidDateTime","contentPublisher","action","ApwScheduleActionTypes","PUBLISH","entryId","modelId","scheduleAction","unpublishContent","PUBLISHED","contentUnPublisher","UNPUBLISH","scheduledAction","process","env","NODE_ENV","invoke","name","String","APW_SCHEDULER_SCHEDULE_ACTION_HANDLER","payload","tenant","locale","await","description","deleteScheduledAction","INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META"],"sources":["createContentReviewMethods.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport Error from \"@webiny/error\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentReview,\n ApwContentReviewCrud,\n ApwContentReviewStatus,\n ApwContentReviewStepStatus,\n ApwReviewerCrud,\n ApwScheduleActionData,\n ApwWorkflowStepTypes,\n CreateApwContentReviewParams,\n CreateApwParams,\n OnContentReviewAfterCreateTopicParams,\n OnContentReviewAfterDeleteTopicParams,\n OnContentReviewAfterUpdateTopicParams,\n OnContentReviewBeforeCreateTopicParams,\n OnContentReviewBeforeDeleteTopicParams,\n OnContentReviewBeforeListTopicParams,\n OnContentReviewBeforeUpdateTopicParams,\n UpdateApwContentReviewParams\n} from \"~/types\";\nimport { getNextStepStatus, hasReviewer } from \"~/plugins/utils\";\nimport {\n NoSignOffProvidedError,\n NotAuthorizedError,\n PendingChangeRequestsError,\n StepInActiveError,\n StepMissingError\n} from \"~/utils/errors\";\nimport { ApwScheduleActionTypes } from \"~/scheduler/types\";\nimport {\n checkValidDateTime,\n filterContentReviewsByRequiresMyAttention,\n getPendingRequiredSteps,\n INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n} from \"./utils\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport interface CreateContentReviewMethodsParams extends CreateApwParams {\n getReviewer: ApwReviewerCrud[\"get\"];\n getContentGetter: AdvancedPublishingWorkflow[\"getContentGetter\"];\n getContentPublisher: AdvancedPublishingWorkflow[\"getContentPublisher\"];\n getContentUnPublisher: AdvancedPublishingWorkflow[\"getContentUnPublisher\"];\n plugins: PluginsContainer;\n}\n\nexport function createContentReviewMethods(\n params: CreateContentReviewMethodsParams\n): ApwContentReviewCrud {\n const {\n getIdentity,\n storageOperations,\n getReviewer,\n getContentGetter,\n getContentPublisher,\n getContentUnPublisher,\n scheduler,\n handlerClient,\n getTenant,\n getLocale,\n plugins\n } = params;\n\n // create\n const onContentReviewBeforeCreate = createTopic<OnContentReviewBeforeCreateTopicParams>(\n \"apw.onContentReviewBeforeCreate\"\n );\n const onContentReviewAfterCreate = createTopic<OnContentReviewAfterCreateTopicParams>(\n \"apw.onContentReviewAfterCreate\"\n );\n // update\n const onContentReviewBeforeUpdate = createTopic<OnContentReviewBeforeUpdateTopicParams>(\n \"apw.onContentReviewBeforeUpdate\"\n );\n const onContentReviewAfterUpdate = createTopic<OnContentReviewAfterUpdateTopicParams>(\n \"apw.onContentReviewAfterUpdate\"\n );\n // delete\n const onContentReviewBeforeDelete = createTopic<OnContentReviewBeforeDeleteTopicParams>(\n \"apw.onContentReviewBeforeDelete\"\n );\n const onContentReviewAfterDelete = createTopic<OnContentReviewAfterDeleteTopicParams>(\n \"apw.onContentReviewAfterDelete\"\n );\n // list\n const onContentReviewBeforeList = createTopic<OnContentReviewBeforeListTopicParams>(\n \"apw.onContentReviewBeforeList\"\n );\n return {\n /**\n * Lifecycle events\n */\n onContentReviewBeforeCreate,\n onContentReviewAfterCreate,\n onContentReviewBeforeUpdate,\n onContentReviewAfterUpdate,\n onContentReviewBeforeDelete,\n onContentReviewAfterDelete,\n onContentReviewBeforeList,\n async get(id) {\n return storageOperations.getContentReview({ id });\n },\n async list(params) {\n const where = params.where || {};\n\n await onContentReviewBeforeList.publish({\n where\n });\n\n if (where.reviewStatus === \"requiresMyAttention\") {\n return filterContentReviewsByRequiresMyAttention({\n listParams: {\n ...params,\n where\n },\n listContentReviews: storageOperations.listContentReviews,\n getReviewer,\n getIdentity\n });\n }\n\n return storageOperations.listContentReviews({\n ...params,\n where\n });\n },\n async create(data: Omit<CreateApwContentReviewParams, \"reviewStatus\">) {\n const input: CreateApwContentReviewParams = {\n ...data,\n reviewStatus: ApwContentReviewStatus.UNDER_REVIEW\n };\n await onContentReviewBeforeCreate.publish({ input });\n\n const contentReview = await storageOperations.createContentReview({\n data: input\n });\n\n await onContentReviewAfterCreate.publish({ contentReview });\n\n return contentReview;\n },\n async update(id, data: UpdateApwContentReviewParams) {\n const original = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeUpdate.publish({ original, input: { id, data } });\n\n const contentReview = await storageOperations.updateContentReview({\n id,\n data\n });\n\n await onContentReviewAfterUpdate.publish({\n original,\n input: { id, data },\n contentReview\n });\n\n return contentReview;\n },\n async delete(id) {\n const contentReview = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeDelete.publish({ contentReview });\n\n await storageOperations.deleteContentReview({ id });\n\n await onContentReviewAfterDelete.publish({ contentReview });\n\n return true;\n },\n async provideSignOff(this: ApwContentReviewCrud, id, stepId) {\n const entry: ApwContentReview = await this.get(id);\n const { steps, reviewStatus } = entry;\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n const previousStep = steps[stepIndex - 1];\n\n const identity = getIdentity();\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if previous step is of \"mandatory_blocking\" type and undone.\n */\n if (\n previousStep &&\n previousStep.status !== ApwContentReviewStepStatus.DONE &&\n previousStep.type === ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n throw new StepMissingError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if there are pending change requests.\n */\n if (currentStep.pendingChangeRequests > 0) {\n throw new PendingChangeRequestsError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if current step is not in \"active\" state.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.ACTIVE) {\n throw new StepInActiveError({ entry, input: { id, step: stepId } });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n /*\n * Provide sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.DONE;\n return {\n ...step,\n status: ApwContentReviewStepStatus.DONE,\n signOffProvidedOn: new Date().toISOString(),\n signOffProvidedBy: identity\n };\n }\n /**\n * Update next steps status based on type.\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => typeof step.signOffProvidedOn !== \"string\"\n );\n\n /**\n * If there are no required steps that are pending, set the status to \"READY_TO_BE_PUBLISHED\".\n */\n if (pendingRequiredSteps.length === 0) {\n newStatus = ApwContentReviewStatus.READY_TO_BE_PUBLISHED;\n }\n\n /**\n * Save updated steps.\n */\n await this.update(id, {\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async retractSignOff(this: ApwContentReviewCrud, id, stepId) {\n const contentReview = await this.get(id);\n const { steps, reviewStatus, content } = contentReview;\n\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n\n const identity = getIdentity();\n\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the retract sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({\n entry: contentReview,\n input: {\n id,\n step: stepId\n }\n });\n }\n /**\n * Don't allow, if step in not \"done\" i.e. no sign-off was provided for it.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.DONE) {\n throw new NoSignOffProvidedError({\n entry: contentReview,\n input: {\n id,\n step: stepId\n }\n });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n\n /*\n * Retract sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.ACTIVE;\n return {\n ...step,\n status: previousStepStatus,\n signOffProvidedOn: null,\n signOffProvidedBy: null\n };\n }\n /**\n * Set next step status as \"inactive\".\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => step.signOffProvidedOn === null\n );\n /**\n * If there are required steps that are pending, set the status to \"UNDER_REVIEW\".\n */\n if (pendingRequiredSteps.length !== 0) {\n newStatus = ApwContentReviewStatus.UNDER_REVIEW;\n }\n\n /**\n * We need to delete the scheduled action if one was created.\n */\n const scheduledActionId = contentReview.content?.scheduledActionId;\n if (!!scheduledActionId) {\n await scheduler.delete(scheduledActionId);\n }\n\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: null,\n scheduledBy: null,\n scheduledActionId: null\n },\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async isReviewRequired(data) {\n const contentGetter = getContentGetter(data.type);\n const content = await contentGetter(data.id, data.settings);\n\n let isReviewRequired = false;\n let contentReviewId: string | null = null;\n\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type: data.type\n });\n\n if (contentApwSettingsPlugin) {\n contentReviewId = contentApwSettingsPlugin.getContentReviewId(content);\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n if (workflowId) {\n isReviewRequired = true;\n }\n }\n\n return {\n isReviewRequired,\n contentReviewId\n };\n },\n async publishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.READY_TO_BE_PUBLISHED) {\n throw new Error({\n message: `Cannot publish content because it is not yet ready to be published.`,\n code: \"NOT_READY_TO_BE_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * And if not, we are publishing immediately.\n */\n if (!datetime) {\n const contentPublisher = getContentPublisher(content.type);\n\n await contentPublisher(content.id, content.settings);\n\n return true;\n }\n\n const data: ApwScheduleActionData = {\n action: ApwScheduleActionTypes.PUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n };\n const scheduledActionId = await this.scheduleAction(data);\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async unpublishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.PUBLISHED) {\n throw new Error({\n message: `Cannot unpublish content because it is not yet published.`,\n code: \"NOT_YET_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * If not, we are unpublishing immediately.\n */\n if (!datetime) {\n const contentUnPublisher = getContentUnPublisher(content.type);\n\n await contentUnPublisher(content.id, content.settings);\n\n return true;\n }\n\n const scheduledActionId = await this.scheduleAction({\n action: ApwScheduleActionTypes.UNPUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n });\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async scheduleAction(data) {\n // Save input in DB\n const scheduledAction = await scheduler.create(data);\n /**\n * This function contains logic of lambda invocation.\n * Current we're not mocking it, therefore, we're just returning true.\n */\n if (process.env.NODE_ENV === \"test\") {\n return scheduledAction.id;\n }\n // Invoke handler\n await handlerClient.invoke({\n name: String(process.env.APW_SCHEDULER_SCHEDULE_ACTION_HANDLER),\n payload: {\n tenant: getTenant().id,\n locale: getLocale().code\n },\n await: false,\n description: \"APW scheduler handler\"\n });\n return scheduledAction.id;\n },\n async deleteScheduledAction(id) {\n const contentReview = await this.get(id);\n const scheduledActionId = get(contentReview, \"content.scheduledActionId\");\n\n /**\n * Check if there is any action scheduled for this \"content review\".\n */\n if (!scheduledActionId) {\n throw new Error({\n message: `There is no action scheduled for content review.`,\n code: \"NO_ACTION_SCHEDULED\",\n data: {\n id\n }\n });\n }\n /**\n * Delete scheduled action.\n */\n await scheduler.delete(scheduledActionId);\n\n /**\n * Reset scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...contentReview.content,\n ...INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n }\n });\n\n return true;\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_pubsub","require","_error","_interopRequireDefault","_types","_utils","_errors","_types2","_utils2","_contentApwSettingsPlugin","createContentReviewMethods","params","getIdentity","storageOperations","getReviewer","getContentGetter","getContentPublisher","getContentUnPublisher","scheduler","handlerClient","getTenant","getLocale","plugins","onContentReviewBeforeCreate","createTopic","onContentReviewAfterCreate","onContentReviewBeforeUpdate","onContentReviewAfterUpdate","onContentReviewBeforeDelete","onContentReviewAfterDelete","onContentReviewBeforeList","get","id","getContentReview","list","where","publish","reviewStatus","filterContentReviewsByRequiresMyAttention","listParams","listContentReviews","create","data","input","ApwContentReviewStatus","UNDER_REVIEW","contentReview","createContentReview","update","original","updateContentReview","delete","deleteContentReview","provideSignOff","stepId","entry","steps","stepIndex","findIndex","step","currentStep","previousStep","identity","hasPermission","hasReviewer","NotAuthorizedError","status","ApwContentReviewStepStatus","DONE","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","StepMissingError","pendingChangeRequests","PendingChangeRequestsError","ACTIVE","StepInActiveError","previousStepStatus","updatedSteps","map","index","signOffProvidedOn","Date","toISOString","signOffProvidedBy","getNextStepStatus","newStatus","pendingRequiredSteps","getPendingRequiredSteps","length","READY_TO_BE_PUBLISHED","retractSignOff","content","NoSignOffProvidedError","scheduledActionId","scheduledOn","scheduledBy","isReviewRequired","contentGetter","settings","contentReviewId","contentApwSettingsPlugin","getContentApwSettingsPlugin","getContentReviewId","workflowId","getWorkflowId","publishContent","datetime","Error","message","code","checkValidDateTime","contentPublisher","action","ApwScheduleActionTypes","PUBLISH","entryId","modelId","scheduleAction","unpublishContent","PUBLISHED","contentUnPublisher","UNPUBLISH","scheduledAction","process","env","NODE_ENV","invoke","name","String","APW_SCHEDULER_SCHEDULE_ACTION_HANDLER","payload","tenant","locale","await","description","deleteScheduledAction","INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META"],"sources":["createContentReviewMethods.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport Error from \"@webiny/error\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentReview,\n ApwContentReviewCrud,\n ApwContentReviewStatus,\n ApwContentReviewStepStatus,\n ApwReviewerCrud,\n ApwScheduleActionData,\n ApwWorkflowStepTypes,\n CreateApwContentReviewParams,\n CreateApwParams,\n OnContentReviewAfterCreateTopicParams,\n OnContentReviewAfterDeleteTopicParams,\n OnContentReviewAfterUpdateTopicParams,\n OnContentReviewBeforeCreateTopicParams,\n OnContentReviewBeforeDeleteTopicParams,\n OnContentReviewBeforeListTopicParams,\n OnContentReviewBeforeUpdateTopicParams,\n UpdateApwContentReviewParams\n} from \"~/types\";\nimport { getNextStepStatus, hasReviewer } from \"~/plugins/utils\";\nimport {\n NoSignOffProvidedError,\n NotAuthorizedError,\n PendingChangeRequestsError,\n StepInActiveError,\n StepMissingError\n} from \"~/utils/errors\";\nimport { ApwScheduleActionTypes } from \"~/scheduler/types\";\nimport {\n checkValidDateTime,\n filterContentReviewsByRequiresMyAttention,\n getPendingRequiredSteps,\n INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n} from \"./utils\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport interface CreateContentReviewMethodsParams extends CreateApwParams {\n getReviewer: ApwReviewerCrud[\"get\"];\n getContentGetter: AdvancedPublishingWorkflow[\"getContentGetter\"];\n getContentPublisher: AdvancedPublishingWorkflow[\"getContentPublisher\"];\n getContentUnPublisher: AdvancedPublishingWorkflow[\"getContentUnPublisher\"];\n plugins: PluginsContainer;\n}\n\nexport function createContentReviewMethods(\n params: CreateContentReviewMethodsParams\n): ApwContentReviewCrud {\n const {\n getIdentity,\n storageOperations,\n getReviewer,\n getContentGetter,\n getContentPublisher,\n getContentUnPublisher,\n scheduler,\n handlerClient,\n getTenant,\n getLocale,\n plugins\n } = params;\n\n // create\n const onContentReviewBeforeCreate = createTopic<OnContentReviewBeforeCreateTopicParams>(\n \"apw.onContentReviewBeforeCreate\"\n );\n const onContentReviewAfterCreate = createTopic<OnContentReviewAfterCreateTopicParams>(\n \"apw.onContentReviewAfterCreate\"\n );\n // update\n const onContentReviewBeforeUpdate = createTopic<OnContentReviewBeforeUpdateTopicParams>(\n \"apw.onContentReviewBeforeUpdate\"\n );\n const onContentReviewAfterUpdate = createTopic<OnContentReviewAfterUpdateTopicParams>(\n \"apw.onContentReviewAfterUpdate\"\n );\n // delete\n const onContentReviewBeforeDelete = createTopic<OnContentReviewBeforeDeleteTopicParams>(\n \"apw.onContentReviewBeforeDelete\"\n );\n const onContentReviewAfterDelete = createTopic<OnContentReviewAfterDeleteTopicParams>(\n \"apw.onContentReviewAfterDelete\"\n );\n // list\n const onContentReviewBeforeList = createTopic<OnContentReviewBeforeListTopicParams>(\n \"apw.onContentReviewBeforeList\"\n );\n return {\n /**\n * Lifecycle events\n */\n onContentReviewBeforeCreate,\n onContentReviewAfterCreate,\n onContentReviewBeforeUpdate,\n onContentReviewAfterUpdate,\n onContentReviewBeforeDelete,\n onContentReviewAfterDelete,\n onContentReviewBeforeList,\n async get(id) {\n return storageOperations.getContentReview({ id });\n },\n async list(params) {\n const where = params.where || {};\n\n await onContentReviewBeforeList.publish({\n where\n });\n\n if (where.reviewStatus === \"requiresMyAttention\") {\n return filterContentReviewsByRequiresMyAttention({\n listParams: {\n ...params,\n where\n },\n listContentReviews: storageOperations.listContentReviews,\n getReviewer,\n getIdentity\n });\n }\n\n return storageOperations.listContentReviews({\n ...params,\n where\n });\n },\n async create(data: Omit<CreateApwContentReviewParams, \"reviewStatus\">) {\n const input: CreateApwContentReviewParams = {\n ...data,\n reviewStatus: ApwContentReviewStatus.UNDER_REVIEW\n };\n await onContentReviewBeforeCreate.publish({ input });\n\n const contentReview = await storageOperations.createContentReview({\n data: input\n });\n\n await onContentReviewAfterCreate.publish({ contentReview });\n\n return contentReview;\n },\n async update(id, data: UpdateApwContentReviewParams) {\n const original = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeUpdate.publish({ original, input: { id, data } });\n\n const contentReview = await storageOperations.updateContentReview({\n id,\n data\n });\n\n await onContentReviewAfterUpdate.publish({\n original,\n input: { id, data },\n contentReview\n });\n\n return contentReview;\n },\n async delete(id) {\n const contentReview = await storageOperations.getContentReview({ id });\n\n await onContentReviewBeforeDelete.publish({ contentReview });\n\n await storageOperations.deleteContentReview({ id });\n\n await onContentReviewAfterDelete.publish({ contentReview });\n\n return true;\n },\n async provideSignOff(this: ApwContentReviewCrud, id, stepId) {\n const entry: ApwContentReview = await this.get(id);\n const { steps, reviewStatus } = entry;\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n const previousStep = steps[stepIndex - 1];\n\n const identity = getIdentity();\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if previous step is of \"mandatory_blocking\" type and undone.\n */\n if (\n previousStep &&\n previousStep.status !== ApwContentReviewStepStatus.DONE &&\n previousStep.type === ApwWorkflowStepTypes.MANDATORY_BLOCKING\n ) {\n throw new StepMissingError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if there are pending change requests.\n */\n if (currentStep.pendingChangeRequests > 0) {\n throw new PendingChangeRequestsError({ entry, input: { id, step: stepId } });\n }\n /**\n * Don't allow sign off, if current step is not in \"active\" state.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.ACTIVE) {\n throw new StepInActiveError({ entry, input: { id, step: stepId } });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n /*\n * Provide sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.DONE;\n return {\n ...step,\n status: ApwContentReviewStepStatus.DONE,\n signOffProvidedOn: new Date().toISOString(),\n signOffProvidedBy: identity\n };\n }\n /**\n * Update next steps status based on type.\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => typeof step.signOffProvidedOn !== \"string\"\n );\n\n /**\n * If there are no required steps that are pending, set the status to \"READY_TO_BE_PUBLISHED\".\n */\n if (pendingRequiredSteps.length === 0) {\n newStatus = ApwContentReviewStatus.READY_TO_BE_PUBLISHED;\n }\n\n /**\n * Save updated steps.\n */\n await this.update(id, {\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async retractSignOff(this: ApwContentReviewCrud, id, stepId) {\n const contentReview = await this.get(id);\n const { steps, reviewStatus, content } = contentReview;\n\n const stepIndex = steps.findIndex(step => step.id === stepId);\n const currentStep = steps[stepIndex];\n\n const identity = getIdentity();\n\n const hasPermission = await hasReviewer({\n getReviewer,\n identity,\n step: currentStep\n });\n\n /**\n * Check whether the retract sign-off is requested by a reviewer.\n */\n if (!hasPermission) {\n throw new NotAuthorizedError({\n entry: contentReview,\n input: {\n id,\n step: stepId\n }\n });\n }\n /**\n * Don't allow, if step in not \"done\" i.e. no sign-off was provided for it.\n */\n if (currentStep.status !== ApwContentReviewStepStatus.DONE) {\n throw new NoSignOffProvidedError({\n entry: contentReview,\n input: {\n id,\n step: stepId\n }\n });\n }\n let previousStepStatus: ApwContentReviewStepStatus;\n\n /*\n * Retract sign-off for give step.\n */\n const updatedSteps = steps.map((step, index) => {\n if (index === stepIndex) {\n previousStepStatus = ApwContentReviewStepStatus.ACTIVE;\n return {\n ...step,\n status: previousStepStatus,\n signOffProvidedOn: null,\n signOffProvidedBy: null\n };\n }\n /**\n * Set next step status as \"inactive\".\n */\n if (index > stepIndex) {\n const previousStep = steps[index - 1];\n\n previousStepStatus = getNextStepStatus(previousStep.type, previousStepStatus);\n\n return {\n ...step,\n status: previousStepStatus\n };\n }\n\n return step;\n });\n\n /**\n * Check for pending steps\n */\n let newStatus = reviewStatus;\n const pendingRequiredSteps = getPendingRequiredSteps(\n updatedSteps,\n step => step.signOffProvidedOn === null\n );\n /**\n * If there are required steps that are pending, set the status to \"UNDER_REVIEW\".\n */\n if (pendingRequiredSteps.length !== 0) {\n newStatus = ApwContentReviewStatus.UNDER_REVIEW;\n }\n\n /**\n * We need to delete the scheduled action if one was created.\n */\n const scheduledActionId = contentReview.content?.scheduledActionId;\n if (!!scheduledActionId) {\n await scheduler.delete(scheduledActionId);\n }\n\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: null,\n scheduledBy: null,\n scheduledActionId: null\n },\n steps: updatedSteps,\n reviewStatus: newStatus\n });\n return true;\n },\n async isReviewRequired(data) {\n const contentGetter = getContentGetter(data.type);\n const content = await contentGetter(data.id, data.settings);\n\n let isReviewRequired = false;\n let contentReviewId: string | null = null;\n\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type: data.type\n });\n\n if (contentApwSettingsPlugin) {\n contentReviewId = contentApwSettingsPlugin.getContentReviewId(content);\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n if (workflowId) {\n isReviewRequired = true;\n }\n }\n\n return {\n isReviewRequired,\n contentReviewId\n };\n },\n async publishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.READY_TO_BE_PUBLISHED) {\n throw new Error({\n message: `Cannot publish content because it is not yet ready to be published.`,\n code: \"NOT_READY_TO_BE_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * And if not, we are publishing immediately.\n */\n if (!datetime) {\n const contentPublisher = getContentPublisher(content.type);\n\n await contentPublisher(content.id, content.settings);\n\n return true;\n }\n\n const data: ApwScheduleActionData = {\n action: ApwScheduleActionTypes.PUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n };\n const scheduledActionId = await this.scheduleAction(data);\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async unpublishContent(this: ApwContentReviewCrud, id: string, datetime) {\n const { content, reviewStatus } = await this.get(id);\n const identity = getIdentity();\n\n if (reviewStatus !== ApwContentReviewStatus.PUBLISHED) {\n throw new Error({\n message: `Cannot unpublish content because it is not yet published.`,\n code: \"NOT_YET_PUBLISHED\",\n data: {\n id,\n status: reviewStatus,\n content\n }\n });\n }\n checkValidDateTime(datetime);\n\n /**\n * If datetime is present it means we're scheduling this action.\n * If not, we are unpublishing immediately.\n */\n if (!datetime) {\n const contentUnPublisher = getContentUnPublisher(content.type);\n\n await contentUnPublisher(content.id, content.settings);\n\n return true;\n }\n\n const scheduledActionId = await this.scheduleAction({\n action: ApwScheduleActionTypes.UNPUBLISH,\n type: content.type,\n entryId: content.id,\n modelId: content.settings?.modelId,\n datetime\n });\n /**\n * Update scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...content,\n scheduledOn: datetime,\n scheduledBy: identity.id,\n scheduledActionId\n }\n });\n\n return true;\n },\n async scheduleAction(data) {\n // Save input in DB\n const scheduledAction = await scheduler.create(data);\n /**\n * This function contains logic of lambda invocation.\n * Current we're not mocking it, therefore, we're just returning true.\n */\n if (process.env.NODE_ENV === \"test\") {\n return scheduledAction.id;\n }\n // Invoke handler\n await handlerClient.invoke({\n name: String(process.env.APW_SCHEDULER_SCHEDULE_ACTION_HANDLER),\n payload: {\n tenant: getTenant().id,\n locale: getLocale().code\n },\n await: false,\n description: \"APW scheduler handler\"\n });\n return scheduledAction.id;\n },\n async deleteScheduledAction(id) {\n const contentReview = await this.get(id);\n const scheduledActionId = contentReview.content?.scheduledActionId;\n\n /**\n * Check if there is any action scheduled for this \"content review\".\n */\n if (!scheduledActionId) {\n throw new Error({\n message: `There is no action scheduled for content review.`,\n code: \"NO_ACTION_SCHEDULED\",\n data: {\n id\n }\n });\n }\n /**\n * Delete scheduled action.\n */\n await scheduler.delete(scheduledActionId);\n\n /**\n * Reset scheduled related meta data.\n */\n await this.update(id, {\n content: {\n ...contentReview.content,\n ...INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META\n }\n });\n\n return true;\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/crud/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_createWorkflowMethods","require","_createReviewerMethods","_createCommentMethods","_createChangeRequestMethods","_createContentReviewMethods","createApw","params","contentGetters","Map","contentPublisher","contentUnPublisher","workflowMethods","createWorkflowMethods","reviewerMethods","createReviewerMethods","changeRequestMethods","createChangeRequestMethods","getContentGetter","type","getter","get","Error","getContentUnPublisher","getContentPublisher","addContentPublisher","func","set","addContentGetter","addContentUnPublisher","workflow","reviewer","changeRequest","comment","createCommentMethods","contentReview","createContentReviewMethods","getReviewer","bind","scheduleAction","scheduler","exports"],"sources":["index.ts"],"sourcesContent":["import { createWorkflowMethods } from \"./createWorkflowMethods\";\nimport { createReviewerMethods } from \"./createReviewerMethods\";\nimport { createCommentMethods } from \"./createCommentMethods\";\nimport { createChangeRequestMethods } from \"./createChangeRequestMethods\";\nimport { createContentReviewMethods } from \"./createContentReviewMethods\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentTypes,\n ContentGetter,\n ContentPublisher,\n ContentUnPublisher,\n CreateApwParams\n} from \"~/types\";\n\nexport const createApw = (params: CreateApwParams): AdvancedPublishingWorkflow => {\n const contentGetters = new Map<ApwContentTypes, ContentGetter>();\n const contentPublisher = new Map<ApwContentTypes, ContentPublisher>();\n const contentUnPublisher = new Map<ApwContentTypes, ContentUnPublisher>();\n\n const workflowMethods = createWorkflowMethods(params);\n const reviewerMethods = createReviewerMethods(params);\n const changeRequestMethods = createChangeRequestMethods(params);\n\n function getContentGetter(type: ApwContentTypes) {\n const getter = contentGetters.get(type);\n if (!getter) {\n throw new Error(\n `No \"ContentGetter\" loader found for type: \"${type}\". You must define a loader.`\n );\n }\n return getter;\n }\n\n function getContentUnPublisher(type: ApwContentTypes) {\n const getter = contentUnPublisher.get(type);\n if (!getter) {\n throw new Error(\n `No \"Content UnPublisher\" loader found for type: \"${type}\". You must define a loader.`\n );\n }\n return getter;\n }\n\n function getContentPublisher(type: ApwContentTypes) {\n const getter = contentPublisher.get(type);\n if (!getter) {\n throw new Error(\n `No \"ContentPublisher\" loader found for type: \"${type}\". You must define a loader.`\n );\n }\n return getter;\n }\n\n return {\n addContentPublisher(type, func) {\n contentPublisher.set(type, func);\n },\n getContentPublisher,\n addContentGetter(type, func) {\n contentGetters.set(type, func);\n },\n getContentGetter,\n addContentUnPublisher(type, func) {\n contentUnPublisher.set(type, func);\n },\n getContentUnPublisher,\n workflow: workflowMethods,\n reviewer: reviewerMethods,\n changeRequest: changeRequestMethods,\n comment: createCommentMethods(params),\n contentReview: createContentReviewMethods({\n ...params,\n getReviewer: reviewerMethods.get.bind(reviewerMethods),\n getContentGetter,\n getContentPublisher,\n getContentUnPublisher\n }),\n /**\n * Add scheduler to context so that we can access it later. For example, during testing.\n */\n scheduleAction: params.scheduler\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,2BAAA,GAAAH,OAAA;AACA,IAAAI,2BAAA,GAAAJ,OAAA;AAUO,MAAMK,SAAS,GAAIC,MAAuB,IAAiC;EAC9E,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAiC,CAAC;EAChE,MAAMC,gBAAgB,GAAG,IAAID,GAAG,CAAoC,CAAC;EACrE,MAAME,kBAAkB,GAAG,IAAIF,GAAG,CAAsC,CAAC;EAEzE,MAAMG,eAAe,GAAG,IAAAC,4CAAqB,EAACN,MAAM,CAAC;EACrD,MAAMO,eAAe,GAAG,IAAAC,4CAAqB,EAACR,MAAM,CAAC;EACrD,MAAMS,oBAAoB,GAAG,IAAAC,sDAA0B,EAACV,MAAM,CAAC;EAE/D,SAASW,gBAAgBA,CAACC,IAAqB,EAAE;IAC7C,MAAMC,MAAM,GAAGZ,cAAc,CAACa,GAAG,CAACF,IAAI,CAAC;IACvC,IAAI,CAACC,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CACV,8CAA6CH,IAAK,8BACvD,CAAC;IACL;IACA,OAAOC,MAAM;EACjB;EAEA,SAASG,qBAAqBA,CAACJ,IAAqB,EAAE;IAClD,MAAMC,MAAM,GAAGT,kBAAkB,CAACU,GAAG,CAACF,IAAI,CAAC;IAC3C,IAAI,CAACC,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CACV,oDAAmDH,IAAK,8BAC7D,CAAC;IACL;IACA,OAAOC,MAAM;EACjB;EAEA,SAASI,mBAAmBA,CAACL,IAAqB,EAAE;IAChD,MAAMC,MAAM,GAAGV,gBAAgB,CAACW,GAAG,CAACF,IAAI,CAAC;IACzC,IAAI,CAACC,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CACV,iDAAgDH,IAAK,8BAC1D,CAAC;IACL;IACA,OAAOC,MAAM;EACjB;EAEA,OAAO;IACHK,mBAAmBA,CAACN,IAAI,EAAEO,IAAI,EAAE;MAC5BhB,gBAAgB,CAACiB,GAAG,CAACR,IAAI,EAAEO,IAAI,CAAC;IACpC,CAAC;IACDF,mBAAmB;IACnBI,gBAAgBA,CAACT,IAAI,EAAEO,IAAI,EAAE;MACzBlB,cAAc,CAACmB,GAAG,CAACR,IAAI,EAAEO,IAAI,CAAC;IAClC,CAAC;IACDR,gBAAgB;IAChBW,qBAAqBA,CAACV,IAAI,EAAEO,IAAI,EAAE;MAC9Bf,kBAAkB,CAACgB,GAAG,CAACR,IAAI,EAAEO,IAAI,CAAC;IACtC,CAAC;IACDH,qBAAqB;IACrBO,QAAQ,EAAElB,eAAe;IACzBmB,QAAQ,EAAEjB,eAAe;IACzBkB,aAAa,EAAEhB,oBAAoB;IACnCiB,OAAO,EAAE,IAAAC,0CAAoB,EAAC3B,MAAM,CAAC;IACrC4B,aAAa,EAAE,IAAAC,sDAA0B,EAAC;MACtC,GAAG7B,MAAM;MACT8B,WAAW,EAAEvB,eAAe,CAACO,GAAG,CAACiB,IAAI,CAACxB,eAAe,CAAC;MACtDI,gBAAgB;MAChBM,mBAAmB;MACnBD;IACJ,CAAC,CAAC;IACF;AACR;AACA;IACQgB,cAAc,EAAEhC,MAAM,CAACiC;EAC3B,CAAC;AACL,CAAC;AAACC,OAAA,CAAAnC,SAAA,GAAAA,SAAA","ignoreList":[]}
1
+ {"version":3,"names":["_createWorkflowMethods","require","_createReviewerMethods","_createCommentMethods","_createChangeRequestMethods","_createContentReviewMethods","createApw","params","contentGetters","Map","contentPublisher","contentUnPublisher","workflowMethods","createWorkflowMethods","reviewerMethods","createReviewerMethods","changeRequestMethods","createChangeRequestMethods","getContentGetter","type","getter","get","Error","getContentUnPublisher","getContentPublisher","addContentPublisher","func","set","addContentGetter","addContentUnPublisher","workflow","reviewer","changeRequest","comment","createCommentMethods","contentReview","createContentReviewMethods","getReviewer","bind","scheduleAction","scheduler","exports"],"sources":["index.ts"],"sourcesContent":["import { createWorkflowMethods } from \"./createWorkflowMethods\";\nimport { createReviewerMethods } from \"./createReviewerMethods\";\nimport { createCommentMethods } from \"./createCommentMethods\";\nimport { createChangeRequestMethods } from \"./createChangeRequestMethods\";\nimport { createContentReviewMethods } from \"./createContentReviewMethods\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentTypes,\n ContentGetter,\n ContentPublisher,\n ContentUnPublisher,\n CreateApwParams\n} from \"~/types\";\n\nexport const createApw = (params: CreateApwParams): AdvancedPublishingWorkflow => {\n const contentGetters = new Map<ApwContentTypes, ContentGetter>();\n const contentPublisher = new Map<ApwContentTypes, ContentPublisher>();\n const contentUnPublisher = new Map<ApwContentTypes, ContentUnPublisher>();\n\n const workflowMethods = createWorkflowMethods(params);\n const reviewerMethods = createReviewerMethods(params);\n const changeRequestMethods = createChangeRequestMethods(params);\n\n function getContentGetter(type: ApwContentTypes) {\n const getter = contentGetters.get(type);\n if (!getter) {\n throw new Error(\n `No \"ContentGetter\" loader found for type: \"${type}\". You must define a loader.`\n );\n }\n return getter;\n }\n\n function getContentUnPublisher(type: ApwContentTypes) {\n const getter = contentUnPublisher.get(type);\n if (!getter) {\n throw new Error(\n `No \"Content UnPublisher\" loader found for type: \"${type}\". You must define a loader.`\n );\n }\n return getter;\n }\n\n function getContentPublisher(type: ApwContentTypes) {\n const getter = contentPublisher.get(type);\n if (!getter) {\n throw new Error(\n `No \"ContentPublisher\" loader found for type: \"${type}\". You must define a loader.`\n );\n }\n return getter;\n }\n\n return {\n addContentPublisher(type, func) {\n contentPublisher.set(type, func);\n },\n getContentPublisher,\n addContentGetter(type, func) {\n contentGetters.set(type, func);\n },\n getContentGetter,\n addContentUnPublisher(type, func) {\n contentUnPublisher.set(type, func);\n },\n getContentUnPublisher,\n workflow: workflowMethods,\n reviewer: reviewerMethods,\n changeRequest: changeRequestMethods,\n comment: createCommentMethods(params),\n contentReview: createContentReviewMethods({\n ...params,\n getReviewer: reviewerMethods.get.bind(reviewerMethods),\n getContentGetter,\n getContentPublisher,\n getContentUnPublisher\n }),\n /**\n * Add scheduler to context so that we can access it later. For example, during testing.\n */\n scheduleAction: params.scheduler\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,2BAAA,GAAAH,OAAA;AACA,IAAAI,2BAAA,GAAAJ,OAAA;AAUO,MAAMK,SAAS,GAAIC,MAAuB,IAAiC;EAC9E,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAiC,CAAC;EAChE,MAAMC,gBAAgB,GAAG,IAAID,GAAG,CAAoC,CAAC;EACrE,MAAME,kBAAkB,GAAG,IAAIF,GAAG,CAAsC,CAAC;EAEzE,MAAMG,eAAe,GAAG,IAAAC,4CAAqB,EAACN,MAAM,CAAC;EACrD,MAAMO,eAAe,GAAG,IAAAC,4CAAqB,EAACR,MAAM,CAAC;EACrD,MAAMS,oBAAoB,GAAG,IAAAC,sDAA0B,EAACV,MAAM,CAAC;EAE/D,SAASW,gBAAgBA,CAACC,IAAqB,EAAE;IAC7C,MAAMC,MAAM,GAAGZ,cAAc,CAACa,GAAG,CAACF,IAAI,CAAC;IACvC,IAAI,CAACC,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CACX,8CAA8CH,IAAI,8BACtD,CAAC;IACL;IACA,OAAOC,MAAM;EACjB;EAEA,SAASG,qBAAqBA,CAACJ,IAAqB,EAAE;IAClD,MAAMC,MAAM,GAAGT,kBAAkB,CAACU,GAAG,CAACF,IAAI,CAAC;IAC3C,IAAI,CAACC,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CACX,oDAAoDH,IAAI,8BAC5D,CAAC;IACL;IACA,OAAOC,MAAM;EACjB;EAEA,SAASI,mBAAmBA,CAACL,IAAqB,EAAE;IAChD,MAAMC,MAAM,GAAGV,gBAAgB,CAACW,GAAG,CAACF,IAAI,CAAC;IACzC,IAAI,CAACC,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CACX,iDAAiDH,IAAI,8BACzD,CAAC;IACL;IACA,OAAOC,MAAM;EACjB;EAEA,OAAO;IACHK,mBAAmBA,CAACN,IAAI,EAAEO,IAAI,EAAE;MAC5BhB,gBAAgB,CAACiB,GAAG,CAACR,IAAI,EAAEO,IAAI,CAAC;IACpC,CAAC;IACDF,mBAAmB;IACnBI,gBAAgBA,CAACT,IAAI,EAAEO,IAAI,EAAE;MACzBlB,cAAc,CAACmB,GAAG,CAACR,IAAI,EAAEO,IAAI,CAAC;IAClC,CAAC;IACDR,gBAAgB;IAChBW,qBAAqBA,CAACV,IAAI,EAAEO,IAAI,EAAE;MAC9Bf,kBAAkB,CAACgB,GAAG,CAACR,IAAI,EAAEO,IAAI,CAAC;IACtC,CAAC;IACDH,qBAAqB;IACrBO,QAAQ,EAAElB,eAAe;IACzBmB,QAAQ,EAAEjB,eAAe;IACzBkB,aAAa,EAAEhB,oBAAoB;IACnCiB,OAAO,EAAE,IAAAC,0CAAoB,EAAC3B,MAAM,CAAC;IACrC4B,aAAa,EAAE,IAAAC,sDAA0B,EAAC;MACtC,GAAG7B,MAAM;MACT8B,WAAW,EAAEvB,eAAe,CAACO,GAAG,CAACiB,IAAI,CAACxB,eAAe,CAAC;MACtDI,gBAAgB;MAChBM,mBAAmB;MACnBD;IACJ,CAAC,CAAC;IACF;AACR;AACA;IACQgB,cAAc,EAAEhC,MAAM,CAACiC;EAC3B,CAAC;AACL,CAAC;AAACC,OAAA,CAAAnC,SAAA,GAAAA,SAAA","ignoreList":[]}
package/crud/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_dayjs","_utc","_set","_types","dayjs","extend","utc","checkValidDateTime","datetime","isValid","Error","message","code","data","today","isBefore","getPendingRequiredSteps","steps","predicate","filter","step","isRequiredStep","ApwWorkflowStepTypes","MANDATORY_BLOCKING","MANDATORY_NON_BLOCKING","includes","type","exports","INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META","scheduledOn","scheduledBy","scheduledActionId","filterContentReviewsByRequiresMyAttention","params","listContentReviews","listParams","getIdentity","getReviewer","newListParams","set","structuredClone","ApwContentReviewStatus","UNDER_REVIEW","contentReviews","meta","identity","filteredItems","i","length","contentReview","activeStep","find","status","ApwContentReviewStepStatus","ACTIVE","requiresMyAttention","j","reviewers","id","reviewer","identityId","push","totalCount"],"sources":["utils.ts"],"sourcesContent":["import Error from \"@webiny/error\";\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport set from \"lodash/set\";\nimport {\n ApwContentReview,\n ApwContentReviewListParams,\n ApwContentReviewStatus,\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwWorkflowStepTypes,\n ListMeta\n} from \"~/types\";\nimport { CreateContentReviewMethodsParams } from \"./createContentReviewMethods\";\n\ndayjs.extend(utc);\n\nexport function checkValidDateTime(datetime: string | undefined): void {\n if (typeof datetime !== \"string\") {\n return;\n }\n\n if (!dayjs(datetime).isValid()) {\n throw new Error({\n message: `Invalid input \"datetime\" should be an ISO string.`,\n code: \"INVALID_DATETIME_FORMAT\",\n data: {\n datetime\n }\n });\n }\n const today = dayjs.utc();\n\n if (dayjs(datetime).isBefore(today)) {\n throw new Error({\n message: `Cannot schedule for a past \"datetime\".`,\n code: \"PAST_DATETIME\",\n data: {\n datetime\n }\n });\n }\n}\n\nexport interface GetPendingRequiredSteps {\n (\n steps: ApwContentReviewStep[],\n predicate: (step: ApwContentReviewStep) => boolean\n ): ApwContentReviewStep[];\n}\n\nexport const getPendingRequiredSteps: GetPendingRequiredSteps = (steps, predicate) => {\n return steps.filter(step => {\n const isRequiredStep = [\n ApwWorkflowStepTypes.MANDATORY_BLOCKING,\n ApwWorkflowStepTypes.MANDATORY_NON_BLOCKING\n ].includes(step.type);\n\n if (!isRequiredStep) {\n return false;\n }\n\n return predicate(step);\n });\n};\n\nexport const INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META = {\n scheduledOn: null,\n scheduledBy: null,\n scheduledActionId: null\n};\n\nexport interface FilterContentReviewsParams\n extends Pick<CreateContentReviewMethodsParams, \"getReviewer\" | \"getIdentity\"> {\n listParams: ApwContentReviewListParams;\n listContentReviews: CreateContentReviewMethodsParams[\"storageOperations\"][\"listContentReviews\"];\n}\n\n/**\n * Filter \"content reviews\" that are \"underReview\" and current user is a reviewer for the active step.\n * That is the user is able to provide sign-off or comment.\n */\nexport const filterContentReviewsByRequiresMyAttention = async (\n params: FilterContentReviewsParams\n): Promise<[ApwContentReview[], ListMeta]> => {\n const { listContentReviews, listParams, getIdentity, getReviewer } = params;\n /**\n * Get all \"content reviews\" with status \"underReview\"\n */\n const newListParams = set(\n structuredClone(listParams),\n \"where.reviewStatus\",\n ApwContentReviewStatus.UNDER_REVIEW\n );\n const [contentReviews, meta] = await listContentReviews(newListParams);\n\n const identity = getIdentity();\n const filteredItems = [];\n /**\n * Filter items where current user is a reviewer for the active step.\n */\n for (let i = 0; i < contentReviews.length; i++) {\n const contentReview = contentReviews[i];\n\n const activeStep = contentReview.steps.find(\n step => step.status === ApwContentReviewStepStatus.ACTIVE\n );\n\n if (!activeStep) {\n continue;\n }\n\n let requiresMyAttention = false;\n\n for (let j = 0; j < activeStep.reviewers.length; j++) {\n const { id } = activeStep.reviewers[j];\n /**\n * Load reviewer\n */\n const reviewer = await getReviewer(id);\n /**\n * Check if the current logged in user is the reviewer.\n */\n if (reviewer.identityId === identity.id) {\n requiresMyAttention = true;\n break;\n }\n }\n\n if (requiresMyAttention) {\n filteredItems.push(contentReview);\n }\n }\n\n return [\n filteredItems,\n {\n ...meta,\n totalCount: filteredItems.length\n }\n ];\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_dayjs","_utc","_set","_types","dayjs","extend","utc","checkValidDateTime","datetime","isValid","Error","message","code","data","today","isBefore","getPendingRequiredSteps","steps","predicate","filter","step","isRequiredStep","ApwWorkflowStepTypes","MANDATORY_BLOCKING","MANDATORY_NON_BLOCKING","includes","type","exports","INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META","scheduledOn","scheduledBy","scheduledActionId","filterContentReviewsByRequiresMyAttention","params","listContentReviews","listParams","getIdentity","getReviewer","newListParams","set","structuredClone","ApwContentReviewStatus","UNDER_REVIEW","contentReviews","meta","identity","filteredItems","i","length","contentReview","activeStep","find","status","ApwContentReviewStepStatus","ACTIVE","requiresMyAttention","j","reviewers","id","reviewer","identityId","push","totalCount"],"sources":["utils.ts"],"sourcesContent":["import Error from \"@webiny/error\";\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport set from \"lodash/set\";\nimport {\n ApwContentReview,\n ApwContentReviewListParams,\n ApwContentReviewStatus,\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwWorkflowStepTypes,\n ListMeta\n} from \"~/types\";\nimport { CreateContentReviewMethodsParams } from \"./createContentReviewMethods\";\n\ndayjs.extend(utc);\n\nexport function checkValidDateTime(datetime: string | undefined): void {\n if (typeof datetime !== \"string\") {\n return;\n }\n\n if (!dayjs(datetime).isValid()) {\n throw new Error({\n message: `Invalid input \"datetime\" should be an ISO string.`,\n code: \"INVALID_DATETIME_FORMAT\",\n data: {\n datetime\n }\n });\n }\n const today = dayjs.utc();\n\n if (dayjs(datetime).isBefore(today)) {\n throw new Error({\n message: `Cannot schedule for a past \"datetime\".`,\n code: \"PAST_DATETIME\",\n data: {\n datetime\n }\n });\n }\n}\n\nexport interface GetPendingRequiredSteps {\n (\n steps: ApwContentReviewStep[],\n predicate: (step: ApwContentReviewStep) => boolean\n ): ApwContentReviewStep[];\n}\n\nexport const getPendingRequiredSteps: GetPendingRequiredSteps = (steps, predicate) => {\n return steps.filter(step => {\n const isRequiredStep = [\n ApwWorkflowStepTypes.MANDATORY_BLOCKING,\n ApwWorkflowStepTypes.MANDATORY_NON_BLOCKING\n ].includes(step.type);\n\n if (!isRequiredStep) {\n return false;\n }\n\n return predicate(step);\n });\n};\n\nexport const INITIAL_CONTENT_REVIEW_CONTENT_SCHEDULE_META = {\n scheduledOn: null,\n scheduledBy: null,\n scheduledActionId: null\n};\n\nexport interface FilterContentReviewsParams\n extends Pick<CreateContentReviewMethodsParams, \"getReviewer\" | \"getIdentity\"> {\n listParams: ApwContentReviewListParams;\n listContentReviews: CreateContentReviewMethodsParams[\"storageOperations\"][\"listContentReviews\"];\n}\n\n/**\n * Filter \"content reviews\" that are \"underReview\" and current user is a reviewer for the active step.\n * That is the user is able to provide sign-off or comment.\n */\nexport const filterContentReviewsByRequiresMyAttention = async (\n params: FilterContentReviewsParams\n): Promise<[ApwContentReview[], ListMeta]> => {\n const { listContentReviews, listParams, getIdentity, getReviewer } = params;\n /**\n * Get all \"content reviews\" with status \"underReview\"\n */\n const newListParams = set(\n structuredClone(listParams),\n \"where.reviewStatus\",\n ApwContentReviewStatus.UNDER_REVIEW\n );\n const [contentReviews, meta] = await listContentReviews(newListParams);\n\n const identity = getIdentity();\n const filteredItems = [];\n /**\n * Filter items where current user is a reviewer for the active step.\n */\n for (let i = 0; i < contentReviews.length; i++) {\n const contentReview = contentReviews[i];\n\n const activeStep = contentReview.steps.find(\n step => step.status === ApwContentReviewStepStatus.ACTIVE\n );\n\n if (!activeStep) {\n continue;\n }\n\n let requiresMyAttention = false;\n\n for (let j = 0; j < activeStep.reviewers.length; j++) {\n const { id } = activeStep.reviewers[j];\n /**\n * Load reviewer\n */\n const reviewer = await getReviewer(id);\n /**\n * Check if the current logged in user is the reviewer.\n */\n if (reviewer.identityId === identity.id) {\n requiresMyAttention = true;\n break;\n }\n }\n\n if (requiresMyAttention) {\n filteredItems.push(contentReview);\n }\n }\n\n return [\n filteredItems,\n {\n ...meta,\n totalCount: filteredItems.length\n }\n ];\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-apw",
3
- "version": "5.41.4-beta.6",
3
+ "version": "5.42.0-beta.0",
4
4
  "keywords": [
5
5
  "apw:base"
6
6
  ],
@@ -14,46 +14,39 @@
14
14
  "author": "Webiny Ltd",
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "@babel/runtime": "7.24.1",
18
- "@commodo/fields": "1.1.2-beta.20",
19
- "@webiny/api": "5.41.4-beta.6",
20
- "@webiny/api-admin-settings": "5.41.4-beta.6",
21
- "@webiny/api-headless-cms": "5.41.4-beta.6",
22
- "@webiny/api-i18n": "5.41.4-beta.6",
23
- "@webiny/api-mailer": "5.41.4-beta.6",
24
- "@webiny/api-page-builder": "5.41.4-beta.6",
25
- "@webiny/api-security": "5.41.4-beta.6",
26
- "@webiny/api-tenancy": "5.41.4-beta.6",
27
- "@webiny/api-wcp": "5.41.4-beta.6",
28
- "@webiny/aws-sdk": "5.41.4-beta.6",
29
- "@webiny/db-dynamodb": "5.41.4-beta.6",
30
- "@webiny/error": "5.41.4-beta.6",
31
- "@webiny/handler": "5.41.4-beta.6",
32
- "@webiny/handler-client": "5.41.4-beta.6",
33
- "@webiny/handler-db": "5.41.4-beta.6",
34
- "@webiny/handler-graphql": "5.41.4-beta.6",
35
- "@webiny/handler-logs": "5.41.4-beta.6",
36
- "@webiny/plugins": "5.41.4-beta.6",
37
- "@webiny/pubsub": "5.41.4-beta.6",
38
- "@webiny/utils": "5.41.4-beta.6",
39
- "@webiny/validation": "5.41.4-beta.6",
40
- "dayjs": "1.11.7",
41
- "lodash": "4.17.21"
17
+ "@webiny/api": "5.42.0-beta.0",
18
+ "@webiny/api-admin-settings": "5.42.0-beta.0",
19
+ "@webiny/api-headless-cms": "5.42.0-beta.0",
20
+ "@webiny/api-i18n": "5.42.0-beta.0",
21
+ "@webiny/api-mailer": "5.42.0-beta.0",
22
+ "@webiny/api-page-builder": "5.42.0-beta.0",
23
+ "@webiny/api-security": "5.42.0-beta.0",
24
+ "@webiny/api-tenancy": "5.42.0-beta.0",
25
+ "@webiny/api-wcp": "5.42.0-beta.0",
26
+ "@webiny/aws-sdk": "5.42.0-beta.0",
27
+ "@webiny/db-dynamodb": "5.42.0-beta.0",
28
+ "@webiny/error": "5.42.0-beta.0",
29
+ "@webiny/handler": "5.42.0-beta.0",
30
+ "@webiny/handler-client": "5.42.0-beta.0",
31
+ "@webiny/handler-db": "5.42.0-beta.0",
32
+ "@webiny/handler-graphql": "5.42.0-beta.0",
33
+ "@webiny/handler-logs": "5.42.0-beta.0",
34
+ "@webiny/plugins": "5.42.0-beta.0",
35
+ "@webiny/pubsub": "5.42.0-beta.0",
36
+ "@webiny/utils": "5.42.0-beta.0",
37
+ "dayjs": "1.11.13",
38
+ "lodash": "4.17.21",
39
+ "zod": "3.23.8"
42
40
  },
43
41
  "devDependencies": {
44
- "@babel/cli": "7.24.1",
45
- "@babel/core": "7.24.3",
46
- "@babel/preset-env": "7.24.3",
47
- "@webiny/cli": "5.41.4-beta.6",
48
- "@webiny/handler-aws": "5.41.4-beta.6",
49
- "@webiny/project-utils": "5.41.4-beta.6",
50
- "@webiny/wcp": "5.41.4-beta.6",
51
- "get-yarn-workspaces": "1.0.2",
52
- "graphql": "15.8.0",
42
+ "@webiny/cli": "5.42.0-beta.0",
43
+ "@webiny/handler-aws": "5.42.0-beta.0",
44
+ "@webiny/project-utils": "5.42.0-beta.0",
45
+ "@webiny/wcp": "5.42.0-beta.0",
46
+ "graphql": "15.9.0",
53
47
  "jest": "29.7.0",
54
48
  "prettier": "2.8.8",
55
- "rimraf": "5.0.5",
56
- "sinon": "9.2.4",
49
+ "rimraf": "6.0.1",
57
50
  "ttypescript": "1.5.15",
58
51
  "typescript": "4.9.5"
59
52
  },
@@ -65,5 +58,5 @@
65
58
  "build": "yarn webiny run build",
66
59
  "watch": "yarn webiny run watch"
67
60
  },
68
- "gitHead": "94922b33af59db5afe75127bb07443ce7f1448c4"
61
+ "gitHead": "ebf90f62ed3f28114ffdb012b7e5f80988af53d3"
69
62
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_utils","_error","_interopRequireDefault","linkContentReviewToEntry","params","apw","cms","contentReview","onContentReviewAfterCreate","subscribe","content","type","ApwContentTypes","CMS_ENTRY","model","fetchModel","id","settings","updateEntryMeta","meta","contentReviewId","entryId","onContentReviewAfterDelete","onEntryBeforeDelete","entry","isApwDisabledOnModel","get","ex","code","Error","exports"],"sources":["linkContentReviewToEntry.ts"],"sourcesContent":["import { AdvancedPublishingWorkflow, ApwContentTypes } from \"~/types\";\nimport { fetchModel, isApwDisabledOnModel, updateEntryMeta } from \"~/plugins/cms/utils\";\nimport Error from \"@webiny/error\";\nimport { HeadlessCms } from \"@webiny/api-headless-cms/types\";\n\ninterface LinkContentReviewToEntryParams {\n apw: AdvancedPublishingWorkflow;\n cms: HeadlessCms;\n}\nexport const linkContentReviewToEntry = (params: LinkContentReviewToEntryParams) => {\n const { apw, cms } = params;\n\n apw.contentReview.onContentReviewAfterCreate.subscribe(async ({ contentReview }) => {\n const { content } = contentReview;\n\n if (content.type !== ApwContentTypes.CMS_ENTRY) {\n return;\n }\n\n const model = await fetchModel(cms, content.id, content.settings);\n\n await updateEntryMeta({\n cms,\n model,\n meta: {\n apw: {\n contentReviewId: contentReview.id\n }\n },\n entryId: content.id\n });\n });\n\n apw.contentReview.onContentReviewAfterDelete.subscribe(async ({ contentReview }) => {\n const { content } = contentReview;\n if (content.type !== ApwContentTypes.CMS_ENTRY) {\n return;\n }\n\n const model = await fetchModel(cms, content.id, content.settings);\n\n await updateEntryMeta({\n cms,\n model,\n meta: {\n apw: {\n contentReviewId: null\n }\n },\n entryId: content.id\n });\n });\n\n cms.onEntryBeforeDelete.subscribe(async ({ entry, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n const contentReviewId = entry.meta?.apw?.contentReviewId;\n\n if (!contentReviewId) {\n return;\n }\n let contentReview;\n try {\n contentReview = await apw.contentReview.get(contentReviewId);\n } catch (ex) {\n /**\n * We're handling the case whereby \"contentReviewId\" is still linked to page;\n * even when the contentReview entry has been deleted. In that case, we'll allow page deletion.\n */\n if (ex.code !== \"NOT_FOUND\") {\n throw ex;\n }\n }\n\n if (!contentReview) {\n return;\n }\n throw new Error(\n `Cannot delete the entry because a peer review has been requested. Please delete the review first.`,\n \"CANNOT_DELETE_REVIEW_EXIST\",\n {\n contentReviewId,\n entry\n }\n );\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAOO,MAAMI,wBAAwB,GAAIC,MAAsC,IAAK;EAChF,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGF,MAAM;EAE3BC,GAAG,CAACE,aAAa,CAACC,0BAA0B,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IAChF,MAAM;MAAEG;IAAQ,CAAC,GAAGH,aAAa;IAEjC,IAAIG,OAAO,CAACC,IAAI,KAAKC,sBAAe,CAACC,SAAS,EAAE;MAC5C;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,iBAAU,EAACT,GAAG,EAAEI,OAAO,CAACM,EAAE,EAAEN,OAAO,CAACO,QAAQ,CAAC;IAEjE,MAAM,IAAAC,sBAAe,EAAC;MAClBZ,GAAG;MACHQ,KAAK;MACLK,IAAI,EAAE;QACFd,GAAG,EAAE;UACDe,eAAe,EAAEb,aAAa,CAACS;QACnC;MACJ,CAAC;MACDK,OAAO,EAAEX,OAAO,CAACM;IACrB,CAAC,CAAC;EACN,CAAC,CAAC;EAEFX,GAAG,CAACE,aAAa,CAACe,0BAA0B,CAACb,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IAChF,MAAM;MAAEG;IAAQ,CAAC,GAAGH,aAAa;IACjC,IAAIG,OAAO,CAACC,IAAI,KAAKC,sBAAe,CAACC,SAAS,EAAE;MAC5C;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,iBAAU,EAACT,GAAG,EAAEI,OAAO,CAACM,EAAE,EAAEN,OAAO,CAACO,QAAQ,CAAC;IAEjE,MAAM,IAAAC,sBAAe,EAAC;MAClBZ,GAAG;MACHQ,KAAK;MACLK,IAAI,EAAE;QACFd,GAAG,EAAE;UACDe,eAAe,EAAE;QACrB;MACJ,CAAC;MACDC,OAAO,EAAEX,OAAO,CAACM;IACrB,CAAC,CAAC;EACN,CAAC,CAAC;EAEFV,GAAG,CAACiB,mBAAmB,CAACd,SAAS,CAAC,OAAO;IAAEe,KAAK;IAAEV;EAAM,CAAC,KAAK;IAC1D,IAAI,IAAAW,2BAAoB,EAACX,KAAK,CAAC,EAAE;MAC7B;IACJ;IACA,MAAMM,eAAe,GAAGI,KAAK,CAACL,IAAI,EAAEd,GAAG,EAAEe,eAAe;IAExD,IAAI,CAACA,eAAe,EAAE;MAClB;IACJ;IACA,IAAIb,aAAa;IACjB,IAAI;MACAA,aAAa,GAAG,MAAMF,GAAG,CAACE,aAAa,CAACmB,GAAG,CAACN,eAAe,CAAC;IAChE,CAAC,CAAC,OAAOO,EAAE,EAAE;MACT;AACZ;AACA;AACA;MACY,IAAIA,EAAE,CAACC,IAAI,KAAK,WAAW,EAAE;QACzB,MAAMD,EAAE;MACZ;IACJ;IAEA,IAAI,CAACpB,aAAa,EAAE;MAChB;IACJ;IACA,MAAM,IAAIsB,cAAK,CACV,mGAAkG,EACnG,4BAA4B,EAC5B;MACIT,eAAe;MACfI;IACJ,CACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAACM,OAAA,CAAA3B,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_utils","_error","_interopRequireDefault","linkContentReviewToEntry","params","apw","cms","contentReview","onContentReviewAfterCreate","subscribe","content","type","ApwContentTypes","CMS_ENTRY","model","fetchModel","id","settings","updateEntryMeta","meta","contentReviewId","entryId","onContentReviewAfterDelete","onEntryBeforeDelete","entry","isApwDisabledOnModel","get","ex","code","Error","exports"],"sources":["linkContentReviewToEntry.ts"],"sourcesContent":["import { AdvancedPublishingWorkflow, ApwContentTypes } from \"~/types\";\nimport { fetchModel, isApwDisabledOnModel, updateEntryMeta } from \"~/plugins/cms/utils\";\nimport Error from \"@webiny/error\";\nimport { HeadlessCms } from \"@webiny/api-headless-cms/types\";\n\ninterface LinkContentReviewToEntryParams {\n apw: AdvancedPublishingWorkflow;\n cms: HeadlessCms;\n}\nexport const linkContentReviewToEntry = (params: LinkContentReviewToEntryParams) => {\n const { apw, cms } = params;\n\n apw.contentReview.onContentReviewAfterCreate.subscribe(async ({ contentReview }) => {\n const { content } = contentReview;\n\n if (content.type !== ApwContentTypes.CMS_ENTRY) {\n return;\n }\n\n const model = await fetchModel(cms, content.id, content.settings);\n\n await updateEntryMeta({\n cms,\n model,\n meta: {\n apw: {\n contentReviewId: contentReview.id\n }\n },\n entryId: content.id\n });\n });\n\n apw.contentReview.onContentReviewAfterDelete.subscribe(async ({ contentReview }) => {\n const { content } = contentReview;\n if (content.type !== ApwContentTypes.CMS_ENTRY) {\n return;\n }\n\n const model = await fetchModel(cms, content.id, content.settings);\n\n await updateEntryMeta({\n cms,\n model,\n meta: {\n apw: {\n contentReviewId: null\n }\n },\n entryId: content.id\n });\n });\n\n cms.onEntryBeforeDelete.subscribe(async ({ entry, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n const contentReviewId = entry.meta?.apw?.contentReviewId;\n\n if (!contentReviewId) {\n return;\n }\n let contentReview;\n try {\n contentReview = await apw.contentReview.get(contentReviewId);\n } catch (ex) {\n /**\n * We're handling the case whereby \"contentReviewId\" is still linked to page;\n * even when the contentReview entry has been deleted. In that case, we'll allow page deletion.\n */\n if (ex.code !== \"NOT_FOUND\") {\n throw ex;\n }\n }\n\n if (!contentReview) {\n return;\n }\n throw new Error(\n `Cannot delete the entry because a peer review has been requested. Please delete the review first.`,\n \"CANNOT_DELETE_REVIEW_EXIST\",\n {\n contentReviewId,\n entry\n }\n );\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAOO,MAAMI,wBAAwB,GAAIC,MAAsC,IAAK;EAChF,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGF,MAAM;EAE3BC,GAAG,CAACE,aAAa,CAACC,0BAA0B,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IAChF,MAAM;MAAEG;IAAQ,CAAC,GAAGH,aAAa;IAEjC,IAAIG,OAAO,CAACC,IAAI,KAAKC,sBAAe,CAACC,SAAS,EAAE;MAC5C;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,iBAAU,EAACT,GAAG,EAAEI,OAAO,CAACM,EAAE,EAAEN,OAAO,CAACO,QAAQ,CAAC;IAEjE,MAAM,IAAAC,sBAAe,EAAC;MAClBZ,GAAG;MACHQ,KAAK;MACLK,IAAI,EAAE;QACFd,GAAG,EAAE;UACDe,eAAe,EAAEb,aAAa,CAACS;QACnC;MACJ,CAAC;MACDK,OAAO,EAAEX,OAAO,CAACM;IACrB,CAAC,CAAC;EACN,CAAC,CAAC;EAEFX,GAAG,CAACE,aAAa,CAACe,0BAA0B,CAACb,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IAChF,MAAM;MAAEG;IAAQ,CAAC,GAAGH,aAAa;IACjC,IAAIG,OAAO,CAACC,IAAI,KAAKC,sBAAe,CAACC,SAAS,EAAE;MAC5C;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,iBAAU,EAACT,GAAG,EAAEI,OAAO,CAACM,EAAE,EAAEN,OAAO,CAACO,QAAQ,CAAC;IAEjE,MAAM,IAAAC,sBAAe,EAAC;MAClBZ,GAAG;MACHQ,KAAK;MACLK,IAAI,EAAE;QACFd,GAAG,EAAE;UACDe,eAAe,EAAE;QACrB;MACJ,CAAC;MACDC,OAAO,EAAEX,OAAO,CAACM;IACrB,CAAC,CAAC;EACN,CAAC,CAAC;EAEFV,GAAG,CAACiB,mBAAmB,CAACd,SAAS,CAAC,OAAO;IAAEe,KAAK;IAAEV;EAAM,CAAC,KAAK;IAC1D,IAAI,IAAAW,2BAAoB,EAACX,KAAK,CAAC,EAAE;MAC7B;IACJ;IACA,MAAMM,eAAe,GAAGI,KAAK,CAACL,IAAI,EAAEd,GAAG,EAAEe,eAAe;IAExD,IAAI,CAACA,eAAe,EAAE;MAClB;IACJ;IACA,IAAIb,aAAa;IACjB,IAAI;MACAA,aAAa,GAAG,MAAMF,GAAG,CAACE,aAAa,CAACmB,GAAG,CAACN,eAAe,CAAC;IAChE,CAAC,CAAC,OAAOO,EAAE,EAAE;MACT;AACZ;AACA;AACA;MACY,IAAIA,EAAE,CAACC,IAAI,KAAK,WAAW,EAAE;QACzB,MAAMD,EAAE;MACZ;IACJ;IAEA,IAAI,CAACpB,aAAa,EAAE;MAChB;IACJ;IACA,MAAM,IAAIsB,cAAK,CACX,mGAAmG,EACnG,4BAA4B,EAC5B;MACIT,eAAe;MACfI;IACJ,CACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAACM,OAAA,CAAA3B,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -109,7 +109,7 @@ const linkWorkflowToEntry = params => {
109
109
  }
110
110
  const models = await cms.listModels();
111
111
  const values = scope.data?.entries;
112
- if (!values || Array.isArray(values) === false || values.length === 0) {
112
+ if (!values?.length) {
113
113
  return;
114
114
  }
115
115
  for (const value of values) {
@@ -1 +1 @@
1
- {"version":3,"names":["_set","_interopRequireDefault","require","_utils","linkWorkflowToEntry","params","apw","cms","onEntryBeforeCreate","subscribe","entry","model","isApwDisabledOnModel","assignWorkflowToEntry","onEntryRevisionBeforeCreate","original","previousContentReviewId","meta","contentReviewId","set","previousWorkflowId","workflowId","onEntryBeforeUpdate","prevApwWorkflowId","currentApwWorkflowId","linkedContentReviewId","prevTitle","getEntryTitle","newTitle","contentReview","update","title","workflow","onWorkflowAfterCreate","scope","hasEntries","models","listModels","values","data","entries","Array","isArray","length","value","modelId","id","find","m","updateEntryMeta","entryId","exports"],"sources":["linkWorkflowToEntry.ts"],"sourcesContent":["import set from \"lodash/set\";\nimport { AdvancedPublishingWorkflow } from \"~/types\";\nimport {\n assignWorkflowToEntry,\n getEntryTitle,\n hasEntries,\n isApwDisabledOnModel,\n updateEntryMeta\n} from \"~/plugins/cms/utils\";\nimport { HeadlessCms } from \"@webiny/api-headless-cms/types\";\n\ninterface Value {\n id: string;\n modelId: string;\n}\n\ninterface LinkWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n cms: HeadlessCms;\n}\nexport const linkWorkflowToEntry = (params: LinkWorkflowToEntryParams) => {\n const { apw, cms } = params;\n\n cms.onEntryBeforeCreate.subscribe(async ({ entry, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n await assignWorkflowToEntry({\n apw,\n entry,\n model\n });\n });\n\n cms.onEntryRevisionBeforeCreate.subscribe(async ({ entry, original, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n /**\n * If the previous revision(original) already had the \"contentReviewId\",\n * we need to unlink it so that new \"contentReview\" can be request for the new revision.\n */\n const previousContentReviewId = original.meta?.apw?.contentReviewId;\n if (previousContentReviewId) {\n entry.meta = set(entry.meta || {}, \"apw.contentReviewId\", null);\n }\n\n /**\n * If the previous revision(original) already had the \"workflowId\",\n * we don't need to do anything we'll just let it be copied over.\n */\n const previousWorkflowId = original.meta?.apw?.workflowId;\n if (previousWorkflowId) {\n return;\n }\n /**\n * Lookup and assign \"workflowId\".\n */\n await assignWorkflowToEntry({\n apw,\n entry,\n model\n });\n });\n\n cms.onEntryBeforeUpdate.subscribe(async ({ entry, original, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n const prevApwWorkflowId = original.meta?.apw?.workflowId;\n const currentApwWorkflowId = entry.meta?.apw?.workflowId;\n /**\n * Make sure the apw property doesn't get lost between updates.\n * It can happen because we run modal validation in \"onBeforePageUpdate\" event,\n * which doesn't have the \"apw\" property.\n */\n if (prevApwWorkflowId && !currentApwWorkflowId) {\n entry.meta = set(entry.meta || {}, \"apw\", (original.meta || {}).apw || {});\n }\n /*\n * If there is a linked \"contentReview\" for this page and the page \"title\" has changed.\n * Let's update the \"title\" field in \"contentReview\".\n */\n const linkedContentReviewId = entry.meta?.apw?.contentReviewId;\n const prevTitle = getEntryTitle(model, original);\n const newTitle = getEntryTitle(model, entry);\n\n if (!linkedContentReviewId || prevTitle === newTitle) {\n return;\n }\n await apw.contentReview.update(linkedContentReviewId, {\n title: newTitle\n });\n });\n\n /**\n * Link created workflow to associated entries.\n */\n apw.workflow.onWorkflowAfterCreate.subscribe(async ({ workflow }) => {\n const { scope } = workflow;\n /**\n * If the workflow has entries in it's scope, we'll link that workflow for each of those entries.\n */\n if (hasEntries(workflow) === false) {\n return;\n }\n\n const models = await cms.listModels();\n\n const values: Value[] | undefined = scope.data?.entries;\n if (!values || Array.isArray(values) === false || values.length === 0) {\n return;\n }\n\n for (const value of values) {\n if (!value || !value.modelId || !value.id) {\n continue;\n }\n const model = models.find(m => m.modelId === value.modelId);\n if (!model) {\n continue;\n }\n await updateEntryMeta({\n cms,\n model,\n entryId: value.id,\n meta: {\n apw: {\n workflowId: workflow.id\n }\n }\n });\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_set","_interopRequireDefault","require","_utils","linkWorkflowToEntry","params","apw","cms","onEntryBeforeCreate","subscribe","entry","model","isApwDisabledOnModel","assignWorkflowToEntry","onEntryRevisionBeforeCreate","original","previousContentReviewId","meta","contentReviewId","set","previousWorkflowId","workflowId","onEntryBeforeUpdate","prevApwWorkflowId","currentApwWorkflowId","linkedContentReviewId","prevTitle","getEntryTitle","newTitle","contentReview","update","title","workflow","onWorkflowAfterCreate","scope","hasEntries","models","listModels","values","data","entries","length","value","modelId","id","find","m","updateEntryMeta","entryId","exports"],"sources":["linkWorkflowToEntry.ts"],"sourcesContent":["import set from \"lodash/set\";\nimport { AdvancedPublishingWorkflow } from \"~/types\";\nimport {\n assignWorkflowToEntry,\n getEntryTitle,\n hasEntries,\n isApwDisabledOnModel,\n updateEntryMeta\n} from \"~/plugins/cms/utils\";\nimport { HeadlessCms } from \"@webiny/api-headless-cms/types\";\n\ninterface LinkWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n cms: HeadlessCms;\n}\nexport const linkWorkflowToEntry = (params: LinkWorkflowToEntryParams) => {\n const { apw, cms } = params;\n\n cms.onEntryBeforeCreate.subscribe(async ({ entry, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n await assignWorkflowToEntry({\n apw,\n entry,\n model\n });\n });\n\n cms.onEntryRevisionBeforeCreate.subscribe(async ({ entry, original, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n /**\n * If the previous revision(original) already had the \"contentReviewId\",\n * we need to unlink it so that new \"contentReview\" can be request for the new revision.\n */\n const previousContentReviewId = original.meta?.apw?.contentReviewId;\n if (previousContentReviewId) {\n entry.meta = set(entry.meta || {}, \"apw.contentReviewId\", null);\n }\n\n /**\n * If the previous revision(original) already had the \"workflowId\",\n * we don't need to do anything we'll just let it be copied over.\n */\n const previousWorkflowId = original.meta?.apw?.workflowId;\n if (previousWorkflowId) {\n return;\n }\n /**\n * Lookup and assign \"workflowId\".\n */\n await assignWorkflowToEntry({\n apw,\n entry,\n model\n });\n });\n\n cms.onEntryBeforeUpdate.subscribe(async ({ entry, original, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n const prevApwWorkflowId = original.meta?.apw?.workflowId;\n const currentApwWorkflowId = entry.meta?.apw?.workflowId;\n /**\n * Make sure the apw property doesn't get lost between updates.\n * It can happen because we run modal validation in \"onBeforePageUpdate\" event,\n * which doesn't have the \"apw\" property.\n */\n if (prevApwWorkflowId && !currentApwWorkflowId) {\n entry.meta = set(entry.meta || {}, \"apw\", (original.meta || {}).apw || {});\n }\n /*\n * If there is a linked \"contentReview\" for this page and the page \"title\" has changed.\n * Let's update the \"title\" field in \"contentReview\".\n */\n const linkedContentReviewId = entry.meta?.apw?.contentReviewId;\n const prevTitle = getEntryTitle(model, original);\n const newTitle = getEntryTitle(model, entry);\n\n if (!linkedContentReviewId || prevTitle === newTitle) {\n return;\n }\n await apw.contentReview.update(linkedContentReviewId, {\n title: newTitle\n });\n });\n\n /**\n * Link created workflow to associated entries.\n */\n apw.workflow.onWorkflowAfterCreate.subscribe(async ({ workflow }) => {\n const { scope } = workflow;\n /**\n * If the workflow has entries in it's scope, we'll link that workflow for each of those entries.\n */\n if (hasEntries(workflow) === false) {\n return;\n }\n\n const models = await cms.listModels();\n\n const values = scope.data?.entries;\n if (!values?.length) {\n return;\n }\n\n for (const value of values) {\n if (!value || !value.modelId || !value.id) {\n continue;\n }\n const model = models.find(m => m.modelId === value.modelId);\n if (!model) {\n continue;\n }\n await updateEntryMeta({\n cms,\n model,\n entryId: value.id,\n meta: {\n apw: {\n workflowId: workflow.id\n }\n }\n });\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_ApwChangeRequestNotification","createChangeRequestNotification","plugin","createApwChangeRequestNotification","ApwContentTypes","CMS_ENTRY","params","changeRequestUrl","contentUrl","text","name","type","exports"],"sources":["changeRequestNotification.ts"],"sourcesContent":["import { ApwContentTypes } from \"~/types\";\nimport { createApwChangeRequestNotification } from \"~/ApwChangeRequestNotification\";\n\nexport const createChangeRequestNotification = () => {\n const plugin = createApwChangeRequestNotification(ApwContentTypes.CMS_ENTRY, params => {\n const { changeRequestUrl, contentUrl } = params;\n\n return {\n text: `\n Hi,<br /><br />\n \n You have received a <a href=\"${changeRequestUrl}\">change request</a>, for <a href=\"${contentUrl}\">this</a> content entry.<br /><br />\n \n Here are the full URLs:<br /><br />\n \n Change Request: ${changeRequestUrl}<br />\n Content Entry: ${contentUrl}\n `\n };\n });\n\n plugin.name = `${plugin.type}.${ApwContentTypes.CMS_ENTRY}.default`;\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,6BAAA,GAAAD,OAAA;AAEO,MAAME,+BAA+B,GAAGA,CAAA,KAAM;EACjD,MAAMC,MAAM,GAAG,IAAAC,gEAAkC,EAACC,sBAAe,CAACC,SAAS,EAAEC,MAAM,IAAI;IACnF,MAAM;MAAEC,gBAAgB;MAAEC;IAAW,CAAC,GAAGF,MAAM;IAE/C,OAAO;MACHG,IAAI,EAAG;AACnB;AACA;AACA,+CAA+CF,gBAAiB,sCAAqCC,UAAW;AAChH;AACA;AACA;AACA,kCAAkCD,gBAAiB;AACnD,iCAAiCC,UAAW;AAC5C;IACQ,CAAC;EACL,CAAC,CAAC;EAEFN,MAAM,CAACQ,IAAI,GAAI,GAAER,MAAM,CAACS,IAAK,IAAGP,sBAAe,CAACC,SAAU,UAAS;EAEnE,OAAOH,MAAM;AACjB,CAAC;AAACU,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_ApwChangeRequestNotification","createChangeRequestNotification","plugin","createApwChangeRequestNotification","ApwContentTypes","CMS_ENTRY","params","changeRequestUrl","contentUrl","text","name","type","exports"],"sources":["changeRequestNotification.ts"],"sourcesContent":["import { ApwContentTypes } from \"~/types\";\nimport { createApwChangeRequestNotification } from \"~/ApwChangeRequestNotification\";\n\nexport const createChangeRequestNotification = () => {\n const plugin = createApwChangeRequestNotification(ApwContentTypes.CMS_ENTRY, params => {\n const { changeRequestUrl, contentUrl } = params;\n\n return {\n text: `\n Hi,<br /><br />\n \n You have received a <a href=\"${changeRequestUrl}\">change request</a>, for <a href=\"${contentUrl}\">this</a> content entry.<br /><br />\n \n Here are the full URLs:<br /><br />\n \n Change Request: ${changeRequestUrl}<br />\n Content Entry: ${contentUrl}\n `\n };\n });\n\n plugin.name = `${plugin.type}.${ApwContentTypes.CMS_ENTRY}.default`;\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,6BAAA,GAAAD,OAAA;AAEO,MAAME,+BAA+B,GAAGA,CAAA,KAAM;EACjD,MAAMC,MAAM,GAAG,IAAAC,gEAAkC,EAACC,sBAAe,CAACC,SAAS,EAAEC,MAAM,IAAI;IACnF,MAAM;MAAEC,gBAAgB;MAAEC;IAAW,CAAC,GAAGF,MAAM;IAE/C,OAAO;MACHG,IAAI,EAAE;AAClB;AACA;AACA,+CAA+CF,gBAAgB,sCAAsCC,UAAU;AAC/G;AACA;AACA;AACA,kCAAkCD,gBAAgB;AAClD,iCAAiCC,UAAU;AAC3C;IACQ,CAAC;EACL,CAAC,CAAC;EAEFN,MAAM,CAACQ,IAAI,GAAG,GAAGR,MAAM,CAACS,IAAI,IAAIP,sBAAe,CAACC,SAAS,UAAU;EAEnE,OAAOH,MAAM;AACjB,CAAC;AAACU,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ApwCommentNotification","require","_types","createCommentNotification","plugin","createApwCommentNotification","ApwContentTypes","CMS_ENTRY","params","commentUrl","contentUrl","text","name","type","exports"],"sources":["commentNotification.ts"],"sourcesContent":["import { createApwCommentNotification } from \"~/ApwCommentNotification\";\nimport { ApwContentTypes } from \"~/types\";\n\nexport const createCommentNotification = () => {\n const plugin = createApwCommentNotification(ApwContentTypes.CMS_ENTRY, params => {\n const { commentUrl, contentUrl } = params;\n\n return {\n text: `\n Hi,<br /><br />\n \n You have received a <a href=\"${commentUrl}\">comment</a>, on a change request, for <a href=\"${contentUrl}\">this</a> content entry.<br />\n \n Here are the full URLs:<br /><br />\n \n Comment: ${commentUrl}<br />\n Content Entry: ${contentUrl}\n `\n };\n });\n\n plugin.name = `${plugin.type}.${ApwContentTypes.CMS_ENTRY}.default`;\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,MAAMC,MAAM,GAAG,IAAAC,oDAA4B,EAACC,sBAAe,CAACC,SAAS,EAAEC,MAAM,IAAI;IAC7E,MAAM;MAAEC,UAAU;MAAEC;IAAW,CAAC,GAAGF,MAAM;IAEzC,OAAO;MACHG,IAAI,EAAG;AACnB;AACA;AACA,+CAA+CF,UAAW,oDAAmDC,UAAW;AACxH;AACA;AACA;AACA,2BAA2BD,UAAW;AACtC,iCAAiCC,UAAW;AAC5C;IACQ,CAAC;EACL,CAAC,CAAC;EAEFN,MAAM,CAACQ,IAAI,GAAI,GAAER,MAAM,CAACS,IAAK,IAAGP,sBAAe,CAACC,SAAU,UAAS;EAEnE,OAAOH,MAAM;AACjB,CAAC;AAACU,OAAA,CAAAX,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ApwCommentNotification","require","_types","createCommentNotification","plugin","createApwCommentNotification","ApwContentTypes","CMS_ENTRY","params","commentUrl","contentUrl","text","name","type","exports"],"sources":["commentNotification.ts"],"sourcesContent":["import { createApwCommentNotification } from \"~/ApwCommentNotification\";\nimport { ApwContentTypes } from \"~/types\";\n\nexport const createCommentNotification = () => {\n const plugin = createApwCommentNotification(ApwContentTypes.CMS_ENTRY, params => {\n const { commentUrl, contentUrl } = params;\n\n return {\n text: `\n Hi,<br /><br />\n \n You have received a <a href=\"${commentUrl}\">comment</a>, on a change request, for <a href=\"${contentUrl}\">this</a> content entry.<br />\n \n Here are the full URLs:<br /><br />\n \n Comment: ${commentUrl}<br />\n Content Entry: ${contentUrl}\n `\n };\n });\n\n plugin.name = `${plugin.type}.${ApwContentTypes.CMS_ENTRY}.default`;\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,MAAMC,MAAM,GAAG,IAAAC,oDAA4B,EAACC,sBAAe,CAACC,SAAS,EAAEC,MAAM,IAAI;IAC7E,MAAM;MAAEC,UAAU;MAAEC;IAAW,CAAC,GAAGF,MAAM;IAEzC,OAAO;MACHG,IAAI,EAAE;AAClB;AACA;AACA,+CAA+CF,UAAU,oDAAoDC,UAAU;AACvH;AACA;AACA;AACA,2BAA2BD,UAAU;AACrC,iCAAiCC,UAAU;AAC3C;IACQ,CAAC;EACL,CAAC,CAAC;EAEFN,MAAM,CAACQ,IAAI,GAAG,GAAGR,MAAM,CAACS,IAAI,IAAIP,sBAAe,CAACC,SAAS,UAAU;EAEnE,OAAOH,MAAM;AACjB,CAAC;AAACU,OAAA,CAAAX,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_ApwContentReviewNotification","createContentReviewNotification","plugin","createApwContentReviewNotification","ApwContentTypes","CMS_ENTRY","params","contentReviewUrl","contentUrl","text","name","type","exports"],"sources":["contentReviewNotification.ts"],"sourcesContent":["import { ApwContentTypes } from \"~/types\";\nimport { createApwContentReviewNotification } from \"~/ApwContentReviewNotification\";\n\nexport const createContentReviewNotification = () => {\n const plugin = createApwContentReviewNotification(ApwContentTypes.CMS_ENTRY, params => {\n const { contentReviewUrl, contentUrl } = params;\n\n return {\n text: `\n Hi,<br /><br />\n \n You have received a <a href=\"${contentReviewUrl}\">content review</a>, for <a href=\"${contentUrl}\">this</a> content entry.<br />\n \n Here are the full URLs:<br /><br />\n \n Content Review: ${contentReviewUrl}<br />\n Content Entry: ${contentUrl}\n `\n };\n });\n\n plugin.name = `${plugin.type}.${ApwContentTypes.CMS_ENTRY}.default`;\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,6BAAA,GAAAD,OAAA;AAEO,MAAME,+BAA+B,GAAGA,CAAA,KAAM;EACjD,MAAMC,MAAM,GAAG,IAAAC,gEAAkC,EAACC,sBAAe,CAACC,SAAS,EAAEC,MAAM,IAAI;IACnF,MAAM;MAAEC,gBAAgB;MAAEC;IAAW,CAAC,GAAGF,MAAM;IAE/C,OAAO;MACHG,IAAI,EAAG;AACnB;AACA;AACA,+CAA+CF,gBAAiB,sCAAqCC,UAAW;AAChH;AACA;AACA;AACA,kCAAkCD,gBAAiB;AACnD,iCAAiCC,UAAW;AAC5C;IACQ,CAAC;EACL,CAAC,CAAC;EAEFN,MAAM,CAACQ,IAAI,GAAI,GAAER,MAAM,CAACS,IAAK,IAAGP,sBAAe,CAACC,SAAU,UAAS;EAEnE,OAAOH,MAAM;AACjB,CAAC;AAACU,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_ApwContentReviewNotification","createContentReviewNotification","plugin","createApwContentReviewNotification","ApwContentTypes","CMS_ENTRY","params","contentReviewUrl","contentUrl","text","name","type","exports"],"sources":["contentReviewNotification.ts"],"sourcesContent":["import { ApwContentTypes } from \"~/types\";\nimport { createApwContentReviewNotification } from \"~/ApwContentReviewNotification\";\n\nexport const createContentReviewNotification = () => {\n const plugin = createApwContentReviewNotification(ApwContentTypes.CMS_ENTRY, params => {\n const { contentReviewUrl, contentUrl } = params;\n\n return {\n text: `\n Hi,<br /><br />\n \n You have received a <a href=\"${contentReviewUrl}\">content review</a>, for <a href=\"${contentUrl}\">this</a> content entry.<br />\n \n Here are the full URLs:<br /><br />\n \n Content Review: ${contentReviewUrl}<br />\n Content Entry: ${contentUrl}\n `\n };\n });\n\n plugin.name = `${plugin.type}.${ApwContentTypes.CMS_ENTRY}.default`;\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,6BAAA,GAAAD,OAAA;AAEO,MAAME,+BAA+B,GAAGA,CAAA,KAAM;EACjD,MAAMC,MAAM,GAAG,IAAAC,gEAAkC,EAACC,sBAAe,CAACC,SAAS,EAAEC,MAAM,IAAI;IACnF,MAAM;MAAEC,gBAAgB;MAAEC;IAAW,CAAC,GAAGF,MAAM;IAE/C,OAAO;MACHG,IAAI,EAAE;AAClB;AACA;AACA,+CAA+CF,gBAAgB,sCAAsCC,UAAU;AAC/G;AACA;AACA;AACA,kCAAkCD,gBAAgB;AAClD,iCAAiCC,UAAU;AAC3C;IACQ,CAAC;EACL,CAAC,CAAC;EAEFN,MAAM,CAACQ,IAAI,GAAG,GAAGR,MAAM,CAACS,IAAI,IAAIP,sBAAe,CAACC,SAAS,UAAU;EAEnE,OAAOH,MAAM;AACjB,CAAC;AAACU,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ApwContentUrlPlugin","require","_types","createContentEntryUrl","params","key","console","log","baseUrl","modelId","id","exports","createContentUrlPlugin","createApwContentUrlPlugin","ApwContentTypes","CMS_ENTRY","contentReview","content","settings"],"sources":["contentUrl.ts"],"sourcesContent":["/**\n * In this file we create a plugin which in turn creates a content entry url when requested by the code which sends notifications.\n * Due to multiple content types for the APW, everything needs to be pluginable.\n */\nimport { createApwContentUrlPlugin } from \"~/ApwContentUrlPlugin\";\nimport { ApwContentTypes } from \"~/types\";\n\ninterface CreateContentEntryUrlParams {\n baseUrl?: string;\n modelId?: string;\n id: string;\n}\nexport const createContentEntryUrl = (params: CreateContentEntryUrlParams): string | null => {\n /**\n * All variables must exist for URL to be created.\n * We go through all vars and throw a log if it does not exist.\n */\n for (const key in params) {\n if (!!key) {\n continue;\n }\n console.log(`Missing variable \"${key}\", which we use to create a content entry URL.`);\n return null;\n }\n const { baseUrl, modelId, id } = params;\n return `${baseUrl}/cms/content-entries/${modelId}?id=${id}`;\n};\n\nexport const createContentUrlPlugin = () => {\n return createApwContentUrlPlugin(ApwContentTypes.CMS_ENTRY, params => {\n const { baseUrl, contentReview } = params;\n const { id } = contentReview.content;\n const { modelId } = contentReview.content.settings;\n return createContentEntryUrl({\n baseUrl,\n modelId,\n id\n });\n });\n};\n"],"mappings":";;;;;;AAIA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AALA;AACA;AACA;AACA;;AASO,MAAME,qBAAqB,GAAIC,MAAmC,IAAoB;EACzF;AACJ;AACA;AACA;EACI,KAAK,MAAMC,GAAG,IAAID,MAAM,EAAE;IACtB,IAAI,CAAC,CAACC,GAAG,EAAE;MACP;IACJ;IACAC,OAAO,CAACC,GAAG,CAAE,qBAAoBF,GAAI,gDAA+C,CAAC;IACrF,OAAO,IAAI;EACf;EACA,MAAM;IAAEG,OAAO;IAAEC,OAAO;IAAEC;EAAG,CAAC,GAAGN,MAAM;EACvC,OAAQ,GAAEI,OAAQ,wBAAuBC,OAAQ,OAAMC,EAAG,EAAC;AAC/D,CAAC;AAACC,OAAA,CAAAR,qBAAA,GAAAA,qBAAA;AAEK,MAAMS,sBAAsB,GAAGA,CAAA,KAAM;EACxC,OAAO,IAAAC,8CAAyB,EAACC,sBAAe,CAACC,SAAS,EAAEX,MAAM,IAAI;IAClE,MAAM;MAAEI,OAAO;MAAEQ;IAAc,CAAC,GAAGZ,MAAM;IACzC,MAAM;MAAEM;IAAG,CAAC,GAAGM,aAAa,CAACC,OAAO;IACpC,MAAM;MAAER;IAAQ,CAAC,GAAGO,aAAa,CAACC,OAAO,CAACC,QAAQ;IAClD,OAAOf,qBAAqB,CAAC;MACzBK,OAAO;MACPC,OAAO;MACPC;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ApwContentUrlPlugin","require","_types","createContentEntryUrl","params","key","console","log","baseUrl","modelId","id","exports","createContentUrlPlugin","createApwContentUrlPlugin","ApwContentTypes","CMS_ENTRY","contentReview","content","settings"],"sources":["contentUrl.ts"],"sourcesContent":["/**\n * In this file we create a plugin which in turn creates a content entry url when requested by the code which sends notifications.\n * Due to multiple content types for the APW, everything needs to be pluginable.\n */\nimport { createApwContentUrlPlugin } from \"~/ApwContentUrlPlugin\";\nimport { ApwContentTypes } from \"~/types\";\n\ninterface CreateContentEntryUrlParams {\n baseUrl?: string;\n modelId?: string;\n id: string;\n}\nexport const createContentEntryUrl = (params: CreateContentEntryUrlParams): string | null => {\n /**\n * All variables must exist for URL to be created.\n * We go through all vars and throw a log if it does not exist.\n */\n for (const key in params) {\n if (!!key) {\n continue;\n }\n console.log(`Missing variable \"${key}\", which we use to create a content entry URL.`);\n return null;\n }\n const { baseUrl, modelId, id } = params;\n return `${baseUrl}/cms/content-entries/${modelId}?id=${id}`;\n};\n\nexport const createContentUrlPlugin = () => {\n return createApwContentUrlPlugin(ApwContentTypes.CMS_ENTRY, params => {\n const { baseUrl, contentReview } = params;\n const { id } = contentReview.content;\n const { modelId } = contentReview.content.settings;\n return createContentEntryUrl({\n baseUrl,\n modelId,\n id\n });\n });\n};\n"],"mappings":";;;;;;AAIA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AALA;AACA;AACA;AACA;;AASO,MAAME,qBAAqB,GAAIC,MAAmC,IAAoB;EACzF;AACJ;AACA;AACA;EACI,KAAK,MAAMC,GAAG,IAAID,MAAM,EAAE;IACtB,IAAI,CAAC,CAACC,GAAG,EAAE;MACP;IACJ;IACAC,OAAO,CAACC,GAAG,CAAC,qBAAqBF,GAAG,gDAAgD,CAAC;IACrF,OAAO,IAAI;EACf;EACA,MAAM;IAAEG,OAAO;IAAEC,OAAO;IAAEC;EAAG,CAAC,GAAGN,MAAM;EACvC,OAAO,GAAGI,OAAO,wBAAwBC,OAAO,OAAOC,EAAE,EAAE;AAC/D,CAAC;AAACC,OAAA,CAAAR,qBAAA,GAAAA,qBAAA;AAEK,MAAMS,sBAAsB,GAAGA,CAAA,KAAM;EACxC,OAAO,IAAAC,8CAAyB,EAACC,sBAAe,CAACC,SAAS,EAAEX,MAAM,IAAI;IAClE,MAAM;MAAEI,OAAO;MAAEQ;IAAc,CAAC,GAAGZ,MAAM;IACzC,MAAM;MAAEM;IAAG,CAAC,GAAGM,aAAa,CAACC,OAAO;IACpC,MAAM;MAAER;IAAQ,CAAC,GAAGO,aAAa,CAACC,OAAO,CAACC,QAAQ;IAClD,OAAOf,qBAAqB,CAAC;MACzBK,OAAO;MACPC,OAAO;MACPC;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","triggerContentReview","params","cms","apw","onEntryBeforePublish","subscribe","entry","model","isApwDisabledOnModel","contentReviewId","meta","contentReview","get","reviewStatus","ApwContentReviewStatus","UNDER_REVIEW","Error","workflowId","exports"],"sources":["triggerContentReview.ts"],"sourcesContent":["import Error from \"@webiny/error\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentReviewStatus,\n OnCmsEntryBeforePublishTopicParams\n} from \"~/types\";\nimport { HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { isApwDisabledOnModel } from \"~/plugins/cms/utils\";\n\ninterface TriggerContentReviewParams {\n apw: AdvancedPublishingWorkflow;\n cms: HeadlessCms;\n}\nexport const triggerContentReview = (params: TriggerContentReviewParams) => {\n const { cms, apw } = params;\n\n cms.onEntryBeforePublish.subscribe<OnCmsEntryBeforePublishTopicParams>(\n async ({ entry, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n const contentReviewId = entry.meta?.apw?.contentReviewId;\n if (contentReviewId) {\n const contentReview = await apw.contentReview.get(contentReviewId);\n\n if (contentReview.reviewStatus !== ApwContentReviewStatus.UNDER_REVIEW) {\n return;\n }\n throw new Error(\n `A peer review for this content has been already requested.`,\n \"REVIEW_ALREADY_EXIST\",\n {\n contentReviewId,\n entry\n }\n );\n }\n\n const workflowId = entry.meta?.apw?.workflowId;\n\n if (!workflowId) {\n return;\n }\n throw new Error(\n \"This content requires peer review approval before it can be published.\",\n \"REVIEW_REQUIRED\",\n {\n workflowId,\n entry\n }\n );\n }\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAMA,IAAAE,MAAA,GAAAF,OAAA;AAMO,MAAMG,oBAAoB,GAAIC,MAAkC,IAAK;EACxE,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGF,MAAM;EAE3BC,GAAG,CAACE,oBAAoB,CAACC,SAAS,CAC9B,OAAO;IAAEC,KAAK;IAAEC;EAAM,CAAC,KAAK;IACxB,IAAI,IAAAC,2BAAoB,EAACD,KAAK,CAAC,EAAE;MAC7B;IACJ;IACA,MAAME,eAAe,GAAGH,KAAK,CAACI,IAAI,EAAEP,GAAG,EAAEM,eAAe;IACxD,IAAIA,eAAe,EAAE;MACjB,MAAME,aAAa,GAAG,MAAMR,GAAG,CAACQ,aAAa,CAACC,GAAG,CAACH,eAAe,CAAC;MAElE,IAAIE,aAAa,CAACE,YAAY,KAAKC,6BAAsB,CAACC,YAAY,EAAE;QACpE;MACJ;MACA,MAAM,IAAIC,cAAK,CACV,4DAA2D,EAC5D,sBAAsB,EACtB;QACIP,eAAe;QACfH;MACJ,CACJ,CAAC;IACL;IAEA,MAAMW,UAAU,GAAGX,KAAK,CAACI,IAAI,EAAEP,GAAG,EAAEc,UAAU;IAE9C,IAAI,CAACA,UAAU,EAAE;MACb;IACJ;IACA,MAAM,IAAID,cAAK,CACX,wEAAwE,EACxE,iBAAiB,EACjB;MACIC,UAAU;MACVX;IACJ,CACJ,CAAC;EACL,CACJ,CAAC;AACL,CAAC;AAACY,OAAA,CAAAlB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","triggerContentReview","params","cms","apw","onEntryBeforePublish","subscribe","entry","model","isApwDisabledOnModel","contentReviewId","meta","contentReview","get","reviewStatus","ApwContentReviewStatus","UNDER_REVIEW","Error","workflowId","exports"],"sources":["triggerContentReview.ts"],"sourcesContent":["import Error from \"@webiny/error\";\nimport {\n AdvancedPublishingWorkflow,\n ApwContentReviewStatus,\n OnCmsEntryBeforePublishTopicParams\n} from \"~/types\";\nimport { HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { isApwDisabledOnModel } from \"~/plugins/cms/utils\";\n\ninterface TriggerContentReviewParams {\n apw: AdvancedPublishingWorkflow;\n cms: HeadlessCms;\n}\nexport const triggerContentReview = (params: TriggerContentReviewParams) => {\n const { cms, apw } = params;\n\n cms.onEntryBeforePublish.subscribe<OnCmsEntryBeforePublishTopicParams>(\n async ({ entry, model }) => {\n if (isApwDisabledOnModel(model)) {\n return;\n }\n const contentReviewId = entry.meta?.apw?.contentReviewId;\n if (contentReviewId) {\n const contentReview = await apw.contentReview.get(contentReviewId);\n\n if (contentReview.reviewStatus !== ApwContentReviewStatus.UNDER_REVIEW) {\n return;\n }\n throw new Error(\n `A peer review for this content has been already requested.`,\n \"REVIEW_ALREADY_EXIST\",\n {\n contentReviewId,\n entry\n }\n );\n }\n\n const workflowId = entry.meta?.apw?.workflowId;\n\n if (!workflowId) {\n return;\n }\n throw new Error(\n \"This content requires peer review approval before it can be published.\",\n \"REVIEW_REQUIRED\",\n {\n workflowId,\n entry\n }\n );\n }\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAMA,IAAAE,MAAA,GAAAF,OAAA;AAMO,MAAMG,oBAAoB,GAAIC,MAAkC,IAAK;EACxE,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGF,MAAM;EAE3BC,GAAG,CAACE,oBAAoB,CAACC,SAAS,CAC9B,OAAO;IAAEC,KAAK;IAAEC;EAAM,CAAC,KAAK;IACxB,IAAI,IAAAC,2BAAoB,EAACD,KAAK,CAAC,EAAE;MAC7B;IACJ;IACA,MAAME,eAAe,GAAGH,KAAK,CAACI,IAAI,EAAEP,GAAG,EAAEM,eAAe;IACxD,IAAIA,eAAe,EAAE;MACjB,MAAME,aAAa,GAAG,MAAMR,GAAG,CAACQ,aAAa,CAACC,GAAG,CAACH,eAAe,CAAC;MAElE,IAAIE,aAAa,CAACE,YAAY,KAAKC,6BAAsB,CAACC,YAAY,EAAE;QACpE;MACJ;MACA,MAAM,IAAIC,cAAK,CACX,4DAA4D,EAC5D,sBAAsB,EACtB;QACIP,eAAe;QACfH;MACJ,CACJ,CAAC;IACL;IAEA,MAAMW,UAAU,GAAGX,KAAK,CAACI,IAAI,EAAEP,GAAG,EAAEc,UAAU;IAE9C,IAAI,CAACA,UAAU,EAAE;MACb;IACJ;IACA,MAAM,IAAID,cAAK,CACX,wEAAwE,EACxE,iBAAiB,EACjB;MACIC,UAAU;MACVX;IACJ,CACJ,CAAC;EACL,CACJ,CAAC;AACL,CAAC;AAACY,OAAA,CAAAlB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","_changeRequest","_comment","_contentReview","_reviewer","_workflow","fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","exports","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","item","getLatestEntriesByIds","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","sortedWorkflows","sort","workflowByPrecedenceDesc","workflowByCreatedOnDesc","console","log","workflowId","contentReviewId","ex","code","hasEntries","isApwDisabledOnModel","isPrivate","CHANGE_REQUEST_MODEL_ID","COMMENT_MODEL_ID","CONTENT_REVIEW_MODEL_ID","REVIEWER_MODEL_ID","WORKFLOW_MODEL_ID"],"sources":["utils.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport {\n AdvancedPublishingWorkflow,\n ApwWorkflow,\n ApwWorkflowApplications,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { workflowByCreatedOnDesc, workflowByPrecedenceDesc } from \"~/plugins/utils\";\nimport { CHANGE_REQUEST_MODEL_ID } from \"~/storageOperations/models/changeRequest.model\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\nimport { CONTENT_REVIEW_MODEL_ID } from \"~/storageOperations/models/contentReview.model\";\nimport { REVIEWER_MODEL_ID } from \"~/storageOperations/models/reviewer.model\";\nimport { WORKFLOW_MODEL_ID } from \"~/storageOperations/models/workflow.model\";\n\nexport const fetchModel = async (\n cms: HeadlessCms,\n id: string,\n settings?: { modelId?: string } | null\n): Promise<CmsModel> => {\n if (!settings) {\n throw new WebinyError(\"Missing settings.\", \"SETTINGS_ERROR\", {\n id\n });\n }\n const modelId = settings.modelId;\n if (!modelId) {\n throw new WebinyError(\"Missing modelId in settings.\", \"MODEL_ID_ERROR\", {\n id,\n settings\n });\n }\n const model = await cms.getModel(modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\"There is no requested model in the system.\", \"MODEL_NOT_EXISTS\", {\n id,\n settings\n });\n};\n\nexport const getEntryTitle = (model: CmsModel, entry: CmsEntry): string => {\n const titleFieldId = model.titleFieldId;\n if (!titleFieldId || !entry.values[titleFieldId]) {\n return entry.id;\n }\n return entry.values[titleFieldId];\n};\n\ninterface GetLatestEntryRevisionParams {\n cms: HeadlessCms;\n model: CmsModel;\n entryId: string;\n}\n\nexport const getLatestEntryRevision = async (\n params: GetLatestEntryRevisionParams\n): Promise<CmsEntry> => {\n const { cms, model, entryId } = params;\n const [item] = await cms.getLatestEntriesByIds(model, [entryId]);\n\n if (!item) {\n throw new WebinyError(\"There is no entry with given ID.\", \"ENTRY_NOT_FOUND\", {\n entryId,\n model: model.modelId\n });\n }\n return item;\n};\n\ninterface UpdateEntryMetaParams {\n meta: Record<string, any>;\n entryId: string;\n cms: HeadlessCms;\n model: CmsModel;\n}\n\nexport const updateEntryMeta = async (params: UpdateEntryMetaParams): Promise<void> => {\n const { entryId, cms, model, meta } = params;\n\n const entry = await getLatestEntryRevision({\n cms,\n model,\n entryId\n });\n\n await cms.updateEntry(model, entry.id, {}, meta);\n};\n\nconst isWorkflowApplicable = (entry: CmsEntry, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.CMS) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n } else if (scopeType === WorkflowScopeTypes.CUSTOM) {\n const models = workflow.scope.data?.models;\n\n if (Array.isArray(models) && models.includes(entry.modelId)) {\n return true;\n }\n\n const entries = workflow.scope.data?.entries || [];\n if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {\n return true;\n }\n return false;\n }\n throw new WebinyError(`Unknown scope type \"${scopeType}\".`, \"UNKNOWN_SCOPE_TYPE\", {\n workflow\n });\n};\n\ninterface AssignWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n entry: CmsEntry;\n model: CmsModel;\n}\n\nexport const assignWorkflowToEntry = async (params: AssignWorkflowToEntryParams): Promise<void> => {\n const { apw, entry } = params;\n /**\n * Lookup and assign \"workflowId\".\n */\n try {\n /*\n * List all workflows for app cms\n */\n const [entries] = await apw.workflow.list({\n where: {\n app: ApwWorkflowApplications.CMS\n }\n });\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n /**\n * Assign the first applicable workflow to the page and exit.\n */\n for (const workflow of sortedWorkflows) {\n if (isWorkflowApplicable(entry, workflow) === false) {\n console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);\n continue;\n }\n entry.meta = {\n ...(entry.meta || {}),\n apw: {\n workflowId: workflow.id,\n contentReviewId: null\n }\n };\n return;\n }\n } catch (ex) {\n throw new WebinyError(\n `Failed to assign workflow to CMS entry \"${entry.id}\".`,\n ex.code,\n ex.data\n );\n }\n};\n\nexport const hasEntries = (workflow: ApwWorkflow): boolean => {\n const { app, scope } = workflow;\n return (\n app === ApwWorkflowApplications.CMS &&\n scope.type === WorkflowScopeTypes.CUSTOM &&\n scope.data &&\n Array.isArray(scope.data.entries)\n );\n};\n\nexport const isApwDisabledOnModel = (model: Pick<CmsModel, \"modelId\" | \"isPrivate\">): boolean => {\n /**\n * We should not run APW on private models as well.\n */\n if (model.isPrivate) {\n return true;\n }\n return [\n CHANGE_REQUEST_MODEL_ID,\n COMMENT_MODEL_ID,\n CONTENT_REVIEW_MODEL_ID,\n REVIEWER_MODEL_ID,\n WORKFLOW_MODEL_ID\n ].includes(model.modelId);\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAMA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,SAAA,GAAAP,OAAA;AAEO,MAAMQ,UAAU,GAAG,MAAAA,CACtBC,GAAgB,EAChBC,EAAU,EACVC,QAAsC,KAClB;EACpB,IAAI,CAACA,QAAQ,EAAE;IACX,MAAM,IAAIC,cAAW,CAAC,mBAAmB,EAAE,gBAAgB,EAAE;MACzDF;IACJ,CAAC,CAAC;EACN;EACA,MAAMG,OAAO,GAAGF,QAAQ,CAACE,OAAO;EAChC,IAAI,CAACA,OAAO,EAAE;IACV,MAAM,IAAID,cAAW,CAAC,8BAA8B,EAAE,gBAAgB,EAAE;MACpEF,EAAE;MACFC;IACJ,CAAC,CAAC;EACN;EACA,MAAMG,KAAK,GAAG,MAAML,GAAG,CAACM,QAAQ,CAACF,OAAO,CAAC;EACzC,IAAIC,KAAK,EAAE;IACP,OAAOA,KAAK;EAChB;EACA,MAAM,IAAIF,cAAW,CAAC,4CAA4C,EAAE,kBAAkB,EAAE;IACpFF,EAAE;IACFC;EACJ,CAAC,CAAC;AACN,CAAC;AAACK,OAAA,CAAAR,UAAA,GAAAA,UAAA;AAEK,MAAMS,aAAa,GAAGA,CAACH,KAAe,EAAEI,KAAe,KAAa;EACvE,MAAMC,YAAY,GAAGL,KAAK,CAACK,YAAY;EACvC,IAAI,CAACA,YAAY,IAAI,CAACD,KAAK,CAACE,MAAM,CAACD,YAAY,CAAC,EAAE;IAC9C,OAAOD,KAAK,CAACR,EAAE;EACnB;EACA,OAAOQ,KAAK,CAACE,MAAM,CAACD,YAAY,CAAC;AACrC,CAAC;AAACH,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAQK,MAAMI,sBAAsB,GAAG,MAClCC,MAAoC,IAChB;EACpB,MAAM;IAAEb,GAAG;IAAEK,KAAK;IAAES;EAAQ,CAAC,GAAGD,MAAM;EACtC,MAAM,CAACE,IAAI,CAAC,GAAG,MAAMf,GAAG,CAACgB,qBAAqB,CAACX,KAAK,EAAE,CAACS,OAAO,CAAC,CAAC;EAEhE,IAAI,CAACC,IAAI,EAAE;IACP,MAAM,IAAIZ,cAAW,CAAC,kCAAkC,EAAE,iBAAiB,EAAE;MACzEW,OAAO;MACPT,KAAK,EAAEA,KAAK,CAACD;IACjB,CAAC,CAAC;EACN;EACA,OAAOW,IAAI;AACf,CAAC;AAACR,OAAA,CAAAK,sBAAA,GAAAA,sBAAA;AASK,MAAMK,eAAe,GAAG,MAAOJ,MAA6B,IAAoB;EACnF,MAAM;IAAEC,OAAO;IAAEd,GAAG;IAAEK,KAAK;IAAEa;EAAK,CAAC,GAAGL,MAAM;EAE5C,MAAMJ,KAAK,GAAG,MAAMG,sBAAsB,CAAC;IACvCZ,GAAG;IACHK,KAAK;IACLS;EACJ,CAAC,CAAC;EAEF,MAAMd,GAAG,CAACmB,WAAW,CAACd,KAAK,EAAEI,KAAK,CAACR,EAAE,EAAE,CAAC,CAAC,EAAEiB,IAAI,CAAC;AACpD,CAAC;AAACX,OAAA,CAAAU,eAAA,GAAAA,eAAA;AAEF,MAAMG,oBAAoB,GAAGA,CAACX,KAAe,EAAEY,QAAqB,KAAc;EAC9E,MAAMC,WAAW,GAAGD,QAAQ,CAACE,GAAG;EAChC,IAAID,WAAW,KAAKE,8BAAuB,CAACC,GAAG,EAAE;IAC7C,OAAO,KAAK;EAChB;EAEA,MAAMC,SAAS,GAAGL,QAAQ,CAACM,KAAK,CAACC,IAAI;EAErC,IAAIF,SAAS,KAAKG,yBAAkB,CAACC,OAAO,EAAE;IAC1C,OAAO,IAAI;EACf,CAAC,MAAM,IAAIJ,SAAS,KAAKG,yBAAkB,CAACE,MAAM,EAAE;IAChD,MAAMC,MAAM,GAAGX,QAAQ,CAACM,KAAK,CAACM,IAAI,EAAED,MAAM;IAE1C,IAAIE,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,IAAIA,MAAM,CAACI,QAAQ,CAAC3B,KAAK,CAACL,OAAO,CAAC,EAAE;MACzD,OAAO,IAAI;IACf;IAEA,MAAMiC,OAAO,GAAGhB,QAAQ,CAACM,KAAK,CAACM,IAAI,EAAEI,OAAO,IAAI,EAAE;IAClD,IAAIH,KAAK,CAACC,OAAO,CAACE,OAAO,CAAC,IAAIA,OAAO,CAACC,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACtC,EAAE,KAAKQ,KAAK,CAACK,OAAO,CAAC,EAAE;MAC7E,OAAO,IAAI;IACf;IACA,OAAO,KAAK;EAChB;EACA,MAAM,IAAIX,cAAW,CAAE,uBAAsBuB,SAAU,IAAG,EAAE,oBAAoB,EAAE;IAC9EL;EACJ,CAAC,CAAC;AACN,CAAC;AAQM,MAAMmB,qBAAqB,GAAG,MAAO3B,MAAmC,IAAoB;EAC/F,MAAM;IAAE4B,GAAG;IAAEhC;EAAM,CAAC,GAAGI,MAAM;EAC7B;AACJ;AACA;EACI,IAAI;IACA;AACR;AACA;IACQ,MAAM,CAACwB,OAAO,CAAC,GAAG,MAAMI,GAAG,CAACpB,QAAQ,CAACqB,IAAI,CAAC;MACtCC,KAAK,EAAE;QACHpB,GAAG,EAAEC,8BAAuB,CAACC;MACjC;IACJ,CAAC,CAAC;;IAEF;AACR;AACA;AACA;AACA;AACA;IACQ,MAAMmB,eAAe,GAAGP,OAAO,CAC1BQ,IAAI,CAACC,+BAAwB,CAAC,CAC9BD,IAAI,CAACE,8BAAuB,CAAC;;IAElC;AACR;AACA;IACQ,KAAK,MAAM1B,QAAQ,IAAIuB,eAAe,EAAE;MACpC,IAAIxB,oBAAoB,CAACX,KAAK,EAAEY,QAAQ,CAAC,KAAK,KAAK,EAAE;QACjD2B,OAAO,CAACC,GAAG,CAAE,yBAAwB5B,QAAQ,CAACpB,EAAG,aAAYQ,KAAK,CAACR,EAAG,GAAE,CAAC;QACzE;MACJ;MACAQ,KAAK,CAACS,IAAI,GAAG;QACT,IAAIT,KAAK,CAACS,IAAI,IAAI,CAAC,CAAC,CAAC;QACrBuB,GAAG,EAAE;UACDS,UAAU,EAAE7B,QAAQ,CAACpB,EAAE;UACvBkD,eAAe,EAAE;QACrB;MACJ,CAAC;MACD;IACJ;EACJ,CAAC,CAAC,OAAOC,EAAE,EAAE;IACT,MAAM,IAAIjD,cAAW,CAChB,2CAA0CM,KAAK,CAACR,EAAG,IAAG,EACvDmD,EAAE,CAACC,IAAI,EACPD,EAAE,CAACnB,IACP,CAAC;EACL;AACJ,CAAC;AAAC1B,OAAA,CAAAiC,qBAAA,GAAAA,qBAAA;AAEK,MAAMc,UAAU,GAAIjC,QAAqB,IAAc;EAC1D,MAAM;IAAEE,GAAG;IAAEI;EAAM,CAAC,GAAGN,QAAQ;EAC/B,OACIE,GAAG,KAAKC,8BAAuB,CAACC,GAAG,IACnCE,KAAK,CAACC,IAAI,KAAKC,yBAAkB,CAACE,MAAM,IACxCJ,KAAK,CAACM,IAAI,IACVC,KAAK,CAACC,OAAO,CAACR,KAAK,CAACM,IAAI,CAACI,OAAO,CAAC;AAEzC,CAAC;AAAC9B,OAAA,CAAA+C,UAAA,GAAAA,UAAA;AAEK,MAAMC,oBAAoB,GAAIlD,KAA8C,IAAc;EAC7F;AACJ;AACA;EACI,IAAIA,KAAK,CAACmD,SAAS,EAAE;IACjB,OAAO,IAAI;EACf;EACA,OAAO,CACHC,sCAAuB,EACvBC,yBAAgB,EAChBC,sCAAuB,EACvBC,2BAAiB,EACjBC,2BAAiB,CACpB,CAACzB,QAAQ,CAAC/B,KAAK,CAACD,OAAO,CAAC;AAC7B,CAAC;AAACG,OAAA,CAAAgD,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","_changeRequest","_comment","_contentReview","_reviewer","_workflow","fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","exports","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","item","getLatestEntriesByIds","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","sortedWorkflows","sort","workflowByPrecedenceDesc","workflowByCreatedOnDesc","console","log","workflowId","contentReviewId","ex","code","hasEntries","isApwDisabledOnModel","isPrivate","CHANGE_REQUEST_MODEL_ID","COMMENT_MODEL_ID","CONTENT_REVIEW_MODEL_ID","REVIEWER_MODEL_ID","WORKFLOW_MODEL_ID"],"sources":["utils.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport {\n AdvancedPublishingWorkflow,\n ApwWorkflow,\n ApwWorkflowApplications,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { workflowByCreatedOnDesc, workflowByPrecedenceDesc } from \"~/plugins/utils\";\nimport { CHANGE_REQUEST_MODEL_ID } from \"~/storageOperations/models/changeRequest.model\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\nimport { CONTENT_REVIEW_MODEL_ID } from \"~/storageOperations/models/contentReview.model\";\nimport { REVIEWER_MODEL_ID } from \"~/storageOperations/models/reviewer.model\";\nimport { WORKFLOW_MODEL_ID } from \"~/storageOperations/models/workflow.model\";\n\nexport const fetchModel = async (\n cms: HeadlessCms,\n id: string,\n settings?: { modelId?: string } | null\n): Promise<CmsModel> => {\n if (!settings) {\n throw new WebinyError(\"Missing settings.\", \"SETTINGS_ERROR\", {\n id\n });\n }\n const modelId = settings.modelId;\n if (!modelId) {\n throw new WebinyError(\"Missing modelId in settings.\", \"MODEL_ID_ERROR\", {\n id,\n settings\n });\n }\n const model = await cms.getModel(modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\"There is no requested model in the system.\", \"MODEL_NOT_EXISTS\", {\n id,\n settings\n });\n};\n\nexport const getEntryTitle = (model: CmsModel, entry: CmsEntry): string => {\n const titleFieldId = model.titleFieldId;\n if (!titleFieldId || !entry.values[titleFieldId]) {\n return entry.id;\n }\n return entry.values[titleFieldId];\n};\n\ninterface GetLatestEntryRevisionParams {\n cms: HeadlessCms;\n model: CmsModel;\n entryId: string;\n}\n\nexport const getLatestEntryRevision = async (\n params: GetLatestEntryRevisionParams\n): Promise<CmsEntry> => {\n const { cms, model, entryId } = params;\n const [item] = await cms.getLatestEntriesByIds(model, [entryId]);\n\n if (!item) {\n throw new WebinyError(\"There is no entry with given ID.\", \"ENTRY_NOT_FOUND\", {\n entryId,\n model: model.modelId\n });\n }\n return item;\n};\n\ninterface UpdateEntryMetaParams {\n meta: Record<string, any>;\n entryId: string;\n cms: HeadlessCms;\n model: CmsModel;\n}\n\nexport const updateEntryMeta = async (params: UpdateEntryMetaParams): Promise<void> => {\n const { entryId, cms, model, meta } = params;\n\n const entry = await getLatestEntryRevision({\n cms,\n model,\n entryId\n });\n\n await cms.updateEntry(model, entry.id, {}, meta);\n};\n\nconst isWorkflowApplicable = (entry: CmsEntry, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.CMS) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n } else if (scopeType === WorkflowScopeTypes.CUSTOM) {\n const models = workflow.scope.data?.models;\n\n if (Array.isArray(models) && models.includes(entry.modelId)) {\n return true;\n }\n\n const entries = workflow.scope.data?.entries || [];\n if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {\n return true;\n }\n return false;\n }\n throw new WebinyError(`Unknown scope type \"${scopeType}\".`, \"UNKNOWN_SCOPE_TYPE\", {\n workflow\n });\n};\n\ninterface AssignWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n entry: CmsEntry;\n model: CmsModel;\n}\n\nexport const assignWorkflowToEntry = async (params: AssignWorkflowToEntryParams): Promise<void> => {\n const { apw, entry } = params;\n /**\n * Lookup and assign \"workflowId\".\n */\n try {\n /*\n * List all workflows for app cms\n */\n const [entries] = await apw.workflow.list({\n where: {\n app: ApwWorkflowApplications.CMS\n }\n });\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n /**\n * Assign the first applicable workflow to the page and exit.\n */\n for (const workflow of sortedWorkflows) {\n if (isWorkflowApplicable(entry, workflow) === false) {\n console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);\n continue;\n }\n entry.meta = {\n ...(entry.meta || {}),\n apw: {\n workflowId: workflow.id,\n contentReviewId: null\n }\n };\n return;\n }\n } catch (ex) {\n throw new WebinyError(\n `Failed to assign workflow to CMS entry \"${entry.id}\".`,\n ex.code,\n ex.data\n );\n }\n};\n\nexport const hasEntries = (workflow: ApwWorkflow): boolean => {\n const { app, scope } = workflow;\n return (\n app === ApwWorkflowApplications.CMS &&\n scope.type === WorkflowScopeTypes.CUSTOM &&\n scope.data &&\n Array.isArray(scope.data.entries)\n );\n};\n\nexport const isApwDisabledOnModel = (model: Pick<CmsModel, \"modelId\" | \"isPrivate\">): boolean => {\n /**\n * We should not run APW on private models as well.\n */\n if (model.isPrivate) {\n return true;\n }\n return [\n CHANGE_REQUEST_MODEL_ID,\n COMMENT_MODEL_ID,\n CONTENT_REVIEW_MODEL_ID,\n REVIEWER_MODEL_ID,\n WORKFLOW_MODEL_ID\n ].includes(model.modelId);\n};\n"],"mappings":"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","ignoreList":[]}