@webiny/api-apw 5.25.0 → 5.30.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.
- package/ContentApwSettingsPlugin.d.ts +10 -0
- package/ContentApwSettingsPlugin.js +17 -0
- package/ContentApwSettingsPlugin.js.map +1 -0
- package/README.md +7 -6
- package/{createApw → crud}/createChangeRequestMethods.d.ts +0 -0
- package/{createApw → crud}/createChangeRequestMethods.js +0 -0
- package/crud/createChangeRequestMethods.js.map +1 -0
- package/{createApw → crud}/createCommentMethods.d.ts +0 -0
- package/{createApw → crud}/createCommentMethods.js +0 -0
- package/crud/createCommentMethods.js.map +1 -0
- package/crud/createContentReviewMethods.d.ts +10 -0
- package/{createApw → crud}/createContentReviewMethods.js +269 -19
- package/crud/createContentReviewMethods.js.map +1 -0
- package/{createApw → crud}/createReviewerMethods.d.ts +0 -0
- package/{createApw → crud}/createReviewerMethods.js +0 -0
- package/crud/createReviewerMethods.js.map +1 -0
- package/{createApw → crud}/createWorkflowMethods.d.ts +0 -0
- package/{createApw → crud}/createWorkflowMethods.js +0 -0
- package/crud/createWorkflowMethods.js.map +1 -0
- package/{createApw → crud}/index.d.ts +0 -0
- package/{createApw → crud}/index.js +55 -11
- package/crud/index.js.map +1 -0
- package/crud/utils.d.ts +21 -0
- package/crud/utils.js +142 -0
- package/crud/utils.js.map +1 -0
- package/index.d.ts +4 -2
- package/index.js +11 -5
- package/index.js.map +1 -1
- package/package.json +37 -30
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.d.ts +10 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +51 -0
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -0
- package/plugins/cms/README.md +49 -0
- package/plugins/cms/apwEntryPlugins.d.ts +8 -0
- package/plugins/cms/apwEntryPlugins.js +50 -0
- package/plugins/cms/apwEntryPlugins.js.map +1 -0
- package/plugins/cms/index.d.ts +12 -0
- package/plugins/cms/index.js +37 -0
- package/plugins/cms/index.js.map +1 -0
- package/plugins/cms/linkContentReviewToEntry.d.ts +8 -0
- package/plugins/cms/linkContentReviewToEntry.js +108 -0
- package/plugins/cms/linkContentReviewToEntry.js.map +1 -0
- package/plugins/cms/linkWorkflowToEntry.d.ts +8 -0
- package/plugins/cms/linkWorkflowToEntry.js +166 -0
- package/plugins/cms/linkWorkflowToEntry.js.map +1 -0
- package/plugins/cms/triggerContentReview.d.ts +8 -0
- package/plugins/cms/triggerContentReview.js +59 -0
- package/plugins/cms/triggerContentReview.js.map +1 -0
- package/plugins/cms/updateContentReviewStatus.d.ts +10 -0
- package/plugins/cms/updateContentReviewStatus.js +101 -0
- package/plugins/cms/updateContentReviewStatus.js.map +1 -0
- package/plugins/cms/utils.d.ts +27 -0
- package/plugins/cms/utils.js +211 -0
- package/plugins/cms/utils.js.map +1 -0
- package/plugins/context.d.ts +3 -2
- package/plugins/context.js +82 -49
- package/plugins/context.js.map +1 -1
- package/plugins/graphql/changeRequest.gql.js +1 -1
- package/plugins/graphql/changeRequest.gql.js.map +1 -1
- package/plugins/graphql/comment.gql.js +8 -17
- package/plugins/graphql/comment.gql.js.map +1 -1
- package/plugins/graphql/contentReview.gql.js +168 -13
- package/plugins/graphql/contentReview.gql.js.map +1 -1
- package/plugins/graphql/reviewer.gql.js +1 -1
- package/plugins/graphql/reviewer.gql.js.map +1 -1
- package/plugins/graphql/workflow.gql.js +18 -15
- package/plugins/graphql/workflow.gql.js.map +1 -1
- package/plugins/graphql.d.ts +3 -2
- package/plugins/graphql.js +11 -1
- package/plugins/graphql.js.map +1 -1
- package/plugins/hooks/createReviewerFromIdentity.js +18 -0
- package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js +8 -8
- package/plugins/hooks/deleteChangeRequestsAfterContentReview.js.map +1 -1
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js +6 -6
- package/plugins/hooks/deleteCommentsAfterChangeRequest.js.map +1 -1
- package/plugins/hooks/index.d.ts +1 -2
- package/plugins/hooks/index.js +25 -25
- package/plugins/hooks/index.js.map +1 -1
- package/plugins/hooks/initializeContentReviewSteps.d.ts +2 -7
- package/plugins/hooks/initializeContentReviewSteps.js +42 -24
- package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
- package/plugins/hooks/updatePendingChangeRequests.js +27 -39
- package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
- package/plugins/hooks/updateTotalComments.d.ts +3 -0
- package/plugins/hooks/updateTotalComments.js +157 -0
- package/plugins/hooks/updateTotalComments.js.map +1 -0
- package/plugins/hooks/validateChangeRequest.d.ts +2 -0
- package/plugins/hooks/validateChangeRequest.js +64 -0
- package/plugins/hooks/validateChangeRequest.js.map +1 -0
- package/plugins/hooks/validateComment.d.ts +2 -0
- package/plugins/hooks/validateComment.js +45 -0
- package/plugins/hooks/validateComment.js.map +1 -0
- package/plugins/hooks/validateContentReview.d.ts +2 -0
- package/plugins/hooks/validateContentReview.js +38 -0
- package/plugins/hooks/validateContentReview.js.map +1 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.d.ts +9 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +51 -0
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -0
- package/plugins/pageBuilder/apwContentPagePlugins.d.ts +3 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js +30 -0
- package/plugins/pageBuilder/apwContentPagePlugins.js.map +1 -0
- package/plugins/{hooks/extendPbPageSchema.d.ts → pageBuilder/extendPbPageSettingsSchema.d.ts} +1 -2
- package/plugins/{hooks/extendPbPageSchema.js → pageBuilder/extendPbPageSettingsSchema.js} +4 -3
- package/plugins/pageBuilder/extendPbPageSettingsSchema.js.map +1 -0
- package/plugins/pageBuilder/index.d.ts +11 -0
- package/plugins/pageBuilder/index.js +45 -0
- package/plugins/pageBuilder/index.js.map +1 -0
- package/plugins/pageBuilder/linkContentReviewToPage.d.ts +8 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js +93 -0
- package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -0
- package/plugins/pageBuilder/linkWorkflowToPage.d.ts +8 -0
- package/plugins/pageBuilder/linkWorkflowToPage.js +182 -0
- package/plugins/pageBuilder/linkWorkflowToPage.js.map +1 -0
- package/plugins/pageBuilder/triggerContentReview.d.ts +8 -0
- package/plugins/pageBuilder/triggerContentReview.js +50 -0
- package/plugins/pageBuilder/triggerContentReview.js.map +1 -0
- package/plugins/pageBuilder/updateContentReviewStatus.d.ts +10 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js +83 -0
- package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -0
- package/plugins/pageBuilder/utils.d.ts +22 -0
- package/plugins/pageBuilder/utils.js +184 -0
- package/plugins/pageBuilder/utils.js.map +1 -0
- package/plugins/utils.d.ts +22 -2
- package/plugins/utils.js +128 -2
- package/plugins/utils.js.map +1 -1
- package/scheduler/createScheduleActionMethods.d.ts +2 -0
- package/scheduler/createScheduleActionMethods.js +146 -0
- package/scheduler/createScheduleActionMethods.js.map +1 -0
- package/scheduler/handlers/executeAction/index.d.ts +16 -0
- package/scheduler/handlers/executeAction/index.js +148 -0
- package/scheduler/handlers/executeAction/index.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.d.ts +13 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +17 -0
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.d.ts +11 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +126 -0
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.d.ts +11 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +163 -0
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -0
- package/scheduler/handlers/executeAction/security.d.ts +4 -0
- package/scheduler/handlers/executeAction/security.js +68 -0
- package/scheduler/handlers/executeAction/security.js.map +1 -0
- package/scheduler/handlers/scheduleAction/index.d.ts +22 -0
- package/scheduler/handlers/scheduleAction/index.js +162 -0
- package/scheduler/handlers/scheduleAction/index.js.map +1 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.d.ts +24 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +176 -0
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -0
- package/scheduler/handlers/utils.d.ts +33 -0
- package/scheduler/handlers/utils.js +168 -0
- package/scheduler/handlers/utils.js.map +1 -0
- package/scheduler/index.d.ts +2 -0
- package/scheduler/index.js +27 -0
- package/scheduler/index.js.map +1 -0
- package/scheduler/types.d.ts +171 -0
- package/scheduler/types.js +34 -0
- package/scheduler/types.js.map +1 -0
- package/storageOperations/changeRequestStorageOperations.js +1 -3
- package/storageOperations/changeRequestStorageOperations.js.map +1 -1
- package/storageOperations/commentStorageOperations.js +25 -11
- package/storageOperations/commentStorageOperations.js.map +1 -1
- package/storageOperations/contentReviewStorageOperations.js +1 -3
- package/storageOperations/contentReviewStorageOperations.js.map +1 -1
- package/storageOperations/index.js.map +1 -1
- package/storageOperations/models/changeRequest.model.d.ts +1 -0
- package/storageOperations/models/changeRequest.model.js +10 -5
- package/storageOperations/models/changeRequest.model.js.map +1 -1
- package/storageOperations/models/comment.model.d.ts +1 -0
- package/storageOperations/models/comment.model.js +24 -3
- package/storageOperations/models/comment.model.js.map +1 -1
- package/storageOperations/models/contentModelPluginFactory.d.ts +2 -2
- package/storageOperations/models/contentModelPluginFactory.js +2 -2
- package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
- package/storageOperations/models/contentReview.model.d.ts +1 -0
- package/storageOperations/models/contentReview.model.js +98 -26
- package/storageOperations/models/contentReview.model.js.map +1 -1
- package/storageOperations/models/index.js +25 -5
- package/storageOperations/models/index.js.map +1 -1
- package/storageOperations/models/reviewer.model.d.ts +1 -0
- package/storageOperations/models/reviewer.model.js +11 -6
- package/storageOperations/models/reviewer.model.js.map +1 -1
- package/storageOperations/models/utils.js.map +1 -1
- package/storageOperations/models/workflow.model.d.ts +2 -1
- package/storageOperations/models/workflow.model.js +32 -30
- package/storageOperations/models/workflow.model.js.map +1 -1
- package/storageOperations/reviewerStorageOperations.js +1 -3
- package/storageOperations/reviewerStorageOperations.js.map +1 -1
- package/storageOperations/types.js.map +1 -1
- package/storageOperations/workflowStorageOperations.js +21 -7
- package/storageOperations/workflowStorageOperations.js.map +1 -1
- package/types.d.ts +138 -49
- package/types.js +9 -3
- package/types.js.map +1 -1
- package/utils/contentApwSettingsPlugin.d.ts +9 -0
- package/utils/contentApwSettingsPlugin.js +26 -0
- package/utils/contentApwSettingsPlugin.js.map +1 -0
- package/utils/errors.js.map +1 -1
- package/utils/fieldResolver.js +2 -2
- package/utils/fieldResolver.js.map +1 -1
- package/utils/resolve.js.map +1 -1
- package/createApw/createChangeRequestMethods.js.map +0 -1
- package/createApw/createCommentMethods.js.map +0 -1
- package/createApw/createContentReviewMethods.d.ts +0 -6
- package/createApw/createContentReviewMethods.js.map +0 -1
- package/createApw/createReviewerMethods.js.map +0 -1
- package/createApw/createWorkflowMethods.js.map +0 -1
- package/createApw/index.js.map +0 -1
- package/plugins/createManageCMSPlugin.d.ts +0 -2
- package/plugins/createManageCMSPlugin.js +0 -31
- package/plugins/createManageCMSPlugin.js.map +0 -1
- package/plugins/hooks/extendPbPageSchema.js.map +0 -1
- package/plugins/hooks/linkWorkflowToPage.d.ts +0 -9
- package/plugins/hooks/linkWorkflowToPage.js +0 -155
- package/plugins/hooks/linkWorkflowToPage.js.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["createContentReviewMethods.ts"],"names":["createContentReviewMethods","getIdentity","storageOperations","getReviewer","onBeforeContentReviewCreate","onAfterContentReviewCreate","onBeforeContentReviewUpdate","onAfterContentReviewUpdate","onBeforeContentReviewDelete","onAfterContentReviewDelete","get","id","getContentReview","list","params","listContentReviews","create","data","input","status","ApwContentReviewStatus","UNDER_REVIEW","publish","contentReview","createContentReview","update","original","updateContentReview","delete","deleteContentReview","provideSignOff","stepSlug","entry","steps","stepIndex","findIndex","step","slug","currentStep","previousStep","identity","hasPermission","NotAuthorizedError","ApwContentReviewStepStatus","DONE","type","ApwWorkflowStepTypes","MANDATORY_BLOCKING","StepMissingError","pendingChangeRequests","PendingChangeRequestsError","ACTIVE","StepInActiveError","previousStepStatus","updatedSteps","map","index","signOffProvidedOn","Date","toISOString","signOffProvidedBy","retractSignOff","NoSignOffProvidedError"],"mappings":"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","sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport {\n ApwContentReviewCrud,\n ApwContentReviewStepStatus,\n ApwWorkflowStepTypes,\n ApwContentReviewStatus,\n CreateApwParams,\n ApwReviewerCrud,\n ApwContentReview,\n OnBeforeContentReviewCreateTopicParams,\n OnAfterContentReviewCreateTopicParams,\n OnBeforeContentReviewUpdateTopicParams,\n OnAfterContentReviewUpdateTopicParams,\n OnBeforeContentReviewDeleteTopicParams,\n OnAfterContentReviewDeleteTopicParams\n} from \"~/types\";\nimport { hasReviewer, getNextStepStatus } from \"~/plugins/utils\";\nimport {\n NoSignOffProvidedError,\n NotAuthorizedError,\n PendingChangeRequestsError,\n StepInActiveError,\n StepMissingError\n} from \"~/utils/errors\";\n\ninterface CreateContentReviewMethodsParams extends CreateApwParams {\n getReviewer: ApwReviewerCrud[\"get\"];\n}\n\nexport function createContentReviewMethods({\n getIdentity,\n storageOperations,\n getReviewer\n}: CreateContentReviewMethodsParams): ApwContentReviewCrud {\n const onBeforeContentReviewCreate = createTopic<OnBeforeContentReviewCreateTopicParams>();\n const onAfterContentReviewCreate = createTopic<OnAfterContentReviewCreateTopicParams>();\n const onBeforeContentReviewUpdate = createTopic<OnBeforeContentReviewUpdateTopicParams>();\n const onAfterContentReviewUpdate = createTopic<OnAfterContentReviewUpdateTopicParams>();\n const onBeforeContentReviewDelete = createTopic<OnBeforeContentReviewDeleteTopicParams>();\n const onAfterContentReviewDelete = createTopic<OnAfterContentReviewDeleteTopicParams>();\n return {\n /**\n * Lifecycle events\n */\n onBeforeContentReviewCreate,\n onAfterContentReviewCreate,\n onBeforeContentReviewUpdate,\n onAfterContentReviewUpdate,\n onBeforeContentReviewDelete,\n onAfterContentReviewDelete,\n async get(id) {\n return storageOperations.getContentReview({ id });\n },\n async list(params) {\n return storageOperations.listContentReviews(params);\n },\n async create(data) {\n const input = {\n ...data,\n status: ApwContentReviewStatus.UNDER_REVIEW\n };\n await onBeforeContentReviewCreate.publish({ input });\n\n const contentReview = await storageOperations.createContentReview({\n data: input\n });\n\n await onAfterContentReviewCreate.publish({ contentReview });\n\n return contentReview;\n },\n async update(id, data) {\n const original = await storageOperations.getContentReview({ id });\n\n await onBeforeContentReviewUpdate.publish({ original, input: { id, data } });\n\n const contentReview = await storageOperations.updateContentReview({\n id,\n data\n });\n\n await onAfterContentReviewUpdate.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 onBeforeContentReviewDelete.publish({ contentReview });\n\n await storageOperations.deleteContentReview({ id });\n\n await onAfterContentReviewDelete.publish({ contentReview });\n\n return true;\n },\n async provideSignOff(id, stepSlug) {\n const entry: ApwContentReview = await this.get(id);\n const { steps } = entry;\n const stepIndex = steps.findIndex(step => step.slug === stepSlug);\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: stepSlug } });\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: stepSlug } });\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: stepSlug } });\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: stepSlug } });\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 * Save updated steps.\n */\n await this.update(id, {\n steps: updatedSteps\n });\n return true;\n },\n async retractSignOff(id, stepSlug) {\n const entry: ApwContentReview = await this.get(id);\n const { steps } = entry;\n const stepIndex = steps.findIndex(step => step.slug === stepSlug);\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({ entry, input: { id, step: stepSlug } });\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({ entry, input: { id, step: stepSlug } });\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 await this.update(id, {\n steps: updatedSteps\n });\n return true;\n }\n };\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["createReviewerMethods.ts"],"names":["createReviewerMethods","storageOperations","onBeforeReviewerCreate","onAfterReviewerCreate","onBeforeReviewerUpdate","onAfterReviewerUpdate","onBeforeReviewerDelete","onAfterReviewerDelete","get","id","getReviewer","list","params","listReviewers","create","data","publish","input","reviewer","createReviewer","update","original","updateReviewer","delete","deleteReviewer"],"mappings":";;;;;;;AAUA;;AAEO,SAASA,qBAAT,CAA+B;AAAEC,EAAAA;AAAF,CAA/B,EAAwF;AAC3F,QAAMC,sBAAsB,GAAG,0BAA/B;AACA,QAAMC,qBAAqB,GAAG,0BAA9B;AACA,QAAMC,sBAAsB,GAAG,0BAA/B;AACA,QAAMC,qBAAqB,GAAG,0BAA9B;AACA,QAAMC,sBAAsB,GAAG,0BAA/B;AACA,QAAMC,qBAAqB,GAAG,0BAA9B;AACA,SAAO;AACH;AACR;AACA;AACQL,IAAAA,sBAJG;AAKHC,IAAAA,qBALG;AAMHC,IAAAA,sBANG;AAOHC,IAAAA,qBAPG;AAQHC,IAAAA,sBARG;AASHC,IAAAA,qBATG;;AAUH,UAAMC,GAAN,CAAUC,EAAV,EAAc;AACV,aAAOR,iBAAiB,CAACS,WAAlB,CAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAP;AACH,KAZE;;AAaH,UAAME,IAAN,CAAWC,MAAX,EAAmB;AACf,aAAOX,iBAAiB,CAACY,aAAlB,CAAgCD,MAAhC,CAAP;AACH,KAfE;;AAgBH,UAAME,MAAN,CAAaC,IAAb,EAAmB;AACf,YAAMb,sBAAsB,CAACc,OAAvB,CAA+B;AAAEC,QAAAA,KAAK,EAAEF;AAAT,OAA/B,CAAN;AAEA,YAAMG,QAAQ,GAAG,MAAMjB,iBAAiB,CAACkB,cAAlB,CAAiC;AAAEJ,QAAAA;AAAF,OAAjC,CAAvB;AAEA,YAAMZ,qBAAqB,CAACa,OAAtB,CAA8B;AAAEE,QAAAA;AAAF,OAA9B,CAAN;AAEA,aAAOA,QAAP;AACH,KAxBE;;AAyBH,UAAME,MAAN,CAAaX,EAAb,EAAiBM,IAAjB,EAAuB;AACnB,YAAMM,QAAQ,GAAG,MAAMpB,iBAAiB,CAACS,WAAlB,CAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAvB;AAEA,YAAML,sBAAsB,CAACY,OAAvB,CAA+B;AAAEK,QAAAA,QAAF;AAAYJ,QAAAA,KAAK,EAAE;AAAER,UAAAA,EAAF;AAAMM,UAAAA;AAAN;AAAnB,OAA/B,CAAN;AAEA,YAAMG,QAAQ,GAAG,MAAMjB,iBAAiB,CAACqB,cAAlB,CAAiC;AAAEb,QAAAA,EAAF;AAAMM,QAAAA;AAAN,OAAjC,CAAvB;AAEA,YAAMV,qBAAqB,CAACW,OAAtB,CAA8B;AAAEK,QAAAA,QAAF;AAAYJ,QAAAA,KAAK,EAAE;AAAER,UAAAA,EAAF;AAAMM,UAAAA;AAAN,SAAnB;AAAiCG,QAAAA;AAAjC,OAA9B,CAAN;AAEA,aAAOA,QAAP;AACH,KAnCE;;AAoCH,UAAMK,MAAN,CAAad,EAAb,EAAyB;AACrB,YAAMS,QAAQ,GAAG,MAAMjB,iBAAiB,CAACS,WAAlB,CAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAvB;AAEA,YAAMH,sBAAsB,CAACU,OAAvB,CAA+B;AAAEE,QAAAA;AAAF,OAA/B,CAAN;AAEA,YAAMjB,iBAAiB,CAACuB,cAAlB,CAAiC;AAAEf,QAAAA;AAAF,OAAjC,CAAN;AAEA,YAAMF,qBAAqB,CAACS,OAAtB,CAA8B;AAAEE,QAAAA;AAAF,OAA9B,CAAN;AAEA,aAAO,IAAP;AACH;;AA9CE,GAAP;AAgDH","sourcesContent":["import {\n ApwReviewerCrud,\n CreateApwParams,\n OnAfterReviewerCreateTopicParams,\n OnAfterReviewerDeleteTopicParams,\n OnAfterReviewerUpdateTopicParams,\n OnBeforeReviewerCreateTopicParams,\n OnBeforeReviewerDeleteTopicParams,\n OnBeforeReviewerUpdateTopicParams\n} from \"~/types\";\nimport { createTopic } from \"@webiny/pubsub\";\n\nexport function createReviewerMethods({ storageOperations }: CreateApwParams): ApwReviewerCrud {\n const onBeforeReviewerCreate = createTopic<OnBeforeReviewerCreateTopicParams>();\n const onAfterReviewerCreate = createTopic<OnAfterReviewerCreateTopicParams>();\n const onBeforeReviewerUpdate = createTopic<OnBeforeReviewerUpdateTopicParams>();\n const onAfterReviewerUpdate = createTopic<OnAfterReviewerUpdateTopicParams>();\n const onBeforeReviewerDelete = createTopic<OnBeforeReviewerDeleteTopicParams>();\n const onAfterReviewerDelete = createTopic<OnAfterReviewerDeleteTopicParams>();\n return {\n /**\n * Lifecycle events\n */\n onBeforeReviewerCreate,\n onAfterReviewerCreate,\n onBeforeReviewerUpdate,\n onAfterReviewerUpdate,\n onBeforeReviewerDelete,\n onAfterReviewerDelete,\n async get(id) {\n return storageOperations.getReviewer({ id });\n },\n async list(params) {\n return storageOperations.listReviewers(params);\n },\n async create(data) {\n await onBeforeReviewerCreate.publish({ input: data });\n\n const reviewer = await storageOperations.createReviewer({ data });\n\n await onAfterReviewerCreate.publish({ reviewer });\n\n return reviewer;\n },\n async update(id, data) {\n const original = await storageOperations.getReviewer({ id });\n\n await onBeforeReviewerUpdate.publish({ original, input: { id, data } });\n\n const reviewer = await storageOperations.updateReviewer({ id, data });\n\n await onAfterReviewerUpdate.publish({ original, input: { id, data }, reviewer });\n\n return reviewer;\n },\n async delete(id: string) {\n const reviewer = await storageOperations.getReviewer({ id });\n\n await onBeforeReviewerDelete.publish({ reviewer });\n\n await storageOperations.deleteReviewer({ id });\n\n await onAfterReviewerDelete.publish({ reviewer });\n\n return true;\n }\n };\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["createWorkflowMethods.ts"],"names":["createWorkflowMethods","storageOperations","onBeforeWorkflowCreate","onAfterWorkflowCreate","onBeforeWorkflowUpdate","onAfterWorkflowUpdate","onBeforeWorkflowDelete","onAfterWorkflowDelete","get","id","getWorkflow","list","params","listWorkflows","create","data","publish","input","workflow","createWorkflow","update","original","updateWorkflow","delete","deleteWorkflow"],"mappings":";;;;;;;AAUA;;AAEO,SAASA,qBAAT,CAA+B;AAAEC,EAAAA;AAAF,CAA/B,EAAwF;AAC3F,QAAMC,sBAAsB,GAAG,0BAA/B;AACA,QAAMC,qBAAqB,GAAG,0BAA9B;AACA,QAAMC,sBAAsB,GAAG,0BAA/B;AACA,QAAMC,qBAAqB,GAAG,0BAA9B;AACA,QAAMC,sBAAsB,GAAG,0BAA/B;AACA,QAAMC,qBAAqB,GAAG,0BAA9B;AACA,SAAO;AACH;AACR;AACA;AACQL,IAAAA,sBAJG;AAKHC,IAAAA,qBALG;AAMHC,IAAAA,sBANG;AAOHC,IAAAA,qBAPG;AAQHC,IAAAA,sBARG;AASHC,IAAAA,qBATG;;AAUH,UAAMC,GAAN,CAAUC,EAAV,EAAc;AACV,aAAOR,iBAAiB,CAACS,WAAlB,CAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAP;AACH,KAZE;;AAaH,UAAME,IAAN,CAAWC,MAAX,EAAmB;AACf,aAAOX,iBAAiB,CAACY,aAAlB,CAAgCD,MAAhC,CAAP;AACH,KAfE;;AAgBH,UAAME,MAAN,CAAaC,IAAb,EAAmB;AACf,YAAMb,sBAAsB,CAACc,OAAvB,CAA+B;AAAEC,QAAAA,KAAK,EAAEF;AAAT,OAA/B,CAAN;AAEA,YAAMG,QAAQ,GAAG,MAAMjB,iBAAiB,CAACkB,cAAlB,CAAiC;AAAEJ,QAAAA;AAAF,OAAjC,CAAvB;AAEA,YAAMZ,qBAAqB,CAACa,OAAtB,CAA8B;AAAEE,QAAAA;AAAF,OAA9B,CAAN;AAEA,aAAOA,QAAP;AACH,KAxBE;;AAyBH,UAAME,MAAN,CAAaX,EAAb,EAAiBM,IAAjB,EAAuB;AACnB,YAAMM,QAAQ,GAAG,MAAMpB,iBAAiB,CAACS,WAAlB,CAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAvB;AAEA,YAAML,sBAAsB,CAACY,OAAvB,CAA+B;AAAEK,QAAAA,QAAF;AAAYJ,QAAAA,KAAK,EAAE;AAAER,UAAAA,EAAF;AAAMM,UAAAA;AAAN;AAAnB,OAA/B,CAAN;AAEA,YAAMG,QAAQ,GAAG,MAAMjB,iBAAiB,CAACqB,cAAlB,CAAiC;AAAEb,QAAAA,EAAF;AAAMM,QAAAA;AAAN,OAAjC,CAAvB;AAEA,YAAMV,qBAAqB,CAACW,OAAtB,CAA8B;AAAEK,QAAAA,QAAF;AAAYJ,QAAAA,KAAK,EAAE;AAAER,UAAAA,EAAF;AAAMM,UAAAA;AAAN,SAAnB;AAAiCG,QAAAA;AAAjC,OAA9B,CAAN;AAEA,aAAOA,QAAP;AACH,KAnCE;;AAoCH,UAAMK,MAAN,CAAad,EAAb,EAAyB;AACrB,YAAMS,QAAQ,GAAG,MAAMjB,iBAAiB,CAACS,WAAlB,CAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAvB;AAEA,YAAMH,sBAAsB,CAACU,OAAvB,CAA+B;AAAEE,QAAAA;AAAF,OAA/B,CAAN;AAEA,YAAMjB,iBAAiB,CAACuB,cAAlB,CAAiC;AAAEf,QAAAA;AAAF,OAAjC,CAAN;AAEA,YAAMF,qBAAqB,CAACS,OAAtB,CAA8B;AAAEE,QAAAA;AAAF,OAA9B,CAAN;AAEA,aAAO,IAAP;AACH;;AA9CE,GAAP;AAgDH","sourcesContent":["import {\n ApwWorkflowCrud,\n CreateApwParams,\n OnAfterWorkflowCreateTopicParams,\n OnAfterWorkflowDeleteTopicParams,\n OnAfterWorkflowUpdateTopicParams,\n OnBeforeWorkflowCreateTopicParams,\n OnBeforeWorkflowDeleteTopicParams,\n OnBeforeWorkflowUpdateTopicParams\n} from \"~/types\";\nimport { createTopic } from \"@webiny/pubsub\";\n\nexport function createWorkflowMethods({ storageOperations }: CreateApwParams): ApwWorkflowCrud {\n const onBeforeWorkflowCreate = createTopic<OnBeforeWorkflowCreateTopicParams>();\n const onAfterWorkflowCreate = createTopic<OnAfterWorkflowCreateTopicParams>();\n const onBeforeWorkflowUpdate = createTopic<OnBeforeWorkflowUpdateTopicParams>();\n const onAfterWorkflowUpdate = createTopic<OnAfterWorkflowUpdateTopicParams>();\n const onBeforeWorkflowDelete = createTopic<OnBeforeWorkflowDeleteTopicParams>();\n const onAfterWorkflowDelete = createTopic<OnAfterWorkflowDeleteTopicParams>();\n return {\n /**\n * Lifecycle events\n */\n onBeforeWorkflowCreate,\n onAfterWorkflowCreate,\n onBeforeWorkflowUpdate,\n onAfterWorkflowUpdate,\n onBeforeWorkflowDelete,\n onAfterWorkflowDelete,\n async get(id) {\n return storageOperations.getWorkflow({ id });\n },\n async list(params) {\n return storageOperations.listWorkflows(params);\n },\n async create(data) {\n await onBeforeWorkflowCreate.publish({ input: data });\n\n const workflow = await storageOperations.createWorkflow({ data });\n\n await onAfterWorkflowCreate.publish({ workflow });\n\n return workflow;\n },\n async update(id, data) {\n const original = await storageOperations.getWorkflow({ id });\n\n await onBeforeWorkflowUpdate.publish({ original, input: { id, data } });\n\n const workflow = await storageOperations.updateWorkflow({ id, data });\n\n await onAfterWorkflowUpdate.publish({ original, input: { id, data }, workflow });\n\n return workflow;\n },\n async delete(id: string) {\n const workflow = await storageOperations.getWorkflow({ id });\n\n await onBeforeWorkflowDelete.publish({ workflow });\n\n await storageOperations.deleteWorkflow({ id });\n\n await onAfterWorkflowDelete.publish({ workflow });\n\n return true;\n }\n };\n}\n"]}
|
package/createApw/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["createApw","params","workflowGetters","Map","workflowMethods","reviewerMethods","changeRequestMethods","addWorkflowGetter","type","func","set","getWorkflowGetter","getter","get","Error","workflow","reviewer","changeRequest","comment","contentReview","getReviewer","bind"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAQO,MAAMA,SAAS,GAAIC,MAAD,IAAyD;AAC9E,QAAMC,eAAe,GAAG,IAAIC,GAAJ,EAAxB;AAEA,QAAMC,eAAe,GAAG,kDAAsBH,MAAtB,CAAxB;AACA,QAAMI,eAAe,GAAG,kDAAsBJ,MAAtB,CAAxB;AACA,QAAMK,oBAAoB,GAAG,4DAA2BL,MAA3B,CAA7B;AAEA,SAAO;AACHM,IAAAA,iBAAiB,CAACC,IAAD,EAAOC,IAAP,EAAa;AAC1BP,MAAAA,eAAe,CAACQ,GAAhB,CAAoBF,IAApB,EAA0BC,IAA1B;AACH,KAHE;;AAIHE,IAAAA,iBAAiB,CAACH,IAAD,EAAO;AACpB,YAAMI,MAAM,GAAGV,eAAe,CAACW,GAAhB,CAAoBL,IAApB,CAAf;;AACA,UAAI,CAACI,MAAL,EAAa;AACT,cAAM,IAAIE,KAAJ,CAAW,8BAA6BN,IAAK,8BAA7C,CAAN;AACH;;AACD,aAAOI,MAAP;AACH,KAVE;;AAWHG,IAAAA,QAAQ,EAAEX,eAXP;AAYHY,IAAAA,QAAQ,EAAEX,eAZP;AAaHY,IAAAA,aAAa,EAAEX,oBAbZ;AAcHY,IAAAA,OAAO,EAAE,gDAAqBjB,MAArB,CAdN;AAeHkB,IAAAA,aAAa,EAAE,4FACRlB,MADQ;AAEXmB,MAAAA,WAAW,EAAEf,eAAe,CAACQ,GAAhB,CAAoBQ,IAApB,CAAyBhB,eAAzB;AAFF;AAfZ,GAAP;AAoBH,CA3BM","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 CreateApwParams,\n WorkflowGetter\n} from \"~/types\";\n\nexport const createApw = (params: CreateApwParams): AdvancedPublishingWorkflow => {\n const workflowGetters = new Map<ApwContentTypes, WorkflowGetter>();\n\n const workflowMethods = createWorkflowMethods(params);\n const reviewerMethods = createReviewerMethods(params);\n const changeRequestMethods = createChangeRequestMethods(params);\n\n return {\n addWorkflowGetter(type, func) {\n workflowGetters.set(type, func);\n },\n getWorkflowGetter(type) {\n const getter = workflowGetters.get(type);\n if (!getter) {\n throw new Error(`No loader found for type: \"${type}\". You must define a loader.`);\n }\n return getter;\n },\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 })\n };\n};\n"]}
|
@@ -1,31 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
exports.createManageCMSPlugin = void 0;
|
9
|
-
|
10
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
11
|
-
|
12
|
-
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
13
|
-
|
14
|
-
const createManageCMSPlugin = () => {
|
15
|
-
return new _apiHeadlessCms.CmsParametersPlugin(async context => {
|
16
|
-
const locale = context.i18n.getCurrentLocale("content");
|
17
|
-
|
18
|
-
if (!locale) {
|
19
|
-
throw new _error.default(`Could not able to load "locale".`, "MALFORMED_LOCALE", {
|
20
|
-
locale
|
21
|
-
});
|
22
|
-
}
|
23
|
-
|
24
|
-
return {
|
25
|
-
type: "manage",
|
26
|
-
locale: locale.code
|
27
|
-
};
|
28
|
-
});
|
29
|
-
};
|
30
|
-
|
31
|
-
exports.createManageCMSPlugin = createManageCMSPlugin;
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["createManageCMSPlugin.ts"],"names":["createManageCMSPlugin","CmsParametersPlugin","context","locale","i18n","getCurrentLocale","WebinyError","type","code"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEO,MAAMA,qBAAqB,GAAG,MAA2B;AAC5D,SAAO,IAAIC,mCAAJ,CAAwB,MAAMC,OAAN,IAAiB;AAC5C,UAAMC,MAAM,GAAGD,OAAO,CAACE,IAAR,CAAaC,gBAAb,CAA8B,SAA9B,CAAf;;AAEA,QAAI,CAACF,MAAL,EAAa;AACT,YAAM,IAAIG,cAAJ,CAAiB,kCAAjB,EAAoD,kBAApD,EAAwE;AAC1EH,QAAAA;AAD0E,OAAxE,CAAN;AAGH;;AAED,WAAO;AACHI,MAAAA,IAAI,EAAE,QADH;AAEHJ,MAAAA,MAAM,EAAEA,MAAM,CAACK;AAFZ,KAAP;AAIH,GAbM,CAAP;AAcH,CAfM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsParametersPlugin } from \"@webiny/api-headless-cms\";\n\nexport const createManageCMSPlugin = (): CmsParametersPlugin => {\n return new CmsParametersPlugin(async context => {\n const locale = context.i18n.getCurrentLocale(\"content\");\n\n if (!locale) {\n throw new WebinyError(`Could not able to load \"locale\".`, \"MALFORMED_LOCALE\", {\n locale\n });\n }\n\n return {\n type: \"manage\",\n locale: locale.code\n };\n });\n};\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["extendPbPageSchema.ts"],"names":["GraphQLSchemaPlugin","typeDefs"],"mappings":";;;;;;;AAAA;;eAGe,MACX,IAAIA,4BAAJ,CAAoC;AAChCC,EAAAA,QAAQ;AAAE;AAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATwC,CAApC,C","sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ApwContext } from \"~/types\";\n\nexport default () =>\n new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type PbApwPageSettings {\n workflowId: ID\n }\n\n extend type PbPageSettings {\n apw: PbApwPageSettings\n }\n `\n });\n"]}
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import { LifeCycleHookCallbackParams } from "../../types";
|
2
|
-
import { PageBuilderContextObject } from "@webiny/api-page-builder/graphql/types";
|
3
|
-
interface PageMethods extends Omit<LifeCycleHookCallbackParams, "security"> {
|
4
|
-
getPage: PageBuilderContextObject["getPage"];
|
5
|
-
updatePage: PageBuilderContextObject["updatePage"];
|
6
|
-
onBeforePageCreate: PageBuilderContextObject["onBeforePageCreate"];
|
7
|
-
}
|
8
|
-
export declare const linkWorkflowToPage: (params: PageMethods) => void;
|
9
|
-
export {};
|
@@ -1,155 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
exports.linkWorkflowToPage = void 0;
|
9
|
-
|
10
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
11
|
-
|
12
|
-
var _set = _interopRequireDefault(require("lodash/set"));
|
13
|
-
|
14
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
15
|
-
|
16
|
-
var _types = require("../../types");
|
17
|
-
|
18
|
-
const WORKFLOW_PRECEDENCE = {
|
19
|
-
[_types.WorkflowScopeTypes.DEFAULT]: 0,
|
20
|
-
[_types.WorkflowScopeTypes.PB]: 1,
|
21
|
-
[_types.WorkflowScopeTypes.CMS]: 1
|
22
|
-
};
|
23
|
-
|
24
|
-
const workflowByPrecedenceDesc = (a, b) => {
|
25
|
-
const scoreA = WORKFLOW_PRECEDENCE[a.scope.type];
|
26
|
-
const scoreB = WORKFLOW_PRECEDENCE[b.scope.type];
|
27
|
-
/**
|
28
|
-
* In descending order of workflow precedence.
|
29
|
-
*/
|
30
|
-
|
31
|
-
return scoreB - scoreA;
|
32
|
-
};
|
33
|
-
|
34
|
-
const workflowByCreatedOnDesc = (a, b) => {
|
35
|
-
const createdOnA = (0, _get.default)(a, "createdOn");
|
36
|
-
const createdOnB = (0, _get.default)(b, "createdOn");
|
37
|
-
/**
|
38
|
-
* In descending order of workflow createdOn i.e. the most recent one first.
|
39
|
-
*/
|
40
|
-
|
41
|
-
return new Date(createdOnB).getTime() - new Date(createdOnA).getTime();
|
42
|
-
};
|
43
|
-
|
44
|
-
const isWorkflowApplicable = (page, workflow) => {
|
45
|
-
const application = workflow.app;
|
46
|
-
|
47
|
-
if (application !== _types.ApwWorkflowApplications.PB) {
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
|
51
|
-
const scopeType = workflow.scope.type;
|
52
|
-
|
53
|
-
if (scopeType === _types.WorkflowScopeTypes.DEFAULT) {
|
54
|
-
return true;
|
55
|
-
}
|
56
|
-
|
57
|
-
if (scopeType === _types.WorkflowScopeTypes.PB) {
|
58
|
-
const categories = (0, _get.default)(workflow, "scope.data.categories");
|
59
|
-
|
60
|
-
if (Array.isArray(categories) && categories.includes(page.category)) {
|
61
|
-
return true;
|
62
|
-
}
|
63
|
-
|
64
|
-
const pages = (0, _get.default)(workflow, "scope.data.pages");
|
65
|
-
|
66
|
-
if (Array.isArray(pages) && pages.includes(page.pid)) {
|
67
|
-
return true;
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
return false;
|
72
|
-
};
|
73
|
-
|
74
|
-
const linkWorkflowToPage = params => {
|
75
|
-
const {
|
76
|
-
apw,
|
77
|
-
getPage,
|
78
|
-
updatePage,
|
79
|
-
onBeforePageCreate
|
80
|
-
} = params;
|
81
|
-
onBeforePageCreate.subscribe(async ({
|
82
|
-
page
|
83
|
-
}) => {
|
84
|
-
try {
|
85
|
-
/*
|
86
|
-
* List all workflows for app pageBuilder
|
87
|
-
*/
|
88
|
-
const [entries] = await apw.workflow.list({
|
89
|
-
where: {
|
90
|
-
app: _types.ApwWorkflowApplications.PB
|
91
|
-
}
|
92
|
-
});
|
93
|
-
/*
|
94
|
-
* Re-order them based on workflow scope and pre-defined rule i.e.
|
95
|
-
* "specific" entry -> entry for a "category" -> "default".
|
96
|
-
* There can be more than one workflow with same "scope" and "app".
|
97
|
-
* Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.
|
98
|
-
*/
|
99
|
-
|
100
|
-
const sortedWorkflows = entries.sort(workflowByPrecedenceDesc).sort(workflowByCreatedOnDesc);
|
101
|
-
|
102
|
-
for (const workflow of sortedWorkflows) {
|
103
|
-
/**
|
104
|
-
* We workflow if applicable to this page, we're done here.
|
105
|
-
* Assign the workflow to the page and exit.
|
106
|
-
*/
|
107
|
-
if (isWorkflowApplicable(page, workflow)) {
|
108
|
-
page.settings.apw = {
|
109
|
-
workflowId: workflow.id
|
110
|
-
};
|
111
|
-
break;
|
112
|
-
}
|
113
|
-
}
|
114
|
-
} catch (e) {
|
115
|
-
throw new _error.default(`Failed to assign workflow to page "${page.pid}".`, e.code, e.data);
|
116
|
-
}
|
117
|
-
});
|
118
|
-
apw.workflow.onAfterWorkflowCreate.subscribe(async ({
|
119
|
-
workflow
|
120
|
-
}) => {
|
121
|
-
const {
|
122
|
-
app,
|
123
|
-
scope
|
124
|
-
} = workflow;
|
125
|
-
/**
|
126
|
-
* If the workflow is applicable PB application and pages are provided,
|
127
|
-
* we'll assign workflow for each of those provided page.
|
128
|
-
*/
|
129
|
-
|
130
|
-
if (app === _types.ApwWorkflowApplications.PB && scope.type === _types.WorkflowScopeTypes.PB && scope.data && Array.isArray(scope.data.pages)) {
|
131
|
-
for (const pid of scope.data.pages) {
|
132
|
-
try {
|
133
|
-
/**
|
134
|
-
* Currently, we only assign "workflow" to latest page.
|
135
|
-
*/
|
136
|
-
const page = await getPage(pid);
|
137
|
-
/**
|
138
|
-
* There can be more than one workflow with same `scope` for same `app`. That is why;
|
139
|
-
* We'll update the workflow reference even though it already had one assign.
|
140
|
-
*/
|
141
|
-
|
142
|
-
await updatePage(page.id, {
|
143
|
-
settings: (0, _set.default)(page.settings, "apw.workflowId", workflow.id)
|
144
|
-
});
|
145
|
-
} catch (e) {
|
146
|
-
if (e.code !== "NOT_FOUND") {
|
147
|
-
throw e;
|
148
|
-
}
|
149
|
-
}
|
150
|
-
}
|
151
|
-
}
|
152
|
-
});
|
153
|
-
};
|
154
|
-
|
155
|
-
exports.linkWorkflowToPage = linkWorkflowToPage;
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["linkWorkflowToPage.ts"],"names":["WORKFLOW_PRECEDENCE","WorkflowScopeTypes","DEFAULT","PB","CMS","workflowByPrecedenceDesc","a","b","scoreA","scope","type","scoreB","workflowByCreatedOnDesc","createdOnA","createdOnB","Date","getTime","isWorkflowApplicable","page","workflow","application","app","ApwWorkflowApplications","scopeType","categories","Array","isArray","includes","category","pages","pid","linkWorkflowToPage","params","apw","getPage","updatePage","onBeforePageCreate","subscribe","entries","list","where","sortedWorkflows","sort","settings","workflowId","id","e","WebinyError","code","data","onAfterWorkflowCreate"],"mappings":"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","sourcesContent":["import get from \"lodash/get\";\nimport set from \"lodash/set\";\nimport WebinyError from \"@webiny/error\";\nimport {\n ApwWorkflow,\n ApwWorkflowApplications,\n CustomEventParams,\n LifeCycleHookCallbackParams,\n PageWithWorkflow,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { PageBuilderContextObject } from \"@webiny/api-page-builder/graphql/types\";\n\nconst WORKFLOW_PRECEDENCE = {\n [WorkflowScopeTypes.DEFAULT]: 0,\n [WorkflowScopeTypes.PB]: 1,\n [WorkflowScopeTypes.CMS]: 1\n};\n\nconst workflowByPrecedenceDesc = (a: ApwWorkflow, b: ApwWorkflow): number => {\n const scoreA = WORKFLOW_PRECEDENCE[a.scope.type];\n const scoreB = WORKFLOW_PRECEDENCE[b.scope.type];\n /**\n * In descending order of workflow precedence.\n */\n return scoreB - scoreA;\n};\n\nconst workflowByCreatedOnDesc = (a: ApwWorkflow, b: ApwWorkflow): number => {\n const createdOnA = get(a, \"createdOn\");\n const createdOnB = get(b, \"createdOn\");\n /**\n * In descending order of workflow createdOn i.e. the most recent one first.\n */\n return new Date(createdOnB).getTime() - new Date(createdOnA).getTime();\n};\n\nconst isWorkflowApplicable = (page: PageWithWorkflow, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.PB) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n }\n\n if (scopeType === WorkflowScopeTypes.PB) {\n const categories = get(workflow, \"scope.data.categories\");\n\n if (Array.isArray(categories) && categories.includes(page.category)) {\n return true;\n }\n\n const pages = get(workflow, \"scope.data.pages\");\n if (Array.isArray(pages) && pages.includes(page.pid)) {\n return true;\n }\n }\n\n return false;\n};\n\ninterface PageMethods extends Omit<LifeCycleHookCallbackParams, \"security\"> {\n getPage: PageBuilderContextObject[\"getPage\"];\n updatePage: PageBuilderContextObject[\"updatePage\"];\n onBeforePageCreate: PageBuilderContextObject[\"onBeforePageCreate\"];\n}\n\nexport const linkWorkflowToPage = (params: PageMethods) => {\n const { apw, getPage, updatePage, onBeforePageCreate } = params;\n onBeforePageCreate.subscribe<CustomEventParams>(async ({ page }) => {\n try {\n /*\n * List all workflows for app pageBuilder\n */\n const [entries] = await apw.workflow.list({\n where: { app: ApwWorkflowApplications.PB }\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 for (const workflow of sortedWorkflows) {\n /**\n * We workflow if applicable to this page, we're done here.\n * Assign the workflow to the page and exit.\n */\n if (isWorkflowApplicable(page, workflow)) {\n page.settings.apw = {\n workflowId: workflow.id\n };\n break;\n }\n }\n } catch (e) {\n throw new WebinyError(\n `Failed to assign workflow to page \"${page.pid}\".`,\n e.code,\n e.data\n );\n }\n });\n\n apw.workflow.onAfterWorkflowCreate.subscribe(async ({ workflow }) => {\n const { app, scope } = workflow;\n /**\n * If the workflow is applicable PB application and pages are provided,\n * we'll assign workflow for each of those provided page.\n */\n if (\n app === ApwWorkflowApplications.PB &&\n scope.type === WorkflowScopeTypes.PB &&\n scope.data &&\n Array.isArray(scope.data.pages)\n ) {\n for (const pid of scope.data.pages) {\n try {\n /**\n * Currently, we only assign \"workflow\" to latest page.\n */\n const page = await getPage<PageWithWorkflow>(pid);\n /**\n * There can be more than one workflow with same `scope` for same `app`. That is why;\n * We'll update the workflow reference even though it already had one assign.\n */\n await updatePage(page.id, {\n settings: set(page.settings, \"apw.workflowId\", workflow.id)\n });\n } catch (e) {\n if (e.code !== \"NOT_FOUND\") {\n throw e;\n }\n }\n }\n }\n });\n};\n"]}
|